diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2006-12-21 16:05:16 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2006-12-21 16:05:16 +0000 |
commit | 8c1de5fb0010ae712568f1706b737270c3609bd8 (patch) | |
tree | bc328a654c41ea3eb1a9a27b76fd5215fb698608 /src/backend/utils/adt/ruleutils.c | |
parent | ed1e9cd501b4dc89a6a7e5cef702f2f6830ae829 (diff) | |
download | postgresql-8c1de5fb0010ae712568f1706b737270c3609bd8.tar.gz postgresql-8c1de5fb0010ae712568f1706b737270c3609bd8.zip |
Initial SQL/XML support: xml data type and initial set of functions.
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
-rw-r--r-- | src/backend/utils/adt/ruleutils.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 9d9404bde4c..a99942010b6 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -2,7 +2,7 @@ * ruleutils.c - Functions to convert stored expressions/querytrees * back to source text * - * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.235 2006/11/10 22:59:29 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.236 2006/12/21 16:05:15 petere Exp $ **********************************************************************/ #include "postgres.h" @@ -2988,6 +2988,7 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags) case T_CoalesceExpr: case T_MinMaxExpr: case T_NullIfExpr: + case T_XmlExpr: case T_Aggref: case T_FuncExpr: /* function-like: name(..) or name[..] */ @@ -3096,6 +3097,7 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags) case T_CoalesceExpr: /* own parentheses */ case T_MinMaxExpr: /* own parentheses */ case T_NullIfExpr: /* other separators */ + case T_XmlExpr: /* own parentheses */ case T_Aggref: /* own parentheses */ case T_CaseExpr: /* other separators */ return true; @@ -3144,6 +3146,7 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags) case T_CoalesceExpr: /* own parentheses */ case T_MinMaxExpr: /* own parentheses */ case T_NullIfExpr: /* other separators */ + case T_XmlExpr: /* own parentheses */ case T_Aggref: /* own parentheses */ case T_CaseExpr: /* other separators */ return true; @@ -3845,6 +3848,28 @@ get_rule_expr(Node *node, deparse_context *context, } break; + case T_XmlExpr: + { + XmlExpr *xexpr = (XmlExpr *) node; + + switch (xexpr->op) + { + case IS_XMLCONCAT: + appendStringInfo(buf, "XMLCONCAT("); + break; + case IS_XMLELEMENT: + appendStringInfo(buf, "XMLELEMENT("); + break; + case IS_XMLFOREST: + appendStringInfo(buf, "XMLFOREST("); + break; + } + get_rule_expr((Node *) xexpr->named_args, context, true); + get_rule_expr((Node *) xexpr->args, context, true); + appendStringInfoChar(buf, ')'); + } + break; + case T_CoerceToDomain: { CoerceToDomain *ctest = (CoerceToDomain *) node; |