3347 lines
		
	
	
		
			136 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			3347 lines
		
	
	
		
			136 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ***************   Case 1   ***************
 | |
| 
 | |
| SQL: select * from t4 where c1 in (select c1 from t1); 
 | |
| 
 | |
| ==========================================================
 | |
| |ID|OPERATOR                     |NAME    |EST. ROWS|COST|
 | |
| ----------------------------------------------------------
 | |
| |0 |PX COORDINATOR               |        |100      |1233|
 | |
| |1 | EXCHANGE OUT DISTR          |:EX10001|100      |1214|
 | |
| |2 |  MERGE JOIN                 |        |100      |1214|
 | |
| |3 |   EXCHANGE IN DISTR         |        |100      |107 |
 | |
| |4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |92  |
 | |
| |5 |     TABLE SCAN              |t4      |100      |92  |
 | |
| |6 |   SORT                      |        |500      |966 |
 | |
| |7 |    PX PARTITION ITERATOR    |        |500      |331 |
 | |
| |8 |     TABLE SCAN              |t1      |500      |331 |
 | |
| ==========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil)
 | |
|   1 - output([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), sort_keys([t1.c1, ASC]), local merge sort
 | |
|   7 - output([t1.c1]), filter(nil)
 | |
|   8 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p[0-4])
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("opt.t4"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_MERGE(@"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")
 | |
|       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                |             |100      |1428|
 | |
| |1 | EXCHANGE OUT DISTR           |:EX10001     |100      |1418|
 | |
| |2 |  MERGE SEMI JOIN             |             |100      |1418|
 | |
| |3 |   SORT                       |             |500      |1074|
 | |
| |4 |    PX PARTITION ITERATOR     |             |500      |342 |
 | |
| |5 |     TABLE SCAN               |t1           |500      |342 |
 | |
| |6 |   SORT                       |             |100      |203 |
 | |
| |7 |    EXCHANGE IN DISTR         |             |100      |95  |
 | |
| |8 |     EXCHANGE OUT DISTR (PKEY)|:EX10000     |100      |90  |
 | |
| |9 |      TABLE SCAN              |t4(idx_t4_c3)|100      |90  |
 | |
| ================================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | |
|   2 - output([t1.c1], [t1.c2]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t4.c1]), other_conds(nil)
 | |
|   3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | |
|   4 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   5 - output([t1.c1], [t1.c2]), filter(nil), 
 | |
|       access([t1.c1], [t1.c2]), partitions(p[0-4])
 | |
|   6 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC])
 | |
|   7 - output([t4.c1]), filter(nil)
 | |
|   8 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | |
|   9 - output([t4.c1]), filter(nil), 
 | |
|       access([t4.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t4"@"SEL$1" ))
 | |
|       USE_MERGE(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | |
|       PQ_DISTRIBUTE(@"SEL$1" ("opt.t4"@"SEL$1" ) NONE PARTITION)
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       INDEX(@"SEL$1" "opt.t4"@"SEL$1" "idx_t4_c3")
 | |
|       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               |        |100      |1320|
 | |
| |1 | EXCHANGE OUT DISTR          |:EX10001|100      |1311|
 | |
| |2 |  MERGE SEMI JOIN            |        |100      |1311|
 | |
| |3 |   SORT                      |        |500      |1074|
 | |
| |4 |    PX PARTITION ITERATOR    |        |500      |342 |
 | |
| |5 |     TABLE SCAN              |t1      |500      |342 |
 | |
| |6 |   EXCHANGE IN DISTR         |        |100      |95  |
 | |
| |7 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|100      |90  |
 | |
| |8 |     TABLE SCAN              |t4      |100      |90  |
 | |
| ==========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | |
|   2 - output([t1.c1], [t1.c2]), filter(nil), 
 | |
|       equal_conds([t1.c1 = t4.c1]), other_conds(nil)
 | |
|   3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | |
|   4 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   5 - output([t1.c1], [t1.c2]), filter(nil), 
 | |
|       access([t1.c1], [t1.c2]), partitions(p[0-4])
 | |
|   6 - output([t4.c1]), filter(nil)
 | |
|   7 - (#keys=1, [t4.c1]), output([t4.c1]), filter(nil), is_single, dop=1
 | |
|   8 - output([t4.c1]), filter(nil), 
 | |
|       access([t4.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t4"@"SEL$1" ))
 | |
|       USE_MERGE(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | |
|       PQ_DISTRIBUTE(@"SEL$1" ("opt.t4"@"SEL$1" ) NONE PARTITION)
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | |
|       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               |                |1        |561 |
 | |
| |1 | SUBPLAN SCAN                  |VIEW1           |1        |447 |
 | |
| |2 |  SCALAR GROUP BY              |                |1        |446 |
 | |
| |3 |   SUBPLAN SCAN                |VIEW2           |1        |446 |
 | |
| |4 |    LIMIT                      |                |1        |446 |
 | |
| |5 |     PX COORDINATOR MERGE SORT |                |1        |446 |
 | |
| |6 |      EXCHANGE OUT DISTR       |:EX10000        |1        |446 |
 | |
| |7 |       LIMIT                   |                |1        |446 |
 | |
| |8 |        TOP-N SORT             |                |1        |446 |
 | |
| |9 |         PX PARTITION ITERATOR |                |500      |331 |
 | |
| |10|          TABLE SCAN           |t1(idx_t1_c2)   |500      |331 |
 | |
| |11| TABLE SCAN                    |t4(idx_t4_c2_c3)|100      |92  |
 | |
| ====================================================================
 | |
| 
 | |
| 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.c1)]), filter(nil), 
 | |
|       group(nil), agg_func([T_FUN_MAX(VIEW2.c1)])
 | |
|   3 - output([VIEW2.c1]), filter(nil), 
 | |
|       access([VIEW2.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), limit(1), offset(nil)
 | |
|   8 - output([t1.c1]), filter(nil), sort_keys([t1.c1, DESC]), topn(1)
 | |
|   9 - output([t1.c1]), filter(nil)
 | |
|   10 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p[0-4])
 | |
|   11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), 
 | |
|       access([t4.c1], [t4.c2], [t4.c3]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t4"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | |
|       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")
 | |
|       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               |           |1        |74  |
 | |
| |1 | SUBPLAN SCAN                  |VIEW1      |1        |38  |
 | |
| |2 |  SCALAR GROUP BY              |           |1        |37  |
 | |
| |3 |   SUBPLAN SCAN                |VIEW2      |1        |37  |
 | |
| |4 |    LIMIT                      |           |1        |37  |
 | |
| |5 |     PX COORDINATOR MERGE SORT |           |1        |37  |
 | |
| |6 |      EXCHANGE OUT DISTR       |:EX10000   |1        |37  |
 | |
| |7 |       SORT                    |           |1        |37  |
 | |
| |8 |        PX PARTITION ITERATOR  |           |1        |36  |
 | |
| |9 |         TABLE SCAN            |t1(Reverse)|1        |36  |
 | |
| |10| TABLE SCAN                    |t4         |1        |36  |
 | |
| ===============================================================
 | |
| 
 | |
| 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.c1)]), filter(nil), 
 | |
|       group(nil), agg_func([T_FUN_MAX(VIEW2.c1)])
 | |
|   3 - output([VIEW2.c1]), filter(nil), 
 | |
|       access([VIEW2.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]), 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
 | |
|       LEADING(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t4"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t4"@"SEL$1" ))
 | |
|       FULL(@"SEL$3" "opt.t1"@"SEL$3")
 | |
|       FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | |
|       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        |135541|
 | |
| |1 | EXCHANGE OUT DISTR              |:EX10003|1        |135541|
 | |
| |2 |  NESTED-LOOP JOIN               |        |1        |135541|
 | |
| |3 |   EXCHANGE IN DISTR             |        |1        |135505|
 | |
| |4 |    EXCHANGE OUT DISTR (PKEY)    |:EX10002|1        |135505|
 | |
| |5 |     SUBPLAN SCAN                |VIEW1   |1        |135505|
 | |
| |6 |      SCALAR GROUP BY            |        |1        |135504|
 | |
| |7 |       NESTED-LOOP JOIN CARTESIAN|        |150000   |106853|
 | |
| |8 |        MATERIAL                 |        |500      |446   |
 | |
| |9 |         EXCHANGE IN DISTR       |        |500      |354   |
 | |
| |10|          EXCHANGE OUT DISTR     |:EX10000|500      |331   |
 | |
| |11|           PX PARTITION ITERATOR |        |500      |331   |
 | |
| |12|            TABLE SCAN           |t1      |500      |331   |
 | |
| |13|        MATERIAL                 |        |300      |261   |
 | |
| |14|         EXCHANGE IN DISTR       |        |300      |206   |
 | |
| |15|          EXCHANGE OUT DISTR     |:EX10001|300      |192   |
 | |
| |16|           PX PARTITION ITERATOR |        |300      |192   |
 | |
| |17|            TABLE SCAN           |t2      |300      |192   |
 | |
| |18|   PX PARTITION ITERATOR         |        |1        |36    |
 | |
| |19|    TABLE GET                    |t1      |1        |36    |
 | |
| ================================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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([VIEW1.max(t1.c1)], [PARTITION_ID]), filter(nil)
 | |
