aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/ruleutils.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2006-12-21 16:05:16 +0000
committerPeter Eisentraut <peter_e@gmx.net>2006-12-21 16:05:16 +0000
commit8c1de5fb0010ae712568f1706b737270c3609bd8 (patch)
treebc328a654c41ea3eb1a9a27b76fd5215fb698608 /src/backend/utils/adt/ruleutils.c
parented1e9cd501b4dc89a6a7e5cef702f2f6830ae829 (diff)
downloadpostgresql-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.c27
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;