in ext/pg_query/pg_query_deparse.c [250:329]
static void deparseExpr(StringInfo str, Node *node)
{
switch (nodeTag(node))
{
case T_FuncCall:
deparseFuncCall(str, castNode(FuncCall, node));
break;
case T_XmlExpr:
deparseXmlExpr(str, castNode(XmlExpr, node));
break;
case T_TypeCast:
deparseTypeCast(str, castNode(TypeCast, node));
break;
case T_A_Const:
deparseAConst(str, castNode(A_Const, node));
break;
case T_ColumnRef:
deparseColumnRef(str, castNode(ColumnRef, node));
break;
case T_A_Expr:
deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE);
break;
case T_CaseExpr:
deparseCaseExpr(str, castNode(CaseExpr, node));
break;
case T_A_ArrayExpr:
deparseAArrayExpr(str, castNode(A_ArrayExpr, node));
break;
case T_NullTest:
deparseNullTest(str, castNode(NullTest, node));
break;
case T_XmlSerialize:
deparseXmlSerialize(str, castNode(XmlSerialize, node));
break;
case T_ParamRef:
deparseParamRef(str, castNode(ParamRef, node));
break;
case T_BoolExpr:
deparseBoolExpr(str, castNode(BoolExpr, node));
break;
case T_SubLink:
deparseSubLink(str, castNode(SubLink, node));
break;
case T_RowExpr:
deparseRowExpr(str, castNode(RowExpr, node));
break;
case T_CoalesceExpr:
deparseCoalesceExpr(str, castNode(CoalesceExpr, node));
break;
case T_SetToDefault:
deparseSetToDefault(str, castNode(SetToDefault, node));
break;
case T_A_Indirection:
deparseAIndirection(str, castNode(A_Indirection, node));
break;
case T_CollateClause:
deparseCollateClause(str, castNode(CollateClause, node));
break;
case T_CurrentOfExpr:
deparseCurrentOfExpr(str, castNode(CurrentOfExpr, node));
break;
case T_SQLValueFunction:
deparseSQLValueFunction(str, castNode(SQLValueFunction, node));
break;
case T_MinMaxExpr:
deparseMinMaxExpr(str, castNode(MinMaxExpr, node));
break;
case T_BooleanTest:
deparseBooleanTest(str, castNode(BooleanTest, node));
break;
case T_GroupingFunc:
deparseGroupingFunc(str, castNode(GroupingFunc, node));
break;
default:
Assert(false);
elog(ERROR, "unpermitted node type in a_expr/b_expr: %d",
(int) nodeTag(node));
break;
}
}