|   4 - (#keys=1, [VIEW1.max(t1.c1)]), output([VIEW1.max(t1.c1)], [PARTITION_ID]), 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)
 | |
|   10 - output([t1.c1]), filter(nil), dop=1
 | |
|   11 - output([t1.c1]), filter(nil)
 | |
|   12 - output([t1.c1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p[0-4])
 | |
|   13 - output([1]), filter(nil)
 | |
|   14 - output([1]), filter(nil)
 | |
|   15 - output([1]), filter(nil), dop=1
 | |
|   16 - output([1]), filter(nil)
 | |
|   17 - output([1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p[0-2])
 | |
|   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
 | |
|       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" ))
 | |
|       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")
 | |
|       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)|1        |109 |
 | |
| ============================================
 | |
| 
 | |
| 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")
 | |
|       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)|1        |109 |
 | |
| ============================================
 | |
| 
 | |
| 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")
 | |
|       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  |1        |109 |
 | |
| ===================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c2 = ?]), 
 | |
|       access([t4.c2], [t4.c1], [t4.c3]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | |
|       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  |1        |109 |
 | |
| ===================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t4.c1], [t4.c2], [t4.c3]), filter([t4.c2 = ?]), 
 | |
|       access([t4.c2], [t4.c1], [t4.c3]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       FULL(@"SEL$1" "opt.t4"@"SEL$1")
 | |
|       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   |108575|
 | |
| |1 | PX COORDINATOR           |        |300      |290   |
 | |
| |2 |  EXCHANGE OUT DISTR      |:EX10000|300      |205   |
 | |
| |3 |   PX PARTITION ITERATOR  |        |300      |205   |
 | |
| |4 |    TABLE SCAN            |t2      |300      |205   |
 | |
| |5 | MATERIAL                 |        |500      |573   |
 | |
| |6 |  PX COORDINATOR          |        |500      |389   |
 | |
| |7 |   EXCHANGE OUT DISTR     |:EX20000|500      |342   |
 | |
| |8 |    PX PARTITION ITERATOR |        |500      |342   |
 | |
| |9 |     TABLE SCAN           |t1      |500      |342   |
 | |
| =========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       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      |1649|
 | |
| |1 | EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | |
| |2 |  MERGE JOIN                   |        |300      |1536|
 | |
| |3 |   EXCHANGE IN MERGE SORT DISTR|        |500      |389 |
 | |
| |4 |    EXCHANGE OUT DISTR (PKEY)  |:EX10000|500      |342 |
 | |
| |5 |     PX PARTITION ITERATOR     |        |500      |342 |
 | |
| |6 |      TABLE SCAN               |t1      |500      |342 |
 | |
| |7 |   SORT                        |        |300      |859 |
 | |
| |8 |    PX PARTITION ITERATOR      |        |300      |205 |
 | |
| |9 |     TABLE SCAN                |t2      |300      |205 |
 | |
| ============================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | |
|   1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | |
|   2 - output([t1.c1], [t1.c2], [t2.c1], [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
 | |
|       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")
 | |
|       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      |1019|
 | |
| |1 | SUBPLAN SCAN              |tt      |1        |306 |
 | |
| |2 |  SCALAR GROUP BY          |        |1        |306 |
 | |
| |3 |   PX COORDINATOR          |        |1        |249 |
 | |
| |4 |    EXCHANGE OUT DISTR     |:EX10000|1        |249 |
 | |
| |5 |     MERGE GROUP BY        |        |1        |249 |
 | |
| |6 |      PX PARTITION ITERATOR|        |300      |192 |
 | |
| |7 |       TABLE SCAN          |t2      |300      |192 |
 | |
| |8 | PX COORDINATOR            |        |500      |389 |
 | |
| |9 |  EXCHANGE OUT DISTR       |:EX20000|500      |342 |
 | |
| |10|   PX PARTITION ITERATOR   |        |500      |342 |
 | |
| |11|    TABLE SCAN             |t1      |500      |342 |
 | |
| ========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   7 - output([1]), 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
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       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      |1717|
 | |
| |1 | SUBPLAN SCAN                 |tt      |1        |306 |
 | |
| |2 |  SCALAR GROUP BY             |        |1        |306 |
 | |
| |3 |   PX COORDINATOR             |        |1        |249 |
 | |
| |4 |    EXCHANGE OUT DISTR        |:EX10000|1        |249 |
 | |
| |5 |     MERGE GROUP BY           |        |1        |249 |
 | |
| |6 |      PX PARTITION ITERATOR   |        |300      |192 |
 | |
| |7 |       TABLE SCAN             |t2      |300      |192 |
 | |
| |8 | PX COORDINATOR               |        |100      |1346|
 | |
| |9 |  EXCHANGE OUT DISTR          |:EX20001|100      |1322|
 | |
| |10|   MERGE JOIN                 |        |100      |1322|
 | |
| |11|    SORT                      |        |500      |1074|
 | |
| |12|     PX PARTITION ITERATOR    |        |500      |342 |
 | |
| |13|      TABLE SCAN              |t1      |500      |342 |
 | |
| |14|    EXCHANGE IN DISTR         |        |100      |107 |
 | |
| |15|     EXCHANGE OUT DISTR (PKEY)|:EX20000|100      |92  |
 | |
| |16|      TABLE SCAN              |t9      |100      |92  |
 | |
| ===========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   7 - output([1]), 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([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | |
|   12 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   13 - output([t1.c1], [t1.c2]), filter(nil), 
 | |
|       access([t1.c1], [t1.c2]), partitions(p[0-4])
 | |
|   14 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil)
 | |
|   15 - (#keys=1, [t9.c1]), output([t9.c1], [t9.c2], [t9.c3]), filter(nil), is_single, dop=1
 | |
|   16 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), 
 | |
|       access([t9.c1], [t9.c2], [t9.c3]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" )))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" ))
 | |
|       NO_USE_HASH_AGGREGATION(@"SEL$2")
 | |
|       FULL(@"SEL$2" "opt.t2"@"SEL$2")
 | |
|       USE_MERGE(@"SEL$1" ("opt.t9"@"SEL$1" ))
 | |
|       PQ_DISTRIBUTE(@"SEL$1" ("opt.t9"@"SEL$1" ) NONE PARTITION)
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t9"@"SEL$1")
 | |
|       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      |55725|
 | |
| |1 | SUBPLAN SCAN                 |tt      |1        |54315|
 | |
| |2 |  SCALAR GROUP BY             |        |1        |54315|
 | |
| |3 |   NESTED-LOOP JOIN CARTESIAN |        |60000    |42854|
 | |
| |4 |    PX COORDINATOR            |        |300      |206  |
 | |
| |5 |     EXCHANGE OUT DISTR       |:EX10000|300      |192  |
 | |
| |6 |      PX PARTITION ITERATOR   |        |300      |192  |
 | |
| |7 |       TABLE SCAN             |t2      |300      |192  |
 | |
| |8 |    MATERIAL                  |        |200      |190  |
 | |
| |9 |     PX COORDINATOR           |        |200      |154  |
 | |
| |10|      EXCHANGE OUT DISTR      |:EX20000|200      |144  |
 | |
| |11|       PX PARTITION ITERATOR  |        |200      |144  |
 | |
| |12|        TABLE SCAN            |t10     |200      |144  |
 | |
| |13| PX COORDINATOR               |        |100      |1346 |
 | |
| |14|  EXCHANGE OUT DISTR          |:EX30001|100      |1322 |
 | |
| |15|   MERGE JOIN                 |        |100      |1322 |
 | |
| |16|    SORT                      |        |500      |1074 |
 | |
| |17|     PX PARTITION ITERATOR    |        |500      |342  |
 | |
| |18|      TABLE SCAN              |t1      |500      |342  |
 | |
| |19|    EXCHANGE IN DISTR         |        |100      |107  |
 | |
| |20|     EXCHANGE OUT DISTR (PKEY)|:EX30000|100      |92   |
 | |
| |21|      TABLE SCAN              |t9      |100      |92   |
 | |
| ============================================================
 | |
| 
 | |
| 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([1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   4 - output([1]), filter(nil)
 | |
|   5 - output([1]), filter(nil), dop=1
 | |
|   6 - output([1]), filter(nil)
 | |
|   7 - output([1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p[0-2])
 | |
|   8 - output([1]), filter(nil)
 | |
|   9 - output([1]), filter(nil)
 | |
|   10 - output([1]), filter(nil), dop=1
 | |
|   11 - output([1]), filter(nil)
 | |
|   12 - output([1]), filter(nil), 
 | |
|       access([t10.c1]), partitions(p[0-1])
 | |
|   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([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), local merge sort
 | |
|   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])
 | |
|   19 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil)
 | |
|   20 - (#keys=1, [t9.c1]), output([t9.c1], [t9.c2], [t9.c3]), filter(nil), is_single, dop=1
 | |
|   21 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), 
 | |
|       access([t9.c1], [t9.c2], [t9.c3]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" )))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t9"@"SEL$1" ))
 | |
|       LEADING(@"SEL$2" ("opt.t2"@"SEL$2" "opt.t10"@"SEL$2" ))
 | |
|       USE_NL(@"SEL$2" ("opt.t10"@"SEL$2" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t10"@"SEL$2" ))
 | |
|       FULL(@"SEL$2" "opt.t2"@"SEL$2")
 | |
|       FULL(@"SEL$2" "opt.t10"@"SEL$2")
 | |
|       USE_MERGE(@"SEL$1" ("opt.t9"@"SEL$1" ))
 | |
|       PQ_DISTRIBUTE(@"SEL$1" ("opt.t9"@"SEL$1" ) NONE PARTITION)
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t9"@"SEL$1")
 | |
|       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 |10794125|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|        |30000    |22293   |
 | |
| |2 |  PX COORDINATOR           |        |300      |290     |
 | |
| |3 |   EXCHANGE OUT DISTR      |:EX10000|300      |205     |
 | |
| |4 |    PX PARTITION ITERATOR  |        |300      |205     |
 | |
| |5 |     TABLE SCAN            |t2      |300      |205     |
 | |
| |6 |  MATERIAL                 |        |100      |148     |
 | |
| |7 |   TABLE SCAN              |t9      |100      |92      |
 | |
| |8 | MATERIAL                  |        |500      |573     |
 | |
| |9 |  PX COORDINATOR           |        |500      |389     |
 | |
| |10|   EXCHANGE OUT DISTR      |:EX20000|500      |342     |
 | |
| |11|    PX PARTITION ITERATOR  |        |500      |342     |
 | |
| |12|     TABLE SCAN            |t1      |500      |342     |
 | |
| ============================================================
 | |
| 
 | |
| 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([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([t9.c1], [t9.c2], [t9.c3]), filter(nil)
 | |
|   7 - output([t9.c1], [t9.c2], [t9.c3]), filter(nil), 
 | |
|       access([t9.c1], [t9.c2], [t9.c3]), partitions(p0)
 | |
|   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
 | |
|       LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t9"@"SEL$1" )"opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t9"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t9"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t9"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       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        |        |750      |201826|
 | |
| |1 | SUBPLAN SCAN               |VIEW1   |20000    |17173 |
 | |
| |2 |  NESTED-LOOP JOIN CARTESIAN|        |20000    |14412 |
 | |
| |3 |   PX COORDINATOR           |        |200      |154   |
 | |
| |4 |    EXCHANGE OUT DISTR      |:EX10000|200      |144   |
 | |
| |5 |     PX PARTITION ITERATOR  |        |200      |144   |
 | |
| |6 |      TABLE SCAN            |t10     |200      |144   |
 | |
| |7 |   MATERIAL                 |        |100      |106   |
 | |
| |8 |    TABLE SCAN              |t9      |100      |88    |
 | |
| |9 | NESTED-LOOP JOIN CARTESIAN |        |150000   |108575|
 | |
| |10|  PX COORDINATOR            |        |300      |290   |
 | |
| |11|   EXCHANGE OUT DISTR       |:EX20000|300      |205   |
 | |
| |12|    PX PARTITION ITERATOR   |        |300      |205   |
 | |
| |13|     TABLE SCAN             |t2      |300      |205   |
 | |
| |14|  MATERIAL                  |        |500      |573   |
 | |
| |15|   PX COORDINATOR           |        |500      |389   |
 | |
| |16|    EXCHANGE OUT DISTR      |:EX30000|500      |342   |
 | |
| |17|     PX PARTITION ITERATOR  |        |500      |342   |
 | |
| |18|      TABLE SCAN            |t1      |500      |342   |
 | |
| ===========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   4 - output([1]), filter(nil), dop=1
 | |
|   5 - output([1]), filter(nil)
 | |
|   6 - output([1]), filter(nil), 
 | |
|       access([t10.c1]), partitions(p[0-1])
 | |
|   7 - output([t9.c1]), filter(nil)
 | |
|   8 - output([t9.c1]), filter(nil), 
 | |
|       access([t9.c1]), partitions(p0)
 | |
|   9 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t1.c1 + t2.c1]), 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
 | |
|       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" ))
 | |
|       LEADING(@"SEL$2" ("opt.t10"@"SEL$2" "opt.t9"@"SEL$2" ))
 | |
|       USE_NL(@"SEL$2" ("opt.t9"@"SEL$2" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t9"@"SEL$2" ))
 | |
|       FULL(@"SEL$2" "opt.t10"@"SEL$2")
 | |
|       FULL(@"SEL$2" "opt.t9"@"SEL$2")
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       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              |        |750      |76097|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN   |        |300      |18716|
 | |
| |2 |  SUBPLAN SCAN                |VIEW1   |1        |18233|
 | |
| |3 |   SCALAR GROUP BY            |        |1        |18233|
 | |
| |4 |    NESTED-LOOP JOIN CARTESIAN|        |20000    |14412|
 | |
| |5 |     PX COORDINATOR           |        |200      |154  |
 | |
| |6 |      EXCHANGE OUT DISTR      |:EX10000|200      |144  |
 | |
| |7 |       PX PARTITION ITERATOR  |        |200      |144  |
 | |
| |8 |        TABLE SCAN            |t10     |200      |144  |
 | |
| |9 |     MATERIAL                 |        |100      |106  |
 | |
| |10|      TABLE SCAN              |t9      |100      |88   |
 | |
| |11|  PX COORDINATOR              |        |300      |290  |
 | |
| |12|   EXCHANGE OUT DISTR         |:EX20000|300      |205  |
 | |
| |13|    PX PARTITION ITERATOR     |        |300      |205  |
 | |
| |14|     TABLE SCAN               |t2      |300      |205  |
 | |
| |15| MATERIAL                     |        |500      |573  |
 | |
| |16|  PX COORDINATOR              |        |500      |389  |
 | |
| |17|   EXCHANGE OUT DISTR         |:EX30000|500      |342  |
 | |
| |18|    PX PARTITION ITERATOR     |        |500      |342  |
 | |
| |19|     TABLE SCAN               |t1      |500      |342  |
 | |
| ============================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   6 - output([1]), filter(nil), dop=1
 | |
|   7 - output([1]), filter(nil)
 | |
|   8 - output([1]), filter(nil), 
 | |
|       access([t10.c1]), partitions(p[0-1])
 | |
|   9 - output([t9.c1]), filter(nil)
 | |
|   10 - output([t9.c1]), filter(nil), 
 | |
|       access([t9.c1]), partitions(p0)
 | |
|   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
 | |
|       LEADING(@"SEL$1" (("VIEW1"@"SEL$1" "opt.t2"@"SEL$1" )"opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | |
|       LEADING(@"SEL$2" ("opt.t10"@"SEL$2" "opt.t9"@"SEL$2" ))
 | |
|       USE_NL(@"SEL$2" ("opt.t9"@"SEL$2" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t9"@"SEL$2" ))
 | |
|       FULL(@"SEL$2" "opt.t10"@"SEL$2")
 | |
|       FULL(@"SEL$2" "opt.t9"@"SEL$2")
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       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      |498 |
 | |
| |1 | SUBPLAN SCAN                            |tt      |1        |343 |
 | |
| |2 |  SCALAR GROUP BY                        |        |1        |343 |
 | |
| |3 |   PX COORDINATOR                        |        |1        |311 |
 | |
| |4 |    EXCHANGE OUT DISTR                   |:EX10002|1        |311 |
 | |
| |5 |     MERGE GROUP BY                      |        |1        |311 |
 | |
| |6 |      NESTED-LOOP JOIN                   |        |167      |279 |
 | |
| |7 |       EXCHANGE IN DISTR                 |        |1        |37  |
 | |
| |8 |        EXCHANGE OUT DISTR (BC2HOST)     |:EX10001|1        |37  |
 | |
| |9 |         SUBPLAN SCAN                    |VIEW1   |1        |37  |
 | |
| |10|          SCALAR GROUP BY                |        |1        |37  |
 | |
| |11|           SUBPLAN SCAN                  |VIEW2   |1        |37  |
 | |
| |12|            LIMIT                        |        |1        |37  |
 | |
| |13|             EXCHANGE IN MERGE SORT DISTR|        |1        |36  |
 | |
| |14|              EXCHANGE OUT DISTR         |:EX10000|1        |36  |
 | |
| |15|               PX PARTITION ITERATOR     |        |1        |36  |
 | |
| |16|                TABLE SCAN               |t2      |1        |36  |
 | |
| |17|       PX PARTITION ITERATOR             |        |167      |134 |
 | |
| |18|        TABLE SCAN                       |t1      |167      |134 |
 | |
| |19| TABLE SCAN                              |t8      |100      |90  |
 | |
| ======================================================================
 | |
| 
 | |
| 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_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([1]), filter(nil), 
 | |
|       conds(nil), nl_params_([VIEW1.c1])
 | |
|   7 - output([VIEW1.c1]), filter(nil)
 | |
|   8 - output([VIEW1.c1]), filter(nil), is_single, dop=1
 | |
|   9 - output([VIEW1.c1]), filter(nil), 
 | |
|       access([VIEW1.c1])
 | |
|   10 - output([T_FUN_MIN(VIEW2.c1)]), filter(nil), 
 | |
|       group(nil), agg_func([T_FUN_MIN(VIEW2.c1)])
 | |
|   11 - output([VIEW2.c1]), filter(nil), 
 | |
|       access([VIEW2.c1])
 | |
|   12 - output([t2.c1]), filter(nil), limit(1), offset(nil)
 | |
|   13 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]), Local Order
 | |
|   14 - output([t2.c1]), filter(nil), dop=1
 | |
|   15 - output([t2.c1]), filter(nil)
 | |
|   16 - output([t2.c1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p[0-2]), 
 | |
|       limit(1), offset(nil)
 | |
|   17 - output([1]), filter(nil)
 | |
|   18 - output([1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p[0-4])
 | |
|   19 - output([t8.c1], [t8.c2]), filter(nil), 
 | |
|       access([t8.c1], [t8.c2]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t8"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t8"@"SEL$1" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t8"@"SEL$1" ))
 | |
|       NO_USE_HASH_AGGREGATION(@"SEL$2")
 | |
|       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" ) BC2HOST NONE)
 | |
|       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")
 | |
|       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      |1649|
 | |
| |1 | EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | |
| |2 |  MERGE JOIN                   |        |300      |1536|
 | |
| |3 |   EXCHANGE IN MERGE SORT DISTR|        |500      |389 |
 | |
| |4 |    EXCHANGE OUT DISTR (PKEY)  |:EX10000|500      |342 |
 | |
| |5 |     PX PARTITION ITERATOR     |        |500      |342 |
 | |
| |6 |      TABLE SCAN               |t1      |500      |342 |
 | |
| |7 |   SORT                        |        |300      |859 |
 | |
| |8 |    PX PARTITION ITERATOR      |        |300      |205 |
 | |
| |9 |     TABLE SCAN                |t2      |300      |205 |
 | |
| ============================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | |
|   1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | |
|   2 - output([t1.c1], [t1.c2], [t2.c1], [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
 | |
|       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")
 | |
|       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      |1649|
 | |
| |1 | EXCHANGE OUT DISTR            |:EX10001|300      |1536|
 | |
| |2 |  MERGE JOIN                   |        |300      |1536|
 | |
| |3 |   SORT                        |        |300      |859 |
 | |
| |4 |    PX PARTITION ITERATOR      |        |300      |205 |
 | |
| |5 |     TABLE SCAN                |t2      |300      |205 |
 | |
| |6 |   EXCHANGE IN MERGE SORT DISTR|        |500      |389 |
 | |
| |7 |    EXCHANGE OUT DISTR (PKEY)  |:EX10000|500      |342 |
 | |
| |8 |     PX PARTITION ITERATOR     |        |500      |342 |
 | |
| |9 |      TABLE SCAN               |t1      |500      |342 |
 | |
| ============================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil)
 | |
|   1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), dop=1
 | |
|   2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), 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
 | |
|       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")
 | |
|       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      |18870|
 | |
| |1 | EXCHANGE OUT DISTR          |:EX10001|300      |18757|
 | |
| |2 |  NESTED-LOOP JOIN           |        |300      |18757|
 | |
| |3 |   EXCHANGE IN DISTR         |        |500      |389  |
 | |
| |4 |    EXCHANGE OUT DISTR (PKEY)|:EX10000|500      |342  |
 | |
| |5 |     PX PARTITION ITERATOR   |        |500      |342  |
 | |
| |6 |      TABLE SCAN             |tt1     |500      |342  |
 | |
| |7 |   PX PARTITION ITERATOR     |        |1        |36   |
 | |
| |8 |    TABLE GET                |tt2     |1        |36   |
 | |
| ===========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt2.c3]), filter(nil)
 | |
|   1 - output([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], [tt1.c2], [PARTITION_ID]), filter(nil)
 | |
|   4 - (#keys=1, [tt1.c1]), output([tt1.c1], [tt1.c2], [PARTITION_ID]), 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
 | |
|       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")
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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]), 
 | |
|       hint(read_consistency:2)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       READ_CONSISTENCY("WEAK")
 | |
|       END_OUTLINE_DATA
 | |
|   */
 | |
| 
 | |
| *************** Case 23(end)  ************** 
 | |
| 
 | |
| ***************   Case 24   ***************
 | |
| 
 | |
| SQL: select /*+hotspot*/* from t1; 
 | |
| 
 | |
| ====================================================
 | |
| |ID|OPERATOR               |NAME    |EST. ROWS|COST|
 | |
| ----------------------------------------------------
 | |
| |0 |PX COORDINATOR         |        |500      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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)
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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]), 
 | |
|       hint(frozen_version:"1-0-0", read_consistency:1)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FROZEN_VERSION(1)
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       USE_PLAN_CACHE("NONE")
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       USE_PLAN_CACHE("DEFAULT")
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       END_OUTLINE_DATA
 | |
|   */
 | |
| 
 | |
| *************** Case 31(end)  ************** 
 | |
| 
 | |
| ***************   Case 32   ***************
 | |
| 
 | |
| SQL: select /*+no_rewrite*/ * from t1; 
 | |
| 
 | |
| ====================================================
 | |
| |ID|OPERATOR               |NAME    |EST. ROWS|COST|
 | |
| ----------------------------------------------------
 | |
| |0 |PX COORDINATOR         |        |500      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       NO_REWRITE
 | |
|       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 |PX COORDINATOR                  |        |167      |576 |
 | |
| |1 | EXCHANGE OUT DISTR             |:EX10002|167      |552 |
 | |
| |2 |  NESTED-LOOP JOIN              |        |167      |552 |
 | |
| |3 |   EXCHANGE IN DISTR            |        |1        |306 |
 | |
| |4 |    EXCHANGE OUT DISTR (BC2HOST)|:EX10001|1        |306 |
 | |
| |5 |     SUBPLAN SCAN               |VIEW1   |1        |306 |
 | |
| |6 |      SCALAR GROUP BY           |        |1        |306 |
 | |
| |7 |       EXCHANGE IN DISTR        |        |1        |249 |
 | |
| |8 |        EXCHANGE OUT DISTR      |:EX10000|1        |249 |
 | |
| |9 |         MERGE GROUP BY         |        |1        |249 |
 | |
| |10|          PX PARTITION ITERATOR |        |300      |192 |
 | |
| |11|           TABLE SCAN           |t2      |300      |192 |
 | |
| |12|   PX PARTITION ITERATOR        |        |167      |138 |
 | |
| |13|    TABLE SCAN                  |t1      |167      |138 |
 | |
| =============================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([t1.c1], [t1.c2]), filter(nil), dop=1
 | |
|   2 - output([t1.c1], [t1.c2]), filter(nil), 
 | |
|       conds(nil), nl_params_([VIEW1.count(*)])
 | |
|   3 - output([VIEW1.count(*)]), filter(nil)
 | |
|   4 - output([VIEW1.count(*)]), filter(nil), is_single, dop=1
 | |
|   5 - output([VIEW1.count(*)]), filter(nil), 
 | |
|       access([VIEW1.count(*)])
 | |
|   6 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), 
 | |
|       group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
 | |
|   7 - output([T_FUN_COUNT(*)]), filter(nil)
 | |
|   8 - output([T_FUN_COUNT(*)]), filter(nil), dop=1
 | |
|   9 - output([T_FUN_COUNT(*)]), filter(nil), 
 | |
|       group(nil), agg_func([T_FUN_COUNT(*)])
 | |
|   10 - output([1]), filter(nil)
 | |
|   11 - output([1]), filter(nil), 
 | |
|       access([t2.c1]), partitions(p[0-2])
 | |
|   12 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   13 - output([t1.c1], [t1.c2]), filter(nil), 
 | |
|       access([t1.c1], [t1.c2]), partitions(p[0-4])
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       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" ) BC2HOST NONE)
 | |
|       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")
 | |
|       END_OUTLINE_DATA
 | |
|   */
 | |
| 
 | |
| *************** Case 33(end)  ************** 
 | |
| 
 | |
| ***************   Case 34   ***************
 | |
| 
 | |
| SQL: select /*+trace_log*/ * from t1; 
 | |
| 
 | |
| ====================================================
 | |
| |ID|OPERATOR               |NAME    |EST. ROWS|COST|
 | |
| ----------------------------------------------------
 | |
| |0 |PX COORDINATOR         |        |500      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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")
 | |
|       LOG_LEVEL('info')
 | |
|       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      |1019|
 | |
| |1 | SUBPLAN SCAN              |tt      |1        |306 |
 | |
| |2 |  SCALAR GROUP BY          |        |1        |306 |
 | |
| |3 |   PX COORDINATOR          |        |1        |249 |
 | |
| |4 |    EXCHANGE OUT DISTR     |:EX10000|1        |249 |
 | |
| |5 |     MERGE GROUP BY        |        |1        |249 |
 | |
| |6 |      PX PARTITION ITERATOR|        |300      |192 |
 | |
| |7 |       TABLE SCAN          |t2      |300      |192 |
 | |
| |8 | PX COORDINATOR            |        |500      |389 |
 | |
| |9 |  EXCHANGE OUT DISTR       |:EX20000|500      |342 |
 | |
| |10|   PX PARTITION ITERATOR   |        |500      |342 |
 | |
| |11|    TABLE SCAN             |t1      |500      |342 |
 | |
| ========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   7 - output([1]), 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
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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')
 | |
|       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      |1019|
 | |
| |1 | SUBPLAN SCAN              |tt      |1        |306 |
 | |
| |2 |  SCALAR GROUP BY          |        |1        |306 |
 | |
| |3 |   PX COORDINATOR          |        |1        |249 |
 | |
| |4 |    EXCHANGE OUT DISTR     |:EX10000|1        |249 |
 | |
| |5 |     MERGE GROUP BY        |        |1        |249 |
 | |
| |6 |      PX PARTITION ITERATOR|        |300      |192 |
 | |
| |7 |       TABLE SCAN          |t2      |300      |192 |
 | |
| |8 | PX COORDINATOR            |        |500      |389 |
 | |
| |9 |  EXCHANGE OUT DISTR       |:EX20000|500      |342 |
 | |
| |10|   PX PARTITION ITERATOR   |        |500      |342 |
 | |
| |11|    TABLE SCAN             |t1      |500      |342 |
 | |
| ========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   7 - output([1]), 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
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       TRACE_LOG
 | |
|       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      |1019|
 | |
| |1 | SUBPLAN SCAN              |tt      |1        |306 |
 | |
| |2 |  SCALAR GROUP BY          |        |1        |306 |
 | |
| |3 |   PX COORDINATOR          |        |1        |249 |
 | |
| |4 |    EXCHANGE OUT DISTR     |:EX10000|1        |249 |
 | |
| |5 |     MERGE GROUP BY        |        |1        |249 |
 | |
| |6 |      PX PARTITION ITERATOR|        |300      |192 |
 | |
| |7 |       TABLE SCAN          |t2      |300      |192 |
 | |
| |8 | PX COORDINATOR            |        |500      |389 |
 | |
| |9 |  EXCHANGE OUT DISTR       |:EX20000|500      |342 |
 | |
| |10|   PX PARTITION ITERATOR   |        |500      |342 |
 | |
| |11|    TABLE SCAN             |t1      |500      |342 |
 | |
| ========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   7 - output([1]), 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
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       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      |1019|
 | |
| |1 | SUBPLAN SCAN              |tt      |1        |306 |
 | |
| |2 |  SCALAR GROUP BY          |        |1        |306 |
 | |
| |3 |   PX COORDINATOR          |        |1        |249 |
 | |
| |4 |    EXCHANGE OUT DISTR     |:EX10000|1        |249 |
 | |
| |5 |     MERGE GROUP BY        |        |1        |249 |
 | |
| |6 |      PX PARTITION ITERATOR|        |300      |192 |
 | |
| |7 |       TABLE SCAN          |t2      |300      |192 |
 | |
| |8 | PX COORDINATOR            |        |500      |389 |
 | |
| |9 |  EXCHANGE OUT DISTR       |:EX20000|500      |342 |
 | |
| |10|   PX PARTITION ITERATOR   |        |500      |342 |
 | |
| |11|    TABLE SCAN             |t1      |500      |342 |
 | |
| ========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   7 - output([1]), 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
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       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      |1019|
 | |
| |1 | SUBPLAN SCAN              |tt      |1        |306 |
 | |
| |2 |  SCALAR GROUP BY          |        |1        |306 |
 | |
| |3 |   PX COORDINATOR          |        |1        |249 |
 | |
| |4 |    EXCHANGE OUT DISTR     |:EX10000|1        |249 |
 | |
| |5 |     MERGE GROUP BY        |        |1        |249 |
 | |
| |6 |      PX PARTITION ITERATOR|        |300      |192 |
 | |
| |7 |       TABLE SCAN          |t2      |300      |192 |
 | |
| |8 | PX COORDINATOR            |        |500      |389 |
 | |
| |9 |  EXCHANGE OUT DISTR       |:EX20000|500      |342 |
 | |
| |10|   PX PARTITION ITERATOR   |        |500      |342 |
 | |
| |11|    TABLE SCAN             |t1      |500      |342 |
 | |
| ========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   7 - output([1]), 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
 | |
|       LEADING(@"SEL$1" ("tt"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       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      |389 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |342 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |342 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |342 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1], [t1.c2]), filter(nil)
 | |
|   1 - output([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]), 
 | |
|       hint(frozen_version:"1-0-0", read_consistency:1)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FROZEN_VERSION(1)
 | |
|       QUERY_TIMEOUT(100)
 | |
|       NO_REWRITE
 | |
|       TRACE_LOG
 | |
|       LOG_LEVEL('info')
 | |
|       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      |354 |
 | |
| |1 | EXCHANGE OUT DISTR    |:EX10000|500      |331 |
 | |
| |2 |  PX PARTITION ITERATOR|        |500      |331 |
 | |
| |3 |   TABLE SCAN          |t1      |500      |331 |
 | |
| ====================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t1.c1]), filter(nil)
 | |
|   1 - output([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
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       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      |635 |
 | |
| |1 | EXCHANGE OUT DISTR            |:EX10001     |100      |626 |
 | |
| |2 |  MERGE GROUP BY               |             |100      |626 |
 | |
| |3 |   EXCHANGE IN MERGE SORT DISTR|             |100      |489 |
 | |
| |4 |    EXCHANGE OUT DISTR (HASH)  |:EX10000     |100      |479 |
 | |
| |5 |     PX PARTITION ITERATOR     |             |100      |479 |
 | |
| |6 |      MERGE GROUP BY           |             |100      |479 |
 | |
| |7 |       TABLE SCAN              |t1(idx_t1_c2)|500      |342 |
 | |
| =================================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([T_FUN_MIN(T_FUN_MIN(t1.c2))]), filter(nil)
 | |
|   1 - output([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([T_FUN_MIN(t1.c2)], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]), Local Order
 | |
|   4 - (#keys=1, [t1.c2]), output([T_FUN_MIN(t1.c2)], [t1.c2]), filter(nil), dop=1
 | |
|   5 - output([T_FUN_MIN(t1.c2)], [t1.c2]), filter(nil)
 | |
|   6 - output([T_FUN_MIN(t1.c2)], [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
 | |
|       NO_USE_HASH_AGGREGATION(@"SEL$1")
 | |
|       NO_USE_HASH_AGGREGATION(@"SEL$1")
 | |
|       INDEX(@"SEL$1" "opt.t1"@"SEL$1" "idx_t1_c2")
 | |
|       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        |1   |
 | |
| |1 | EXCHANGE OUT REMOTE|    |1        |1   |
 | |
| |2 |  INSERT            |    |1        |1   |
 | |
| |3 |   EXPRESSION       |    |1        |1   |
 | |
| =============================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output(nil), filter(nil)
 | |
|   1 - output(nil), filter(nil)
 | |
|   2 - output([__values.c1], [?]), filter(nil), 
 | |
|       columns([{t1: ({t1: (t1.c1, t1.c2)})}]), partitions(p1)
 | |
|   3 - output([__values.c1]), filter(nil)
 | |
|       values({?})
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       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        |53  |
 | |
| |1 | TABLE GET|t7  |1        |52  |
 | |
| ===================================
 | |
| 
 | |
| 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")
 | |
|       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        |53  |
 | |
| |1 | EXCHANGE OUT REMOTE|    |1        |53  |
 | |
| |2 |  DELETE            |    |1        |53  |
 | |
| |3 |   TABLE GET        |t1  |1        |52  |
 | |
| =============================================
 | |
| 
 | |
| 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")
 | |
|       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        |124 |
 | |
| |1 | LIMIT          |                  |1        |87  |
 | |
| |2 |  TOP-N SORT    |                  |1        |87  |
 | |
| |3 |   TABLE SCAN   |t_normal_idx(idx) |100      |54  |
 | |
| |4 | TABLE GET      |t_normal_idx_alias|1        |37  |
 | |
| =======================================================
 | |
| 
 | |
| 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), limit(1), offset(nil)
 | |
|   2 - output([t_normal_idx.c1], [t_normal_idx.c3]), filter(nil), sort_keys([t_normal_idx.c3, ASC]), topn(1)
 | |
|   3 - output([t_normal_idx.c1], [t_normal_idx.c3]), filter(nil), 
 | |
|       access([t_normal_idx.c1], [t_normal_idx.c3]), partitions(p0)
 | |
|   4 - 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
 | |
|       USE_LATE_MATERIALIZATION
 | |
|       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" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t_normal_idx_alias"@"SEL$1" ))
 | |
|       INDEX(@"SEL$1" "opt.t_normal_idx"@"SEL$1" "idx")
 | |
|       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 |LIMIT       |                 |1        |783 |
 | |
| |1 | TOP-N SORT |                 |1        |783 |
 | |
| |2 |  TABLE SCAN|t_normal_idx(idx)|100      |676 |
 | |
| ==================================================
 | |
| 
 | |
| 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), limit(1), offset(nil)
 | |
|   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), sort_keys([t_normal_idx.c4, ASC]), topn(1)
 | |
|   2 - output([t_normal_idx.c2], [t_normal_idx.c1], [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.c2], [t_normal_idx.c1], [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
 | |
|       NO_USE_LATE_MATERIALIZATION
 | |
|       INDEX(@"SEL$1" "opt.t_normal_idx"@"SEL$1" "idx")
 | |
|       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      |382 |
 | |
| |1 | PX COORDINATOR         |        |167      |154 |
 | |
| |2 |  EXCHANGE OUT DISTR    |:EX10000|167      |138 |
 | |
| |3 |   PX PARTITION ITERATOR|        |167      |138 |
 | |
| |4 |    TABLE SCAN          |t1      |167      |138 |
 | |
| |5 | PX COORDINATOR         |        |300      |206 |
 | |
| |6 |  EXCHANGE OUT DISTR    |:EX20000|300      |192 |
 | |
| |7 |   PX PARTITION ITERATOR|        |300      |192 |
 | |
| |8 |    TABLE SCAN          |t2      |300      |192 |
 | |
| =====================================================
 | |
| 
 | |
| 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")
 | |
|       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    |89806|
 | |
| |1 | NESTED-LOOP JOIN         |        |50000    |82757|
 | |
| |2 |  PX COORDINATOR          |        |300      |290  |
 | |
| |3 |   EXCHANGE OUT DISTR     |:EX10000|300      |205  |
 | |
| |4 |    PX PARTITION ITERATOR |        |300      |205  |
 | |
| |5 |     TABLE SCAN           |t2      |300      |205  |
 | |
| |6 |  MATERIAL                |        |500      |573  |
 | |
| |7 |   PX COORDINATOR         |        |500      |389  |
 | |
| |8 |    EXCHANGE OUT DISTR    |:EX20000|500      |342  |
 | |
| |9 |     PX PARTITION ITERATOR|        |500      |342  |
 | |
| |10|      TABLE SCAN          |t1      |500      |342  |
 | |
| |11| PX COORDINATOR           |        |200      |149  |
 | |
| |12|  EXCHANGE OUT DISTR      |:EX30000|200      |140  |
 | |
| |13|   PX PARTITION ITERATOR  |        |200      |140  |
 | |
| |14|    TABLE SCAN            |t3      |200      |140  |
 | |
| ========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       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    |104032|
 | |
| |1 | NESTED-LOOP JOIN          |             |50000    |82757 |
 | |
| |2 |  PX COORDINATOR           |             |300      |290   |
 | |
| |3 |   EXCHANGE OUT DISTR      |:EX10000     |300      |205   |
 | |
| |4 |    PX PARTITION ITERATOR  |             |300      |205   |
 | |
| |5 |     TABLE SCAN            |t2           |300      |205   |
 | |
| |6 |  MATERIAL                 |             |500      |573   |
 | |
| |7 |   PX COORDINATOR          |             |500      |389   |
 | |
| |8 |    EXCHANGE OUT DISTR     |:EX20000     |500      |342   |
 | |
| |9 |     PX PARTITION ITERATOR |             |500      |342   |
 | |
| |10|      TABLE SCAN           |t1           |500      |342   |
 | |
| |11| NESTED-LOOP JOIN CARTESIAN|             |20000    |14374 |
 | |
| |12|  PX COORDINATOR           |             |200      |149   |
 | |
| |13|   EXCHANGE OUT DISTR      |:EX30000     |200      |140   |
 | |
| |14|    PX PARTITION ITERATOR  |             |200      |140   |
 | |
| |15|     TABLE SCAN            |t3           |200      |140   |
 | |
| |16|  MATERIAL                 |             |100      |73    |
 | |
| |17|   TABLE SCAN              |t4(idx_t4_c2)|100      |54    |
 | |
| ===============================================================
 | |
| 
 | |
| 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([t3.c1]), filter(nil)
 | |
|   13 - output([t3.c1]), filter(nil), dop=1
 | |
|   14 - output([t3.c1]), filter(nil)
 | |
|   15 - output([t3.c1]), filter(nil), 
 | |
|       access([t3.c1]), partitions(p[0-1])
 | |
|   16 - output([1]), filter(nil)
 | |
|   17 - output([1]), filter(nil), 
 | |
|       access([t4.c2]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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.t3"@"SEL$2" "opt.t4"@"SEL$2" ))
 | |
|       USE_NL(@"SEL$2" ("opt.t4"@"SEL$2" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t4"@"SEL$2" ))
 | |
|       FULL(@"SEL$2" "opt.t3"@"SEL$2")
 | |
|       INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2")
 | |
|       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    |43515|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|        |50000    |36409|
 | |
| |2 |  PX COORDINATOR           |        |300      |290  |
 | |
| |3 |   EXCHANGE OUT DISTR      |:EX10000|300      |205  |
 | |
| |4 |    PX PARTITION ITERATOR  |        |300      |205  |
 | |
| |5 |     TABLE SCAN            |t2      |300      |205  |
 | |
| |6 |  MATERIAL                 |        |167      |215  |
 | |
| |7 |   PX COORDINATOR          |        |167      |154  |
 | |
| |8 |    EXCHANGE OUT DISTR     |:EX20000|167      |138  |
 | |
| |9 |     PX PARTITION ITERATOR |        |167      |138  |
 | |
| |10|      TABLE SCAN           |t1      |167      |138  |
 | |
| |11| PX COORDINATOR            |        |300      |206  |
 | |
| |12|  EXCHANGE OUT DISTR       |:EX30000|300      |192  |
 | |
| |13|   PX PARTITION ITERATOR   |        |300      |192  |
 | |
| |14|    TABLE SCAN             |t2      |300      |192  |
 | |
| =========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       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|        |150000   |114989|
 | |
| |1 | PX COORDINATOR           |        |500      |389   |
 | |
| |2 |  EXCHANGE OUT DISTR      |:EX10000|500      |342   |
 | |
| |3 |   PX PARTITION ITERATOR  |        |500      |342   |
 | |
| |4 |    TABLE SCAN            |t1      |500      |342   |
 | |
| |5 | MATERIAL                 |        |300      |621   |
 | |
| |6 |  PX COORDINATOR          |        |300      |290   |
 | |
| |7 |   EXCHANGE OUT DISTR     |:EX20000|300      |205   |
 | |
| |8 |    PX PARTITION ITERATOR |        |300      |205   |
 | |
| |9 |     TABLE SCAN           |t2      |300      |205   |
 | |
| =========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       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|        |150000   |114989|
 | |
| |1 | PX COORDINATOR           |        |500      |389   |
 | |
| |2 |  EXCHANGE OUT DISTR      |:EX10000|500      |342   |
 | |
| |3 |   PX PARTITION ITERATOR  |        |500      |342   |
 | |
| |4 |    TABLE SCAN            |t1      |500      |342   |
 | |
| |5 | MATERIAL                 |        |300      |621   |
 | |
| |6 |  PX COORDINATOR          |        |300      |290   |
 | |
| |7 |   EXCHANGE OUT DISTR     |:EX20000|300      |205   |
 | |
| |8 |    PX PARTITION ITERATOR |        |300      |205   |
 | |
| |9 |     TABLE SCAN           |t2      |300      |205   |
 | |
| =========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" ("opt.t1"@"SEL$1" "opt.t2"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t2"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       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|        |150000   |108575|
 | |
| |1 | PX COORDINATOR           |        |300      |290   |
 | |
| |2 |  EXCHANGE OUT DISTR      |:EX10000|300      |205   |
 | |
| |3 |   PX PARTITION ITERATOR  |        |300      |205   |
 | |
| |4 |    TABLE SCAN            |t2      |300      |205   |
 | |
| |5 | MATERIAL                 |        |500      |573   |
 | |
| |6 |  PX COORDINATOR          |        |500      |389   |
 | |
| |7 |   EXCHANGE OUT DISTR     |:EX20000|500      |342   |
 | |
| |8 |    PX PARTITION ITERATOR |        |500      |342   |
 | |
| |9 |     TABLE SCAN           |t1      |500      |342   |
 | |
| =========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       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|        |150000   |108575|
 | |
| |1 | PX COORDINATOR           |        |300      |290   |
 | |
| |2 |  EXCHANGE OUT DISTR      |:EX10000|300      |205   |
 | |
| |3 |   PX PARTITION ITERATOR  |        |300      |205   |
 | |
| |4 |    TABLE SCAN            |t2      |300      |205   |
 | |
| |5 | MATERIAL                 |        |500      |573   |
 | |
| |6 |  PX COORDINATOR          |        |500      |389   |
 | |
| |7 |   EXCHANGE OUT DISTR     |:EX20000|500      |342   |
 | |
| |8 |    PX PARTITION ITERATOR |        |500      |342   |
 | |
| |9 |     TABLE SCAN           |t1      |500      |342   |
 | |
| =========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" ("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t2"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       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 |7669251|
 | |
| |1 | NESTED-LOOP JOIN         |        |50000    |70198  |
 | |
| |2 |  PX COORDINATOR          |        |300      |290    |
 | |
| |3 |   EXCHANGE OUT DISTR     |:EX10000|300      |205    |
 | |
| |4 |    PX PARTITION ITERATOR |        |300      |205    |
 | |
| |5 |     TABLE SCAN           |t2      |300      |205    |
 | |
| |6 |  MATERIAL                |        |500      |573    |
 | |
| |7 |   PX COORDINATOR         |        |500      |389    |
 | |
| |8 |    EXCHANGE OUT DISTR    |:EX20000|500      |342    |
 | |
| |9 |     PX PARTITION ITERATOR|        |500      |342    |
 | |
| |10|      TABLE SCAN          |t1      |500      |342    |
 | |
| |11| MATERIAL                 |        |200      |426    |
 | |
| |12|  PX COORDINATOR          |        |200      |205    |
 | |
| |13|   EXCHANGE OUT DISTR     |:EX30000|200      |149    |
 | |
| |14|    PX PARTITION ITERATOR |        |200      |149    |
 | |
| |15|     TABLE SCAN           |t3      |200      |149    |
 | |
| ==========================================================
 | |
| 
 | |
| 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
 | |
|       LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"opt.t3"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t3"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t3"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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")
 | |
|       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 |9083521|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|             |10000000 |7681810|
 | |
| |2 |  NESTED-LOOP JOIN         |             |50000    |82757  |
 | |
| |3 |   PX COORDINATOR          |             |300      |290    |
 | |
| |4 |    EXCHANGE OUT DISTR     |:EX10000     |300      |205    |
 | |
| |5 |     PX PARTITION ITERATOR |             |300      |205    |
 | |
| |6 |      TABLE SCAN           |t2           |300      |205    |
 | |
| |7 |   MATERIAL                |             |500      |573    |
 | |
| |8 |    PX COORDINATOR         |             |500      |389    |
 | |
| |9 |     EXCHANGE OUT DISTR    |:EX20000     |500      |342    |
 | |
| |10|      PX PARTITION ITERATOR|             |500      |342    |
 | |
| |11|       TABLE SCAN          |t1           |500      |342    |
 | |
| |12|  MATERIAL                 |             |200      |426    |
 | |
| |13|   PX COORDINATOR          |             |200      |205    |
 | |
| |14|    EXCHANGE OUT DISTR     |:EX30000     |200      |149    |
 | |
| |15|     PX PARTITION ITERATOR |             |200      |149    |
 | |
| |16|      TABLE SCAN           |t3           |200      |149    |
 | |
| |17| NESTED-LOOP JOIN CARTESIAN|             |30000    |21492  |
 | |
| |18|  PX COORDINATOR           |             |300      |191    |
 | |
| |19|   EXCHANGE OUT DISTR      |:EX40000     |300      |162    |
 | |
| |20|    PX PARTITION ITERATOR  |             |300      |162    |
 | |
| |21|     TABLE SCAN            |t5(idx_t5_c2)|300      |162    |
 | |
| |22|  MATERIAL                 |             |100      |73     |
 | |
| |23|   TABLE SCAN              |t4(idx_t4_c2)|100      |54     |
 | |
| ================================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   19 - output([1]), filter(nil), dop=1
 | |
|   20 - output([1]), filter(nil)
 | |
|   21 - output([1]), filter(nil), 
 | |
|       access([t5.c2]), partitions(p[0-2])
 | |
|   22 - output([t4.c1]), filter(nil)
 | |
|   23 - output([t4.c1]), filter(nil), 
 | |
|       access([t4.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" (("opt.t2"@"SEL$1" "opt.t1"@"SEL$1" )"opt.t3"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t3"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t3"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t1"@"SEL$1" ))
 | |
|       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.t5"@"SEL$2" "opt.t4"@"SEL$2" ))
 | |
|       USE_NL(@"SEL$2" ("opt.t4"@"SEL$2" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t4"@"SEL$2" ))
 | |
|       INDEX(@"SEL$2" "opt.t5"@"SEL$2" "idx_t5_c2")
 | |
|       INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2")
 | |
|       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       |258 |
 | |
| |1 | PX COORDINATOR         |             |56       |48  |
 | |
| |2 |  EXCHANGE OUT DISTR    |:EX10000     |56       |45  |
 | |
| |3 |   PX PARTITION ITERATOR|             |56       |45  |
 | |
| |4 |    TABLE SCAN          |t1           |56       |45  |
 | |
| |5 | PX COORDINATOR         |             |200      |149 |
 | |
| |6 |  EXCHANGE OUT DISTR    |:EX20000     |200      |140 |
 | |
| |7 |   PX PARTITION ITERATOR|             |200      |140 |
 | |
| |8 |    TABLE SCAN          |t3           |200      |140 |
 | |
| |9 | TABLE SCAN             |t4(idx_t4_c2)|100      |54  |
 | |
| ==========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([?]), filter(nil), 
 | |
|       exec_params_(nil), onetime_exprs_([subquery(1)], [subquery(2)]), init_plan_idxs_(nil)
 | |
|   1 - output([1]), filter(nil)
 | |
|   2 - output([1]), filter(nil), dop=1
 | |
|   3 - output([1]), filter(nil)
 | |
|   4 - output([1]), 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
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FULL(@"SEL$2" "opt.t3"@"SEL$2")
 | |
|       INDEX(@"SEL$3" "opt.t4"@"SEL$3" "idx_t4_c2")
 | |
|       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      |391 |
 | |
| |1 | SUBPLAN FILTER          |             |167      |314 |
 | |
| |2 |  PX COORDINATOR         |             |167      |142 |
 | |
| |3 |   EXCHANGE OUT DISTR    |:EX10000     |167      |134 |
 | |
| |4 |    PX PARTITION ITERATOR|             |167      |134 |
 | |
| |5 |     TABLE SCAN          |t1           |167      |134 |
 | |
| |6 |  PX COORDINATOR         |             |200      |149 |
 | |
| |7 |   EXCHANGE OUT DISTR    |:EX20000     |200      |140 |
 | |
| |8 |    PX PARTITION ITERATOR|             |200      |140 |
 | |
| |9 |     TABLE SCAN          |t3           |200      |140 |
 | |
| |10| TABLE SCAN              |t4(idx_t4_c2)|100      |54  |
 | |
| ===========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([?]), filter(nil), 
 | |
|       exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
 | |
|   1 - output([1]), filter(nil), 
 | |
|       exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
 | |
|   2 - output([1]), filter(nil)
 | |
|   3 - output([1]), filter(nil), dop=1
 | |
|   4 - output([1]), filter(nil)
 | |
|   5 - output([1]), 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
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       FULL(@"SEL$2" "opt.t3"@"SEL$2")
 | |
|       INDEX(@"SEL$3" "opt.t4"@"SEL$3" "idx_t4_c2")
 | |
|       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      |14539|
 | |
| |1 | PX COORDINATOR            |             |167      |142  |
 | |
| |2 |  EXCHANGE OUT DISTR       |:EX10000     |167      |134  |
 | |
| |3 |   PX PARTITION ITERATOR   |             |167      |134  |
 | |
| |4 |    TABLE SCAN             |t1           |167      |134  |
 | |
| |5 | NESTED-LOOP JOIN CARTESIAN|             |20000    |14374|
 | |
| |6 |  PX COORDINATOR           |             |200      |149  |
 | |
| |7 |   EXCHANGE OUT DISTR      |:EX20000     |200      |140  |
 | |
| |8 |    PX PARTITION ITERATOR  |             |200      |140  |
 | |
| |9 |     TABLE SCAN            |t3           |200      |140  |
 | |
| |10|  MATERIAL                 |             |100      |73   |
 | |
| |11|   TABLE SCAN              |t4(idx_t4_c2)|100      |54   |
 | |
| ==============================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([?]), filter(nil), 
 | |
|       exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil)
 | |
|   1 - output([1]), filter(nil)
 | |
|   2 - output([1]), filter(nil), dop=1
 | |
|   3 - output([1]), filter(nil)
 | |
|   4 - output([1]), filter(nil), 
 | |
|       access([t1.c1]), partitions(p[0-4])
 | |
|   5 - output([t4.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   6 - output([1]), filter(nil)
 | |
|   7 - output([1]), filter(nil), dop=1
 | |
|   8 - output([1]), filter(nil)
 | |
|   9 - output([1]), filter(nil), 
 | |
|       access([t3.c1]), partitions(p[0-1])
 | |
|   10 - output([t4.c1]), filter(nil)
 | |
|   11 - output([t4.c1]), filter(nil), 
 | |
|       access([t4.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       FULL(@"SEL$1" "opt.t1"@"SEL$1")
 | |
|       LEADING(@"SEL$2" ("opt.t3"@"SEL$2" "opt.t4"@"SEL$2" ))
 | |
|       USE_NL(@"SEL$2" ("opt.t4"@"SEL$2" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$2" ("opt.t4"@"SEL$2" ))
 | |
|       FULL(@"SEL$2" "opt.t3"@"SEL$2")
 | |
|       INDEX(@"SEL$2" "opt.t4"@"SEL$2" "idx_t4_c2")
 | |
|       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      |92  |
 | |
| ===================================
 | |
| 
 | |
| 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")
 | |
|       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      |92  |
 | |
| ===================================
 | |
| 
 | |
| 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")
 | |
|       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   |     |10000    |10934|
 | |
| |1 | NESTED-LOOP SEMI JOIN       |     |100      |3745 |
 | |
| |2 |  TABLE SCAN                 |t0   |100      |90   |
 | |
| |3 |  SUBPLAN SCAN               |VIEW1|1        |36   |
 | |
| |4 |   NESTED-LOOP JOIN CARTESIAN|     |1        |36   |
 | |
| |5 |    TABLE GET                |t7   |1        |36   |
 | |
| |6 |    TABLE SCAN               |t8   |100      |88   |
 | |
| |7 | MATERIAL                    |     |100      |113  |
 | |
| |8 |  TABLE SCAN                 |t20  |100      |95   |
 | |
| ========================================================
 | |
| 
 | |
| Outputs & filters: 
 | |
| -------------------------------------
 | |
|   0 - output([t20.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   1 - output([1]), filter(nil), 
 | |
|       conds(nil), nl_params_([t0.c1])
 | |
|   2 - output([t0.c1]), filter(nil), 
 | |
|       access([t0.c1]), partitions(p0)
 | |
|   3 - output([1]), filter(nil), 
 | |
|       access([VIEW1.c1])
 | |
|   4 - output([t7.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   5 - output([t7.c1]), filter(nil), 
 | |
|       access([t7.c1]), partitions(p0)
 | |
|   6 - output([1]), filter(nil), 
 | |
|       access([t8.c1]), partitions(p0)
 | |
|   7 - output([t20.c1]), filter(nil)
 | |
|   8 - output([t20.c1]), filter(nil), 
 | |
|       access([t20.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" (("opt.t0"@"SEL$1" "VIEW1"@"SEL$1" )"opt.t20"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t20"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t20"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | |
|       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" ))
 | |
|       NO_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.t20"@"SEL$1")
 | |
|       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  |715022|
 | |
| |1 | NESTED-LOOP JOIN CARTESIAN|    |10000    |7277  |
 | |
| |2 |  TABLE SCAN               |t20 |100      |95    |
 | |
| |3 |  MATERIAL                 |    |100      |106   |
 | |
| |4 |   TABLE SCAN              |t0  |100      |88    |
 | |
| |5 | MATERIAL                  |    |100      |106   |
 | |
| |6 |  TABLE SCAN               |t7  |100      |88    |
 | |
| ======================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   4 - output([1]), filter(nil), 
 | |
|       access([t0.pk]), partitions(p0)
 | |
|   5 - output([1]), filter(nil)
 | |
|   6 - output([1]), filter(nil), 
 | |
|       access([t7.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" (("opt.t20"@"SEL$1" "opt.t0"@"SEL$1" )"opt.t7"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t7"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t7"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" ))
 | |
|       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")
 | |
|       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    |7277|
 | |
| |1 | TABLE SCAN               |t20 |100      |95  |
 | |
| |2 | MATERIAL                 |    |100      |106 |
 | |
| |3 |  TABLE SCAN              |t0  |100      |88  |
 | |
| ===================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   3 - output([1]), filter(nil), 
 | |
|       access([t0.pk]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("opt.t20"@"SEL$1" "opt.t0"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t20"@"SEL$1")
 | |
|       FULL(@"SEL$1" "opt.t0"@"SEL$1")
 | |
|       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     |     |100      |9459|
 | |
| |1 | TABLE SCAN                    |t20  |100      |95  |
 | |
| |2 | MATERIAL                      |     |1        |9293|
 | |
| |3 |  NESTED-LOOP JOIN             |     |1        |9293|
 | |
| |4 |   SUBPLAN SCAN                |VIEW1|1        |9181|
 | |
| |5 |    SCALAR GROUP BY            |     |1        |9180|
 | |
| |6 |     NESTED-LOOP JOIN CARTESIAN|     |10000    |7270|
 | |
| |7 |      TABLE SCAN               |t7   |100      |88  |
 | |
| |8 |      MATERIAL                 |     |100      |106 |
 | |
| |9 |       TABLE SCAN              |t8   |100      |88  |
 | |
| |10|   TABLE SCAN                  |t0   |100      |90  |
 | |
| =========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   3 - output([1]), 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([1]), filter(nil)
 | |
|   9 - output([1]), filter(nil), 
 | |
|       access([t8.c1]), partitions(p0)
 | |
|   10 - output([t0.c1]), filter(nil), 
 | |
|       access([t0.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       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" ))
 | |
|       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" ))
 | |
|       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" ))
 | |
|       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")
 | |
|       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      |     |1        |9497|
 | |
| |1 | TABLE SCAN                     |t20  |100      |95  |
 | |
| |2 | MATERIAL                       |     |1        |9402|
 | |
| |3 |  NESTED-LOOP JOIN              |     |1        |9402|
 | |
| |4 |   SUBPLAN SCAN                 |VIEW2|1        |109 |
 | |
| |5 |    SCALAR GROUP BY             |     |1        |109 |
 | |
| |6 |     TABLE SCAN                 |t7   |100      |90  |
 | |
| |7 |   NESTED-LOOP JOIN             |     |1        |9293|
 | |
| |8 |    SUBPLAN SCAN                |VIEW1|1        |9181|
 | |
| |9 |     SCALAR GROUP BY            |     |1        |9180|
 | |
| |10|      NESTED-LOOP JOIN CARTESIAN|     |10000    |7270|
 | |
| |11|       TABLE SCAN               |t7   |100      |88  |
 | |
| |12|       MATERIAL                 |     |100      |106 |
 | |
| |13|        TABLE SCAN              |t8   |100      |88  |
 | |
| |14|    TABLE SCAN                  |t0   |100      |90  |
 | |
| ==========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   3 - output([1]), filter(nil), 
 | |
|       conds([t0.c1 = VIEW2.max(t7.c2)]), nl_params_(nil)
 | |
|   4 - output([VIEW2.max(t7.c2)]), filter(nil), 
 | |
|       access([VIEW2.max(t7.c2)])
 | |
|   5 - output([T_FUN_MAX(t7.c2)]), filter(nil), 
 | |
|       group(nil), agg_func([T_FUN_MAX(t7.c2)])
 | |
|   6 - output([t7.c2]), filter(nil), 
 | |
|       access([t7.c2]), partitions(p0)
 | |
|   7 - output([t0.c1]), filter(nil), 
 | |
|       conds([t0.c1 = VIEW1.max(t7.c1)]), nl_params_(nil)
 | |
|   8 - output([VIEW1.max(t7.c1)]), filter(nil), 
 | |
|       access([VIEW1.max(t7.c1)])
 | |
|   9 - output([T_FUN_MAX(t7.c1)]), filter(nil), 
 | |
|       group(nil), agg_func([T_FUN_MAX(t7.c1)])
 | |
|   10 - output([t7.c1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   11 - output([t7.c1]), filter(nil), 
 | |
|       access([t7.c1]), partitions(p0)
 | |
|   12 - output([1]), filter(nil)
 | |
|   13 - output([1]), filter(nil), 
 | |
|       access([t8.c1]), partitions(p0)
 | |
|   14 - output([t0.c1]), filter(nil), 
 | |
|       access([t0.c1]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" ("opt.t20"@"SEL$1" ("VIEW2"@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ))))
 | |
|       USE_NL(@"SEL$1" ("VIEW2"@"SEL$1" "VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW2"@"SEL$1" "VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t20"@"SEL$1")
 | |
|       USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ))
 | |
|       NO_USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" "opt.t0"@"SEL$1" ))
 | |
|       FULL(@"SEL$3" "opt.t7"@"SEL$3")
 | |
|       USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" ))
 | |
|       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" ))
 | |
|       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")
 | |
|       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    |9547|
 | |
| |1 | NESTED-LOOP SEMI JOIN CARTESIAN|     |100      |2365|
 | |
| |2 |  TABLE SCAN                    |t20  |100      |95  |
 | |
| |3 |  MATERIAL                      |     |100      |237 |
 | |
| |4 |   SUBPLAN SCAN                 |VIEW1|100      |219 |
 | |
| |5 |    NESTED-LOOP JOIN CARTESIAN  |     |100      |205 |
 | |
| |6 |     TABLE GET                  |t7   |1        |52  |
 | |
| |7 |     TABLE SCAN                 |t8   |100      |88  |
 | |
| |8 | MATERIAL                       |     |100      |106 |
 | |
| |9 |  TABLE SCAN                    |t0   |100      |88  |
 | |
| ==========================================================
 | |
| 
 | |
| 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([1]), filter(nil)
 | |
|   4 - output([1]), filter(nil), 
 | |
|       access(nil)
 | |
|   5 - output([1]), filter(nil), 
 | |
|       conds(nil), nl_params_(nil)
 | |
|   6 - output([1]), filter(nil), 
 | |
|       access([t7.c1]), partitions(p0)
 | |
|   7 - output([1]), filter(nil), 
 | |
|       access([t8.c1]), partitions(p0)
 | |
|   8 - output([1]), filter(nil)
 | |
|   9 - output([1]), filter(nil), 
 | |
|       access([t0.pk]), partitions(p0)
 | |
| 
 | |
| Outline Data:
 | |
| -------------------------------------
 | |
|   /*+
 | |
|       BEGIN_OUTLINE_DATA
 | |
|       LEADING(@"SEL$1" (("opt.t20"@"SEL$1" "VIEW1"@"SEL$1" )"opt.t0"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("opt.t0"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("opt.t0"@"SEL$1" ))
 | |
|       USE_NL(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | |
|       USE_NL_MATERIALIZATION(@"SEL$1" ("VIEW1"@"SEL$1" ))
 | |
|       FULL(@"SEL$1" "opt.t20"@"SEL$1")
 | |
|       LEADING(@"SEL$2" ("opt.t7"@"SEL$2" "opt.t8"@"SEL$2" ))
 | |
|       USE_NL(@"SEL$2" ("opt.t8"@"SEL$2" ))
 | |
|       NO_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")
 | |
|       END_OUTLINE_DATA
 | |
|   */
 | |
| 
 | |
| *************** Case 69(end)  ************** 
 | |
| 
 | 
