From 5b23f7fcb21f4c64a89dbde3fa97c1c83ad294cc Mon Sep 17 00:00:00 2001 From: nnuanyang Date: Wed, 3 Jan 2024 03:01:00 -0800 Subject: [PATCH 1/2] fixed 916f711 from https://gitee.com/totaj/openGauss-server/pulls/4648 add test example --- .../set_user_defined_variables_test.source | 24 ++++++++++++++ .../set_user_defined_variables_test.source | 31 +++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/test/regress/input/set_user_defined_variables_test.source b/src/test/regress/input/set_user_defined_variables_test.source index bc1cd388d..f71ea5d59 100644 --- a/src/test/regress/input/set_user_defined_variables_test.source +++ b/src/test/regress/input/set_user_defined_variables_test.source @@ -737,6 +737,30 @@ my_table h WHERE @r<> 0; SELECT (SELECT @r:= parent_id FROM my_table WHERE id = @r) AS parent_id1 FROM my_table h WHERE @r<> 0; +drop table my_table_1162670; +create table my_table_1162670( +col_1 varchar(50), +col_2 date, +col_3 varchar(50) default 'default col_3' +); +insert into my_table_1162670 values(NULL, '2023-1-23'), +('bbbb', '2020-1-23'), +('cccc', '2021-2-23'), +('dddd', '2023-3-23'), +('eeee', NULL); +SET @date_threshold = '2022-01-01'; +WITH RECURSIVE recursive_query AS ( +SELECT col_1, col_2, col_3 +FROM my_table_1162670 +WHERE col_2 >= @date_threshold +UNION ALL +SELECT e.col_1, e.col_2, e.col_3 +FROM my_table_1162670 e +INNER JOIN recursive_query r ON e.col_2 = (r.col_2 + INTERVAL '1year') +) +SELECT col_1, col_2, col_3 +FROM recursive_query +ORDER BY col_2 ASC; \c regression drop database if exists test_set; diff --git a/src/test/regress/output/set_user_defined_variables_test.source b/src/test/regress/output/set_user_defined_variables_test.source index db0e1528e..fa73f2576 100644 --- a/src/test/regress/output/set_user_defined_variables_test.source +++ b/src/test/regress/output/set_user_defined_variables_test.source @@ -1471,6 +1471,37 @@ my_table h WHERE @r<> 0; ------------ (0 rows) +drop table my_table_1162670; +ERROR: table "my_table_1162670" does not exist +create table my_table_1162670( +col_1 varchar(50), +col_2 date, +col_3 varchar(50) default 'default col_3' +); +insert into my_table_1162670 values(NULL, '2023-1-23'), +('bbbb', '2020-1-23'), +('cccc', '2021-2-23'), +('dddd', '2023-3-23'), +('eeee', NULL); +SET @date_threshold = '2022-01-01'; +WITH RECURSIVE recursive_query AS ( +SELECT col_1, col_2, col_3 +FROM my_table_1162670 +WHERE col_2 >= @date_threshold +UNION ALL +SELECT e.col_1, e.col_2, e.col_3 +FROM my_table_1162670 e +INNER JOIN recursive_query r ON e.col_2 = (r.col_2 + INTERVAL '1year') +) +SELECT col_1, col_2, col_3 +FROM recursive_query +ORDER BY col_2 ASC; + col_1 | col_2 | col_3 +-------+------------+--------------- + | 01-23-2023 | default col_3 + dddd | 03-23-2023 | default col_3 +(2 rows) + \c regression drop database if exists test_set; \! @abs_bindir@/gs_guc reload -Z datanode -D @abs_srcdir@/tmp_check/datanode1 -c "enable_set_variable_b_format=off" >/dev/null 2>&1 From bcd6006ceda177abb4a38c3de4fad259dc758259 Mon Sep 17 00:00:00 2001 From: nnuanyang Date: Mon, 18 Dec 2023 04:48:51 -0800 Subject: [PATCH 2/2] fixed 527f5a2 from https://gitee.com/totaj/openGauss-server/pulls/4648 WITH RECURSIVE bug --- src/common/backend/nodes/nodeFuncs.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/common/backend/nodes/nodeFuncs.cpp b/src/common/backend/nodes/nodeFuncs.cpp index e50e5aeaf..f9ee2aaf5 100644 --- a/src/common/backend/nodes/nodeFuncs.cpp +++ b/src/common/backend/nodes/nodeFuncs.cpp @@ -3420,6 +3420,9 @@ bool raw_expression_tree_walker(Node* node, bool (*walker)(), void* context) return p2walker(((CommonTableExpr*)node)->ctequery, context); case T_AutoIncrement: return p2walker(((AutoIncrement*)node)->expr, context); + case T_UserVar: + /* @var do not need recursion */ + break; default: ereport(ERROR, (errcode(ERRCODE_UNRECOGNIZED_NODE_TYPE), errmsg("unrecognized node type: %d", (int)nodeTag(node))));