aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/outfuncs.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-03-11 16:27:51 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2011-03-11 16:28:18 -0500
commit8acdb8bf9cebc42cee5aa96a2d594756b44173c9 (patch)
tree3db28ae99dfb962e4ac5f2f338a15d2b5c7a476e /src/backend/nodes/outfuncs.c
parent7a8f43968add3c69b79c49ef236d945e643dcb1e (diff)
downloadpostgresql-8acdb8bf9cebc42cee5aa96a2d594756b44173c9.tar.gz
postgresql-8acdb8bf9cebc42cee5aa96a2d594756b44173c9.zip
Split CollateClause into separate raw and analyzed node types.
CollateClause is now used only in raw grammar output, and CollateExpr after parse analysis. This is for clarity and to avoid carrying collation names in post-analysis parse trees: that's both wasteful and possibly misleading, since the collation's name could be changed while the parsetree still exists. Also, clean up assorted infelicities and omissions in processing of the node type.
Diffstat (limited to 'src/backend/nodes/outfuncs.c')
-rw-r--r--src/backend/nodes/outfuncs.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 06fd7ff818e..d56e4dac011 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -1196,6 +1196,16 @@ _outConvertRowtypeExpr(StringInfo str, ConvertRowtypeExpr *node)
}
static void
+_outCollateExpr(StringInfo str, CollateExpr *node)
+{
+ WRITE_NODE_TYPE("COLLATE");
+
+ WRITE_NODE_FIELD(arg);
+ WRITE_OID_FIELD(collOid);
+ WRITE_LOCATION_FIELD(location);
+}
+
+static void
_outCaseExpr(StringInfo str, CaseExpr *node)
{
WRITE_NODE_TYPE("CASE");
@@ -2104,11 +2114,10 @@ _outTypeCast(StringInfo str, TypeCast *node)
static void
_outCollateClause(StringInfo str, CollateClause *node)
{
- WRITE_NODE_TYPE("COLLATE");
+ WRITE_NODE_TYPE("COLLATECLAUSE");
WRITE_NODE_FIELD(arg);
- WRITE_NODE_FIELD(collnames);
- WRITE_OID_FIELD(collOid);
+ WRITE_NODE_FIELD(collname);
WRITE_LOCATION_FIELD(location);
}
@@ -2829,9 +2838,6 @@ _outNode(StringInfo str, void *obj)
case T_RelabelType:
_outRelabelType(str, obj);
break;
- case T_CollateClause:
- _outCollateClause(str, obj);
- break;
case T_CoerceViaIO:
_outCoerceViaIO(str, obj);
break;
@@ -2841,6 +2847,9 @@ _outNode(StringInfo str, void *obj)
case T_ConvertRowtypeExpr:
_outConvertRowtypeExpr(str, obj);
break;
+ case T_CollateExpr:
+ _outCollateExpr(str, obj);
+ break;
case T_CaseExpr:
_outCaseExpr(str, obj);
break;
@@ -3020,6 +3029,9 @@ _outNode(StringInfo str, void *obj)
case T_TypeCast:
_outTypeCast(str, obj);
break;
+ case T_CollateClause:
+ _outCollateClause(str, obj);
+ break;
case T_IndexElem:
_outIndexElem(str, obj);
break;