This is an automated email from the ASF dual-hosted git repository.

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this 
push:
     new d76704e1d6d Remove struct Value
d76704e1d6d is described below

commit d76704e1d6d5a748e0700d10d9f3f7139aef17b7
Author: Jinbao Chen <[email protected]>
AuthorDate: Thu Oct 23 10:40:49 2025 +0800

    Remove struct Value
---
 gpcontrib/gp_exttable_fdw/extaccess.c       |  20 ++--
 gpcontrib/gp_exttable_fdw/gp_exttable_fdw.c |   2 +-
 gpcontrib/gp_exttable_fdw/option.c          |   4 +-
 src/backend/access/external/external.c      |   3 +-
 src/backend/access/external/url.c           |   2 +-
 src/backend/catalog/objectaddress.c         |   2 +-
 src/backend/commands/dropcmds.c             |   4 +-
 src/backend/commands/exttablecmds.c         |   8 +-
 src/backend/commands/user.c                 |   4 +-
 src/backend/executor/nodeAssertOp.c         |   2 +-
 src/backend/nodes/copyfuncs.c               |  31 ------
 src/backend/nodes/equalfuncs.c              |  30 ------
 src/backend/nodes/outfast.c                 |   7 +-
 src/backend/nodes/outfuncs.c                |   1 -
 src/backend/nodes/outfuncs_common.c         |   2 +-
 src/backend/nodes/readfast.c                | 156 ++++++++++------------------
 src/backend/nodes/readfuncs_common.c        |   4 +-
 src/backend/parser/gram.y                   |   4 +-
 src/backend/parser/parse_utilcmd.c          |   4 +-
 src/backend/postmaster/backoff.c            |   6 +-
 src/backend/utils/resscheduler/resqueue.c   |   6 +-
 src/include/nodes/parsenodes.h              |   4 +-
 src/include/nodes/value.h                   |  18 ++--
 23 files changed, 106 insertions(+), 218 deletions(-)

