From 90f402831cd613bf6980ec1af8e9f58338c07cdb Mon Sep 17 00:00:00 2001 From: shijuzheng1997 Date: Mon, 26 Aug 2024 19:42:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DparseNodeString()=20error?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/backend/nodes/readfuncs.cpp | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/common/backend/nodes/readfuncs.cpp b/src/common/backend/nodes/readfuncs.cpp index bb52f82a6..7df5fdb85 100755 --- a/src/common/backend/nodes/readfuncs.cpp +++ b/src/common/backend/nodes/readfuncs.cpp @@ -4189,6 +4189,34 @@ static SortGroup* _readSortGroup(SortGroup* local_node) READ_DONE(); } +static SortBy* _readSortBy(SortBy* local_node) +{ + READ_LOCALS_NULL(SortBy); + READ_TEMP_LOCALS(); + + READ_NODE_FIELD(node); + READ_ENUM_FIELD(sortby_dir, SortByDir); + READ_ENUM_FIELD(sortby_nulls, SortByNulls); + READ_NODE_FIELD(useOp); + READ_INT_FIELD(location); + + READ_DONE(); +} + +static A_Const* _readAConst(A_Const* local_node) +{ + READ_LOCALS_NULL(A_Const); + READ_TEMP_LOCALS(); + + token = pg_strtok(&length); + Value *ptr = (Value*)nodeRead(NULL, 0); + errno_t err = memcpy_s(&local_node->val, sizeof(Value), ptr, sizeof(Value)); + securec_check(err, "\0", "\0"); + READ_INT_FIELD(location); + + READ_DONE(); +} + static Unique* _readUnique(Unique* local_node) { READ_LOCALS_NULL(Unique); @@ -6765,6 +6793,10 @@ Node* parseNodeString(void) return_value = _readSort(NULL); } else if (MATCH("SORTGROUP", 9)) { return_value = _readSortGroup(NULL); + } else if (MATCH("SORTBY", 6)) { + return_value = _readSortBy(NULL); + } else if (MATCH("A_CONST", 7)) { + return_value = _readAConst(NULL); } else if (MATCH("UNIQUE", 6)) { return_value = _readUnique(NULL); } else if (MATCH("PLANNEDSTMT", 11)) {