From 53bbc681ca97650a4b8ea59d8f1710196654fca5 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Wed, 18 Apr 2012 10:43:16 -0400 Subject: [PATCH] Fix various infelicities in node functions. Mostly, this consists of adding support for fields which exist in the structure but aren't handled by copy/equal/outfuncs; but the create foreign table case can actually produce garbage output. Noah Misch --- src/backend/nodes/copyfuncs.c | 2 ++ src/backend/nodes/equalfuncs.c | 3 +++ src/backend/nodes/outfuncs.c | 19 ++++++++++++++----- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index c94799b15c7..c58a1724cd1 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -2891,6 +2891,7 @@ _copyRenameStmt(const RenameStmt *from) RenameStmt *newnode = makeNode(RenameStmt); COPY_SCALAR_FIELD(renameType); + COPY_SCALAR_FIELD(relationType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_NODE_FIELD(objarg); @@ -3047,6 +3048,7 @@ _copyViewStmt(const ViewStmt *from) COPY_NODE_FIELD(aliases); COPY_NODE_FIELD(query); COPY_SCALAR_FIELD(replace); + COPY_NODE_FIELD(options); return newnode; } diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index 956421020c7..5d3e2414518 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -1306,6 +1306,7 @@ static bool _equalRenameStmt(const RenameStmt *a, const RenameStmt *b) { COMPARE_SCALAR_FIELD(renameType); + COMPARE_SCALAR_FIELD(relationType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_NODE_FIELD(objarg); @@ -1438,6 +1439,7 @@ _equalViewStmt(const ViewStmt *a, const ViewStmt *b) COMPARE_NODE_FIELD(aliases); COMPARE_NODE_FIELD(query); COMPARE_SCALAR_FIELD(replace); + COMPARE_NODE_FIELD(options); return true; } @@ -2182,6 +2184,7 @@ _equalColumnDef(const ColumnDef *a, const ColumnDef *b) COMPARE_NODE_FIELD(collClause); COMPARE_SCALAR_FIELD(collOid); COMPARE_NODE_FIELD(constraints); + COMPARE_NODE_FIELD(fdwoptions); return true; } diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 594b3fdea85..f713773efb4 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -1927,11 +1927,12 @@ _outPlannerParamItem(StringInfo str, const PlannerParamItem *node) * *****************************************************************************/ +/* + * print the basic stuff of all nodes that inherit from CreateStmt + */ static void -_outCreateStmt(StringInfo str, const CreateStmt *node) +_outCreateStmtInfo(StringInfo str, const CreateStmt *node) { - WRITE_NODE_TYPE("CREATESTMT"); - WRITE_NODE_FIELD(relation); WRITE_NODE_FIELD(tableElts); WRITE_NODE_FIELD(inhRelations); @@ -1943,12 +1944,20 @@ _outCreateStmt(StringInfo str, const CreateStmt *node) WRITE_BOOL_FIELD(if_not_exists); } +static void +_outCreateStmt(StringInfo str, const CreateStmt *node) +{ + WRITE_NODE_TYPE("CREATESTMT"); + + _outCreateStmtInfo(str, (const CreateStmt *) node); +} + static void _outCreateForeignTableStmt(StringInfo str, const CreateForeignTableStmt *node) { WRITE_NODE_TYPE("CREATEFOREIGNTABLESTMT"); - _outCreateStmt(str, (const CreateStmt *) &node->base); + _outCreateStmtInfo(str, (const CreateStmt *) node); WRITE_STRING_FIELD(servername); WRITE_NODE_FIELD(options); @@ -2088,7 +2097,7 @@ _outColumnDef(StringInfo str, const ColumnDef *node) WRITE_BOOL_FIELD(is_local); WRITE_BOOL_FIELD(is_not_null); WRITE_BOOL_FIELD(is_from_type); - WRITE_INT_FIELD(storage); + WRITE_CHAR_FIELD(storage); WRITE_NODE_FIELD(raw_default); WRITE_NODE_FIELD(cooked_default); WRITE_NODE_FIELD(collClause); -- 2.30.2