diff --git a/gpcontrib/gp_exttable_fdw/extaccess.c 
b/gpcontrib/gp_exttable_fdw/extaccess.c
index 08f6a431c66..f283239dda3 100644
--- a/gpcontrib/gp_exttable_fdw/extaccess.c
+++ b/gpcontrib/gp_exttable_fdw/extaccess.c
@@ -169,7 +169,7 @@ external_beginscan(Relation relation, uint32 scancounter,
        if (Gp_role == GP_ROLE_EXECUTE)
        {
                /* this is the normal path for most ext tables */
-               Value      *v;
+               String     *v;
                int                     idx = segindex;
 
                /*
@@ -184,12 +184,9 @@ external_beginscan(Relation relation, uint32 scancounter,
 
                if (idx >= 0)
                {
-                       v = (Value *) list_nth(uriList, idx);
+                       v = list_nth(uriList, idx);
 
-                       if (v->type == T_Null)
-                               uri = NULL;
-                       else
-                               uri = (char *) strVal(v);
+                       uri = strVal(v);
                }
        }
        /*
@@ -203,12 +200,9 @@ external_beginscan(Relation relation, uint32 scancounter,
                /* this is a ON COORDINATOR table. Only get uri if we are the 
master */
                if (segindex == -1)
                {
-                       Value      *v = list_nth(uriList, 0);
+                       String     *v = list_nth(uriList, 0);
 
-                       if (v->type == T_Null)
-                               uri = NULL;
-                       else
-                               uri = (char *) strVal(v);
+                       uri = strVal(v);
                }
        }
 
@@ -583,7 +577,7 @@ external_insert_init(Relation rel)
        {
                /* LOCATION - gpfdist or custom */
 
-               Value      *v;
+               String     *v;
                char       *uri_str;
                int                     segindex = GpIdentity.segindex;
                int                     num_segs = getgpsegmentCount();
@@ -597,7 +591,7 @@ external_insert_init(Relation rel)
 
                /* get a url to use. we use seg number modulo total num of urls 
*/
                v = list_nth(extentry->urilocations, my_url);
-               uri_str = pstrdup(v->val.str);
+               uri_str = pstrdup(v->sval);
                extInsertDesc->ext_uri = uri_str;
 
 #if 0
diff --git a/gpcontrib/gp_exttable_fdw/gp_exttable_fdw.c 
b/gpcontrib/gp_exttable_fdw/gp_exttable_fdw.c
index 19dde78a441..ebafc0a7172 100644
--- a/gpcontrib/gp_exttable_fdw/gp_exttable_fdw.c
+++ b/gpcontrib/gp_exttable_fdw/gp_exttable_fdw.c
@@ -110,7 +110,7 @@ strListToArray(List *stringlist)
 
        foreach(cell, stringlist)
        {
-               Value      *val = lfirst(cell);
+               String     *val = lfirst(cell);
                astate = accumArrayResult(astate, 
CStringGetTextDatum(strVal(val)),
                                                                  false, 
TEXTOID,
                                                                  
CurrentMemoryContext);
diff --git a/gpcontrib/gp_exttable_fdw/option.c 
b/gpcontrib/gp_exttable_fdw/option.c
index 04cccfe0e47..d112b7554c3 100644
--- a/gpcontrib/gp_exttable_fdw/option.c
+++ b/gpcontrib/gp_exttable_fdw/option.c
@@ -206,8 +206,8 @@ static void
 is_valid_locationuris(List *location_list, bool is_writable)
 {
        ListCell        *first_uri = list_head(location_list);
-       Value           *v = lfirst(first_uri);
-       char            *uri_str = pstrdup(v->val.str);
+       String          *v = lfirst(first_uri);
+       char            *uri_str = pstrdup(v->sval);
        Uri             *uri = ParseExternalTableUri(uri_str);
 
        if (uri->protocol == URI_FILE)
diff --git a/src/backend/access/external/external.c 
b/src/backend/access/external/external.c
index 0905a576a6c..3562f063cbf 100644
--- a/src/backend/access/external/external.c
+++ b/src/backend/access/external/external.c
@@ -1003,9 +1003,8 @@ create_external_scan_uri_list(ExtTableEntry *ext, bool 
*ismasteronly)
                else
                {
                        /* no file for this segdb. add a null entry */
-                       Value      *n = makeNode(Value);
+                       String     *n = makeNode(String);
 
-                       n->type = T_Null;
                        filenames = lappend(filenames, n);
                }
        }
diff --git a/src/backend/access/external/url.c 
b/src/backend/access/external/url.c
index bfdd24298e8..891805b7d2c 100644
--- a/src/backend/access/external/url.c
+++ b/src/backend/access/external/url.c
@@ -172,7 +172,7 @@ get_eol_delimiter(List *params)
 
        foreach(lc, params)
                if (pg_strcasecmp(((DefElem *) lc->ptr_value)->defname, 
"line_delim") == 0)
-                       return pstrdup(((Value *) ((DefElem *) 
lc->ptr_value)->arg)->val.str);
+                       return pstrdup(((String *) ((DefElem *) 
lc->ptr_value)->arg)->sval);
 
        return pstrdup("");
 }
diff --git a/src/backend/catalog/objectaddress.c 
b/src/backend/catalog/objectaddress.c
index 1f8ebcd7572..db5294c89e9 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -2757,7 +2757,7 @@ check_object_ownership(Oid roleid, ObjectType objtype, 
ObjectAddress address,
                case OBJECT_EXTPROTOCOL:
                        if (!pg_extprotocol_ownercheck(address.objectId, 
roleid))
                                aclcheck_error(ACLCHECK_NOT_OWNER, 
OBJECT_EXTPROTOCOL,
-                                                          strVal((Value *) 
object));
+                                                          strVal(object));
                        break;
                case OBJECT_TSPARSER:
                case OBJECT_TSTEMPLATE:
diff --git a/src/backend/commands/dropcmds.c b/src/backend/commands/dropcmds.c
index 9dc12b13eea..9bed9866aac 100644
--- a/src/backend/commands/dropcmds.c
+++ b/src/backend/commands/dropcmds.c
@@ -458,7 +458,7 @@ does_not_exist_skipping(ObjectType objtype, Node *object)
                        break;
                case OBJECT_STORAGE_SERVER:
                        msg = gettext_noop("storage server \"%s\" does not 
exist, skipping");
-                       name = strVal((Value *) object);
+                       name = strVal(object);
                        break;
                case OBJECT_OPCLASS:
                        {
@@ -531,7 +531,7 @@ does_not_exist_skipping(ObjectType objtype, Node *object)
                        break;
                case OBJECT_EXTPROTOCOL:
                        msg = gettext_noop("protocol \"%s\" does not exist, 
skipping");
-                       name = strVal((Value *) object);
+                       name = strVal(object);
                        break;
                        /* no default, to let compiler warn about missing case 
*/
        }
diff --git a/src/backend/commands/exttablecmds.c 
b/src/backend/commands/exttablecmds.c
index 73a20ce2a54..18834960460 100644
--- a/src/backend/commands/exttablecmds.c
+++ b/src/backend/commands/exttablecmds.c
@@ -251,8 +251,8 @@ DefineExternalRelation(CreateExternalStmt *createExtStmt)
        {
                if (Gp_role == GP_ROLE_DISPATCH)
                {
-                       Value   *loc = 
lfirst(list_head(exttypeDesc->location_list));
-                       Uri     *uri = ParseExternalTableUri(loc->val.str);
+                       String  *loc = 
lfirst(list_head(exttypeDesc->location_list));
+                       Uri     *uri = ParseExternalTableUri(loc->sval);
 
                        if (uri->protocol == URI_FILE || uri->protocol == 
URI_HTTP)
                        {
@@ -362,10 +362,10 @@ transformLocationUris(List *locs, bool isweb, bool 
iswritable)
                char       *uri_str_orig;
                char       *uri_str_final;
                char       *uri_str_escape;
-               Value      *v = lfirst(cell);
+               String     *v = lfirst(cell);
 
                /* get the current URI string from the command */
-               uri_str_orig = v->val.str;
+               uri_str_orig = v->sval;
 
                /* parse it to its components */
                uri = ParseExternalTableUri(uri_str_orig);
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index 6a95cc0e0b7..2bca6b1090f 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -129,7 +129,7 @@ static void SetCreateExtTableForRole(List* allow,
 
 static char *daysofweek[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
                                                         "Thursday", "Friday", 
"Saturday"};
-static int16 ExtractAuthInterpretDay(Value * day);
+static int16 ExtractAuthInterpretDay(Node * day);
 static void ExtractAuthIntervalClause(DefElem *defel,
                        authInterval *authInterval);
 static void AddRoleDenials(const char *rolename, Oid roleid,
@@ -3537,7 +3537,7 @@ ExtractAuthIntervalClause(DefElem *defel, authInterval 
*interval)
  *             or a string giving name of day in English
  */
 static int16
-ExtractAuthInterpretDay(Value * day)
+ExtractAuthInterpretDay(Node * day)
 {
        int16   ret;
        if (day->type == T_Integer)
diff --git a/src/backend/executor/nodeAssertOp.c 
b/src/backend/executor/nodeAssertOp.c
index 8603492403f..e9a4479a8c7 100644
--- a/src/backend/executor/nodeAssertOp.c
+++ b/src/backend/executor/nodeAssertOp.c
@@ -45,7 +45,7 @@ CheckForAssertViolations(AssertOpState* node, TupleTableSlot* 
slot)
 
        if (!isNull && !DatumGetBool(expr_value))
        {
-               Value *valErrorMessage = (Value*) 
list_nth(plannode->errmessage, 0);
+               String *valErrorMessage = list_nth(plannode->errmessage, 0);
 
                Assert(NULL != valErrorMessage && IsA(valErrorMessage, String) 
&&
                                0 < strlen(strVal(valErrorMessage)));
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 04fe72e2e86..a978e5d36db 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -6240,34 +6240,6 @@ _copyExtensibleNode(const ExtensibleNode *from)
  *                                     value.h copy functions
  * ****************************************************************
  */
-static Value *
-_copyValue(const Value *from)
-{
-       Value      *newnode = makeNode(Value);
-
-       /* See also _copyAConst when changing this code! */
-
-       COPY_SCALAR_FIELD(type);
-       switch (from->type)
-       {
-               case T_Integer:
-                       COPY_SCALAR_FIELD(val.ival);
-                       break;
-               case T_Float:
-               case T_String:
-               case T_BitString:
-                       COPY_STRING_FIELD(val.str);
-                       break;
-               case T_Null:
-                       /* nothing to do */
-                       break;
-               default:
-                       elog(ERROR, "unrecognized node type: %d",
-                                (int) from->type);
-                       break;
-       }
-       return newnode;
-}
 
 
 static ForeignKeyCacheInfo *
@@ -6922,9 +6894,6 @@ copyObjectImpl(const void *from)
                case T_BitString:
                        retval = _copyBitString(from);
                        break;
-               case T_Null:
-                       retval = _copyValue(from);
-                       break;
 
                        /*
                         * LIST NODES
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 19027a82f6f..80cf44578c9 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -3599,33 +3599,6 @@ _equalList(const List *a, const List *b)
  * Stuff from value.h
  */
 
-static bool
-_equalValue(const Value *a, const Value *b)
-{
-       COMPARE_SCALAR_FIELD(type);
-
-       switch (a->type)
-       {
-               case T_Integer:
-                       COMPARE_SCALAR_FIELD(val.ival);
-                       break;
-               case T_Float:
-               case T_String:
-               case T_BitString:
-                       COMPARE_STRING_FIELD(val.str);
-                       break;
-               case T_Null:
-                       /* nothing to do */
-                       break;
-               default:
-                       elog(ERROR, "unrecognized node type: %d", (int) 
a->type);
-                       break;
-       }
-
-       return true;
-}
-
-
 static bool
 _equalInteger(const Integer *a, const Integer *b)
 {
@@ -3918,9 +3891,6 @@ equal(const void *a, const void *b)
                case T_BitString:
                        retval = _equalBitString(a, b);
                        break;
-               case T_Null:
-                       retval = _equalValue(a, b);
-                       break;
 
                        /*
                         * EXTENSIBLE NODES
diff --git a/src/backend/nodes/outfast.c b/src/backend/nodes/outfast.c
index 2d1d846a72f..f1437ae8cf9 100644
--- a/src/backend/nodes/outfast.c
+++ b/src/backend/nodes/outfast.c
@@ -427,7 +427,6 @@ _outQuery(StringInfo str, Query *node)
        WRITE_ENUM_FIELD(commandType, CmdType);
        WRITE_ENUM_FIELD(querySource, QuerySource);
        WRITE_BOOL_FIELD(canSetTag);
-
        WRITE_NODE_FIELD(utilityStmt);
        WRITE_INT_FIELD(resultRelation);
        WRITE_BOOL_FIELD(hasAggs);
@@ -443,7 +442,10 @@ _outQuery(StringInfo str, Query *node)
        WRITE_BOOL_FIELD(canOptSelectLockingClause);
        WRITE_NODE_FIELD(cteList);
        WRITE_NODE_FIELD(rtable);
+       WRITE_NODE_FIELD(rteperminfos);
        WRITE_NODE_FIELD(jointree);
+       WRITE_NODE_FIELD(mergeActionList);
+       WRITE_BOOL_FIELD(mergeUseOuterJoin);
        WRITE_NODE_FIELD(targetList);
        WRITE_NODE_FIELD(withCheckOptions);
        WRITE_NODE_FIELD(onConflict);
@@ -606,10 +608,9 @@ static void
 _outAConst(StringInfo str, A_Const *node)
 {
        WRITE_NODE_TYPE("A_CONST");
-
+       WRITE_BOOL_FIELD(isnull);
        if (!node->isnull)
                _outNode(str, &node->val);
-
        WRITE_LOCATION_FIELD(location);
 }
 
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 7bd3533bc34..5d2d41ab97c 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -415,7 +415,6 @@ _outPlannedStmt(StringInfo str, const PlannedStmt *node)
        WRITE_NODE_FIELD(paramExecTypes);
        WRITE_NODE_FIELD(utilityStmt);
        WRITE_LOCATION_FIELD(stmt_location);
-
        WRITE_INT_FIELD(stmt_len);
 
        WRITE_INT_ARRAY(subplan_sliceIds, list_length(node->subplans));
diff --git a/src/backend/nodes/outfuncs_common.c 
b/src/backend/nodes/outfuncs_common.c
index 46ac6ee8e29..8cfa0c29d3e 100644
--- a/src/backend/nodes/outfuncs_common.c
+++ b/src/backend/nodes/outfuncs_common.c
@@ -738,7 +738,7 @@ unwrapStringList(List *list)
 
        foreach(lc, list)
        {
-               Value      *val = (Value *) lfirst(lc);
+               String     *val = lfirst(lc);
 
                lfirst(lc) = strVal(val);
                pfree(val);
diff --git a/src/backend/nodes/readfast.c b/src/backend/nodes/readfast.c
index 1ae6fea97c9..e1d1078b935 100644
--- a/src/backend/nodes/readfast.c
+++ b/src/backend/nodes/readfast.c
@@ -466,52 +466,65 @@ _readAConst(void)
 {
        READ_LOCALS(A_Const);
 
-       READ_ENUM_FIELD(val.node.type, NodeTag);
+       READ_BOOL_FIELD(isnull);
 
-       switch (local_node->val.node.type)
+       if (!local_node->isnull)
        {
-               case T_Integer:
-                       memcpy(&local_node->val.ival.ival, read_str_ptr, 
sizeof(long)); read_str_ptr+=sizeof(long);
-                       break;
-               case T_Boolean:
-                       memcpy(&local_node->val.boolval.boolval, read_str_ptr, 
sizeof(long)); read_str_ptr+=sizeof(long);
-                       break;
-               case T_Float:
-               {
-                       int slen; char * nn;
-                       memcpy(&slen, read_str_ptr, sizeof(int));
-                       read_str_ptr+=sizeof(int);
-                       nn = palloc(slen+1);
-                       memcpy(nn,read_str_ptr,slen);
-                       nn[slen] = '\0';
-                       local_node->val.fval.fval = nn; read_str_ptr+=slen;
-               }
-                       break;
-               case T_String:
-               {
-                       int slen; char * nn;
-                       memcpy(&slen, read_str_ptr, sizeof(int));
-                       read_str_ptr+=sizeof(int);
-                       nn = palloc(slen+1);
-                       memcpy(nn,read_str_ptr,slen);
-                       nn[slen] = '\0';
-                       local_node->val.sval.sval = nn; read_str_ptr+=slen;
-               }
-                       break;
-               case T_BitString:
+               union ValUnion *tmp = readNodeBinary();
+
+               switch (nodeTag(tmp))
                {
-                       int slen; char * nn;
-                       memcpy(&slen, read_str_ptr, sizeof(int));
-                       read_str_ptr+=sizeof(int);
-                       nn = palloc(slen+1);
-                       memcpy(nn,read_str_ptr,slen);
-                       nn[slen] = '\0';
-                       local_node->val.bsval.bsval = nn; read_str_ptr+=slen;
+                       case T_Integer:
+                               memcpy(&local_node->val.ival.ival, 
read_str_ptr, sizeof(long));
+                               read_str_ptr += sizeof(long);
+                               break;
+                       case T_Boolean:
+                               memcpy(&local_node->val.boolval.boolval, 
read_str_ptr, sizeof(long));
+                               read_str_ptr += sizeof(long);
+                               break;
+                       case T_Float:
+                       {
+                               int slen;
+                               char *nn;
+                               memcpy(&slen, read_str_ptr, sizeof(int));
+                               read_str_ptr += sizeof(int);
+                               nn = palloc(slen + 1);
+                               memcpy(nn, read_str_ptr, slen);
+                               nn[slen] = '\0';
+                               local_node->val.fval.fval = nn;
+                               read_str_ptr += slen;
+                       }
+                               break;
+                       case T_String:
+                       {
+                               int slen;
+                               char *nn;
+                               memcpy(&slen, read_str_ptr, sizeof(int));
+                               read_str_ptr += sizeof(int);
+                               nn = palloc(slen + 1);
+                               memcpy(nn, read_str_ptr, slen);
+                               nn[slen] = '\0';
+                               local_node->val.sval.sval = nn;
+                               read_str_ptr += slen;
+                       }
+                               break;
+                       case T_BitString:
+                       {
+                               int slen;
+                               char *nn;
+                               memcpy(&slen, read_str_ptr, sizeof(int));
+                               read_str_ptr += sizeof(int);
+                               nn = palloc(slen + 1);
+                               memcpy(nn, read_str_ptr, slen);
+                               nn[slen] = '\0';
+                               local_node->val.bsval.bsval = nn;
+                               read_str_ptr += slen;
+                       }
+                               break;
+                       case T_Null:
+                       default:
+                               break;
                }
-                       break;
-               case T_Null:
-               default:
-                       break;
        }
 
     READ_LOCATION_FIELD(location);   /*CDB*/
@@ -1678,59 +1691,6 @@ _readGpDropPartitionCmd(void)
        READ_DONE();
 }
 
-static Node *
-_readValue(NodeTag nt)
-{
-       Node * result = NULL;
-       if (nt == T_Integer)
-       {
-               long ival;
-               memcpy(&ival, read_str_ptr, sizeof(long)); 
read_str_ptr+=sizeof(long);
-               result = (Node *) makeInteger(ival);
-       }
-       else if (nt == T_Null)
-       {
-               Value *val = makeNode(Value);
-               val->type = T_Null;
-               result = (Node *)val;
-       }
-       else
-       {
-               int slen;
-               char * nn = NULL;
-               memcpy(&slen, read_str_ptr, sizeof(int));
-               read_str_ptr+=sizeof(int);
-
-               /*
-                * For the String case we want to create an empty string if 
slen is
-                * equal to zero, since otherwise we'll set the string to NULL, 
which
-                * has a different meaning and the NULL case is handed above.
-                */
-               if (slen > 0 || nt == T_String)
-               {
-                   nn = palloc(slen + 1);
-
-                       if (slen > 0)
-                           memcpy(nn, read_str_ptr, slen);
-
-                   read_str_ptr += (slen);
-                       nn[slen] = '\0';
-               }
-
-               if (nt == T_Float)
-                       result = (Node *) makeFloat(nn);
-               else if (nt == T_String)
-                       result = (Node *) makeString(nn);
-               else if (nt == T_BitString)
-                       result = (Node *) makeBitString(nn);
-               else
-                       elog(ERROR, "unknown Value node type %i", nt);
-       }
-
-       return result;
-
-}
-
 /*
  * _readGpPolicy
  */
@@ -1953,12 +1913,6 @@ readNodeBinary(void)
                return l;
        }
 
-       if (nt == T_Integer || nt == T_Float || nt == T_String ||
-               nt == T_BitString || nt == T_Null)
-       {
-               return _readValue(nt);
-       }
-
        switch(nt)
        {
                        case T_PlannedStmt:
diff --git a/src/backend/nodes/readfuncs_common.c 
b/src/backend/nodes/readfuncs_common.c
index db259750bfd..1b39bbd1abe 100644
--- a/src/backend/nodes/readfuncs_common.c
+++ b/src/backend/nodes/readfuncs_common.c
@@ -38,6 +38,8 @@ static void unwrapStringList(List *list);
 /* functions only used for text representation */
 #ifndef COMPILING_BINARY_FUNCS
 
+
+
 static A_Const *
 _readAConst(void)
 {
@@ -1818,7 +1820,7 @@ unwrapStringList(List *list)
 
        foreach(lc, list)
        {
-               Value      *val = (Value *) lfirst(lc);
+               String     *val = lfirst(lc);
 
                lfirst(lc) = strVal(val);
                pfree(val);
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index ac439cafe8a..1ac7cbf362e 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -2125,8 +2125,8 @@ deny_day_specifier: Sconst { $$ = (Node *)makeString($1); 
}
 deny_point: DAY_P deny_day_specifier opt_time
                                {
                                        DenyLoginPoint *n = 
makeNode(DenyLoginPoint);
-                                       n->day = (Value *)$2;
-                                       n->time = (Value *)$3;
+                                       n->day = $2;
+                                       n->time = $3;
                                        $$ = (Node *)n;
                                }
                ;
diff --git a/src/backend/parser/parse_utilcmd.c 
b/src/backend/parser/parse_utilcmd.c
index 06b15189948..74a7ef940f9 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -2582,7 +2582,7 @@ transformDistributedBy(ParseState *pstate,
                                 */
                                foreach (ip, constraint->keys)
                                {
-                                       Value *v = lfirst(ip);
+                                       String *v = lfirst(ip);
                                        ListCell *dkcell;
 
                                        foreach (dkcell, distrkeys)
@@ -2612,7 +2612,7 @@ transformDistributedBy(ParseState *pstate,
                                new_distrkeys = NIL;
                                foreach (ip, constraint->keys)
                                {
-                                       Value *v = lfirst(ip);
+                                       String *v = lfirst(ip);
                                        DistributionKeyElem *dk = 
makeNode(DistributionKeyElem);
 
                                        dk->name = strVal(v);
diff --git a/src/backend/postmaster/backoff.c b/src/backend/postmaster/backoff.c
index e3c58b5716a..f8c0bd52171 100644
--- a/src/backend/postmaster/backoff.c
+++ b/src/backend/postmaster/backoff.c
@@ -1410,15 +1410,15 @@ ResourceQueueGetPriorityWeight(Oid queueId)
 
        foreach(le, capabilitiesList)
        {
-               Value      *key = NULL;
+               Integer            *key = NULL;
 
                entry = (List *) lfirst(le);
                Assert(entry);
-               key = (Value *) linitial(entry);
+               key = linitial(entry);
                Assert(key->type == T_Integer); /* This is resource type id */
                if (intVal(key) == PG_RESRCTYPE_PRIORITY)
                {
-                       Value      *val = lsecond(entry);
+                       String     *val = lsecond(entry);
 
                        Assert(val->type == T_String);
                        weight = BackoffPriorityValueToInt(strVal(val));
diff --git a/src/backend/utils/resscheduler/resqueue.c 
b/src/backend/utils/resscheduler/resqueue.c
index 5f1d1772192..893bd43f637 100644
--- a/src/backend/utils/resscheduler/resqueue.c
+++ b/src/backend/utils/resscheduler/resqueue.c
@@ -2355,14 +2355,14 @@ int64 ResourceQueueGetMemoryLimitInCatalog(Oid queueId)
        foreach(le, capabilitiesList)
        {
                List *entry = NULL;
-               Value *key = NULL;
+               Integer *key = NULL;
                entry = (List *) lfirst(le);
                Assert(entry);
-               key = (Value *) linitial(entry);
+               key = linitial(entry);
                Assert(key->type == T_Integer); /* This is resource type id */
                if (intVal(key) == PG_RESRCTYPE_MEMORY_LIMIT)
                {
-                       Value *val = lsecond(entry);
+                       String *val = lsecond(entry);
                        Assert(val->type == T_String);
 
 #ifdef USE_ASSERT_CHECKING
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 5717b79a416..e46fcc2041f 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -3644,8 +3644,8 @@ typedef struct DropProfileStmt
 typedef struct DenyLoginPoint
 {
        NodeTag                 type;
-       Value              *day;
-       Value              *time;
+       Node               *day;
+       Node               *time;
 } DenyLoginPoint;
 
 typedef struct DenyLoginInterval
diff --git a/src/include/nodes/value.h b/src/include/nodes/value.h
index cd6b1229bca..b1750d2bd49 100644
--- a/src/include/nodes/value.h
+++ b/src/include/nodes/value.h
@@ -76,15 +76,15 @@ typedef struct BitString
        char       *bsval;
 } BitString;
 
-typedef struct Value
-{
-       NodeTag         type;                   /* tag appropriately (eg. 
T_String) */
-       union ValUnion2
-       {
-               int                     ival;           /* machine integer */
-               char       *str;                /* string */
-       }                       val;
-} Value;
+//typedef struct Value
+//{
+//     NodeTag         type;                   /* tag appropriately (eg. 
T_String) */
+//     union ValUnion2
+//     {
+//             int                     ival;           /* machine integer */
+//             char       *str;                /* string */
+//     }                       val;
+//} Value;
 
 #define intVal(v)              (castNode(Integer, v)->ival)
 #define floatVal(v)            atof(castNode(Float, v)->fval)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to