3987 lines
		
	
	
		
			161 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			3987 lines
		
	
	
		
			161 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ***************   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)  ************** 
 | |
| 
 | 
