in ext/pg_query/pg_query_deparse.c [332:380]
static void deparseCExpr(StringInfo str, Node *node)
{
switch (nodeTag(node))
{
case T_ColumnRef:
deparseColumnRef(str, castNode(ColumnRef, node));
break;
case T_A_Const:
deparseAConst(str, castNode(A_Const, node));
break;
case T_TypeCast:
deparseTypeCast(str, castNode(TypeCast, node));
break;
case T_A_Expr:
appendStringInfoChar(str, '(');
deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE);
appendStringInfoChar(str, ')');
break;
case T_ParamRef:
deparseParamRef(str, castNode(ParamRef, node));
break;
case T_A_Indirection:
deparseAIndirection(str, castNode(A_Indirection, node));
break;
case T_CaseExpr:
deparseCaseExpr(str, castNode(CaseExpr, node));
break;
case T_FuncCall:
deparseFuncCall(str, castNode(FuncCall, node));
break;
case T_SubLink:
deparseSubLink(str, castNode(SubLink, node));
break;
case T_A_ArrayExpr:
deparseAArrayExpr(str, castNode(A_ArrayExpr, node));
break;
case T_RowExpr:
deparseRowExpr(str, castNode(RowExpr, node));
break;
case T_GroupingFunc:
deparseGroupingFunc(str, castNode(GroupingFunc, node));
break;
default:
Assert(false);
elog(ERROR, "unpermitted node type in c_expr: %d",
(int) nodeTag(node));
break;
}
}