From 5c2cc9f3a9047e300e84729e9eb3daeefea0ab7a Mon Sep 17 00:00:00 2001 From: wuyuechuan Date: Thu, 23 Nov 2023 19:23:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=85=B3=E9=94=AE=E5=AD=97?= =?UTF-8?q?=E9=99=8D=E7=BA=A7=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/backend/nodes/copyfuncs.cpp | 1 + src/common/backend/nodes/equalfuncs.cpp | 1 + src/common/backend/nodes/outfuncs.cpp | 3 +++ src/common/backend/nodes/readfuncs.cpp | 3 +++ src/common/backend/utils/init/globals.cpp | 1 + src/include/miscadmin.h | 1 + src/include/nodes/parsenodes_common.h | 1 + 7 files changed, 11 insertions(+) diff --git a/src/common/backend/nodes/copyfuncs.cpp b/src/common/backend/nodes/copyfuncs.cpp index 1f2f1a7da..e1e4e036c 100644 --- a/src/common/backend/nodes/copyfuncs.cpp +++ b/src/common/backend/nodes/copyfuncs.cpp @@ -3774,6 +3774,7 @@ static UpsertClause* _copyUpsertClause(const UpsertClause* from) UpsertClause* newnode = makeNode(UpsertClause); COPY_NODE_FIELD(targetList); + COPY_NODE_FIELD(aliasName); COPY_LOCATION_FIELD(location); COPY_NODE_FIELD(whereClause); diff --git a/src/common/backend/nodes/equalfuncs.cpp b/src/common/backend/nodes/equalfuncs.cpp index 34829bd2d..6684f80f7 100644 --- a/src/common/backend/nodes/equalfuncs.cpp +++ b/src/common/backend/nodes/equalfuncs.cpp @@ -3043,6 +3043,7 @@ static bool _equalStartWithClause(const StartWithClause * a, const StartWithClau static bool _equalUpsertClause(const UpsertClause* a, const UpsertClause* b) { COMPARE_NODE_FIELD(targetList); + COMPARE_NODE_FIELD(aliasName); COMPARE_LOCATION_FIELD(location); COMPARE_NODE_FIELD(whereClause); diff --git a/src/common/backend/nodes/outfuncs.cpp b/src/common/backend/nodes/outfuncs.cpp index 15739dc9b..da3aee963 100755 --- a/src/common/backend/nodes/outfuncs.cpp +++ b/src/common/backend/nodes/outfuncs.cpp @@ -870,6 +870,9 @@ static void _outUpsertClause(StringInfo str, const UpsertClause* node) WRITE_NODE_TYPE("UPSERTCLAUSE"); WRITE_NODE_FIELD(targetList); + if (t_thrd.proc->workingVersionNum >= UPSERT_ALIAS_VERSION_NUM) { + WRITE_NODE_FIELD(aliasName); + } WRITE_INT_FIELD(location); if (t_thrd.proc->workingVersionNum >= UPSERT_WHERE_VERSION_NUM) { WRITE_NODE_FIELD(whereClause); diff --git a/src/common/backend/nodes/readfuncs.cpp b/src/common/backend/nodes/readfuncs.cpp index df4c1f065..1cf3f5cc6 100755 --- a/src/common/backend/nodes/readfuncs.cpp +++ b/src/common/backend/nodes/readfuncs.cpp @@ -4307,6 +4307,9 @@ static UpsertClause* _readUpsertClause(void) READ_LOCALS(UpsertClause); READ_NODE_FIELD(targetList); + IF_EXIST(aliasName) { + READ_NODE_FIELD(aliasName); + } READ_INT_FIELD(location); IF_EXIST(whereClause) { READ_NODE_FIELD(whereClause); diff --git a/src/common/backend/utils/init/globals.cpp b/src/common/backend/utils/init/globals.cpp index d5b7a0e55..0bb69f821 100644 --- a/src/common/backend/utils/init/globals.cpp +++ b/src/common/backend/utils/init/globals.cpp @@ -80,6 +80,7 @@ const uint32 GRAND_VERSION_NUM = 92856; * 2.VERSION NUM FOR EACH FEATURE * Please write indescending order. ********************************************/ +const uint32 UPSERT_ALIAS_VERSION_NUM = 92856; const uint32 MULTI_CHARSET_VERSION_NUM = 92856; const uint32 SRF_FUSION_VERSION_NUM = 92847; const uint32 INNER_UNIQUE_VERSION_NUM = 92845; diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index c12f37094..dd5554264 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -129,6 +129,7 @@ extern const uint32 CREATE_INDEX_IF_NOT_EXISTS_VERSION_NUM; extern const uint32 SLOW_SQL_VERSION_NUM; extern const uint32 INDEX_HINT_VERSION_NUM; extern const uint32 CREATE_TABLE_AS_VERSION_NUM; +extern const uint32 UPSERT_ALIAS_VERSION_NUM; extern void register_backend_version(uint32 backend_version); extern bool contain_backend_version(uint32 version_number); diff --git a/src/include/nodes/parsenodes_common.h b/src/include/nodes/parsenodes_common.h index 432c5abc4..e21a6cb72 100644 --- a/src/include/nodes/parsenodes_common.h +++ b/src/include/nodes/parsenodes_common.h @@ -451,6 +451,7 @@ typedef struct HintState { typedef struct UpsertClause { NodeTag type; List *targetList; + Alias *aliasName; Node *whereClause; int location; } UpsertClause;