MCPcopy Create free account
hub / github.com/apache/cloudberry / get_func_sql_syntax

Function get_func_sql_syntax

src/backend/utils/adt/ruleutils.c:10387–10619  ·  view source on GitHub ↗

* get_func_sql_syntax - Parse back a SQL-syntax function call * * Returns true if we successfully deparsed, false if we did not * recognize the function. */

Source from the content-addressed store, hash-verified

10385 * recognize the function.
10386 */
10387static bool
10388get_func_sql_syntax(FuncExpr *expr, deparse_context *context)
10389{
10390 StringInfo buf = context->buf;
10391 Oid funcoid = expr->funcid;
10392
10393 switch (funcoid)
10394 {
10395 case F_TIMEZONE_INTERVAL_TIMESTAMP:
10396 case F_TIMEZONE_INTERVAL_TIMESTAMPTZ:
10397 case F_TIMEZONE_INTERVAL_TIMETZ:
10398 case F_TIMEZONE_TEXT_TIMESTAMP:
10399 case F_TIMEZONE_TEXT_TIMESTAMPTZ:
10400 case F_TIMEZONE_TEXT_TIMETZ:
10401 /* AT TIME ZONE ... note reversed argument order */
10402 appendStringInfoChar(buf, '(');
10403 get_rule_expr((Node *) lsecond(expr->args), context, false);
10404 appendStringInfoString(buf, " AT TIME ZONE ");
10405 get_rule_expr((Node *) linitial(expr->args), context, false);
10406 appendStringInfoChar(buf, ')');
10407 return true;
10408
10409 case F_OVERLAPS_TIMESTAMPTZ_INTERVAL_TIMESTAMPTZ_INTERVAL:
10410 case F_OVERLAPS_TIMESTAMPTZ_INTERVAL_TIMESTAMPTZ_TIMESTAMPTZ:
10411 case F_OVERLAPS_TIMESTAMPTZ_TIMESTAMPTZ_TIMESTAMPTZ_INTERVAL:
10412 case F_OVERLAPS_TIMESTAMPTZ_TIMESTAMPTZ_TIMESTAMPTZ_TIMESTAMPTZ:
10413 case F_OVERLAPS_TIMESTAMP_INTERVAL_TIMESTAMP_INTERVAL:
10414 case F_OVERLAPS_TIMESTAMP_INTERVAL_TIMESTAMP_TIMESTAMP:
10415 case F_OVERLAPS_TIMESTAMP_TIMESTAMP_TIMESTAMP_INTERVAL:
10416 case F_OVERLAPS_TIMESTAMP_TIMESTAMP_TIMESTAMP_TIMESTAMP:
10417 case F_OVERLAPS_TIMETZ_TIMETZ_TIMETZ_TIMETZ:
10418 case F_OVERLAPS_TIME_INTERVAL_TIME_INTERVAL:
10419 case F_OVERLAPS_TIME_INTERVAL_TIME_TIME:
10420 case F_OVERLAPS_TIME_TIME_TIME_INTERVAL:
10421 case F_OVERLAPS_TIME_TIME_TIME_TIME:
10422 /* (x1, x2) OVERLAPS (y1, y2) */
10423 appendStringInfoString(buf, "((");
10424 get_rule_expr((Node *) linitial(expr->args), context, false);
10425 appendStringInfoString(buf, ", ");
10426 get_rule_expr((Node *) lsecond(expr->args), context, false);
10427 appendStringInfoString(buf, ") OVERLAPS (");
10428 get_rule_expr((Node *) lthird(expr->args), context, false);
10429 appendStringInfoString(buf, ", ");
10430 get_rule_expr((Node *) lfourth(expr->args), context, false);
10431 appendStringInfoString(buf, "))");
10432 return true;
10433
10434 case F_EXTRACT_TEXT_DATE:
10435 case F_EXTRACT_TEXT_TIME:
10436 case F_EXTRACT_TEXT_TIMETZ:
10437 case F_EXTRACT_TEXT_TIMESTAMP:
10438 case F_EXTRACT_TEXT_TIMESTAMPTZ:
10439 case F_EXTRACT_TEXT_INTERVAL:
10440 /* EXTRACT (x FROM y) */
10441 appendStringInfoString(buf, "EXTRACT(");
10442 {
10443 Const *con = (Const *) linitial(expr->args);
10444

Callers 1

get_func_exprFunction · 0.85

Calls 5

appendStringInfoCharFunction · 0.85
get_rule_exprFunction · 0.85
appendStringInfoStringFunction · 0.85
list_lengthFunction · 0.85
appendStringInfoFunction · 0.85

Tested by

no test coverage detected