!4648 支持@variable 变量-实现递归查询-字符串和日期带NULL-WITH RECURSIVE-报错unrecognized node type:5017缺陷修改
Merge pull request !4648 from 暖阳/varbug
This commit is contained in:
@ -3443,6 +3443,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))));
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user