*************** Case 1 *************** SQL: select * from t4 where c1 in (select c1 from t1); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |PX COORDINATOR | |90 |697 | |1 | EXCHANGE OUT DISTR |:EX10001|90 |682 | |2 | HASH JOIN | |90 |649 | |3 | EXCHANGE IN DISTR | |100 |118 | |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|100 |105 | |5 | TABLE SCAN |t4 |100 |78 | |6 | PX PARTITION ITERATOR | |500 |387 | |7 | TABLE SCAN |t1 |500 |387 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t4.c1, t4.c2, t4.c3)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t4.c1, t4.c2, t4.c3)]), filter(nil), dop=1 2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), equal_conds([t4.c1 = t1.c1]), other_conds(nil) 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) 4 - (#keys=1, [t4.c1]), output([t4.c1], [t4.c2], [t4.c3]), filter(nil), is_single, dop=1 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) 6 - output([t1.c1]), filter(nil) 7 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$FE336D0E" ("opt"."t4"@"SEL$1" "opt"."t1"@"SEL$2")) USE_HASH(@"SEL$FE336D0E" "opt"."t1"@"SEL$2") PQ_DISTRIBUTE(@"SEL$FE336D0E" "opt"."t1"@"SEL$2" PARTITION NONE) FULL(@"SEL$FE336D0E" "opt"."t4"@"SEL$1") FULL(@"SEL$FE336D0E" "opt"."t1"@"SEL$2") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") MERGE(@"SEL$2" > "SEL$E5385516") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t4"@"SEL$1" "opt.t1"@"SEL$1" )) USE_HASH(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) FULL(@"SEL$1" "opt"."t4"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 1(end) ************** *************** Case 2 *************** SQL: select /*+INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c3")*/* from t1 where c1 in (select c1 from t4); =============================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| --------------------------------------------------------------- |0 |PX COORDINATOR | |10 |176 | |1 | EXCHANGE OUT DISTR |:EX10001 |10 |175 | |2 | NESTED-LOOP JOIN | |10 |172 | |3 | EXCHANGE IN DISTR | |10 |106 | |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |10 |105 | |5 | SUBPLAN SCAN |VIEW2 |10 |104 | |6 | HASH DISTINCT | |10 |104 | |7 | TABLE SCAN |t4(idx_t4_c3)|100 |78 | |8 | PX PARTITION ITERATOR | |1 |29 | |9 | TABLE GET |t1 |1 |29 | =============================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil), conds(nil), nl_params_([VIEW2.VIEW1.c1]) 3 - output([PARTITION_ID], [VIEW2.VIEW1.c1]), filter(nil) 4 - (#keys=1, [VIEW2.VIEW1.c1]), output([PARTITION_ID], [VIEW2.VIEW1.c1]), filter(nil), is_single, dop=1 5 - output([VIEW2.VIEW1.c1]), filter(nil), access([VIEW2.VIEW1.c1]) 6 - output([t4.c1]), filter(nil), distinct([t4.c1]) 7 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E5385516" ("VIEW2"@"SEL$6FCAE2AA" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$E5385516" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$E5385516" "opt"."t1"@"SEL$1" PARTITION NONE) USE_HASH_DISTINCT(@"SEL$8A1445BC") INDEX(@"SEL$8A1445BC" "opt"."t4"@"SEL$2" "idx_t4_c3") FULL(@"SEL$E5385516" "opt"."t1"@"SEL$1") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") MERGE(@"SEL$2" < "SEL$7BD09C5F") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("VIEW2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) INDEX(@"SEL$2" "opt"."t4"@"SEL$2" "idx_t4_c3") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 2(end) ************** *************** Case 3 *************** SQL: select * from t1 where c1 in (select c1 from t4); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |PX COORDINATOR | |10 |154 | |1 | EXCHANGE OUT DISTR |:EX10001|10 |153 | |2 | NESTED-LOOP JOIN | |10 |150 | |3 | EXCHANGE IN DISTR | |10 |84 | |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|10 |83 | |5 | SUBPLAN SCAN |VIEW2 |10 |82 | |6 | MERGE DISTINCT | |10 |82 | |7 | TABLE SCAN |t4 |100 |78 | |8 | PX PARTITION ITERATOR | |1 |29 | |9 | TABLE GET |t1 |1 |29 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil), conds(nil), nl_params_([VIEW2.VIEW1.c1]) 3 - output([PARTITION_ID], [VIEW2.VIEW1.c1]), filter(nil) 4 - (#keys=1, [VIEW2.VIEW1.c1]), output([PARTITION_ID], [VIEW2.VIEW1.c1]), filter(nil), is_single, dop=1 5 - output([VIEW2.VIEW1.c1]), filter(nil), access([VIEW2.VIEW1.c1]) 6 - output([t4.c1]), filter(nil), distinct([t4.c1]) 7 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E5385516" ("VIEW2"@"SEL$6FCAE2AA" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$E5385516" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$E5385516" "opt"."t1"@"SEL$1" PARTITION NONE) FULL(@"SEL$8A1445BC" "opt"."t4"@"SEL$2") FULL(@"SEL$E5385516" "opt"."t1"@"SEL$1") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") MERGE(@"SEL$2" < "SEL$7BD09C5F") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("VIEW2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$2" "opt"."t4"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 3(end) ************** *************** Case 4 *************** SQL: select /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c2_c3") INDEX(@"SEL$2" "opt.t1"@"SEL$2" "idx_t1_c2") END_OUTLINE_DATA */* from t4 where c1 in (select max(c1) from t1); ==================================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------------------- |0 |NESTED-LOOP JOIN | |9 |482 | |1 | SUBPLAN SCAN |VIEW1 |1 |397 | |2 | SCALAR GROUP BY | |1 |397 | |3 | SUBPLAN SCAN |VIEW2 |1 |397 | |4 | LIMIT | |1 |397 | |5 | PX COORDINATOR MERGE SORT | |1 |397 | |6 | EXCHANGE OUT DISTR |:EX10000 |1 |397 | |7 | TOP-N SORT | |1 |397 | |8 | PX PARTITION ITERATOR | |500 |387 | |9 | TABLE SCAN |t1(idx_t1_c2) |500 |387 | |10| TABLE SCAN |t4(idx_t4_c2_c3)|100 |78 | ==================================================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), conds([t4.c1 = VIEW1.max(c1)]), nl_params_(nil) 1 - output([VIEW1.max(c1)]), filter(nil), access([VIEW1.max(c1)]) 2 - output([T_FUN_MAX(VIEW2.t1.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(VIEW2.t1.c1)]) 3 - output([VIEW2.t1.c1]), filter(nil), access([VIEW2.t1.c1]) 4 - output([t1.c1]), filter(nil), limit(1), offset(nil) 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]) 6 - output([t1.c1]), filter(nil), dop=1 7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]), topn(1) 8 - output([t1.c1]), filter(nil) 9 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E5385516" ("VIEW1"@"SEL$1" "opt"."t4"@"SEL$1")) USE_NL(@"SEL$E5385516" "opt"."t4"@"SEL$1") INDEX(@"SEL$7E047C3E" "opt"."t1"@"SEL$2" "idx_t1_c2") INDEX(@"SEL$E5385516" "opt"."t4"@"SEL$1" "idx_t4_c2_c3") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") FAST_MINMAX(@"SEL$2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t4"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t4"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t4"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" )) INDEX(@"SEL$3" "opt"."t1"@"SEL$3" "idx_t1_c2") INDEX(@"SEL$1" "opt"."t4"@"SEL$1" "idx_t4_c2_c3") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 4(end) ************** *************** Case 5 *************** SQL: select * from t4 where c1 in (select max(c1) from t1); =============================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| --------------------------------------------------------------- |0 |NESTED-LOOP JOIN | |9 |235 | |1 | SUBPLAN SCAN |VIEW1 |1 |228 | |2 | SCALAR GROUP BY | |1 |228 | |3 | SUBPLAN SCAN |VIEW2 |1 |228 | |4 | LIMIT | |1 |228 | |5 | PX COORDINATOR MERGE SORT | |1 |228 | |6 | EXCHANGE OUT DISTR |:EX10000 |1 |228 | |7 | TOP-N SORT | |1 |227 | |8 | PX PARTITION ITERATOR | |1 |227 | |9 | TABLE SCAN |t1(Reverse)|1 |227 | |10| TABLE SCAN |t4 |9 |5 | =============================================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), conds(nil), nl_params_([VIEW1.max(c1)]) 1 - output([VIEW1.max(c1)]), filter(nil), access([VIEW1.max(c1)]) 2 - output([T_FUN_MAX(VIEW2.t1.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(VIEW2.t1.c1)]) 3 - output([VIEW2.t1.c1]), filter(nil), access([VIEW2.t1.c1]) 4 - output([t1.c1]), filter(nil), limit(1), offset(nil) 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]) 6 - output([t1.c1]), filter(nil), dop=1 7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]), topn(1), local merge sort 8 - output([t1.c1]), filter(nil) 9 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]), limit(1), offset(nil) 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E5385516" ("VIEW1"@"SEL$1" "opt"."t4"@"SEL$1")) USE_NL(@"SEL$E5385516" "opt"."t4"@"SEL$1") FULL(@"SEL$7E047C3E" "opt"."t1"@"SEL$2") FULL(@"SEL$E5385516" "opt"."t4"@"SEL$1") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") FAST_MINMAX(@"SEL$2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t4"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t4"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t4"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" )) FULL(@"SEL$3" "opt"."t1"@"SEL$3") FULL(@"SEL$1" "opt"."t4"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 5(end) ************** *************** Case 6 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_NL(@"SEL$3" "opt.t2"@"SEL$3") LEADING(@"SEL$3" "opt.t1"@"SEL$3" "opt.t2"@"SEL$3") END_OUTLINE_DATA */* from t1 where c1 in (select * from (select max(t1.c1) from t1, t2) as tt); =============================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------------- |0 |PX COORDINATOR | |1 |18958| |1 | EXCHANGE OUT DISTR |:EX10003|1 |18958| |2 | NESTED-LOOP JOIN | |1 |18958| |3 | EXCHANGE IN DISTR | |1 |18951| |4 | EXCHANGE OUT DISTR (PKEY) |:EX10002|1 |18951| |5 | SUBPLAN SCAN |VIEW1 |1 |18951| |6 | SCALAR GROUP BY | |1 |18951| |7 | NESTED-LOOP JOIN CARTESIAN| |150000 |13640| |8 | EXCHANGE IN DISTR | |500 |466 | |9 | EXCHANGE OUT DISTR |:EX10000|500 |439 | |10| PX PARTITION ITERATOR | |500 |387 | |11| TABLE SCAN |t1 |500 |387 | |12| MATERIAL | |300 |281 | |13| EXCHANGE IN DISTR | |300 |280 | |14| EXCHANGE OUT DISTR |:EX10001|300 |263 | |15| PX PARTITION ITERATOR | |300 |233 | |16| TABLE SCAN |t2 |300 |233 | |17| PX PARTITION ITERATOR | |1 |29 | |18| TABLE GET |t1 |1 |29 | =============================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil), conds(nil), nl_params_([VIEW1.max(t1.c1)]) 3 - output([PARTITION_ID], [VIEW1.max(t1.c1)]), filter(nil) 4 - (#keys=1, [VIEW1.max(t1.c1)]), output([PARTITION_ID], [VIEW1.max(t1.c1)]), filter(nil), is_single, dop=1 5 - output([VIEW1.max(t1.c1)]), filter(nil), access([VIEW1.max(t1.c1)]) 6 - output([T_FUN_MAX(t1.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t1.c1)]) 7 - output([t1.c1]), filter(nil), conds(nil), nl_params_(nil) 8 - output([t1.c1]), filter(nil) 9 - output([t1.c1]), filter(nil), dop=1 10 - output([t1.c1]), filter(nil) 11 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 12 - output(nil), filter(nil) 13 - output(nil), filter(nil) 14 - output(nil), filter(nil), dop=1 15 - output(nil), filter(nil) 16 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 17 - output([t1.c1], [t1.c2]), filter(nil) 18 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E5385516" ("VIEW1"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$E5385516" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$E5385516" "opt"."t1"@"SEL$1" PARTITION NONE) LEADING(@"SEL$1AE1580B" ("opt"."t1"@"SEL$3" "opt"."t2"@"SEL$3")) USE_NL(@"SEL$1AE1580B" "opt"."t2"@"SEL$3") PQ_DISTRIBUTE(@"SEL$1AE1580B" "opt"."t2"@"SEL$3" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1AE1580B" "opt"."t2"@"SEL$3") FULL(@"SEL$1AE1580B" "opt"."t1"@"SEL$3") FULL(@"SEL$1AE1580B" "opt"."t2"@"SEL$3") FULL(@"SEL$E5385516" "opt"."t1"@"SEL$1") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") MERGE(@"SEL$3" < "SEL$2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) LEADING(@"SEL$3" ("opt.t1"@"SEL$3" "opt.t2"@"SEL$3" )) USE_NL(@"SEL$3" ("opt.t2"@"SEL$3" )) PQ_DISTRIBUTE(@"SEL$3" ("opt.t2"@"SEL$3" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$3" ("opt.t2"@"SEL$3" )) FULL(@"SEL$3" "opt"."t1"@"SEL$3") FULL(@"SEL$3" "opt"."t2"@"SEL$3") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 6(end) ************** *************** Case 7 *************** SQL: select /*+index(t4 idx_t4_c3)*/ * from t4 where c1 = 1; ============================================ |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------- |0 |TABLE SCAN|t4(idx_t4_c3)|9 |79 | ============================================ Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = ?]), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt"."t4"@"SEL$1" "idx_t4_c3") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 7(end) ************** *************** Case 8 *************** SQL: select /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c3") END_OUTLINE_DATA */ * from t4 where c1 = 1; ============================================ |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------- |0 |TABLE SCAN|t4(idx_t4_c3)|9 |79 | ============================================ Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = ?]), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt"."t4"@"SEL$1" "idx_t4_c3") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 8(end) ************** *************** Case 9 *************** SQL: select /*+full(t4)*/ * from t4 where c2 = 1; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |9 |79 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c2 = ?]), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t4"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 9(end) ************** *************** Case 10 *************** SQL: select /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt.t4"@"SEL$1") END_OUTLINE_DATA */ * from t4 where c2 = 1; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |9 |79 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c2 = ?]), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t4"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 10(end) ************** *************** Case 11 *************** SQL: select * from t1,t2; ======================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |150000 |8729| |1 | PX COORDINATOR | |300 |464 | |2 | EXCHANGE OUT DISTR |:EX10000|300 |391 | |3 | PX PARTITION ITERATOR | |300 |233 | |4 | TABLE SCAN |t2 |300 |233 | |5 | MATERIAL | |500 |531 | |6 | PX COORDINATOR | |500 |528 | |7 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |8 | PX PARTITION ITERATOR | |500 |387 | |9 | TABLE SCAN |t1 |500 |387 | ======================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 11(end) ************** *************** Case 12 *************** SQL: select * from t1,t2 where t1.c1=t2.c1; ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |PX COORDINATOR | |300 |1260| |1 | EXCHANGE OUT DISTR |:EX10001|300 |1164| |2 | HASH JOIN | |300 |954 | |3 | EXCHANGE IN DISTR | |500 |528 | |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|500 |481 | |5 | PX PARTITION ITERATOR | |500 |387 | |6 | TABLE SCAN |t1 |500 |387 | |7 | PX PARTITION ITERATOR | |300 |233 | |8 | TABLE SCAN |t2 |300 |233 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1 2 - output([t1.c1], [t2.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), equal_conds([t1.c1 = t2.c1]), other_conds(nil) 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."t1"@"SEL$1" "opt"."t2"@"SEL$1")) USE_HASH(@"SEL$1" "opt"."t2"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t2"@"SEL$1" PARTITION NONE) FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_HASH(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) NONE PARTITION) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 12(end) ************** *************** Case 13 *************** SQL: select * from t1,(select count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |533 | |1 | SUBPLAN SCAN |tt |1 |244 | |2 | SCALAR GROUP BY | |1 |244 | |3 | PX COORDINATOR | |1 |243 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |243 | |5 | MERGE GROUP BY | |1 |243 | |6 | PX PARTITION ITERATOR| |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | PX COORDINATOR | |500 |528 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |10| PX PARTITION ITERATOR | |500 |387 | |11| TABLE SCAN |t1 |500 |387 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) GBY_PUSHDOWN(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 13(end) ************** *************** Case 14 *************** SQL: select * from (select count(*) from t2) as tt,t1,t9 where t9.c1=t1.c1; =========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |100 |492 | |1 | SUBPLAN SCAN |tt |1 |244 | |2 | SCALAR GROUP BY | |1 |244 | |3 | PX COORDINATOR | |1 |243 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |243 | |5 | MERGE GROUP BY | |1 |243 | |6 | PX PARTITION ITERATOR | |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | PX COORDINATOR | |100 |714 | |9 | EXCHANGE OUT DISTR |:EX20001|100 |694 | |10| HASH JOIN | |100 |649 | |11| EXCHANGE IN DISTR | |100 |118 | |12| EXCHANGE OUT DISTR (PKEY)|:EX20000|100 |105 | |13| TABLE SCAN |t9 |100 |78 | |14| PX PARTITION ITERATOR | |500 |387 | |15| TABLE SCAN |t1 |500 |387 | =========================================================== Outputs & filters: ------------------------------------- 0 - output([tt.count(*)], [t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil) 9 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), equal_conds([t9.c1 = t1.c1]), other_conds(nil) 11 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil) 12 - (#keys=1, [t9.c1]), output([t9.c1], [t9.c2], [t9.c3]), filter(nil), is_single, dop=1 13 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), access([t9.c1], [t9.c2], [t9.c3]), partitions(p0) 14 - output([t1.c1], [t1.c2]), filter(nil) 15 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt"."t9"@"SEL$1" "opt"."t1"@"SEL$1"))) USE_NL(@"SEL$1" ("opt"."t1"@"SEL$1" "opt"."t9"@"SEL$1")) PQ_DISTRIBUTE(@"SEL$1" ("opt"."t1"@"SEL$1" "opt"."t9"@"SEL$1") LOCAL LOCAL) GBY_PUSHDOWN(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") USE_HASH(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" PARTITION NONE) FULL(@"SEL$1" "opt"."t9"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" ))) USE_NL(@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") USE_HASH(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) FULL(@"SEL$1" "opt"."t9"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 14(end) ************** *************** Case 15 *************** SQL: select * from (select count(*) from t2, t10) as tt,t1,t9 where t9.c1=t1.c1; =========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |100 |7998| |1 | SUBPLAN SCAN |tt |1 |7750| |2 | SCALAR GROUP BY | |1 |7750| |3 | NESTED-LOOP JOIN CARTESIAN | |60000 |5625| |4 | PX COORDINATOR | |200 |187 | |5 | EXCHANGE OUT DISTR |:EX10000|200 |176 | |6 | PX PARTITION ITERATOR | |200 |155 | |7 | TABLE SCAN |t10 |200 |155 | |8 | MATERIAL | |300 |281 | |9 | PX COORDINATOR | |300 |280 | |10| EXCHANGE OUT DISTR |:EX20000|300 |263 | |11| PX PARTITION ITERATOR | |300 |233 | |12| TABLE SCAN |t2 |300 |233 | |13| PX COORDINATOR | |100 |714 | |14| EXCHANGE OUT DISTR |:EX30001|100 |694 | |15| HASH JOIN | |100 |649 | |16| EXCHANGE IN DISTR | |100 |118 | |17| EXCHANGE OUT DISTR (PKEY)|:EX30000|100 |105 | |18| TABLE SCAN |t9 |100 |78 | |19| PX PARTITION ITERATOR | |500 |387 | |20| TABLE SCAN |t1 |500 |387 | =========================================================== Outputs & filters: ------------------------------------- 0 - output([tt.count(*)], [t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 3 - output(nil), filter(nil), conds(nil), nl_params_(nil) 4 - output(nil), filter(nil) 5 - output(nil), filter(nil), dop=1 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t10.c1]), partitions(p[0-1]) 8 - output(nil), filter(nil) 9 - output(nil), filter(nil) 10 - output(nil), filter(nil), dop=1 11 - output(nil), filter(nil) 12 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 13 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil) 14 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), dop=1 15 - output([t1.c1], [t1.c2], [t9.c1], [t9.c2], [t9.c3]), filter(nil), equal_conds([t9.c1 = t1.c1]), other_conds(nil) 16 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil) 17 - (#keys=1, [t9.c1]), output([t9.c1], [t9.c2], [t9.c3]), filter(nil), is_single, dop=1 18 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), access([t9.c1], [t9.c2], [t9.c3]), partitions(p0) 19 - output([t1.c1], [t1.c2]), filter(nil) 20 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt"."t9"@"SEL$1" "opt"."t1"@"SEL$1"))) USE_NL(@"SEL$1" ("opt"."t1"@"SEL$1" "opt"."t9"@"SEL$1")) PQ_DISTRIBUTE(@"SEL$1" ("opt"."t1"@"SEL$1" "opt"."t9"@"SEL$1") LOCAL LOCAL) LEADING(@"SEL$2" ("opt"."t10"@"SEL$2" "opt"."t2"@"SEL$2")) USE_NL(@"SEL$2" "opt"."t2"@"SEL$2") PQ_DISTRIBUTE(@"SEL$2" "opt"."t2"@"SEL$2" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$2" "opt"."t10"@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") USE_HASH(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" PARTITION NONE) FULL(@"SEL$1" "opt"."t9"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" ))) USE_NL(@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t9"@"SEL$1" "opt.t1"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t10"@"SEL$2" "opt.t2"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t2"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t2"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t2"@"SEL$2" )) FULL(@"SEL$2" "opt"."t10"@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") USE_HASH(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) PARTITION NONE) FULL(@"SEL$1" "opt"."t9"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 15(end) ************** *************** Case 16 *************** SQL: select * from t1,t2,t9; ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | ---------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |15000000 |777165| |1 | NESTED-LOOP JOIN CARTESIAN| |30000 |3124 | |2 | TABLE SCAN |t9 |100 |78 | |3 | MATERIAL | |300 |471 | |4 | PX COORDINATOR | |300 |464 | |5 | EXCHANGE OUT DISTR |:EX10000|300 |391 | |6 | PX PARTITION ITERATOR | |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | MATERIAL | |500 |531 | |9 | PX COORDINATOR | |500 |528 | |10| EXCHANGE OUT DISTR |:EX20000|500 |481 | |11| PX PARTITION ITERATOR | |500 |387 | |12| TABLE SCAN |t1 |500 |387 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3], [t9.c1], [t9.c2], [t9.c3]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), access([t9.c1], [t9.c2], [t9.c3]), partitions(p0) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), dop=1 11 - output([t1.c1], [t1.c2]), filter(nil) 12 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" (("opt"."t9"@"SEL$1" "opt"."t2"@"SEL$1") "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t1"@"SEL$1") USE_NL(@"SEL$1" "opt"."t2"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t2"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t9"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" (("opt.t9"@"SEL$1" "opt.t2"@"SEL$1" )"opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" )) FULL(@"SEL$1" "opt"."t9"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 16(end) ************** *************** Case 17 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) in (select t9.c1 from t9, t10); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | ---------------------------------------------------------- |0 |HASH RIGHT SEMI JOIN | |1500 |53950| |1 | SUBPLAN SCAN |VIEW1 |20000 |3195 | |2 | NESTED-LOOP JOIN CARTESIAN| |20000 |2845 | |3 | TABLE SCAN |t9 |100 |78 | |4 | MATERIAL | |200 |188 | |5 | PX COORDINATOR | |200 |187 | |6 | EXCHANGE OUT DISTR |:EX10000|200 |176 | |7 | PX PARTITION ITERATOR | |200 |155 | |8 | TABLE SCAN |t10 |200 |155 | |9 | NESTED-LOOP JOIN CARTESIAN | |150000 |8729 | |10| PX COORDINATOR | |300 |464 | |11| EXCHANGE OUT DISTR |:EX20000|300 |391 | |12| PX PARTITION ITERATOR | |300 |233 | |13| TABLE SCAN |t2 |300 |233 | |14| MATERIAL | |500 |531 | |15| PX COORDINATOR | |500 |528 | |16| EXCHANGE OUT DISTR |:EX30000|500 |481 | |17| PX PARTITION ITERATOR | |500 |387 | |18| TABLE SCAN |t1 |500 |387 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), equal_conds([t1.c1 + t2.c1 = VIEW1.c1]), other_conds(nil) 1 - output([VIEW1.c1]), filter(nil), access([VIEW1.c1]) 2 - output([t9.c1]), filter(nil), conds(nil), nl_params_(nil) 3 - output([t9.c1]), filter(nil), access([t9.c1]), partitions(p0) 4 - output(nil), filter(nil) 5 - output(nil), filter(nil) 6 - output(nil), filter(nil), dop=1 7 - output(nil), filter(nil) 8 - output(nil), filter(nil), access([t10.c1]), partitions(p[0-1]) 9 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 13 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 14 - output([t1.c1], [t1.c2]), filter(nil) 15 - output([t1.c1], [t1.c2]), filter(nil) 16 - output([t1.c1], [t1.c2]), filter(nil), dop=1 17 - output([t1.c1], [t1.c2]), filter(nil) 18 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$6FCAE2AA" ("VIEW1"@"SEL$1" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1"))) USE_HASH(@"SEL$6FCAE2AA" ("opt"."t1"@"SEL$1" "opt"."t2"@"SEL$1")) LEADING(@"SEL$2" ("opt"."t9"@"SEL$2" "opt"."t10"@"SEL$2")) USE_NL(@"SEL$2" "opt"."t10"@"SEL$2") PQ_DISTRIBUTE(@"SEL$2" "opt"."t10"@"SEL$2" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" "opt"."t10"@"SEL$2") FULL(@"SEL$2" "opt"."t9"@"SEL$2") FULL(@"SEL$2" "opt"."t10"@"SEL$2") USE_NL(@"SEL$6FCAE2AA" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$6FCAE2AA" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$6FCAE2AA" "opt"."t1"@"SEL$1") FULL(@"SEL$6FCAE2AA" "opt"."t2"@"SEL$1") FULL(@"SEL$6FCAE2AA" "opt"."t1"@"SEL$1") UNNEST(@"SEL$2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("VIEW1"@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))) USE_HASH(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ) LOCAL LOCAL) LEADING(@"SEL$2" ("opt.t9"@"SEL$2" "opt.t10"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t10"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t10"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t10"@"SEL$2" )) FULL(@"SEL$2" "opt"."t9"@"SEL$2") FULL(@"SEL$2" "opt"."t10"@"SEL$2") USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 17(end) ************** *************** Case 18 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) in (select max(t9.c1) from t9, t10); ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST | ------------------------------------------------------------ |0 |NESTED-LOOP JOIN | |150000 |12562| |1 | NESTED-LOOP JOIN CARTESIAN | |300 |3934 | |2 | SUBPLAN SCAN |VIEW1 |1 |3553 | |3 | SCALAR GROUP BY | |1 |3553 | |4 | NESTED-LOOP JOIN CARTESIAN| |20000 |2845 | |5 | TABLE SCAN |t9 |100 |78 | |6 | MATERIAL | |200 |188 | |7 | PX COORDINATOR | |200 |187 | |8 | EXCHANGE OUT DISTR |:EX10000|200 |176 | |9 | PX PARTITION ITERATOR | |200 |155 | |10| TABLE SCAN |t10 |200 |155 | |11| PX COORDINATOR | |300 |464 | |12| EXCHANGE OUT DISTR |:EX20000|300 |391 | |13| PX PARTITION ITERATOR | |300 |233 | |14| TABLE SCAN |t2 |300 |233 | |15| MATERIAL | |500 |531 | |16| PX COORDINATOR | |500 |528 | |17| EXCHANGE OUT DISTR |:EX30000|500 |481 | |18| PX PARTITION ITERATOR | |500 |387 | |19| TABLE SCAN |t1 |500 |387 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t1.c1 + t2.c1 = VIEW1.max(t9.c1)]), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3], [VIEW1.max(t9.c1)]), filter(nil), conds(nil), nl_params_(nil) 2 - output([VIEW1.max(t9.c1)]), filter(nil), access([VIEW1.max(t9.c1)]) 3 - output([T_FUN_MAX(t9.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t9.c1)]) 4 - output([t9.c1]), filter(nil), conds(nil), nl_params_(nil) 5 - output([t9.c1]), filter(nil), access([t9.c1]), partitions(p0) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil) 8 - output(nil), filter(nil), dop=1 9 - output(nil), filter(nil) 10 - output(nil), filter(nil), access([t10.c1]), partitions(p[0-1]) 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 12 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 13 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 14 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 15 - output([t1.c1], [t1.c2]), filter(nil) 16 - output([t1.c1], [t1.c2]), filter(nil) 17 - output([t1.c1], [t1.c2]), filter(nil), dop=1 18 - output([t1.c1], [t1.c2]), filter(nil) 19 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E5385516" (("VIEW1"@"SEL$1" "opt"."t2"@"SEL$1") "opt"."t1"@"SEL$1")) USE_NL(@"SEL$E5385516" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$E5385516" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$E5385516" "opt"."t1"@"SEL$1") USE_NL(@"SEL$E5385516" "opt"."t2"@"SEL$1") PQ_DISTRIBUTE(@"SEL$E5385516" "opt"."t2"@"SEL$1" LOCAL LOCAL) LEADING(@"SEL$2" ("opt"."t9"@"SEL$2" "opt"."t10"@"SEL$2")) USE_NL(@"SEL$2" "opt"."t10"@"SEL$2") PQ_DISTRIBUTE(@"SEL$2" "opt"."t10"@"SEL$2" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" "opt"."t10"@"SEL$2") FULL(@"SEL$2" "opt"."t9"@"SEL$2") FULL(@"SEL$2" "opt"."t10"@"SEL$2") FULL(@"SEL$E5385516" "opt"."t2"@"SEL$1") FULL(@"SEL$E5385516" "opt"."t1"@"SEL$1") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" (("VIEW1"@"SEL$1" "opt.t2"@"SEL$1" )"opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t9"@"SEL$2" "opt.t10"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t10"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t10"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t10"@"SEL$2" )) FULL(@"SEL$2" "opt"."t9"@"SEL$2") FULL(@"SEL$2" "opt"."t10"@"SEL$2") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 18(end) ************** *************** Case 19 *************** SQL: select * from t8, (select count(*) from t1 where t1.c1 > any (select t2.c1 from t2)) as tt; ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |100 |28283| |1 | SUBPLAN SCAN |tt |1 |28183| |2 | SCALAR GROUP BY | |1 |28183| |3 | NESTED-LOOP SEMI JOIN | |167 |28177| |4 | PX COORDINATOR | |500 |466 | |5 | EXCHANGE OUT DISTR |:EX10000|500 |439 | |6 | PX PARTITION ITERATOR| |500 |387 | |7 | TABLE SCAN |t1 |500 |387 | |8 | PX COORDINATOR | |1 |18 | |9 | EXCHANGE OUT DISTR |:EX20000|1 |18 | |10| PX PARTITION ITERATOR| |1 |18 | |11| TABLE SCAN |t2 |1 |18 | |12| TABLE SCAN |t8 |100 |78 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t8.c1], [t8.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 3 - output(nil), filter(nil), conds(nil), nl_params_([t1.c1]) 4 - output([t1.c1]), filter(nil) 5 - output([t1.c1]), filter(nil), dop=1 6 - output([t1.c1]), filter(nil) 7 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) 8 - output(nil), filter(nil) 9 - output(nil), filter(nil), dop=1 10 - output(nil), filter(nil) 11 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 12 - output([t8.c1], [t8.c2]), filter(nil), access([t8.c1], [t8.c2]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" "opt"."t8"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t8"@"SEL$1") LEADING(@"SEL$119A0069" ("opt"."t1"@"SEL$2" "opt"."t2"@"SEL$3")) USE_NL(@"SEL$119A0069" "opt"."t2"@"SEL$3") PQ_DISTRIBUTE(@"SEL$119A0069" "opt"."t2"@"SEL$3" LOCAL LOCAL) FULL(@"SEL$119A0069" "opt"."t1"@"SEL$2") FULL(@"SEL$119A0069" "opt"."t2"@"SEL$3") FULL(@"SEL$1" "opt"."t8"@"SEL$1") UNNEST(@"SEL$3") MERGE(@"SEL$3" > "SEL$19FECD1D") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t8"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t8"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t8"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t8"@"SEL$1" )) LEADING(@"SEL$2" ("VIEW1"@"SEL$2" "opt.t1"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t1"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t1"@"SEL$2" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t1"@"SEL$2" )) FULL(@"SEL$4" "opt"."t2"@"SEL$4") FULL(@"SEL$2" "opt"."t1"@"SEL$2") FULL(@"SEL$1" "opt"."t8"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 19(end) ************** *************** Case 20 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_MERGE(@"SEL$1" "opt.t2"@"SEL$1") LEADING(@"SEL$1" "opt.t1"@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") END_OUTLINE_DATA */* from t1,t2 where t1.c1=t2.c1; ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------ |0 |PX COORDINATOR | |300 |1304| |1 | EXCHANGE OUT DISTR |:EX10001|300 |1208| |2 | MERGE JOIN | |300 |998 | |3 | EXCHANGE IN MERGE SORT DISTR| |500 |528 | |4 | EXCHANGE OUT DISTR (PKEY) |:EX10000|500 |481 | |5 | PX PARTITION ITERATOR | |500 |387 | |6 | TABLE SCAN |t1 |500 |387 | |7 | SORT | |300 |299 | |8 | PX PARTITION ITERATOR | |300 |233 | |9 | TABLE SCAN |t2 |300 |233 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1 2 - output([t1.c1], [t2.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), equal_conds([t1.c1 = t2.c1]), other_conds(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order 4 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."t1"@"SEL$1" "opt"."t2"@"SEL$1")) USE_MERGE(@"SEL$1" "opt"."t2"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t2"@"SEL$1" PARTITION NONE) FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) PARTITION NONE) FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 20(end) ************** *************** Case 21 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_MERGE(@"SEL$1" "opt.t1"@"SEL$1") LEADING(@"SEL$1" "opt.t2"@"SEL$1" "opt.t1"@"SEL$1") FULL(@"SEL$1" "opt.t2"@"SEL$1") FULL(@"SEL$1" "opt.t1"@"SEL$1") END_OUTLINE_DATA */* from t1,t2 where t1.c1=t2.c1; ============================================================ |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------ |0 |PX COORDINATOR | |300 |1301| |1 | EXCHANGE OUT DISTR |:EX10001|300 |1205| |2 | MERGE JOIN | |300 |995 | |3 | SORT | |300 |299 | |4 | PX PARTITION ITERATOR | |300 |233 | |5 | TABLE SCAN |t2 |300 |233 | |6 | EXCHANGE IN MERGE SORT DISTR| |500 |528 | |7 | EXCHANGE OUT DISTR (PKEY) |:EX10000|500 |481 | |8 | PX PARTITION ITERATOR | |500 |387 | |9 | TABLE SCAN |t1 |500 |387 | ============================================================ Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2, t2.c1, t2.c2, t2.c3)]), filter(nil), dop=1 2 - output([t1.c1], [t2.c1], [t2.c2], [t2.c3], [t1.c2]), filter(nil), equal_conds([t1.c1 = t2.c1]), other_conds(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), sort_keys([t2.c1, ASC]), local merge sort 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), Local Order 7 - (#keys=1, [t1.c1]), output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1")) USE_MERGE(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" NONE PARTITION) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_MERGE(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) NONE PARTITION) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 21(end) ************** *************** Case 22 *************** SQL: select /*+ BEGIN_OUTLINE_DATA USE_NL(@"SEL$1" "opt.tt2"@"SEL$1") LEADING(@"SEL$1" "opt.tt1"@"SEL$1" "opt.tt2"@"SEL$1") FULL(@"SEL$1" "opt.tt1"@"SEL$1") FULL(@"SEL$1" "opt.tt2"@"SEL$1") END_OUTLINE_DATA */* from t1 as tt1,t2 as tt2 where tt1.c1=tt2.c1; ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |PX COORDINATOR | |300 |4167| |1 | EXCHANGE OUT DISTR |:EX10001|300 |4071| |2 | NESTED-LOOP JOIN | |300 |3861| |3 | EXCHANGE IN DISTR | |500 |528 | |4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|500 |481 | |5 | PX PARTITION ITERATOR | |500 |387 | |6 | TABLE SCAN |tt1 |500 |387 | |7 | PX PARTITION ITERATOR | |1 |18 | |8 | TABLE GET |tt2 |1 |18 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(tt1.c1, tt1.c2, tt2.c1, tt2.c2, tt2.c3)]), filter(nil) 1 - output([INTERNAL_FUNCTION(tt1.c1, tt1.c2, tt2.c1, tt2.c2, tt2.c3)]), filter(nil), dop=1 2 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt2.c3]), filter(nil), conds(nil), nl_params_([tt1.c1]) 3 - output([tt1.c1], [PARTITION_ID], [tt1.c2]), filter(nil) 4 - (#keys=1, [tt1.c1]), output([tt1.c1], [PARTITION_ID], [tt1.c2]), filter(nil), dop=1 5 - output([tt1.c1], [tt1.c2]), filter(nil) 6 - output([tt1.c1], [tt1.c2]), filter(nil), access([tt1.c1], [tt1.c2]), partitions(p[0-4]) 7 - output([tt2.c1], [tt2.c2], [tt2.c3]), filter(nil) 8 - output([tt2.c1], [tt2.c2], [tt2.c3]), filter(nil), access([tt2.c1], [tt2.c2], [tt2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."tt1"@"SEL$1" "opt"."tt2"@"SEL$1")) USE_NL(@"SEL$1" "opt"."tt2"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."tt2"@"SEL$1" PARTITION NONE) FULL(@"SEL$1" "opt"."tt1"@"SEL$1") FULL(@"SEL$1" "opt"."tt2"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.tt1"@"SEL$1" "opt.tt2"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.tt2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.tt2"@"SEL$1" ) PARTITION NONE) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.tt2"@"SEL$1" )) FULL(@"SEL$1" "opt"."tt1"@"SEL$1") FULL(@"SEL$1" "opt"."tt2"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 22(end) ************** *************** Case 23 *************** SQL: select /*+read_consistency("weak")*/* from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD READ_CONSISTENCY( WEAK ) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= READ_CONSISTENCY("WEAK") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 23(end) ************** *************** Case 24 *************** SQL: select /*+hotspot*/* from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 24(end) ************** *************** Case 25 *************** SQL: select /*+topk(1 100)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 25(end) ************** *************** Case 26 *************** SQL: select /*+query_timeout(100)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") QUERY_TIMEOUT(100) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') END_OUTLINE_DATA */ *************** Case 26(end) ************** *************** Case 27 *************** SQL: select /*+frozen_version(1)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") FROZEN_VERSION(1) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') END_OUTLINE_DATA */ *************** Case 27(end) ************** *************** Case 28 *************** SQL: select /*+use_plan_cache(none)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD USE_PLAN_CACHE( NONE ) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= USE_PLAN_CACHE("NONE") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 28(end) ************** *************** Case 29 *************** SQL: select /*+use_plan_cache(default)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD USE_PLAN_CACHE( DEFAULT ) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= USE_PLAN_CACHE("DEFAULT") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 29(end) ************** *************** Case 30 *************** SQL: select /*+use_plan_cache(nothing)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 30(end) ************** *************** Case 31 *************** SQL: select /*+activate_buried_point(1,FIX_MODE,1,1)*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 31(end) ************** *************** Case 32 *************** SQL: select /*+no_rewrite*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= NO_REWRITE >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 32(end) ************** *************** Case 33 *************** SQL: select * from t1 where c1 > any (select /*+no_rewrite*/ count(*) from t2); ======================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------- |0 |SUBPLAN FILTER | |167 |523 | |1 | PX COORDINATOR | |167 |277 | |2 | EXCHANGE OUT DISTR |:EX10000|167 |261 | |3 | PX PARTITION ITERATOR | |167 |230 | |4 | TABLE SCAN |t1 |167 |230 | |5 | SCALAR GROUP BY | |1 |244 | |6 | PX COORDINATOR | |1 |243 | |7 | EXCHANGE OUT DISTR |:EX20000|1 |243 | |8 | MERGE GROUP BY | |1 |243 | |9 | PX PARTITION ITERATOR| |300 |233 | |10| TABLE SCAN |t2 |300 |233 | ======================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2]), filter(nil) 2 - output([t1.c1], [t1.c2]), filter(nil), dop=1 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 5 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 6 - output([T_FUN_COUNT(*)]), filter(nil) 7 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 8 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 9 - output(nil), filter(nil) 10 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD FULL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") GBY_PUSHDOWN(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") SIMPLIFY_SUBQUERY(@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 33(end) ************** *************** Case 34 *************** SQL: select /*+trace_log*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") TRACE_LOG OPTIMIZER_FEATURES_ENABLE('4.0.0.0') END_OUTLINE_DATA */ *************** Case 34(end) ************** *************** Case 35 *************** SQL: select /*+log_level('INFO')*/ * from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") <<<<<<< HEAD LOG_LEVEL("INFO") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LOG_LEVEL('info') >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 35(end) ************** *************** Case 36 *************** SQL: select * from t1,(select /*+log_level('INFO')*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |533 | |1 | SUBPLAN SCAN |tt |1 |244 | |2 | SCALAR GROUP BY | |1 |244 | |3 | PX COORDINATOR | |1 |243 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |243 | |5 | MERGE GROUP BY | |1 |243 | |6 | PX PARTITION ITERATOR| |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | PX COORDINATOR | |500 |528 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |10| PX PARTITION ITERATOR | |500 |387 | |11| TABLE SCAN |t1 |500 |387 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) GBY_PUSHDOWN(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") LOG_LEVEL("INFO") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") LOG_LEVEL('info') >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 36(end) ************** *************** Case 37 *************** SQL: select * from t1,(select /*+trace_log*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |533 | |1 | SUBPLAN SCAN |tt |1 |244 | |2 | SCALAR GROUP BY | |1 |244 | |3 | PX COORDINATOR | |1 |243 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |243 | |5 | MERGE GROUP BY | |1 |243 | |6 | PX PARTITION ITERATOR| |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | PX COORDINATOR | |500 |528 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |10| PX PARTITION ITERATOR | |500 |387 | |11| TABLE SCAN |t1 |500 |387 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) GBY_PUSHDOWN(@"SEL$2") ======= LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") >>>>>>> implement spm part1 FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") TRACE_LOG OPTIMIZER_FEATURES_ENABLE('4.0.0.0') END_OUTLINE_DATA */ *************** Case 37(end) ************** *************** Case 38 *************** SQL: select * from t1,(select /*+use_plan_cache(none)*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |533 | |1 | SUBPLAN SCAN |tt |1 |244 | |2 | SCALAR GROUP BY | |1 |244 | |3 | PX COORDINATOR | |1 |243 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |243 | |5 | MERGE GROUP BY | |1 |243 | |6 | PX PARTITION ITERATOR| |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | PX COORDINATOR | |500 |528 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |10| PX PARTITION ITERATOR | |500 |387 | |11| TABLE SCAN |t1 |500 |387 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) GBY_PUSHDOWN(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") USE_PLAN_CACHE( NONE ) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") USE_PLAN_CACHE("NONE") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 38(end) ************** *************** Case 39 *************** SQL: select * from t1,(select /*+use_plan_cache(default)*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |533 | |1 | SUBPLAN SCAN |tt |1 |244 | |2 | SCALAR GROUP BY | |1 |244 | |3 | PX COORDINATOR | |1 |243 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |243 | |5 | MERGE GROUP BY | |1 |243 | |6 | PX PARTITION ITERATOR| |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | PX COORDINATOR | |500 |528 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |10| PX PARTITION ITERATOR | |500 |387 | |11| TABLE SCAN |t1 |500 |387 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) GBY_PUSHDOWN(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") USE_PLAN_CACHE( DEFAULT ) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") USE_PLAN_CACHE("DEFAULT") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 39(end) ************** *************** Case 40 *************** SQL: select * from t1,(select /*+use_plan_cache(nothing)*/ count(*) from t2) as tt; ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |500 |533 | |1 | SUBPLAN SCAN |tt |1 |244 | |2 | SCALAR GROUP BY | |1 |244 | |3 | PX COORDINATOR | |1 |243 | |4 | EXCHANGE OUT DISTR |:EX10000|1 |243 | |5 | MERGE GROUP BY | |1 |243 | |6 | PX PARTITION ITERATOR| |300 |233 | |7 | TABLE SCAN |t2 |300 |233 | |8 | PX COORDINATOR | |500 |528 | |9 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |10| PX PARTITION ITERATOR | |500 |387 | |11| TABLE SCAN |t1 |500 |387 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [tt.count(*)]), filter(nil), conds(nil), nl_params_(nil) 1 - output([tt.count(*)]), filter(nil), access([tt.count(*)]) 2 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) 3 - output([T_FUN_COUNT(*)]), filter(nil) 4 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 5 - output([T_FUN_COUNT(*)]), filter(nil), group(nil), agg_func([T_FUN_COUNT(*)]) 6 - output(nil), filter(nil) 7 - output(nil), filter(nil), access([t2.c1]), partitions(p[0-2]) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("tt"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) GBY_PUSHDOWN(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) NO_USE_HASH_AGGREGATION(@"SEL$2") FULL(@"SEL$2" "opt"."t2"@"SEL$2") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 40(end) ************** *************** Case 41 *************** SQL: select /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "t1"@"SEL$1") READ_CONSISTENCY("WEAK") HOTSPOT TOPK(1 100) QUERY_TIMEOUT(100) FROZEN_VERSION(1) USE_PLAN_CACHE("EXACT") NO_REWRITE TRACE_LOG LOG_LEVEL('info') END_OUTLINE_DATA */* from t1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |528 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1, t1.c2)]), filter(nil), dop=1 2 - output([t1.c1], [t1.c2]), filter(nil) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") FROZEN_VERSION(1) QUERY_TIMEOUT(100) TRACE_LOG LOG_LEVEL("info") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') END_OUTLINE_DATA */ *************** Case 41(end) ************** *************** Case 42 *************** SQL: select max(c1) from t1 group by c1; ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |PX COORDINATOR | |500 |466 | |1 | EXCHANGE OUT DISTR |:EX10000|500 |439 | |2 | PX PARTITION ITERATOR| |500 |387 | |3 | TABLE SCAN |t1 |500 |387 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil) 1 - output([INTERNAL_FUNCTION(t1.c1)]), filter(nil), dop=1 2 - output([t1.c1]), filter(nil) 3 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD FULL(@"SEL$EA493D33" "opt"."t1"@"SEL$1") SIMPLIFY_GROUP_BY(@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 42(end) ************** *************** Case 43 *************** SQL: select min(c2) from t1 group by c2; ================================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------------- |0 |PX COORDINATOR | |100 |493 | |1 | EXCHANGE OUT DISTR |:EX10001 |100 |480 | |2 | MERGE GROUP BY | |100 |453 | |3 | EXCHANGE IN MERGE SORT DISTR| |100 |446 | |4 | EXCHANGE OUT DISTR (HASH) |:EX10000 |100 |437 | |5 | PX PARTITION ITERATOR | |100 |418 | |6 | MERGE GROUP BY | |100 |418 | |7 | TABLE SCAN |t1(idx_t1_c2)|500 |387 | ================================================================= Outputs & filters: ------------------------------------- 0 - output([INTERNAL_FUNCTION(T_FUN_MIN(T_FUN_MIN(t1.c2)))]), filter(nil) 1 - output([INTERNAL_FUNCTION(T_FUN_MIN(T_FUN_MIN(t1.c2)))]), filter(nil), dop=1 2 - output([T_FUN_MIN(T_FUN_MIN(t1.c2))]), filter(nil), group([t1.c2]), agg_func([T_FUN_MIN(T_FUN_MIN(t1.c2))]) 3 - output([t1.c2], [T_FUN_MIN(t1.c2)]), filter(nil), sort_keys([t1.c2, ASC]), Local Order 4 - (#keys=1, [t1.c2]), output([t1.c2], [T_FUN_MIN(t1.c2)]), filter(nil), dop=1 5 - output([t1.c2], [T_FUN_MIN(t1.c2)]), filter(nil) 6 - output([t1.c2], [T_FUN_MIN(t1.c2)]), filter(nil), group([t1.c2]), agg_func([T_FUN_MIN(t1.c2)]) 7 - output([t1.c2]), filter(nil), access([t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD INDEX(@"SEL$1" "opt"."t1"@"SEL$1" "idx_t1_c2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= NO_USE_HASH_AGGREGATION(@"SEL$1") NO_USE_HASH_AGGREGATION(@"SEL$1") INDEX(@"SEL$1" "opt"."t1"@"SEL$1" "idx_t1_c2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 43(end) ************** *************** Case 44 *************** SQL: insert into t1 (c1) values(1); ============================================= |ID|OPERATOR |NAME|EST. ROWS|COST| --------------------------------------------- |0 |EXCHANGE IN REMOTE | |1 |13 | |1 | EXCHANGE OUT REMOTE| |1 |13 | |2 | INSERT | |1 |13 | |3 | EXPRESSION | |1 |1 | ============================================= Outputs & filters: ------------------------------------- 0 - output(nil), filter(nil) 1 - output(nil), filter(nil) 2 - output(nil), filter(nil), columns([{t1: ({t1: (t1.c1, t1.c2)})}]), partitions(p1), column_values([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [?]) 3 - output([__values.c1]), filter(nil) values({?}) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA OPTIMIZER_FEATURES_ENABLE('4.0.0.0') END_OUTLINE_DATA */ *************** Case 44(end) ************** *************** Case 45 *************** SQL: update t7 set c1=100 where c1=1; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |UPDATE | |1 |77 | |1 | TABLE GET|t7 |1 |46 | =================================== Outputs & filters: ------------------------------------- 0 - output(nil), filter(nil), table_columns([{t7: ({t7: (t7.c1, t7.c2)})}]), update([t7.c1=?]) 1 - output([t7.c1], [t7.c2]), filter(nil), access([t7.c1], [t7.c2]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"UPD$1" "opt"."t7"@"UPD$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 45(end) ************** *************** Case 46 *************** SQL: delete from t1 where c1=1; ============================================= |ID|OPERATOR |NAME|EST. ROWS|COST| --------------------------------------------- |0 |EXCHANGE IN REMOTE | |1 |58 | |1 | EXCHANGE OUT REMOTE| |1 |58 | |2 | DELETE | |1 |57 | |3 | TABLE GET |t1 |1 |46 | ============================================= Outputs & filters: ------------------------------------- 0 - output(nil), filter(nil) 1 - output(nil), filter(nil) 2 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) 3 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p1) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"DEL$1" "opt"."t1"@"DEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 46(end) ************** *************** Case 47 *************** SQL: select /*+index(t_normal_idx idx)*/* from t_normal_idx order by c3 limit 1; ======================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------- |0 |NESTED-LOOP JOIN| |1 |111 | |1 | TOP-N SORT | |1 |80 | |2 | TABLE SCAN |t_normal_idx(idx) |100 |78 | |3 | TABLE GET |t_normal_idx_alias|1 |31 | ======================================================= Outputs & filters: ------------------------------------- 0 - output([t_normal_idx.c1], [t_normal_idx_alias.c2], [t_normal_idx.c3], [t_normal_idx_alias.c4], [t_normal_idx_alias.c5], [t_normal_idx_alias.c6], [t_normal_idx_alias.c7], [t_normal_idx_alias.c8], [t_normal_idx_alias.c9], [t_normal_idx_alias.c10]), filter(nil), conds(nil), nl_params_([t_normal_idx.c1]) 1 - output([t_normal_idx.c1], [t_normal_idx.c3]), filter(nil), sort_keys([t_normal_idx.c3, ASC]), topn(1) 2 - output([t_normal_idx.c1], [t_normal_idx.c3]), filter(nil), access([t_normal_idx.c1], [t_normal_idx.c3]), partitions(p0) 3 - output([t_normal_idx_alias.c2], [t_normal_idx_alias.c4], [t_normal_idx_alias.c5], [t_normal_idx_alias.c6], [t_normal_idx_alias.c7], [t_normal_idx_alias.c8], [t_normal_idx_alias.c9], [t_normal_idx_alias.c10]), filter(nil), access([t_normal_idx_alias.c2], [t_normal_idx_alias.c4], [t_normal_idx_alias.c5], [t_normal_idx_alias.c6], [t_normal_idx_alias.c7], [t_normal_idx_alias.c8], [t_normal_idx_alias.c9], [t_normal_idx_alias.c10]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD USE_LATE_MATERIALIZATION(@"SEL$1") INDEX(@"SEL$1" "opt"."t_normal_idx"@"SEL$1" "idx") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t_normal_idx"@"SEL$1" "opt.t_normal_idx_alias"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t_normal_idx_alias"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t_normal_idx_alias"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t_normal_idx_alias"@"SEL$1" )) INDEX(@"SEL$1" "opt"."t_normal_idx"@"SEL$1" "idx") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 47(end) ************** *************** Case 48 *************** SQL: select /*+no_use_late_materialization index(t_normal_idx idx)*/* from t_normal_idx where c2=1 order by c4 limit 1; ================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------- |0 |TOP-N SORT | |1 |137 | |1 | TABLE SCAN|t_normal_idx(idx)|100 |134 | ================================================= Outputs & filters: ------------------------------------- 0 - output([t_normal_idx.c1], [t_normal_idx.c2], [t_normal_idx.c3], [t_normal_idx.c4], [t_normal_idx.c5], [t_normal_idx.c6], [t_normal_idx.c7], [t_normal_idx.c8], [t_normal_idx.c9], [t_normal_idx.c10]), filter(nil), sort_keys([t_normal_idx.c4, ASC]), topn(1) 1 - output([t_normal_idx.c1], [t_normal_idx.c2], [t_normal_idx.c3], [t_normal_idx.c4], [t_normal_idx.c5], [t_normal_idx.c6], [t_normal_idx.c7], [t_normal_idx.c8], [t_normal_idx.c9], [t_normal_idx.c10]), filter(nil), access([t_normal_idx.c1], [t_normal_idx.c2], [t_normal_idx.c3], [t_normal_idx.c4], [t_normal_idx.c5], [t_normal_idx.c6], [t_normal_idx.c7], [t_normal_idx.c8], [t_normal_idx.c9], [t_normal_idx.c10]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA INDEX(@"SEL$1" "opt"."t_normal_idx"@"SEL$1" "idx") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 48(end) ************** *************** Case 49 *************** SQL: select * from t1 where t1.c1 > (select c1 from t2); ===================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------- |0 |SUBPLAN FILTER | |167 |559 | |1 | PX COORDINATOR | |167 |277 | |2 | EXCHANGE OUT DISTR |:EX10000|167 |261 | |3 | PX PARTITION ITERATOR| |167 |230 | |4 | TABLE SCAN |t1 |167 |230 | |5 | PX COORDINATOR | |300 |280 | |6 | EXCHANGE OUT DISTR |:EX20000|300 |263 | |7 | PX PARTITION ITERATOR| |300 |233 | |8 | TABLE SCAN |t2 |300 |233 | ===================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2]), filter(nil) 2 - output([t1.c1], [t1.c2]), filter(nil), dop=1 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 5 - output([t2.c1]), filter(nil) 6 - output([t2.c1]), filter(nil), dop=1 7 - output([t2.c1]), filter(nil) 8 - output([t2.c1]), filter(nil), access([t2.c1]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t2"@"SEL$2") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 49(end) ************** *************** Case 50 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) > (select c1 from t3); ======================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------- |0 |SUBPLAN FILTER | |50000 |6092| |1 | NESTED-LOOP JOIN | |50000 |5029| |2 | PX COORDINATOR | |300 |464 | |3 | EXCHANGE OUT DISTR |:EX10000|300 |391 | |4 | PX PARTITION ITERATOR | |300 |233 | |5 | TABLE SCAN |t2 |300 |233 | |6 | MATERIAL | |500 |531 | |7 | PX COORDINATOR | |500 |528 | |8 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |9 | PX PARTITION ITERATOR| |500 |387 | |10| TABLE SCAN |t1 |500 |387 | |11| PX COORDINATOR | |200 |187 | |12| EXCHANGE OUT DISTR |:EX30000|200 |176 | |13| PX PARTITION ITERATOR | |200 |155 | |14| TABLE SCAN |t3 |200 |155 | ======================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t1.c1 + t2.c1 > ?]), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t3.c1]), filter(nil) 12 - output([t3.c1]), filter(nil), dop=1 13 - output([t3.c1]), filter(nil) 14 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t3"@"SEL$2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t3"@"SEL$2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 50(end) ************** *************** Case 51 *************** SQL: select * from t1,t2 where (t1.c1 + t2.c1) > (select t3.c1 from t3, t4); ============================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------- |0 |SUBPLAN FILTER | |50000 |8750| |1 | NESTED-LOOP JOIN | |50000 |5029| |2 | PX COORDINATOR | |300 |464 | |3 | EXCHANGE OUT DISTR |:EX10000 |300 |391 | |4 | PX PARTITION ITERATOR | |300 |233 | |5 | TABLE SCAN |t2 |300 |233 | |6 | MATERIAL | |500 |531 | |7 | PX COORDINATOR | |500 |528 | |8 | EXCHANGE OUT DISTR |:EX20000 |500 |481 | |9 | PX PARTITION ITERATOR | |500 |387 | |10| TABLE SCAN |t1 |500 |387 | |11| NESTED-LOOP JOIN CARTESIAN| |20000 |2845| |12| TABLE SCAN |t4(idx_t4_c2)|100 |78 | |13| MATERIAL | |200 |188 | |14| PX COORDINATOR | |200 |187 | |15| EXCHANGE OUT DISTR |:EX30000 |200 |176 | |16| PX PARTITION ITERATOR | |200 |155 | |17| TABLE SCAN |t3 |200 |155 | ============================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t1.c1 + t2.c1 > ?]), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t3.c1]), filter(nil), conds(nil), nl_params_(nil) 12 - output(nil), filter(nil), access([t4.c1]), partitions(p0) 13 - output([t3.c1]), filter(nil) 14 - output([t3.c1]), filter(nil) 15 - output([t3.c1]), filter(nil), dop=1 16 - output([t3.c1]), filter(nil) 17 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") LEADING(@"SEL$2" ("opt"."t4"@"SEL$2" "opt"."t3"@"SEL$2")) USE_NL(@"SEL$2" "opt"."t3"@"SEL$2") PQ_DISTRIBUTE(@"SEL$2" "opt"."t3"@"SEL$2" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" "opt"."t3"@"SEL$2") INDEX(@"SEL$2" "opt"."t4"@"SEL$2" "idx_t4_c2") FULL(@"SEL$2" "opt"."t3"@"SEL$2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") LEADING(@"SEL$2" ("opt.t4"@"SEL$2" "opt.t3"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t3"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t3"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t3"@"SEL$2" )) INDEX(@"SEL$2" "opt"."t4"@"SEL$2" "idx_t4_c2") FULL(@"SEL$2" "opt"."t3"@"SEL$2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 51(end) ************** *************** Case 52 *************** SQL: select * from t1,t2 where t1.c1 > (select c1 from t2); ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |SUBPLAN FILTER | |50000 |4479| |1 | NESTED-LOOP JOIN CARTESIAN| |50000 |3324| |2 | PX COORDINATOR | |300 |464 | |3 | EXCHANGE OUT DISTR |:EX10000|300 |391 | |4 | PX PARTITION ITERATOR | |300 |233 | |5 | TABLE SCAN |t2 |300 |233 | |6 | MATERIAL | |167 |278 | |7 | PX COORDINATOR | |167 |277 | |8 | EXCHANGE OUT DISTR |:EX20000|167 |261 | |9 | PX PARTITION ITERATOR | |167 |230 | |10| TABLE SCAN |t1 |167 |230 | |11| PX COORDINATOR | |300 |280 | |12| EXCHANGE OUT DISTR |:EX30000|300 |263 | |13| PX PARTITION ITERATOR | |300 |233 | |14| TABLE SCAN |t2 |300 |233 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t2.c1]), filter(nil) 12 - output([t2.c1]), filter(nil), dop=1 13 - output([t2.c1]), filter(nil) 14 - output([t2.c1]), filter(nil), access([t2.c1]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t2"@"SEL$2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t2"@"SEL$2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 52(end) ************** *************** Case 53 *************** SQL: select /*+use_nl(t2) leading(t1 t2)*/ * from t1,t2 where t2.c1 > (select 1); ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |142500 |13231| |1 | PX COORDINATOR | |500 |528 | |2 | EXCHANGE OUT DISTR |:EX10000|500 |481 | |3 | PX PARTITION ITERATOR | |500 |387 | |4 | TABLE SCAN |t1 |500 |387 | |5 | MATERIAL | |285 |459 | |6 | PX COORDINATOR | |285 |453 | |7 | EXCHANGE OUT DISTR |:EX20000|285 |383 | |8 | PX PARTITION ITERATOR | |285 |232 | |9 | TABLE SCAN |t2 |285 |232 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t1.c1], [t1.c2]), filter(nil) 2 - output([t1.c1], [t1.c2]), filter(nil), dop=1 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$4D615D57" ("opt"."t1"@"SEL$1" "opt"."t2"@"SEL$1")) USE_NL(@"SEL$4D615D57" "opt"."t2"@"SEL$1") PQ_DISTRIBUTE(@"SEL$4D615D57" "opt"."t2"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$4D615D57" "opt"."t2"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t2"@"SEL$1") SIMPLIFY_SUBQUERY(@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" )) FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 53(end) ************** *************** Case 54 *************** SQL: select /*+use_nl(t2) leading(t1 t2)*/ * from t1,t2 where t1.c1 > (select 1); ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |142500 |13235| |1 | PX COORDINATOR | |475 |520 | |2 | EXCHANGE OUT DISTR |:EX10000|475 |476 | |3 | PX PARTITION ITERATOR | |475 |387 | |4 | TABLE SCAN |t1 |475 |387 | |5 | MATERIAL | |300 |471 | |6 | PX COORDINATOR | |300 |464 | |7 | EXCHANGE OUT DISTR |:EX20000|300 |391 | |8 | PX PARTITION ITERATOR | |300 |233 | |9 | TABLE SCAN |t2 |300 |233 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t1.c1], [t1.c2]), filter(nil) 2 - output([t1.c1], [t1.c2]), filter(nil), dop=1 3 - output([t1.c1], [t1.c2]), filter(nil) 4 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$4D615D57" ("opt"."t1"@"SEL$1" "opt"."t2"@"SEL$1")) USE_NL(@"SEL$4D615D57" "opt"."t2"@"SEL$1") PQ_DISTRIBUTE(@"SEL$4D615D57" "opt"."t2"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$4D615D57" "opt"."t2"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t2"@"SEL$1") SIMPLIFY_SUBQUERY(@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t2"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" )) FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 54(end) ************** *************** Case 55 *************** SQL: select /*+use_nl(t1) leading(t2 t1)*/ * from t1,t2 where t2.c1 > (select 1); ======================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |142500 |8331| |1 | PX COORDINATOR | |285 |453 | |2 | EXCHANGE OUT DISTR |:EX10000|285 |383 | |3 | PX PARTITION ITERATOR | |285 |232 | |4 | TABLE SCAN |t2 |285 |232 | |5 | MATERIAL | |500 |531 | |6 | PX COORDINATOR | |500 |528 | |7 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |8 | PX PARTITION ITERATOR | |500 |387 | |9 | TABLE SCAN |t1 |500 |387 | ======================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$4D615D57" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$4D615D57" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$4D615D57" "opt"."t1"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t2"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") SIMPLIFY_SUBQUERY(@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 55(end) ************** *************** Case 56 *************** SQL: select /*+use_nl(t1) leading(t2 t1)*/ * from t1,t2 where t1.c1 > (select 1); ======================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |142500 |8335| |1 | PX COORDINATOR | |300 |464 | |2 | EXCHANGE OUT DISTR |:EX10000|300 |391 | |3 | PX PARTITION ITERATOR | |300 |233 | |4 | TABLE SCAN |t2 |300 |233 | |5 | MATERIAL | |475 |524 | |6 | PX COORDINATOR | |475 |520 | |7 | EXCHANGE OUT DISTR |:EX20000|475 |476 | |8 | PX PARTITION ITERATOR | |475 |387 | |9 | TABLE SCAN |t1 |475 |387 | ======================================================= Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 5 - output([t1.c1], [t1.c2]), filter(nil) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil), dop=1 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$4D615D57" ("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1")) USE_NL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$4D615D57" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$4D615D57" "opt"."t1"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t2"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") SIMPLIFY_SUBQUERY(@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 56(end) ************** *************** Case 57 *************** SQL: select * from t1,t2,t3 where (t2.c1 + t1.c1) > (select 1); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST | ---------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |10000000 |1294925| |1 | NESTED-LOOP JOIN | |50000 |5427 | |2 | PX COORDINATOR | |300 |464 | |3 | EXCHANGE OUT DISTR |:EX10000|300 |391 | |4 | PX PARTITION ITERATOR | |300 |233 | |5 | TABLE SCAN |t2 |300 |233 | |6 | MATERIAL | |500 |531 | |7 | PX COORDINATOR | |500 |528 | |8 | EXCHANGE OUT DISTR |:EX20000|500 |481 | |9 | PX PARTITION ITERATOR| |500 |387 | |10| TABLE SCAN |t1 |500 |387 | |11| MATERIAL | |200 |314 | |12| PX COORDINATOR | |200 |310 | |13| EXCHANGE OUT DISTR |:EX30000|200 |261 | |14| PX PARTITION ITERATOR | |200 |155 | |15| TABLE SCAN |t3 |200 |155 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t2.c1 + t1.c1 > ?]), nl_params_(nil) 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 6 - output([t1.c1], [t1.c2]), filter(nil) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil), dop=1 9 - output([t1.c1], [t1.c2]), filter(nil) 10 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 11 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), dop=1 14 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 15 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$4D615D57" (("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1") "opt"."t3"@"SEL$1")) USE_NL(@"SEL$4D615D57" "opt"."t3"@"SEL$1") PQ_DISTRIBUTE(@"SEL$4D615D57" "opt"."t3"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$4D615D57" "opt"."t3"@"SEL$1") USE_NL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$4D615D57" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$4D615D57" "opt"."t1"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t2"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t1"@"SEL$1") FULL(@"SEL$4D615D57" "opt"."t3"@"SEL$1") SIMPLIFY_SUBQUERY(@"SEL$1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t3"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t3"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t3"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 57(end) ************** *************** Case 58 *************** SQL: select * from t1,t2,t3 where (t2.c1 + t1.c1) > (select t4.c1 from t4, t5); ================================================================ |ID|OPERATOR |NAME |EST. ROWS|COST | ---------------------------------------------------------------- |0 |SUBPLAN FILTER | |10000000 |1472709| |1 | NESTED-LOOP JOIN CARTESIAN| |10000000 |1294528| |2 | NESTED-LOOP JOIN | |50000 |5029 | |3 | PX COORDINATOR | |300 |464 | |4 | EXCHANGE OUT DISTR |:EX10000 |300 |391 | |5 | PX PARTITION ITERATOR | |300 |233 | |6 | TABLE SCAN |t2 |300 |233 | |7 | MATERIAL | |500 |531 | |8 | PX COORDINATOR | |500 |528 | |9 | EXCHANGE OUT DISTR |:EX20000 |500 |481 | |10| PX PARTITION ITERATOR| |500 |387 | |11| TABLE SCAN |t1 |500 |387 | |12| MATERIAL | |200 |314 | |13| PX COORDINATOR | |200 |310 | |14| EXCHANGE OUT DISTR |:EX30000 |200 |261 | |15| PX PARTITION ITERATOR | |200 |155 | |16| TABLE SCAN |t3 |200 |155 | |17| NESTED-LOOP JOIN CARTESIAN| |30000 |2938 | |18| TABLE SCAN |t4(idx_t4_c2)|100 |78 | |19| MATERIAL | |300 |281 | |20| PX COORDINATOR | |300 |280 | |21| EXCHANGE OUT DISTR |:EX40000 |300 |263 | |22| PX PARTITION ITERATOR | |300 |233 | |23| TABLE SCAN |t5(idx_t5_c2)|300 |233 | ================================================================ Outputs & filters: ------------------------------------- 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), conds([t2.c1 + t1.c1 > ?]), nl_params_(nil) 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), access([t2.c1], [t2.c2], [t2.c3]), partitions(p[0-2]) 7 - output([t1.c1], [t1.c2]), filter(nil) 8 - output([t1.c1], [t1.c2]), filter(nil) 9 - output([t1.c1], [t1.c2]), filter(nil), dop=1 10 - output([t1.c1], [t1.c2]), filter(nil) 11 - output([t1.c1], [t1.c2]), filter(nil), access([t1.c1], [t1.c2]), partitions(p[0-4]) 12 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 13 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 14 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), dop=1 15 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) 16 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), access([t3.c1], [t3.c2], [t3.c3]), partitions(p[0-1]) 17 - output([t4.c1]), filter(nil), conds(nil), nl_params_(nil) 18 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) 19 - output(nil), filter(nil) 20 - output(nil), filter(nil) 21 - output(nil), filter(nil), dop=1 22 - output(nil), filter(nil) 23 - output(nil), filter(nil), access([t5.c2]), partitions(p[0-2]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$1" (("opt"."t2"@"SEL$1" "opt"."t1"@"SEL$1") "opt"."t3"@"SEL$1")) USE_NL(@"SEL$1" "opt"."t3"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t3"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t3"@"SEL$1") USE_NL(@"SEL$1" "opt"."t1"@"SEL$1") PQ_DISTRIBUTE(@"SEL$1" "opt"."t1"@"SEL$1" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t3"@"SEL$1") LEADING(@"SEL$2" ("opt"."t4"@"SEL$2" "opt"."t5"@"SEL$2")) USE_NL(@"SEL$2" "opt"."t5"@"SEL$2") PQ_DISTRIBUTE(@"SEL$2" "opt"."t5"@"SEL$2" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" "opt"."t5"@"SEL$2") INDEX(@"SEL$2" "opt"."t4"@"SEL$2" "idx_t4_c2") INDEX(@"SEL$2" "opt"."t5"@"SEL$2" "idx_t5_c2") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t3"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t3"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t3"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t2"@"SEL$1") FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$1" "opt"."t3"@"SEL$1") LEADING(@"SEL$2" ("opt.t4"@"SEL$2" "opt.t5"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t5"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t5"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t5"@"SEL$2" )) INDEX(@"SEL$2" "opt"."t4"@"SEL$2" "idx_t4_c2") INDEX(@"SEL$2" "opt"."t5"@"SEL$2" "idx_t5_c2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 58(end) ************** *************** Case 59 *************** SQL: select 1 from t1 inner join t1 t2 using(c1) where t1.c1 < (select t3.c1 from t3) and t1.c1 > (select t4.c1 from t4); ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |SUBPLAN FILTER | |56 |502 | |1 | PX COORDINATOR | |56 |237 | |2 | EXCHANGE OUT DISTR |:EX10000 |56 |234 | |3 | PX PARTITION ITERATOR| |56 |228 | |4 | TABLE SCAN |t1 |56 |228 | |5 | PX COORDINATOR | |200 |187 | |6 | EXCHANGE OUT DISTR |:EX20000 |200 |176 | |7 | PX PARTITION ITERATOR| |200 |155 | |8 | TABLE SCAN |t3 |200 |155 | |9 | TABLE SCAN |t4(idx_t4_c2)|100 |78 | ========================================================== Outputs & filters: ------------------------------------- 0 - output([?]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)], [subquery(2)]), init_plan_idxs_(nil) 1 - output(nil), filter(nil) 2 - output(nil), filter(nil), dop=1 3 - output(nil), filter(nil) 4 - output(nil), filter(nil), access([t1.c1]), partitions(p[0-4]) 5 - output([t3.c1]), filter(nil) 6 - output([t3.c1]), filter(nil), dop=1 7 - output([t3.c1]), filter(nil) 8 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) 9 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD FULL(@"SEL$488F0C13" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t3"@"SEL$2") INDEX(@"SEL$3" "opt"."t4"@"SEL$3" "idx_t4_c2") OUTER_TO_INNER(@"SEL$1") ELIMINATE_JOIN(@"SEL$C6D21C0F" "opt"."t2"@"SEL$C6D21C0F") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t3"@"SEL$2") INDEX(@"SEL$3" "opt"."t4"@"SEL$3" "idx_t4_c2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 59(end) ************** *************** Case 60 *************** SQL: select 1 from t1 inner join t1 t2 using(c1) where t1.c1 < (select t3.c1 from t3) order by (select t4.c1 from t4); =========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ----------------------------------------------------------- |0 |SUBPLAN FILTER | |167 |526 | |1 | SUBPLAN FILTER | |167 |446 | |2 | PX COORDINATOR | |167 |257 | |3 | EXCHANGE OUT DISTR |:EX10000 |167 |247 | |4 | PX PARTITION ITERATOR| |167 |230 | |5 | TABLE SCAN |t1 |167 |230 | |6 | PX COORDINATOR | |200 |187 | |7 | EXCHANGE OUT DISTR |:EX20000 |200 |176 | |8 | PX PARTITION ITERATOR| |200 |155 | |9 | TABLE SCAN |t3 |200 |155 | |10| TABLE SCAN |t4(idx_t4_c2)|100 |78 | =========================================================== Outputs & filters: ------------------------------------- 0 - output([?]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output(nil), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 2 - output(nil), filter(nil) 3 - output(nil), filter(nil), dop=1 4 - output(nil), filter(nil) 5 - output(nil), filter(nil), access([t1.c1]), partitions(p[0-4]) 6 - output([t3.c1]), filter(nil) 7 - output([t3.c1]), filter(nil), dop=1 8 - output([t3.c1]), filter(nil) 9 - output([t3.c1]), filter(nil), access([t3.c1]), partitions(p[0-1]) 10 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD FULL(@"SEL$488F0C13" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t3"@"SEL$2") INDEX(@"SEL$3" "opt"."t4"@"SEL$3" "idx_t4_c2") OUTER_TO_INNER(@"SEL$1") ELIMINATE_JOIN(@"SEL$C6D21C0F" "opt"."t2"@"SEL$C6D21C0F") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= FULL(@"SEL$1" "opt"."t1"@"SEL$1") FULL(@"SEL$2" "opt"."t3"@"SEL$2") INDEX(@"SEL$3" "opt"."t4"@"SEL$3" "idx_t4_c2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 60(end) ************** *************** Case 61 *************** SQL: select 1 from t1 inner join t1 t2 using(c1) where t1.c1 < (select t4.c1 from t3, t4); ============================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| ------------------------------------------------------------- |0 |SUBPLAN FILTER | |167 |3104| |1 | PX COORDINATOR | |167 |257 | |2 | EXCHANGE OUT DISTR |:EX10000 |167 |247 | |3 | PX PARTITION ITERATOR | |167 |230 | |4 | TABLE SCAN |t1 |167 |230 | |5 | NESTED-LOOP JOIN CARTESIAN| |20000 |2845| |6 | TABLE SCAN |t4(idx_t4_c2)|100 |78 | |7 | MATERIAL | |200 |188 | |8 | PX COORDINATOR | |200 |187 | |9 | EXCHANGE OUT DISTR |:EX20000 |200 |176 | |10| PX PARTITION ITERATOR | |200 |155 | |11| TABLE SCAN |t3 |200 |155 | ============================================================= Outputs & filters: ------------------------------------- 0 - output([?]), filter(nil), exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) 1 - output(nil), filter(nil) 2 - output(nil), filter(nil), dop=1 3 - output(nil), filter(nil) 4 - output(nil), filter(nil), access([t1.c1]), partitions(p[0-4]) 5 - output([t4.c1]), filter(nil), conds(nil), nl_params_(nil) 6 - output([t4.c1]), filter(nil), access([t4.c1]), partitions(p0) 7 - output(nil), filter(nil) 8 - output(nil), filter(nil) 9 - output(nil), filter(nil), dop=1 10 - output(nil), filter(nil) 11 - output(nil), filter(nil), access([t3.c1]), partitions(p[0-1]) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD FULL(@"SEL$488F0C13" "opt"."t1"@"SEL$1") LEADING(@"SEL$2" ("opt"."t4"@"SEL$2" "opt"."t3"@"SEL$2")) USE_NL(@"SEL$2" "opt"."t3"@"SEL$2") PQ_DISTRIBUTE(@"SEL$2" "opt"."t3"@"SEL$2" LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" "opt"."t3"@"SEL$2") INDEX(@"SEL$2" "opt"."t4"@"SEL$2" "idx_t4_c2") FULL(@"SEL$2" "opt"."t3"@"SEL$2") OUTER_TO_INNER(@"SEL$1") ELIMINATE_JOIN(@"SEL$C6D21C0F" "opt"."t2"@"SEL$C6D21C0F") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= FULL(@"SEL$1" "opt"."t1"@"SEL$1") LEADING(@"SEL$2" ("opt.t4"@"SEL$2" "opt.t3"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t3"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t3"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t3"@"SEL$2" )) INDEX(@"SEL$2" "opt"."t4"@"SEL$2" "idx_t4_c2") FULL(@"SEL$2" "opt"."t3"@"SEL$2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 61(end) ************** *************** Case 62 *************** SQL: select /*+qb_name(select_1)*/* from t4; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |100 |78 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD FULL(@"SELECT_1" "opt"."t4"@"SELECT_1") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= FULL(@"SEL$1" "opt"."t4"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 62(end) ************** *************** Case 63 *************** SQL: select /*+qb_name(select_1) qb_name(select_2)*/* from t4; =================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------- |0 |TABLE SCAN|t4 |100 |78 | =================================== Outputs & filters: ------------------------------------- 0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA FULL(@"SEL$1" "opt"."t4"@"SEL$1") <<<<<<< HEAD OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 63(end) ************** *************** Case 64 *************** SQL: select t20.c1 from t20 join t0 where t0.c1 in (select t7.c1 from t7 join t8); ======================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |9000 |5731| |1 | TABLE SCAN |t20 |100 |78 | |2 | MATERIAL | |90 |3332| |3 | MERGE SEMI JOIN | |90 |3331| |4 | SORT | |100 |133 | |5 | TABLE SCAN |t0 |100 |78 | |6 | SUBPLAN SCAN |VIEW1|10000 |2911| |7 | NESTED-LOOP JOIN CARTESIAN| |10000 |2736| |8 | TABLE SCAN |t7 |100 |78 | |9 | MATERIAL | |100 |78 | |10| TABLE SCAN |t8 |100 |78 | ======================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 2 - output(nil), filter(nil) 3 - output(nil), filter(nil), equal_conds([t0.c1 = VIEW1.c1]), other_conds(nil) 4 - output([t0.c1]), filter(nil), sort_keys([t0.c1, ASC]) 5 - output([t0.c1]), filter(nil), access([t0.c1]), partitions(p0) 6 - output([VIEW1.c1]), filter(nil), access([VIEW1.c1]) 7 - output([t7.c1]), filter(nil), conds(nil), nl_params_(nil) 8 - output([t7.c1]), filter(nil), access([t7.c1]), partitions(p0) 9 - output(nil), filter(nil) 10 - output(nil), filter(nil), access([t8.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$6816FF38" ("opt"."t20"@"SEL$1" ("opt"."t0"@"SEL$1" "VIEW1"@"SEL$1"))) USE_NL(@"SEL$6816FF38" ("opt"."t0"@"SEL$1" "VIEW1"@"SEL$1")) USE_NL_MATERIALIZATION(@"SEL$6816FF38" ("opt"."t0"@"SEL$1" "VIEW1"@"SEL$1")) FULL(@"SEL$6816FF38" "opt"."t20"@"SEL$1") USE_MERGE(@"SEL$6816FF38" "VIEW1"@"SEL$1") FULL(@"SEL$6816FF38" "opt"."t0"@"SEL$1") LEADING(@"SEL$9DC52427" ("opt"."t7"@"SEL$2" "opt"."t8"@"SEL$2")) USE_NL(@"SEL$9DC52427" "opt"."t8"@"SEL$2") USE_NL_MATERIALIZATION(@"SEL$9DC52427" "opt"."t8"@"SEL$2") FULL(@"SEL$9DC52427" "opt"."t7"@"SEL$2") FULL(@"SEL$9DC52427" "opt"."t8"@"SEL$2") UNNEST(@"SEL$2") OUTER_TO_INNER(@"SEL$2") OUTER_TO_INNER(@"SEL$6FCAE2AA") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t20"@"SEL$1" ("opt.t0"@"SEL$1" "VIEW1"@"SEL$1" ))) USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" "VIEW1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t0"@"SEL$1" "VIEW1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" "VIEW1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t20"@"SEL$1") USE_MERGE(@"SEL$1" ("VIEW1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" ) LOCAL LOCAL) FULL(@"SEL$1" "opt"."t0"@"SEL$1") LEADING(@"SEL$2" ("opt.t7"@"SEL$2" "opt.t8"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t8"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t8"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t8"@"SEL$2" )) FULL(@"SEL$2" "opt"."t7"@"SEL$2") FULL(@"SEL$2" "opt"."t8"@"SEL$2") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 64(end) ************** *************** Case 65 *************** SQL: select t20.c1 from t20 join t0 join (t7 left join t8 on t7.c1 = t8.c1); ====================================================== |ID|OPERATOR |NAME|EST. ROWS|COST | ------------------------------------------------------ |0 |NESTED-LOOP JOIN CARTESIAN | |1000000 |260652| |1 | NESTED-LOOP JOIN CARTESIAN| |10000 |2736 | |2 | TABLE SCAN |t20 |100 |78 | |3 | MATERIAL | |100 |78 | |4 | TABLE SCAN |t0 |100 |78 | |5 | MATERIAL | |100 |78 | |6 | TABLE SCAN |t7 |100 |78 | ====================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 3 - output(nil), filter(nil) 4 - output(nil), filter(nil), access([t0.pk]), partitions(p0) 5 - output(nil), filter(nil) 6 - output(nil), filter(nil), access([t7.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$488F0C13" (("opt"."t20"@"SEL$1" "opt"."t0"@"SEL$1") "opt"."t7"@"SEL$1")) USE_NL(@"SEL$488F0C13" "opt"."t7"@"SEL$1") USE_NL_MATERIALIZATION(@"SEL$488F0C13" "opt"."t7"@"SEL$1") USE_NL(@"SEL$488F0C13" "opt"."t0"@"SEL$1") USE_NL_MATERIALIZATION(@"SEL$488F0C13" "opt"."t0"@"SEL$1") FULL(@"SEL$488F0C13" "opt"."t20"@"SEL$1") FULL(@"SEL$488F0C13" "opt"."t0"@"SEL$1") FULL(@"SEL$488F0C13" "opt"."t7"@"SEL$1") OUTER_TO_INNER(@"SEL$1") ELIMINATE_JOIN(@"SEL$C6D21C0F" "opt"."t8"@"SEL$C6D21C0F") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" (("opt.t20"@"SEL$1" "opt.t0"@"SEL$1" )"opt.t7"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t7"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t7"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t7"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t0"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt"."t20"@"SEL$1") FULL(@"SEL$1" "opt"."t0"@"SEL$1") FULL(@"SEL$1" "opt"."t7"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 65(end) ************** *************** Case 66 *************** SQL: select t20.c1 from t20 left join (t7 left join t8 on t7.c1 = t8.c1) on t20.c1 = t7.c1 join t0; =================================================== |ID|OPERATOR |NAME|EST. ROWS|COST| --------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |10000 |2736| |1 | TABLE SCAN |t20 |100 |78 | |2 | MATERIAL | |100 |78 | |3 | TABLE SCAN |t0 |100 |78 | =================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 2 - output(nil), filter(nil) 3 - output(nil), filter(nil), access([t0.pk]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$488F0C13" ("opt"."t20"@"SEL$1" "opt"."t0"@"SEL$1")) USE_NL(@"SEL$488F0C13" "opt"."t0"@"SEL$1") USE_NL_MATERIALIZATION(@"SEL$488F0C13" "opt"."t0"@"SEL$1") FULL(@"SEL$488F0C13" "opt"."t20"@"SEL$1") FULL(@"SEL$488F0C13" "opt"."t0"@"SEL$1") OUTER_TO_INNER(@"SEL$1") ELIMINATE_JOIN(@"SEL$C6D21C0F" ("opt"."t7"@"SEL$C6D21C0F" "opt"."t8"@"SEL$C6D21C0F")) OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t20"@"SEL$1" "opt.t0"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t0"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt"."t20"@"SEL$1") FULL(@"SEL$1" "opt"."t0"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 66(end) ************** *************** Case 67 *************** SQL: select t20.c1 from t20 join t0 where t0.c1 in (select max(t7.c1) from t7 join t8); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |900 |3485| |1 | TABLE SCAN |t20 |100 |78 | |2 | MATERIAL | |9 |3174| |3 | NESTED-LOOP JOIN | |9 |3174| |4 | SUBPLAN SCAN |VIEW1|1 |3090| |5 | SCALAR GROUP BY | |1 |3090| |6 | NESTED-LOOP JOIN CARTESIAN| |10000 |2736| |7 | TABLE SCAN |t7 |100 |78 | |8 | MATERIAL | |100 |78 | |9 | TABLE SCAN |t8 |100 |78 | |10| TABLE SCAN |t0 |100 |78 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 2 - output(nil), filter(nil) 3 - output(nil), filter(nil), conds([t0.c1 = VIEW1.max(t7.c1)]), nl_params_(nil) 4 - output([VIEW1.max(t7.c1)]), filter(nil), access([VIEW1.max(t7.c1)]) 5 - output([T_FUN_MAX(t7.c1)]), filter(nil), group(nil), agg_func([T_FUN_MAX(t7.c1)]) 6 - output([t7.c1]), filter(nil), conds(nil), nl_params_(nil) 7 - output([t7.c1]), filter(nil), access([t7.c1]), partitions(p0) 8 - output(nil), filter(nil) 9 - output(nil), filter(nil), access([t8.c1]), partitions(p0) 10 - output([t0.c1]), filter(nil), access([t0.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$F70B38FF" ("opt"."t20"@"SEL$1" ("VIEW1"@"SEL$1" "opt"."t0"@"SEL$1"))) USE_NL(@"SEL$F70B38FF" ("opt"."t0"@"SEL$1" "VIEW1"@"SEL$1")) USE_NL_MATERIALIZATION(@"SEL$F70B38FF" ("opt"."t0"@"SEL$1" "VIEW1"@"SEL$1")) FULL(@"SEL$F70B38FF" "opt"."t20"@"SEL$1") USE_NL(@"SEL$F70B38FF" "opt"."t0"@"SEL$1") LEADING(@"SEL$9DC52427" ("opt"."t7"@"SEL$2" "opt"."t8"@"SEL$2")) USE_NL(@"SEL$9DC52427" "opt"."t8"@"SEL$2") USE_NL_MATERIALIZATION(@"SEL$9DC52427" "opt"."t8"@"SEL$2") FULL(@"SEL$9DC52427" "opt"."t7"@"SEL$2") FULL(@"SEL$9DC52427" "opt"."t8"@"SEL$2") FULL(@"SEL$F70B38FF" "opt"."t0"@"SEL$1") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") OUTER_TO_INNER(@"SEL$2") OUTER_TO_INNER(@"SEL$E5385516") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t20"@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ))) USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt"."t20"@"SEL$1") USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t0"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) LEADING(@"SEL$2" ("opt.t7"@"SEL$2" "opt.t8"@"SEL$2" )) USE_NL(@"SEL$2" ("opt.t8"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("opt.t8"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t8"@"SEL$2" )) FULL(@"SEL$2" "opt"."t7"@"SEL$2") FULL(@"SEL$2" "opt"."t8"@"SEL$2") FULL(@"SEL$1" "opt"."t0"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 67(end) ************** *************** Case 68 *************** SQL: select t20.c1 from t20 join t0 where t0.c1 in (select max(t7.c1) from t7 join t8) and t0.c1 in (select max(t7.c2) from t7); ==================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN| |45 |178 | |1 | TABLE SCAN |t20 |100 |78 | |2 | MATERIAL | |1 |87 | |3 | NESTED-LOOP JOIN | |1 |87 | |4 | SUBPLAN SCAN |VIEW3|1 |83 | |5 | SCALAR GROUP BY | |1 |83 | |6 | TABLE SCAN |t7 |100 |78 | |7 | TABLE SCAN |t0 |100 |78 | ==================================================== Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 2 - output(nil), filter(nil) 3 - output(nil), filter(nil), conds([t0.c1 = VIEW3.T_FUN_MAX(t7.c1)]), nl_params_(nil) 4 - output([VIEW3.T_FUN_MAX(t7.c1)]), filter(nil), access([VIEW3.T_FUN_MAX(t7.c1)]) 5 - output([T_FUN_MAX(t7.c2)], [T_FUN_MAX(t7.c1)]), filter([T_FUN_MAX(t7.c1) = T_FUN_MAX(t7.c2)]), group(nil), agg_func([T_FUN_MAX(t7.c2)], [T_FUN_MAX(t7.c1)]) 6 - output([t7.c1], [t7.c2]), filter(nil), access([t7.c1], [t7.c2]), partitions(p0) 7 - output([t0.c1]), filter(nil), access([t0.c1]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E3C5A5E7" ("opt"."t20"@"SEL$1" ("VIEW3"@"SEL$E4C97F16" "opt"."t0"@"SEL$1"))) USE_NL(@"SEL$E3C5A5E7" ("opt"."t0"@"SEL$1" "VIEW3"@"SEL$E4C97F16")) USE_NL_MATERIALIZATION(@"SEL$E3C5A5E7" ("opt"."t0"@"SEL$1" "VIEW3"@"SEL$E4C97F16")) FULL(@"SEL$E3C5A5E7" "opt"."t20"@"SEL$1") USE_NL(@"SEL$E3C5A5E7" "opt"."t0"@"SEL$1") FULL(@"SEL$3" "opt"."t7"@"SEL$3") FULL(@"SEL$E3C5A5E7" "opt"."t0"@"SEL$1") UNNEST(@"SEL$2") UNNEST(@"SEL$3") SEMI_TO_INNER(@"SEL$F6B5C6D7" ("VIEW1" "VIEW2")) OUTER_TO_INNER(@"SEL$2") OUTER_TO_INNER(@"SEL$A4C9DBFA") SIMPLIFY_WINFUNC(@"SEL$E4C97F16") MERGE(@"SEL$05266C8A" > "SEL$E4C97F18") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" ("opt.t20"@"SEL$1" ("VIEW3"@"SEL$1" "opt.t0"@"SEL$1" ))) USE_NL(@"SEL$1" ("VIEW3"@"SEL$1" "opt.t0"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("VIEW3"@"SEL$1" "opt.t0"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW3"@"SEL$1" "opt.t0"@"SEL$1" )) FULL(@"SEL$1" "opt"."t20"@"SEL$1") USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t0"@"SEL$1" ) LOCAL LOCAL) NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) FULL(@"SEL$3" "opt"."t7"@"SEL$3") FULL(@"SEL$1" "opt"."t0"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 68(end) ************** *************** Case 69 *************** SQL: select t20.c1 from t20 join t0 where 1 in (select t7.c1 from t7 join t8); ========================================================= |ID|OPERATOR |NAME |EST. ROWS|COST| --------------------------------------------------------- |0 |NESTED-LOOP JOIN CARTESIAN | |10000 |2854| |1 | NESTED-LOOP JOIN CARTESIAN | |100 |196 | |2 | TABLE SCAN |t20 |100 |78 | |3 | MATERIAL | |1 |92 | |4 | SUBPLAN SCAN |VIEW1|1 |92 | |5 | LIMIT | |1 |92 | |6 | NESTED-LOOP JOIN CARTESIAN| |1 |92 | |7 | SUBPLAN SCAN |VIEW3|1 |46 | |8 | TABLE SCAN |t8 |1 |46 | |9 | MATERIAL | |1 |46 | |10| SUBPLAN SCAN |VIEW2|1 |46 | |11| TABLE GET |t7 |1 |46 | |12| MATERIAL | |100 |78 | |13| TABLE SCAN |t0 |100 |78 | ========================================================= Outputs & filters: ------------------------------------- 0 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 1 - output([t20.c1]), filter(nil), conds(nil), nl_params_(nil) 2 - output([t20.c1]), filter(nil), access([t20.c1]), partitions(p0) 3 - output(nil), filter(nil) 4 - output(nil), filter(nil), access(nil) 5 - output([1]), filter(nil), limit(1), offset(nil) 6 - output(nil), filter(nil), conds(nil), nl_params_(nil) 7 - output(nil), filter(nil), access(nil) 8 - output([1]), filter(nil), access([t8.c1]), partitions(p0), limit(1), offset(nil) 9 - output(nil), filter(nil) 10 - output(nil), filter(nil), access(nil) 11 - output([1]), filter(nil), access([t7.c1]), partitions(p0), limit(1), offset(nil) 12 - output(nil), filter(nil) 13 - output(nil), filter(nil), access([t0.pk]), partitions(p0) Outline Data: ------------------------------------- /*+ BEGIN_OUTLINE_DATA <<<<<<< HEAD LEADING(@"SEL$E775832E" (("opt"."t20"@"SEL$1" "VIEW1"@"SEL$1") "opt"."t0"@"SEL$1")) USE_NL(@"SEL$E775832E" "opt"."t0"@"SEL$1") USE_NL_MATERIALIZATION(@"SEL$E775832E" "opt"."t0"@"SEL$1") USE_NL(@"SEL$E775832E" "VIEW1"@"SEL$1") USE_NL_MATERIALIZATION(@"SEL$E775832E" "VIEW1"@"SEL$1") FULL(@"SEL$E775832E" "opt"."t20"@"SEL$1") LEADING(@"SEL$6E616CF1" ("VIEW3"@"SEL$9DC52427" "VIEW2"@"SEL$9DC52427")) USE_NL(@"SEL$6E616CF1" "VIEW2"@"SEL$9DC52427") USE_NL_MATERIALIZATION(@"SEL$6E616CF1" "VIEW2"@"SEL$9DC52427") FULL(@"SEL$9F3B17F5" "opt"."t8"@"SEL$2") FULL(@"SEL$9F3B17F4" "opt"."t7"@"SEL$2") FULL(@"SEL$E775832E" "opt"."t0"@"SEL$1") UNNEST(@"SEL$2") SEMI_TO_INNER(@"SEL$6FCAE2AA" "VIEW1") OUTER_TO_INNER(@"SEL$2") OUTER_TO_INNER(@"SEL$E5385516") PUSH_LIMIT(@"SEL$9DC52427") PROJECT_PRUNE(@"SEL$F70B38FF") PROJECT_PRUNE(@"SEL$9F3B17F6") OPTIMIZER_FEATURES_ENABLE('4.0.0.0') ======= LEADING(@"SEL$1" (("opt.t20"@"SEL$1" "VIEW1"@"SEL$1" )"opt.t0"@"SEL$1" )) USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("opt.t0"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" )) USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" )) PQ_DISTRIBUTE(@"SEL$1" ("VIEW1"@"SEL$1" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" )) FULL(@"SEL$1" "opt"."t20"@"SEL$1") LEADING(@"SEL$2" ("VIEW3"@"SEL$2" "VIEW2"@"SEL$2" )) USE_NL(@"SEL$2" ("VIEW2"@"SEL$2" )) PQ_DISTRIBUTE(@"SEL$2" ("VIEW2"@"SEL$2" ) LOCAL LOCAL) USE_NL_MATERIALIZATION(@"SEL$2" ("VIEW2"@"SEL$2" )) FULL(@"SEL$4" "opt"."t8"@"SEL$4") FULL(@"SEL$3" "opt"."t7"@"SEL$3") FULL(@"SEL$1" "opt"."t0"@"SEL$1") >>>>>>> implement spm part1 END_OUTLINE_DATA */ *************** Case 69(end) **************