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 dbd89994d25 Fix compile errors for parser
dbd89994d25 is described below

commit dbd89994d25ba109010740627df48dedbda9c34a
Author: Jinbao Chen <[email protected]>
AuthorDate: Sat Oct 4 16:35:13 2025 +0800

    Fix compile errors for parser
---
 src/backend/libpq/pqsignal.c            | 40 ---------------------------------
 src/backend/parser/analyze.c            | 10 ++++-----
 src/backend/parser/gram.y               | 10 ++++-----
 src/backend/parser/parse_agg.c          |  8 +++----
 src/backend/parser/parse_clause.c       |  2 +-
 src/backend/parser/parse_cte.c          |  2 +-
 src/backend/parser/parse_partition_gp.c |  1 +
 src/backend/parser/parse_relation.c     |  1 -
 src/backend/parser/parse_utilcmd.c      | 18 ++++++++++-----
 src/include/nodes/nodes.h               |  3 +++
 src/interfaces/libpq/fe-protocol3.c     | 15 +------------
 src/port/pqsignal.c                     | 17 --------------
 12 files changed, 32 insertions(+), 95 deletions(-)

diff --git a/src/backend/libpq/pqsignal.c b/src/backend/libpq/pqsignal.c
index b815be6eeab..d233e3a2fd7 100644
--- a/src/backend/libpq/pqsignal.c
+++ b/src/backend/libpq/pqsignal.c
@@ -97,43 +97,3 @@ pqinitmask(void)
        sigdelset(&StartupBlockSig, SIGALRM);
 #endif
 }
