Fix temp table related bugs

This commit is contained in:
xianyu-w
2023-08-04 10:18:34 +00:00
committed by ob-robot
parent 558f74a2d6
commit 88430a9d96
30 changed files with 2750 additions and 1064 deletions

View File

@ -2433,22 +2433,22 @@ Query Plan
==================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------
|0 |SORT | |11 |27 |
|1 |└─SUBPLAN FILTER | |11 |26 |
|0 |SORT | |11 |26 |
|1 |└─SUBPLAN FILTER | |11 |25 |
|2 | ├─TABLE FULL SCAN |x |11 |5 |
|3 | └─LIMIT | |1 |21 |
|4 | └─NESTED-LOOP JOIN CARTESIAN | |1 |21 |
|5 | ├─SUBPLAN SCAN |VIEW1|1 |11 |
|6 | │ └─LIMIT | |1 |11 |
|7 | │ └─HASH JOIN | |1 |11 |
|8 | │ ├─TABLE FULL SCAN |b |11 |5 |
|9 | │ └─TABLE FULL SCAN |a |4 |4 |
|10| └─MATERIAL | |1 |11 |
|11| └─SUBPLAN SCAN |VIEW2|1 |11 |
|12| └─LIMIT | |1 |11 |
|13| └─HASH JOIN | |1 |11 |
|14| ├─TABLE FULL SCAN |b |11 |5 |
|15| └─TABLE FULL SCAN |a |3 |4 |
|3 | └─LIMIT | |1 |20 |
|4 | └─NESTED-LOOP JOIN CARTESIAN | |1 |20 |
|5 | ├─SUBPLAN SCAN |VIEW1|1 |10 |
|6 | │ └─LIMIT | |1 |10 |
|7 | │ └─HASH JOIN | |1 |10 |
|8 | │ ├─TABLE FULL SCAN |a |11 |5 |
|9 | │ └─TABLE FULL SCAN |b |1 |4 |
|10| └─MATERIAL | |1 |10 |
|11| └─SUBPLAN SCAN |VIEW2|1 |10 |
|12| └─LIMIT | |1 |10 |
|13| └─HASH JOIN | |1 |10 |
|14| ├─TABLE FULL SCAN |c |11 |5 |
|15| └─TABLE FULL SCAN |d |1 |4 |
==================================================================
Outputs & filters:
-------------------------------------
@ -2469,30 +2469,30 @@ Outputs & filters:
6 - output([1]), filter(nil), rowset=256
limit(1), offset(nil)
7 - output(nil), filter(nil), rowset=256
equal_conds([a.c1 = b.d1]), other_conds([a.c1 = b.d1 OR a.c2 = b.d1])
8 - output([b.d1]), filter(nil), rowset=256
equal_conds([a.c1 = b.d1]), other_conds(nil)
8 - output([a.c1]), filter(nil), rowset=256
access([a.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
9 - output([b.d1]), filter(nil), rowset=256
access([b.d1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([b.__pk_increment]), range(MIN ; MAX)always true
9 - output([a.c1], [a.c2]), filter(nil), rowset=256
access([a.c1], [a.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
10 - output(nil), filter(nil), rowset=256
11 - output(nil), filter(nil), rowset=256
access(nil)
12 - output([1]), filter(nil), rowset=256
limit(1), offset(nil)
13 - output(nil), filter(nil), rowset=256
equal_conds([a.c2 = b.d1]), other_conds([a.c1 = b.d1 OR a.c2 = b.d1])
14 - output([b.d1]), filter(nil), rowset=256
access([b.d1]), partitions(p0)
equal_conds([c.c2 = d.d1]), other_conds(nil)
14 - output([c.c2]), filter(nil), rowset=256
access([c.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([b.__pk_increment]), range(MIN ; MAX)always true
15 - output([a.c1], [a.c2]), filter(nil), rowset=256
access([a.c1], [a.c2]), partitions(p0)
range_key([c.__pk_increment]), range(MIN ; MAX)always true
15 - output([d.d1]), filter(nil), rowset=256
access([d.d1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
range_key([d.__pk_increment]), range(MIN ; MAX)always true
select /*+ LEADING(@x2x (c d), (a b)) */
* from nn1 x
where exists (select /*+ qb_name(x2x) */ 1
@ -2523,22 +2523,22 @@ Query Plan
==================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------
|0 |SORT | |11 |27 |
|1 |└─SUBPLAN FILTER | |11 |26 |
|0 |SORT | |11 |26 |
|1 |└─SUBPLAN FILTER | |11 |25 |
|2 | ├─TABLE FULL SCAN |x |11 |5 |
|3 | └─LIMIT | |1 |21 |
|4 | └─NESTED-LOOP JOIN CARTESIAN | |1 |21 |
|5 | ├─SUBPLAN SCAN |VIEW1|1 |11 |
|6 | │ └─LIMIT | |1 |11 |
|7 | │ └─HASH JOIN | |1 |11 |
|8 | │ ├─TABLE FULL SCAN |b |11 |5 |
|9 | │ └─TABLE FULL SCAN |a |4 |4 |
|10| └─MATERIAL | |1 |11 |
|11| └─SUBPLAN SCAN |VIEW2|1 |11 |
|12| └─LIMIT | |1 |11 |
|13| └─HASH JOIN | |1 |11 |
|14| ├─TABLE FULL SCAN |b |11 |5 |
|15| └─TABLE FULL SCAN |a |3 |4 |
|3 | └─LIMIT | |1 |20 |
|4 | └─NESTED-LOOP JOIN CARTESIAN | |1 |20 |
|5 | ├─SUBPLAN SCAN |VIEW1|1 |10 |
|6 | │ └─LIMIT | |1 |10 |
|7 | │ └─HASH JOIN | |1 |10 |
|8 | │ ├─TABLE FULL SCAN |a |11 |5 |
|9 | │ └─TABLE FULL SCAN |b |1 |4 |
|10| └─MATERIAL | |1 |10 |
|11| └─SUBPLAN SCAN |VIEW2|1 |10 |
|12| └─LIMIT | |1 |10 |
|13| └─HASH JOIN | |1 |10 |
|14| ├─TABLE FULL SCAN |c |11 |5 |
|15| └─TABLE FULL SCAN |d |1 |4 |
==================================================================
Outputs & filters:
-------------------------------------
@ -2559,30 +2559,30 @@ Outputs & filters:
6 - output([1]), filter(nil), rowset=256
limit(1), offset(nil)
7 - output(nil), filter(nil), rowset=256
equal_conds([a.c1 = b.d1]), other_conds([a.c1 = b.d1 OR a.c2 = b.d1])
8 - output([b.d1]), filter(nil), rowset=256
equal_conds([a.c1 = b.d1]), other_conds(nil)
8 - output([a.c1]), filter(nil), rowset=256
access([a.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
9 - output([b.d1]), filter(nil), rowset=256
access([b.d1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([b.__pk_increment]), range(MIN ; MAX)always true
9 - output([a.c1], [a.c2]), filter(nil), rowset=256
access([a.c1], [a.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
10 - output(nil), filter(nil), rowset=256
11 - output(nil), filter(nil), rowset=256
access(nil)
12 - output([1]), filter(nil), rowset=256
limit(1), offset(nil)
13 - output(nil), filter(nil), rowset=256
equal_conds([a.c2 = b.d1]), other_conds([a.c1 = b.d1 OR a.c2 = b.d1])
14 - output([b.d1]), filter(nil), rowset=256
access([b.d1]), partitions(p0)
equal_conds([c.c2 = d.d1]), other_conds(nil)
14 - output([c.c2]), filter(nil), rowset=256
access([c.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([b.__pk_increment]), range(MIN ; MAX)always true
15 - output([a.c1], [a.c2]), filter(nil), rowset=256
access([a.c1], [a.c2]), partitions(p0)
range_key([c.__pk_increment]), range(MIN ; MAX)always true
15 - output([d.d1]), filter(nil), rowset=256
access([d.d1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
range_key([d.__pk_increment]), range(MIN ; MAX)always true
select /*+ LEADING(@x2x (c d), (a b)) */
* from nn1 x
where exists (select /*+ qb_name(x2x) LEADING(a c b d)*/ 1
@ -2613,22 +2613,22 @@ Query Plan
==================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------
|0 |SORT | |11 |27 |
|1 |└─SUBPLAN FILTER | |11 |26 |
|0 |SORT | |11 |26 |
|1 |└─SUBPLAN FILTER | |11 |25 |
|2 | ├─TABLE FULL SCAN |x |11 |5 |
|3 | └─LIMIT | |1 |21 |
|4 | └─NESTED-LOOP JOIN CARTESIAN | |1 |21 |
|5 | ├─SUBPLAN SCAN |VIEW1|1 |11 |
|6 | │ └─LIMIT | |1 |11 |
|7 | │ └─HASH JOIN | |1 |11 |
|8 | │ ├─TABLE FULL SCAN |b |11 |5 |
|9 | │ └─TABLE FULL SCAN |a |4 |4 |
|10| └─MATERIAL | |1 |11 |
|11| └─SUBPLAN SCAN |VIEW2|1 |11 |
|12| └─LIMIT | |1 |11 |
|13| └─HASH JOIN | |1 |11 |
|14| ├─TABLE FULL SCAN |b |11 |5 |
|15| └─TABLE FULL SCAN |a |3 |4 |
|3 | └─LIMIT | |1 |20 |
|4 | └─NESTED-LOOP JOIN CARTESIAN | |1 |20 |
|5 | ├─SUBPLAN SCAN |VIEW1|1 |10 |
|6 | │ └─LIMIT | |1 |10 |
|7 | │ └─HASH JOIN | |1 |10 |
|8 | │ ├─TABLE FULL SCAN |a |11 |5 |
|9 | │ └─TABLE FULL SCAN |b |1 |4 |
|10| └─MATERIAL | |1 |10 |
|11| └─SUBPLAN SCAN |VIEW2|1 |10 |
|12| └─LIMIT | |1 |10 |
|13| └─HASH JOIN | |1 |10 |
|14| ├─TABLE FULL SCAN |c |11 |5 |
|15| └─TABLE FULL SCAN |d |1 |4 |
==================================================================
Outputs & filters:
-------------------------------------
@ -2649,30 +2649,30 @@ Outputs & filters:
6 - output([1]), filter(nil), rowset=256
limit(1), offset(nil)
7 - output(nil), filter(nil), rowset=256
equal_conds([a.c1 = b.d1]), other_conds([a.c1 = b.d1 OR a.c2 = b.d1])
8 - output([b.d1]), filter(nil), rowset=256
equal_conds([a.c1 = b.d1]), other_conds(nil)
8 - output([a.c1]), filter(nil), rowset=256
access([a.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
9 - output([b.d1]), filter(nil), rowset=256
access([b.d1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([b.__pk_increment]), range(MIN ; MAX)always true
9 - output([a.c1], [a.c2]), filter(nil), rowset=256
access([a.c1], [a.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
10 - output(nil), filter(nil), rowset=256
11 - output(nil), filter(nil), rowset=256
access(nil)
12 - output([1]), filter(nil), rowset=256
limit(1), offset(nil)
13 - output(nil), filter(nil), rowset=256
equal_conds([a.c2 = b.d1]), other_conds([a.c1 = b.d1 OR a.c2 = b.d1])
14 - output([b.d1]), filter(nil), rowset=256
access([b.d1]), partitions(p0)
equal_conds([c.c2 = d.d1]), other_conds(nil)
14 - output([c.c2]), filter(nil), rowset=256
access([c.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([b.__pk_increment]), range(MIN ; MAX)always true
15 - output([a.c1], [a.c2]), filter(nil), rowset=256
access([a.c1], [a.c2]), partitions(p0)
range_key([c.__pk_increment]), range(MIN ; MAX)always true
15 - output([d.d1]), filter(nil), rowset=256
access([d.d1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
range_key([d.__pk_increment]), range(MIN ; MAX)always true
select /*+ LEADING(@x3x b d (a c)) */
* from nn1 x
where exists (select /*+ qb_name(x3x) */ 1