[FEAT MERGE]4_1_sql_feature

Co-authored-by: leslieyuchen <leslieyuchen@gmail.com>
Co-authored-by: Charles0429 <xiezhenjiang@gmail.com>
Co-authored-by: raywill <hustos@gmail.com>
This commit is contained in:
obdev
2023-01-28 16:01:26 +08:00
committed by ob-robot
parent 3080f2b66f
commit 2d19a9d8f5
846 changed files with 161957 additions and 116661 deletions

View File

@ -528,7 +528,7 @@ create view v1 as
with RECURSIVE qn (foo, bar) as (select 1,1 from dual) select * from qn;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE VIEW `v1` AS WITH RECURSIVE`qn`(foo, bar) as (select 1 AS `foo`,1 AS `bar`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from `qn` utf8mb4 utf8mb4_general_ci
v1 CREATE VIEW `v1` AS WITH RECURSIVE `qn`(`foo`, `bar`) as (select 1 AS `foo`,1 AS `bar`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from `qn` utf8mb4 utf8mb4_general_ci
select * from v1;
+-----+-----+
@ -541,7 +541,7 @@ create view v1 as
with RECURSIVE qn (foo, bar) as (select 1,1 from t1) select * from qn;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE VIEW `v1` AS WITH RECURSIVE`qn`(foo, bar) as (select 1 AS `foo`,1 AS `bar` from `cte_st`.`t1`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from `qn` utf8mb4 utf8mb4_general_ci
v1 CREATE VIEW `v1` AS WITH RECURSIVE `qn`(`foo`, `bar`) as (select 1 AS `foo`,1 AS `bar` from `cte_st`.`t1`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from `qn` utf8mb4 utf8mb4_general_ci
select * from v1;
+-----+-----+
| foo | bar |
@ -588,7 +588,7 @@ select (with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from q
from dual;
show create view v;
View Create View character_set_client collation_connection
v CREATE VIEW `v` AS select (WITH RECURSIVE`qn` as (select 'with RECURSIVE' AS `with RECURSIVE`) select `qn`.`with RECURSIVE` from `qn`) AS `scal_subq` utf8mb4 utf8mb4_general_ci
v CREATE VIEW `v` AS select (WITH RECURSIVE `qn` as (select 'with RECURSIVE' AS `with RECURSIVE`) select `qn`.`with RECURSIVE` from `qn`) AS `scal_subq` utf8mb4 utf8mb4_general_ci
select * from v;
+----------------+
| scal_subq |
@ -599,7 +599,7 @@ drop view v;
create view v as select * from (with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn) dt;
show create view v;
View Create View character_set_client collation_connection
v CREATE VIEW `v` AS select `dt`.`with RECURSIVE` AS `with RECURSIVE` from (WITH RECURSIVE`qn` as (select 'with RECURSIVE' AS `with RECURSIVE`) select `qn`.`with RECURSIVE` AS `with RECURSIVE` from `qn`) dt utf8mb4 utf8mb4_general_ci
v CREATE VIEW `v` AS select `dt`.`with RECURSIVE` AS `with RECURSIVE` from (WITH RECURSIVE `qn` as (select 'with RECURSIVE' AS `with RECURSIVE`) select `qn`.`with RECURSIVE` AS `with RECURSIVE` from `qn`) dt utf8mb4 utf8mb4_general_ci
select * from v;
+----------------+
| with RECURSIVE |

View File

@ -1815,46 +1815,56 @@ Query Plan
|20| EXPRESSION | |
|21| TABLE SCAN |cte1|
====================================
Outputs & filters:
Outputs & filters:
-------------------------------------
0 - output([cte1.a], [cte1.b]), filter(nil), rowset=256,
conds([cte1.a < cte3.c]), nl_params_(nil)
1 - output([cte3.c]), filter(nil), rowset=256,
0 - output([cte1.a], [cte1.b]), filter(nil), rowset=256
conds([cte1.a < cte3.c]), nl_params_(nil), batch_join=false
1 - output([cte3.c]), filter(nil), rowset=256
access([cte3.c])
2 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
3 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
4 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
5 - output([1], [1], [1]), filter(nil)
values({1, 1, 1})
6 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), rowset=256,
access([cte1.a], [cte1.b], [cte1.c]), partitions is NULL,
7 - output([cte2.a + 1], [cte2.b + 1], [cte2.c + 1]), filter([cte2.a < 10]), rowset=256,
access([cte2.a], [cte2.b], [cte2.c]), partitions is NULL,
8 - output([cte3.a + 1], [cte3.b + 1], [cte3.c + 1]), filter(nil), rowset=256,
conds([cte3.a < cte2.b]), nl_params_(nil)
9 - output([cte3.a], [cte3.b], [cte3.c]), filter([cte3.a < 10]), rowset=256,
access([cte3.a], [cte3.b], [cte3.c]), partitions is NULL,
10 - output([cte2.b]), filter(nil), rowset=256
11 - output([cte2.b]), filter([cte2.a < 3]), rowset=256,
6 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), rowset=256
access([cte1.a], [cte1.b], [cte1.c])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key(nil), range(MIN ; MAX)
7 - output([cte2.a + 1], [cte2.b + 1], [cte2.c + 1]), filter([cte2.a < 10]), rowset=256
access([cte2.a], [cte2.b], [cte2.c])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key(nil), range(MIN ; MAX)
8 - output([cte3.a + 1], [cte3.b + 1], [cte3.c + 1]), filter(nil), rowset=256
conds([cte3.a < cte2.b]), nl_params_(nil), batch_join=false
9 - output([cte3.a], [cte3.b], [cte3.c]), filter([cte3.a < 10]), rowset=256
access([cte3.a], [cte3.b], [cte3.c])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key(nil), range(MIN ; MAX)
10 - output([cte2.b]), filter(nil), rowset=256
11 - output([cte2.b]), filter([cte2.a < 3]), rowset=256
access([cte2.a], [cte2.b])
12 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
13 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
14 - output([1], [1], [1]), filter(nil)
12 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
13 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
14 - output([1], [1], [1]), filter(nil)
values({1, 1, 1})
15 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), rowset=256,
access([cte1.a], [cte1.b], [cte1.c]), partitions is NULL,
16 - output([cte2.a + 1], [cte2.b + 1], [cte2.c + 1]), filter([cte2.a < 10]), rowset=256,
access([cte2.a], [cte2.b], [cte2.c]), partitions is NULL,
17 - output([cte1.a], [cte1.b]), filter(nil), rowset=256
18 - output([cte1.a], [cte1.b]), filter(nil), rowset=256,
15 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), rowset=256
access([cte1.a], [cte1.b], [cte1.c])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key(nil), range(MIN ; MAX)
16 - output([cte2.a + 1], [cte2.b + 1], [cte2.c + 1]), filter([cte2.a < 10]), rowset=256
access([cte2.a], [cte2.b], [cte2.c])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key(nil), range(MIN ; MAX)
17 - output([cte1.a], [cte1.b]), filter(nil), rowset=256
18 - output([cte1.a], [cte1.b]), filter(nil), rowset=256
access([cte1.a], [cte1.b])
19 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
20 - output([1], [1], [1]), filter(nil)
19 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), rowset=256
20 - output([1], [1], [1]), filter(nil)
values({1, 1, 1})
21 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), rowset=256,
access([cte1.a], [cte1.b], [cte1.c]), partitions is NULL,
21 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), rowset=256
access([cte1.a], [cte1.b], [cte1.c])
is_index_back=false, is_global_index=false, filter_before_indexback[false],
range_key(nil), range(MIN ; MAX)
set ob_query_timeout = 100000000;
with RECURSIVE cte1(a,b,c) as