-
-/*
- * Set up a postmaster signal handler for signal "signo"
- *
- * Returns the previous handler.
- *
- * This is used only in the postmaster, which has its own odd approach to
- * signal handling.  For signals with handlers, we block all signals for the
- * duration of signal handler execution.  We also do not set the SA_RESTART
- * flag; this should be safe given the tiny range of code in which the
- * postmaster ever unblocks signals.
- *
- * pqinitmask() must have been invoked previously.
- */
-pqsigfunc
-pqsignal_pm(int signo, pqsigfunc func)
-{
-       struct sigaction act,
-                               oact;
-
-       act.sa_handler = func;
-       if (func == SIG_IGN || func == SIG_DFL)
-       {
-               /* in these cases, act the same as pqsignal() */
-               sigemptyset(&act.sa_mask);
-               act.sa_flags = SA_RESTART;
-       }
-       else
-       {
-               act.sa_mask = BlockSig;
-               act.sa_flags = 0;
-       }
-#ifdef SA_NOCLDSTOP
-       if (signo == SIGCHLD)
-               act.sa_flags |= SA_NOCLDSTOP;
-#endif
-       if (sigaction(signo, &act, &oact) < 0)
-               return SIG_ERR;
-       return oact.sa_handler;
-}
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 7fdfe7d4cce..b75bf05c21b 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -173,7 +173,7 @@ parse_analyze_fixedparams(RawStmt *parseTree, const char 
*sourceText,
        query = transformTopLevelStmt(pstate, parseTree);
 
        if (IsQueryIdEnabled())
-               jstate = JumbleQuery(query);
+               jstate = JumbleQuery(query, sourceText);
 
        if (post_parse_analyze_hook)
                (*post_parse_analyze_hook) (pstate, query, jstate);
@@ -215,7 +215,7 @@ parse_analyze_varparams(RawStmt *parseTree, const char 
*sourceText,
        check_variable_parameters(pstate, query);
 
        if (IsQueryIdEnabled())
-               jstate = JumbleQuery(query);
+               jstate = JumbleQuery(query, sourceText);
 
        if (post_parse_analyze_hook)
                (*post_parse_analyze_hook) (pstate, query, jstate);
@@ -252,7 +252,7 @@ parse_analyze_withcb(RawStmt *parseTree, const char 
*sourceText,
        query = transformTopLevelStmt(pstate, parseTree);
 
        if (IsQueryIdEnabled())
-               jstate = JumbleQuery(query);
+               jstate = JumbleQuery(query, sourceText);
 
        if (post_parse_analyze_hook)
                (*post_parse_analyze_hook) (pstate, query, jstate);
@@ -1111,7 +1111,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt)
         * This fixes the github issue: 
https://github.com/greenplum-db/gpdb/issues/9444
         */
        if (isOnConflictUpdate)
-               sanity_check_on_conflict_update(rte->relid,
+               
sanity_check_on_conflict_update(pstate->p_target_nsitem->p_rte->relid,
                                                                                
                        qry->onConflict->onConflictSet,
                                                                                
                        qry->onConflict->onConflictWhere);
 
@@ -3914,7 +3914,7 @@ transformLockingClause(ParseState *pstate, Query *qry, 
LockingClause *lc,
                                /*
                                 * A join RTE without an alias is not visible 
as a relation
                                 * name and needs to be skipped (otherwise it 
might hide a
-                               /*
+                                *
                                 * base relation with the same name), except if 
it has a USING
                                 * alias, which *is* visible.
                                 *
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index e2a309b3125..ac439cafe8a 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -4506,7 +4506,6 @@ alter_table_partition_id_spec:
            | FOR '(' func_name '(' func_arg_list opt_sort_clause ')' ')'
                                {
                                        Node               *arg;
-                                       Value              *val;
                                        Node               *fname;
 
                     /* allow RANK only */
@@ -4523,8 +4522,7 @@ alter_table_partition_id_spec:
                                        arg = linitial($5);
                                        if (!IsA(arg, A_Const))
                                                parser_yyerror("syntax error");
-                                       val = &((A_Const *) arg)->val;
-                                       if (!IsA(val, Integer) && !IsA(val, 
Float))
+                                       if (!IsA(&((A_Const *) arg)->val, 
Integer) && !IsA(&((A_Const *) arg)->val, Float))
                                                parser_yyerror("syntax error");
 
                                        /* we don't want a sort clause */
@@ -6374,7 +6372,7 @@ OptSecondPartitionSpec:
                                {
                                        PartitionSpec *n = 
makeNode(PartitionSpec);
 
-                                       n->strategy = $3;
+                                       n->strategy = 
parsePartitionStrategy($3);
                                        n->partParams = $5;
                                        n->gpPartDef = (GpPartitionDefinition 
*) $8;
                                        n->subPartSpec = (PartitionSpec *) $7;
@@ -6970,7 +6968,7 @@ TabSubPartitionBy: SUBPARTITION BY
                                {
                                        PartitionSpec *n = 
makeNode(PartitionSpec);
 
-                                       n->strategy = $3;
+                                       n->strategy =  
parsePartitionStrategy($3);
                                        n->partParams = $5;
                                        n->location = @1;
 
@@ -19464,7 +19462,7 @@ func_expr_common_subexpr:
 
                                        n = makeNode(FuncCall);
                                        n->funcname = SystemFuncName("median");
-                                       n->args = 
list_make1(makeAConst(makeFloat(pstrdup("0.5")), @1));
+                                       n->args = list_make1(makeAConst((Node*) 
makeFloat(pstrdup("0.5")), @1));
 
                                        sortby = makeNode(SortBy);
                                        sortby->node = $3;
diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c
index c351536755a..3177b2b032a 100644
--- a/src/backend/parser/parse_agg.c
+++ b/src/backend/parser/parse_agg.c
@@ -1245,7 +1245,7 @@ parseCheckAggregates(ParseState *pstate, Query *qry)
         * entries are RTE_JOIN kind.
         */
        if (hasJoinRTEs)
-               groupClauses = (List *) flatten_join_alias_vars(NULL, qry,
+               groupClauses = (List *) flatten_join_alias_vars(qry,
                                                                                
                                (Node *) groupClauses);
 
        /*
@@ -1289,7 +1289,7 @@ parseCheckAggregates(ParseState *pstate, Query *qry)
                                                        groupClauses, 
hasJoinRTEs,
                                                        have_non_var_grouping);
        if (hasJoinRTEs)
-               clause = flatten_join_alias_vars(NULL, qry, clause);
+               clause = flatten_join_alias_vars(qry, clause);
        check_ungrouped_columns(clause, pstate, qry,
                                                        groupClauses, 
groupClauseCommonVars,
                                                        have_non_var_grouping,
@@ -1300,7 +1300,7 @@ parseCheckAggregates(ParseState *pstate, Query *qry)
                                                        groupClauses, 
hasJoinRTEs,
                                                        have_non_var_grouping);
        if (hasJoinRTEs)
-               clause = flatten_join_alias_vars(NULL, qry, clause);
+               clause = flatten_join_alias_vars(qry, clause);
        check_ungrouped_columns(clause, pstate, qry,
                                                        groupClauses, 
groupClauseCommonVars,
                                                        have_non_var_grouping,
@@ -1639,7 +1639,7 @@ finalize_grouping_exprs_walker(Node *node,
                                Index           ref = 0;
 
                                if (context->hasJoinRTEs)
-                                       expr = flatten_join_alias_vars(NULL, 
context->qry, expr);
+                                       expr = 
flatten_join_alias_vars(context->qry, expr);
 
                                /*
                                 * Each expression must match a grouping entry 
at the current
diff --git a/src/backend/parser/parse_clause.c 
b/src/backend/parser/parse_clause.c
index b04f8257769..f96caa0dce8 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -663,7 +663,7 @@ transformRangeFunction(ParseState *pstate, RangeFunction *r)
                                        }
 
                                        /* Build the RTE for the table. */
-                                       qualified_name_list = 
stringToQualifiedNameList(strVal(&arg_val->val));
+                                       qualified_name_list = 
stringToQualifiedNameList(strVal(&arg_val->val), NULL);
                                        rel = 
makeRangeVarFromNameList(qualified_name_list);
                                        rel->location = arg_val->location;
 
diff --git a/src/backend/parser/parse_cte.c b/src/backend/parser/parse_cte.c
index e3ea88a273b..8559088df23 100644
--- a/src/backend/parser/parse_cte.c
+++ b/src/backend/parser/parse_cte.c
@@ -281,7 +281,7 @@ analyzeCTE(ParseState *pstate, CommonTableExpr *cte)
        /* Analysis not done already */
        Assert(!IsA(cte->ctequery, Query));
 
-、      query = parse_sub_analyze(cte->ctequery, pstate, cte, NULL, true);
+       query = parse_sub_analyze(cte->ctequery, pstate, cte, NULL, true);
        cte->ctequery = (Node *) query;
 
        /*
diff --git a/src/backend/parser/parse_partition_gp.c 
b/src/backend/parser/parse_partition_gp.c
index 747f1940eac..a57eb10679f 100644
--- a/src/backend/parser/parse_partition_gp.c
+++ b/src/backend/parser/parse_partition_gp.c
@@ -34,6 +34,7 @@
 #include "utils/builtins.h"
 #include "utils/date.h"
 #include "utils/datum.h"
+#include "utils/guc.h"
 #include "utils/lsyscache.h"
 #include "utils/partcache.h"
 #include "utils/rel.h"
diff --git a/src/backend/parser/parse_relation.c 
b/src/backend/parser/parse_relation.c
index 950ebe5ae7e..32f920872d6 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -1957,7 +1957,6 @@ addRangeTableEntryForFunction(ParseState *pstate,
                {
                        FuncExpr *func = (FuncExpr *) funcexpr;
                        Datum     d;
-                       int       i;
 
                        Assert(TypeSupportsDescribe(funcrettype));
 
diff --git a/src/backend/parser/parse_utilcmd.c 
b/src/backend/parser/parse_utilcmd.c
index a9088ce68b5..06b15189948 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -1346,9 +1346,19 @@ transformTableLikeClause(CreateStmtContext *cxt, 
TableLikeClause *table_like_cla
        {
                List       *parent_extstats;
                ListCell   *l;
+               AttrMap    *attmap;
 
                parent_extstats = RelationGetStatExtList(relation);
 
+               /*
+                * Construct a map from the LIKE relation's attnos to the child 
rel's.
+                * This re-checks type match etc, although it shouldn't be 
possible to
+                * have a failure since both tables are locked.
+                */
+               attmap = build_attrmap_by_name(RelationGetDescr(relation),
+                                                                          
tupleDesc,
+                                                                          
false);
+
                foreach(l, parent_extstats)
                {
                        Oid                     parent_stat_oid = lfirst_oid(l);
@@ -1356,7 +1366,8 @@ transformTableLikeClause(CreateStmtContext *cxt, 
TableLikeClause *table_like_cla
 
                        stats_stmt = generateClonedExtStatsStmt(cxt->relation,
                                                                                
                        RelationGetRelid(relation),
-                                                                               
                        parent_stat_oid);
+                                                                               
                        parent_stat_oid,
+                                                                               
                        attmap);
 
                        /* Copy comment on statistics object, if requested */
                        if (table_like_clause->options & 
CREATE_TABLE_LIKE_COMMENTS)
@@ -1369,8 +1380,6 @@ transformTableLikeClause(CreateStmtContext *cxt, 
TableLikeClause *table_like_cla
                                 */
                                stats_stmt->stxcomment = comment;
                        }
-
-                       cxt->extstats = lappend(cxt->extstats, stats_stmt);
                }
 
                list_free(parent_extstats);
@@ -2189,7 +2198,6 @@ generateClonedExtStatsStmt(RangeVar *heapRel, Oid 
heapRelid,
                exprs = (List *) stringToNode(exprsString);
                foreach(lc, exprs)
                {
-                       Node       *expr = (Node *) lfirst(lc);
                        StatsElem  *selem = makeNode(StatsElem);
                        selem->name = NULL;
                        selem->expr = (Node *) lfirst(lc);
@@ -4853,8 +4861,6 @@ transformAlterTableStmt(Oid relid, AlterTableStmt *stmt,
                newcmds = lappend(newcmds, newcmd);
        }
 
-       /* Append extended statistics objects */
-       transformExtendedStatistics(&cxt);
        /* Close rel */
        relation_close(rel, NoLock);
 
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 5149e52cf47..21b7da55347 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -408,6 +408,7 @@ typedef enum NodeTag
         * TAGS FOR EXTENSIBLE NODES (extensible.h)
         */
        T_ExtensibleNode,
+       T_ErrorSaveContext,
 
        /*
         * TAGS FOR STATEMENT NODES (mostly in parsenodes.h)
@@ -488,6 +489,7 @@ typedef enum NodeTag
        T_AlterTagStmt,
        T_DropTagStmt,
        T_AlterDatabaseStmt,
+       T_AlterDatabaseRefreshCollStmt,
        T_AlterDatabaseSetStmt,
        T_AlterRoleSetStmt,
        T_CreateConversionStmt,
@@ -515,6 +517,7 @@ typedef enum NodeTag
        T_AlterTSDictionaryStmt,
        T_AlterTSConfigurationStmt,
        T_PublicationTable,
+       T_PublicationObjSpec,
        T_CreateFdwStmt,
        T_AlterFdwStmt,
        T_CreateForeignServerStmt,
diff --git a/src/interfaces/libpq/fe-protocol3.c 
b/src/interfaces/libpq/fe-protocol3.c
index 1894d800502..8e8a8e69cae 100644
--- a/src/interfaces/libpq/fe-protocol3.c
+++ b/src/interfaces/libpq/fe-protocol3.c
@@ -3,12 +3,8 @@
  * fe-protocol3.c
  *       functions that are specific to frontend/backend protocol version 3
  *
-<<<<<<< HEAD
  * Portions Copyright (c) 2012-Present VMware, Inc. or its affiliates.
- * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
-=======
  * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
->>>>>>> REL_16_9
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  *
@@ -275,7 +271,7 @@ pqParseInput3(PGconn *conn)
                                        else
                                        {
                                                /* Advance the command queue 
and set us idle */
-                                               pqCommandQueueAdvance(conn, 
true, false);
+                                               pqCommandQueueAdvance(conn);
                                                conn->asyncStatus = 
PGASYNC_IDLE;
                                        }
                                        break;
@@ -1088,7 +1084,6 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
         */
        if (isError)
        {
-<<<<<<< HEAD
                if (res)
                        res->errMsg = pqResultStrdup(res, workBuf.data);
 
@@ -1114,9 +1109,6 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
                        res->cdbstats = prev;
                }
 
-
-=======
->>>>>>> REL_16_9
                pqClearAsyncResult(conn);       /* redundant, but be safe */
                if (res)
                {
@@ -1130,12 +1122,7 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
                }
 
                if (PQExpBufferDataBroken(workBuf))
-<<<<<<< HEAD
-                       appendPQExpBufferStr(&conn->errorMessage,
-                                                                
libpq_gettext("out of memory\n"));
-=======
                        libpq_append_conn_error(conn, "out of memory");
->>>>>>> REL_16_9
                else
                        appendPQExpBufferStr(&conn->errorMessage, workBuf.data);
        }
diff --git a/src/port/pqsignal.c b/src/port/pqsignal.c
index 6289f966497..33db61f3687 100644
--- a/src/port/pqsignal.c
+++ b/src/port/pqsignal.c
@@ -34,7 +34,6 @@
 
 #ifndef FRONTEND
 #include "libpq/pqsignal.h"
-<<<<<<< HEAD
 #include "miscadmin.h"
 #endif
 
@@ -90,16 +89,12 @@ wrapper_handler(SIGNAL_ARGS)
 
        (*pqsignal_handlers[postgres_signal_arg]) (postgres_signal_arg);
 }
-=======
-#endif
->>>>>>> REL_16_9
 
 /*
  * Set up a signal handler, with SA_RESTART, for signal "signo"
  *
  * Returns the previous handler.
  *
-<<<<<<< HEAD
  * NB: If called within a signal handler, race conditions may lead to bogus
  * return values.  You should either avoid calling this within signal handlers
  * or ignore the return value.
@@ -109,19 +104,14 @@ wrapper_handler(SIGNAL_ARGS)
  * function instead of providing potentially-bogus return values.
  * Unfortunately, that requires modifying the pqsignal() in legacy-pqsignal.c,
  * which in turn requires an SONAME bump, which is probably not worth it.
-=======
  * Note: the actual name of this function is either pqsignal_fe when
  * compiled with -DFRONTEND, or pqsignal when compiled without that.
  * This is to avoid a name collision with libpq's legacy-pqsignal.c.
->>>>>>> REL_16_9
  */
 pqsigfunc
 pqsignal(int signo, pqsigfunc func)
 {
-<<<<<<< HEAD
        pqsigfunc       orig_func = pqsignal_handlers[signo];   /* assumed 
atomic */
-=======
->>>>>>> REL_16_9
 #if !(defined(WIN32) && defined(FRONTEND))
        struct sigaction act,
                                oact;
@@ -147,7 +137,6 @@ pqsignal(int signo, pqsigfunc func)
 #endif
        if (sigaction(signo, &act, &oact) < 0)
                return SIG_ERR;
-<<<<<<< HEAD
        else if (oact.sa_handler == wrapper_handler)
                return orig_func;
        else
@@ -158,11 +147,5 @@ pqsignal(int signo, pqsigfunc func)
                return orig_func;
        else
                return ret;
-=======
-       return oact.sa_handler;
-#else
-       /* Forward to Windows native signal system. */
-       return signal(signo, func);
->>>>>>> REL_16_9
 #endif
 }


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

Reply via email to