diff options
Diffstat (limited to 'src/backend/nodes')
| -rw-r--r-- | src/backend/nodes/copyfuncs.c | 36 | ||||
| -rw-r--r-- | src/backend/nodes/equalfuncs.c | 15 | ||||
| -rw-r--r-- | src/backend/nodes/outfuncs.c | 14 |
3 files changed, 61 insertions, 4 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index a968e375a6..804f900c7e 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -2575,11 +2575,15 @@ _copyCopyStmt(CopyStmt *from) return newnode; } -static CreateStmt * -_copyCreateStmt(CreateStmt *from) +/* + * CopyCreateStmtFields + * + * This function copies the fields of the CreateStmt node. It is used by + * copy functions for classes which inherit from CreateStmt. + */ +static void +CopyCreateStmtFields(CreateStmt *from, CreateStmt *newnode) { - CreateStmt *newnode = makeNode(CreateStmt); - COPY_NODE_FIELD(relation); COPY_NODE_FIELD(tableElts); COPY_NODE_FIELD(inhRelations); @@ -2589,6 +2593,14 @@ _copyCreateStmt(CreateStmt *from) COPY_SCALAR_FIELD(oncommit); COPY_STRING_FIELD(tablespacename); COPY_SCALAR_FIELD(if_not_exists); +} + +static CreateStmt * +_copyCreateStmt(CreateStmt *from) +{ + CreateStmt *newnode = makeNode(CreateStmt); + + CopyCreateStmtFields(from, newnode); return newnode; } @@ -3297,6 +3309,19 @@ _copyDropUserMappingStmt(DropUserMappingStmt *from) return newnode; } +static CreateForeignTableStmt * +_copyCreateForeignTableStmt(CreateForeignTableStmt *from) +{ + CreateForeignTableStmt *newnode = makeNode(CreateForeignTableStmt); + + CopyCreateStmtFields((CreateStmt *) from, (CreateStmt *) newnode); + + COPY_STRING_FIELD(servername); + COPY_NODE_FIELD(options); + + return newnode; +} + static CreateTrigStmt * _copyCreateTrigStmt(CreateTrigStmt *from) { @@ -4198,6 +4223,9 @@ copyObject(void *from) case T_DropUserMappingStmt: retval = _copyDropUserMappingStmt(from); break; + case T_CreateForeignTableStmt: + retval = _copyCreateForeignTableStmt(from); + break; case T_CreateTrigStmt: retval = _copyCreateTrigStmt(from); break; diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index 9e7c9481bd..2ef1a33bb7 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -1719,6 +1719,18 @@ _equalDropUserMappingStmt(DropUserMappingStmt *a, DropUserMappingStmt *b) } static bool +_equalCreateForeignTableStmt(CreateForeignTableStmt *a, CreateForeignTableStmt *b) +{ + if (!_equalCreateStmt(&a->base, &b->base)) + return false; + + COMPARE_STRING_FIELD(servername); + COMPARE_NODE_FIELD(options); + + return true; +} + +static bool _equalCreateTrigStmt(CreateTrigStmt *a, CreateTrigStmt *b) { COMPARE_STRING_FIELD(trigname); @@ -2821,6 +2833,9 @@ equal(void *a, void *b) case T_DropUserMappingStmt: retval = _equalDropUserMappingStmt(a, b); break; + case T_CreateForeignTableStmt: + retval = _equalCreateForeignTableStmt(a, b); + break; case T_CreateTrigStmt: retval = _equalCreateTrigStmt(a, b); break; diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 8825663666..c85fc2d9d4 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -1857,6 +1857,17 @@ _outCreateStmt(StringInfo str, CreateStmt *node) } static void +_outCreateForeignTableStmt(StringInfo str, CreateForeignTableStmt *node) +{ + WRITE_NODE_TYPE("CREATEFOREIGNTABLESTMT"); + + _outCreateStmt(str, (CreateStmt *) &node->base); + + WRITE_STRING_FIELD(servername); + WRITE_NODE_FIELD(options); +} + +static void _outIndexStmt(StringInfo str, IndexStmt *node) { WRITE_NODE_TYPE("INDEXSTMT"); @@ -2881,6 +2892,9 @@ _outNode(StringInfo str, void *obj) case T_CreateStmt: _outCreateStmt(str, obj); break; + case T_CreateForeignTableStmt: + _outCreateForeignTableStmt(str, obj); + break; case T_IndexStmt: _outIndexStmt(str, obj); break; |
