diff options
Diffstat (limited to 'src/backend/nodes')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 32 | ||||
-rw-r--r-- | src/backend/nodes/equalfuncs.c | 27 | ||||
-rw-r--r-- | src/backend/nodes/makefuncs.c | 63 | ||||
-rw-r--r-- | src/backend/nodes/outfuncs.c | 27 | ||||
-rw-r--r-- | src/backend/nodes/print.c | 10 | ||||
-rw-r--r-- | src/backend/nodes/readfuncs.c | 31 |
6 files changed, 65 insertions, 125 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index c2130e370d4..e314959e373 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -15,7 +15,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.299 2005/03/29 17:58:50 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.300 2005/04/06 16:34:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -540,26 +540,6 @@ _copyLimit(Limit *from) */ /* - * _copyResdom - */ -static Resdom * -_copyResdom(Resdom *from) -{ - Resdom *newnode = makeNode(Resdom); - - COPY_SCALAR_FIELD(resno); - COPY_SCALAR_FIELD(restype); - COPY_SCALAR_FIELD(restypmod); - COPY_STRING_FIELD(resname); - COPY_SCALAR_FIELD(ressortgroupref); - COPY_SCALAR_FIELD(resorigtbl); - COPY_SCALAR_FIELD(resorigcol); - COPY_SCALAR_FIELD(resjunk); - - return newnode; -} - -/* * _copyAlias */ static Alias * @@ -1077,8 +1057,13 @@ _copyTargetEntry(TargetEntry *from) { TargetEntry *newnode = makeNode(TargetEntry); - COPY_NODE_FIELD(resdom); COPY_NODE_FIELD(expr); + COPY_SCALAR_FIELD(resno); + COPY_STRING_FIELD(resname); + COPY_SCALAR_FIELD(ressortgroupref); + COPY_SCALAR_FIELD(resorigtbl); + COPY_SCALAR_FIELD(resorigcol); + COPY_SCALAR_FIELD(resjunk); return newnode; } @@ -2670,9 +2655,6 @@ copyObject(void *from) /* * PRIMITIVE NODES */ - case T_Resdom: - retval = _copyResdom(from); - break; case T_Alias: retval = _copyAlias(from); break; diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index bcf8c363937..958e320b47d 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -18,7 +18,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.238 2005/03/29 17:58:50 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.239 2005/04/06 16:34:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -83,21 +83,6 @@ */ static bool -_equalResdom(Resdom *a, Resdom *b) -{ - COMPARE_SCALAR_FIELD(resno); - COMPARE_SCALAR_FIELD(restype); - COMPARE_SCALAR_FIELD(restypmod); - COMPARE_STRING_FIELD(resname); - COMPARE_SCALAR_FIELD(ressortgroupref); - COMPARE_SCALAR_FIELD(resorigtbl); - COMPARE_SCALAR_FIELD(resorigcol); - COMPARE_SCALAR_FIELD(resjunk); - - return true; -} - -static bool _equalAlias(Alias *a, Alias *b) { COMPARE_STRING_FIELD(aliasname); @@ -546,8 +531,13 @@ _equalSetToDefault(SetToDefault *a, SetToDefault *b) static bool _equalTargetEntry(TargetEntry *a, TargetEntry *b) { - COMPARE_NODE_FIELD(resdom); COMPARE_NODE_FIELD(expr); + COMPARE_SCALAR_FIELD(resno); + COMPARE_STRING_FIELD(resname); + COMPARE_SCALAR_FIELD(ressortgroupref); + COMPARE_SCALAR_FIELD(resorigtbl); + COMPARE_SCALAR_FIELD(resorigcol); + COMPARE_SCALAR_FIELD(resjunk); return true; } @@ -1814,9 +1804,6 @@ equal(void *a, void *b) /* * PRIMITIVE NODES */ - case T_Resdom: - retval = _equalResdom(a, b); - break; case T_Alias: retval = _equalAlias(a, b); break; diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c index 026b962bb99..e1e6c3da836 100644 --- a/src/backend/nodes/makefuncs.c +++ b/src/backend/nodes/makefuncs.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.46 2004/12/31 21:59:55 pgsql Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/makefuncs.c,v 1.47 2005/04/06 16:34:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -87,48 +87,49 @@ makeVar(Index varno, /* * makeTargetEntry - - * creates a TargetEntry node (contains a Resdom) + * creates a TargetEntry node */ TargetEntry * -makeTargetEntry(Resdom *resdom, Expr *expr) +makeTargetEntry(Expr *expr, + AttrNumber resno, + char *resname, + bool resjunk) { - TargetEntry *rt = makeNode(TargetEntry); + TargetEntry *tle = makeNode(TargetEntry); - rt->resdom = resdom; - rt->expr = expr; - return rt; -} - -/* - * makeResdom - - * creates a Resdom (Result Domain) node - */ -Resdom * -makeResdom(AttrNumber resno, - Oid restype, - int32 restypmod, - char *resname, - bool resjunk) -{ - Resdom *resdom = makeNode(Resdom); - - resdom->resno = resno; - resdom->restype = restype; - resdom->restypmod = restypmod; - resdom->resname = resname; + tle->expr = expr; + tle->resno = resno; + tle->resname = resname; /* * We always set these fields to 0. If the caller wants to change them * he must do so explicitly. Few callers do that, so omitting these * arguments reduces the chance of error. */ - resdom->ressortgroupref = 0; - resdom->resorigtbl = InvalidOid; - resdom->resorigcol = 0; + tle->ressortgroupref = 0; + tle->resorigtbl = InvalidOid; + tle->resorigcol = 0; + + tle->resjunk = resjunk; - resdom->resjunk = resjunk; + return tle; +} + +/* + * flatCopyTargetEntry - + * duplicate a TargetEntry, but don't copy substructure + * + * This is commonly used when we just want to modify the resno or substitute + * a new expression. + */ +TargetEntry * +flatCopyTargetEntry(TargetEntry *src_tle) +{ + TargetEntry *tle = makeNode(TargetEntry); - return resdom; + Assert(IsA(src_tle, TargetEntry)); + memcpy(tle, src_tle, sizeof(TargetEntry)); + return tle; } /* diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index bb2b2c35f90..91a7abf5749 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.245 2004/12/31 21:59:55 pgsql Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.246 2005/04/06 16:34:05 tgl Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -521,21 +521,6 @@ _outHash(StringInfo str, Hash *node) *****************************************************************************/ static void -_outResdom(StringInfo str, Resdom *node) -{ - WRITE_NODE_TYPE("RESDOM"); - - WRITE_INT_FIELD(resno); - WRITE_OID_FIELD(restype); - WRITE_INT_FIELD(restypmod); - WRITE_STRING_FIELD(resname); - WRITE_UINT_FIELD(ressortgroupref); - WRITE_OID_FIELD(resorigtbl); - WRITE_INT_FIELD(resorigcol); - WRITE_BOOL_FIELD(resjunk); -} - -static void _outAlias(StringInfo str, Alias *node) { WRITE_NODE_TYPE("ALIAS"); @@ -900,8 +885,13 @@ _outTargetEntry(StringInfo str, TargetEntry *node) { WRITE_NODE_TYPE("TARGETENTRY"); - WRITE_NODE_FIELD(resdom); WRITE_NODE_FIELD(expr); + WRITE_INT_FIELD(resno); + WRITE_STRING_FIELD(resname); + WRITE_UINT_FIELD(ressortgroupref); + WRITE_OID_FIELD(resorigtbl); + WRITE_INT_FIELD(resorigcol); + WRITE_BOOL_FIELD(resjunk); } static void @@ -1684,9 +1674,6 @@ _outNode(StringInfo str, void *obj) case T_Hash: _outHash(str, obj); break; - case T_Resdom: - _outResdom(str, obj); - break; case T_Alias: _outAlias(str, obj); break; diff --git a/src/backend/nodes/print.c b/src/backend/nodes/print.c index e62d731a6cf..35bb99b62fd 100644 --- a/src/backend/nodes/print.c +++ b/src/backend/nodes/print.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/print.c,v 1.73 2005/03/16 21:38:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/print.c,v 1.74 2005/04/06 16:34:05 tgl Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -449,10 +449,10 @@ print_tl(List *tlist, List *rtable) { TargetEntry *tle = (TargetEntry *) lfirst(tl); - printf("\t%d %s\t", tle->resdom->resno, - tle->resdom->resname ? tle->resdom->resname : "<null>"); - if (tle->resdom->ressortgroupref != 0) - printf("(%u):\t", tle->resdom->ressortgroupref); + printf("\t%d %s\t", tle->resno, + tle->resname ? tle->resname : "<null>"); + if (tle->ressortgroupref != 0) + printf("(%u):\t", tle->ressortgroupref); else printf(" :\t"); print_expr((Node *) tle->expr, rtable); diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index f04668b6be7..f457d063315 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/readfuncs.c,v 1.175 2004/12/31 21:59:55 pgsql Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/readfuncs.c,v 1.176 2005/04/06 16:34:05 tgl Exp $ * * NOTES * Path and Plan nodes do not have any readfuncs support, because we @@ -238,26 +238,6 @@ _readSetOperationStmt(void) * Stuff from primnodes.h. */ -/* - * _readResdom - */ -static Resdom * -_readResdom(void) -{ - READ_LOCALS(Resdom); - - READ_INT_FIELD(resno); - READ_OID_FIELD(restype); - READ_INT_FIELD(restypmod); - READ_STRING_FIELD(resname); - READ_UINT_FIELD(ressortgroupref); - READ_OID_FIELD(resorigtbl); - READ_INT_FIELD(resorigcol); - READ_BOOL_FIELD(resjunk); - - READ_DONE(); -} - static Alias * _readAlias(void) { @@ -787,8 +767,13 @@ _readTargetEntry(void) { READ_LOCALS(TargetEntry); - READ_NODE_FIELD(resdom); READ_NODE_FIELD(expr); + READ_INT_FIELD(resno); + READ_STRING_FIELD(resname); + READ_UINT_FIELD(ressortgroupref); + READ_OID_FIELD(resorigtbl); + READ_INT_FIELD(resorigcol); + READ_BOOL_FIELD(resjunk); READ_DONE(); } @@ -952,8 +937,6 @@ parseNodeString(void) return_value = _readGroupClause(); else if (MATCH("SETOPERATIONSTMT", 16)) return_value = _readSetOperationStmt(); - else if (MATCH("RESDOM", 6)) - return_value = _readResdom(); else if (MATCH("ALIAS", 5)) return_value = _readAlias(); else if (MATCH("RANGEVAR", 8)) |