Index: ql/src/test/queries/clientpositive/list_bucket_query_oneskew_3.q =================================================================== --- ql/src/test/queries/clientpositive/list_bucket_query_oneskew_3.q (revision 1443722) +++ ql/src/test/queries/clientpositive/list_bucket_query_oneskew_3.q (working copy) @@ -53,10 +53,10 @@ 'HIVE_DEFAULT_LIST_BUCKETING_KEY'='${hiveconf:hive.metastore.warehouse.dir}/fact_tz/ds=1/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME'); describe formatted fact_daily PARTITION (ds = '1'); -SELECT * FROM fact_daily WHERE ds='1'; +SELECT * FROM fact_daily WHERE ds='1' ORDER BY x, y, z, ds; -- pruner pick up right directory -- explain plan shows which directory selected: Truncated Path -> Alias explain extended SELECT x FROM fact_daily WHERE ds='1' and not (x = 86); -- List Bucketing Query -SELECT x,y,z FROM fact_daily WHERE ds='1' and not (x = 86); +SELECT x,y,z FROM fact_daily WHERE ds='1' and not (x = 86) ORDER BY x,y,z; Index: ql/src/test/queries/clientpositive/list_bucket_query_multiskew_2.q =================================================================== --- ql/src/test/queries/clientpositive/list_bucket_query_multiskew_2.q (revision 1443722) +++ ql/src/test/queries/clientpositive/list_bucket_query_multiskew_2.q (working copy) @@ -41,8 +41,12 @@ SELECT key, value FROM src WHERE key=238; dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=484; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=1 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=484/y=val_484; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=2 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=238; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=3 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=238/y=val_238; dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1; @@ -55,25 +59,25 @@ (238,'val_238')='${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=238/y=val_238'); describe formatted fact_daily PARTITION (ds = '1', hr='4'); -SELECT * FROM fact_daily WHERE ds='1' and hr='4'; +SELECT * FROM fact_daily WHERE ds='1' and hr='4' ORDER BY x, y, ds, hr; -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484'; +explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' ORDER BY x, y; -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484'; +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' ORDER BY x, y; -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ds='1' and hr='4' and x= 406; +explain extended SELECT x FROM fact_daily WHERE ds='1' and hr='4' and x= 406 ORDER BY x; -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and x= 406; +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and x= 406 ORDER BY x, y; -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ; +explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ORDER BY x, y; -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ; +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ORDER BY x, y; -- clean up -drop table fact_daily; \ No newline at end of file +drop table fact_daily; Index: ql/src/test/queries/clientpositive/list_bucket_query_multiskew_3.q =================================================================== --- ql/src/test/queries/clientpositive/list_bucket_query_multiskew_3.q (revision 1443722) +++ ql/src/test/queries/clientpositive/list_bucket_query_multiskew_3.q (working copy) @@ -41,9 +41,14 @@ SELECT key, value, value FROM src WHERE key=98; dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/x=484; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=1 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/x=484/y=val_484; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/x=495; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=2 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/x=495/y=val_484; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/x=238; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=3 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/x=238/y=val_238; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=5/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1; @@ -71,18 +76,18 @@ -- query non-skewed partition explain extended -select * from fact_daily where ds='200' and hr='1' and x=145; -select * from fact_daily where ds='200' and hr='1' and x=145; +select * from fact_daily where ds='200' and hr='1' and x=145 order by x, y, z, ds, hr; +select * from fact_daily where ds='200' and hr='1' and x=145 order by x, y, z, ds, hr; explain extended -select * from fact_daily where ds='200' and hr='1'; -select * from fact_daily where ds='200' and hr='1'; +select * from fact_daily where ds='200' and hr='1' order by x, y, ds, hr; +select * from fact_daily where ds='200' and hr='1' order by x, y, z, ds, hr; -- query skewed partition explain extended -SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484'); -SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484'); +SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') ORDER BY x, y, z, ds, hr; +SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') ORDER BY x, y, z, ds, hr; -- query another skewed partition explain extended -SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484'); -SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484'); +SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') ORDER BY x, y, z, ds, hr; +SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') ORDER BY x, y, z, ds, hr; Index: ql/src/test/queries/clientpositive/list_bucket_query_multiskew_1.q =================================================================== --- ql/src/test/queries/clientpositive/list_bucket_query_multiskew_1.q (revision 1443722) +++ ql/src/test/queries/clientpositive/list_bucket_query_multiskew_1.q (working copy) @@ -41,8 +41,12 @@ SELECT key, value FROM src WHERE key=238; dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=484; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=1 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=484/y=val_484; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=2 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME; +dfs -mkdir ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=238; dfs -mv ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=3 ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=238/y=val_238; dfs -lsr ${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1; @@ -55,28 +59,28 @@ (238,'val_238')='${hiveconf:hive.metastore.warehouse.dir}/fact_daily/ds=1/hr=4/x=238/y=val_238'); describe formatted fact_daily PARTITION (ds = '1', hr='4'); -SELECT * FROM fact_daily WHERE ds='1' and hr='4'; +SELECT * FROM fact_daily WHERE ds='1' and hr='4' ORDER BY x, y, ds, hr; -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484'); +explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') ORDER BY x; -- List Bucketing Query -SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484'); +SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') ORDER BY x; -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238'); +explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') ORDER BY x,y; -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238'); +SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') ORDER BY x,y; -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3"); +explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") ORDER BY x; -- List Bucketing Query -SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3"); +SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") ORDER BY x; -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 495; +explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 495 ORDER BY x,y; -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 369; +SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 369 ORDER BY x,y; Index: ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out =================================================================== --- ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out (revision 1443722) +++ ql/src/test/results/clientpositive/list_bucket_query_multiskew_3.q.out (working copy) @@ -424,11 +424,11 @@ serialization.format 1 PREHOOK: query: -- query non-skewed partition explain extended -select * from fact_daily where ds='200' and hr='1' and x=145 +select * from fact_daily where ds='200' and hr='1' and x=145 order by x, y, z, ds, hr PREHOOK: type: QUERY POSTHOOK: query: -- query non-skewed partition explain extended -select * from fact_daily where ds='200' and hr='1' and x=145 +select * from fact_daily where ds='200' and hr='1' and x=145 order by x, y, z, ds, hr POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -446,7 +446,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '200') (= (TOK_TABLE_OR_COL hr) '1')) (= (TOK_TABLE_OR_COL x) 145))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '200') (= (TOK_TABLE_OR_COL hr) '1')) (= (TOK_TABLE_OR_COL x) 145))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL z)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL ds)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL hr))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -478,23 +478,31 @@ expr: hr type: string outputColumnNames: _col0, _col1, _col2, _col3, _col4 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0,_col1,_col2,_col3,_col4 - columns.types int:string:string:string:string - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: string + expr: _col4 + type: string + sort order: +++++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: string + expr: _col4 + type: string Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -548,6 +556,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2,_col3,_col4 + columns.types int:string:string:string:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=200/hr=1 [fact_daily] @@ -556,11 +583,11 @@ limit: -1 -PREHOOK: query: select * from fact_daily where ds='200' and hr='1' and x=145 +PREHOOK: query: select * from fact_daily where ds='200' and hr='1' and x=145 order by x, y, z, ds, hr PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=200/hr=1 #### A masked pattern was here #### -POSTHOOK: query: select * from fact_daily where ds='200' and hr='1' and x=145 +POSTHOOK: query: select * from fact_daily where ds='200' and hr='1' and x=145 order by x, y, z, ds, hr POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=200/hr=1 #### A masked pattern was here #### @@ -581,10 +608,10 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] 145 val_145 val_145 200 1 PREHOOK: query: explain extended -select * from fact_daily where ds='200' and hr='1' +select * from fact_daily where ds='200' and hr='1' order by x, y, ds, hr PREHOOK: type: QUERY POSTHOOK: query: explain extended -select * from fact_daily where ds='200' and hr='1' +select * from fact_daily where ds='200' and hr='1' order by x, y, ds, hr POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -602,40 +629,141 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (= (TOK_TABLE_OR_COL ds) '200') (= (TOK_TABLE_OR_COL hr) '1'))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (= (TOK_TABLE_OR_COL ds) '200') (= (TOK_TABLE_OR_COL hr) '1'))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL ds)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL hr))))) STAGE DEPENDENCIES: + Stage-1 is a root stage Stage-0 is a root stage STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + fact_daily + TableScan + alias: fact_daily + GatherStats: false + Select Operator + expressions: + expr: x + type: int + expr: y + type: string + expr: z + type: string + expr: ds + type: string + expr: hr + type: string + outputColumnNames: _col0, _col1, _col2, _col3, _col4 + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col3 + type: string + expr: _col4 + type: string + sort order: ++++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: string + expr: _col4 + type: string + Needs Tagging: false + Path -> Alias: +#### A masked pattern was here #### + Path -> Partition: +#### A masked pattern was here #### + Partition + base file name: hr=1 + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + partition values: + ds 200 + hr 1 + properties: + EXTERNAL TRUE + bucket_count -1 + columns x,y,z + columns.types int:string:string +#### A masked pattern was here #### + name default.fact_daily + numFiles 1 + numPartitions 5 + numRows 7 + partition_columns ds/hr + rawDataSize 133 + serialization.ddl struct fact_daily { i32 x, string y, string z} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 140 +#### A masked pattern was here #### + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + EXTERNAL TRUE + bucket_count -1 + columns x,y,z + columns.types int:string:string +#### A masked pattern was here #### + name default.fact_daily + numFiles 5 + numPartitions 5 + numRows 13 + partition_columns ds/hr + rawDataSize 241 + serialization.ddl struct fact_daily { i32 x, string y, string z} + serialization.format 1 + serialization.lib org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + totalSize 254 +#### A masked pattern was here #### + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.fact_daily + name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2,_col3,_col4 + columns.types int:string:string:string:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false + Truncated Path -> Alias: + /fact_daily/ds=200/hr=1 [fact_daily] + Stage: Stage-0 Fetch Operator limit: -1 - Processor Tree: - TableScan - alias: fact_daily - GatherStats: false - Select Operator - expressions: - expr: x - type: int - expr: y - type: string - expr: z - type: string - expr: ds - type: string - expr: hr - type: string - outputColumnNames: _col0, _col1, _col2, _col3, _col4 - ListSink -PREHOOK: query: select * from fact_daily where ds='200' and hr='1' +PREHOOK: query: select * from fact_daily where ds='200' and hr='1' order by x, y, z, ds, hr PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=200/hr=1 #### A masked pattern was here #### -POSTHOOK: query: select * from fact_daily where ds='200' and hr='1' +POSTHOOK: query: select * from fact_daily where ds='200' and hr='1' order by x, y, z, ds, hr POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=200/hr=1 #### A masked pattern was here #### @@ -654,20 +782,20 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] -406 val_406 val_406 200 1 -429 val_429 val_429 200 1 145 val_145 val_145 200 1 406 val_406 val_406 200 1 406 val_406 val_406 200 1 +406 val_406 val_406 200 1 +406 val_406 val_406 200 1 429 val_429 val_429 200 1 -406 val_406 val_406 200 1 +429 val_429 val_429 200 1 PREHOOK: query: -- query skewed partition explain extended -SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') +SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') ORDER BY x, y, z, ds, hr PREHOOK: type: QUERY POSTHOOK: query: -- query skewed partition explain extended -SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') +SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') ORDER BY x, y, z, ds, hr POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -685,7 +813,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '5')) (and (= (TOK_TABLE_OR_COL x) 484) (= (TOK_TABLE_OR_COL y) 'val_484')))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '5')) (and (= (TOK_TABLE_OR_COL x) 484) (= (TOK_TABLE_OR_COL y) 'val_484')))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL z)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL ds)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL hr))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -717,23 +845,31 @@ expr: hr type: string outputColumnNames: _col0, _col1, _col2, _col3, _col4 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0,_col1,_col2,_col3,_col4 - columns.types int:string:string:string:string - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: string + expr: _col4 + type: string + sort order: +++++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: string + expr: _col4 + type: string Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -787,6 +923,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2,_col3,_col4 + columns.types int:string:string:string:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=5/x=484/y=val_484 [fact_daily] @@ -795,11 +950,11 @@ limit: -1 -PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') +PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') ORDER BY x, y, z, ds, hr PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=5 #### A masked pattern was here #### -POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') +POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='5' and (x=484 and y ='val_484') ORDER BY x, y, z, ds, hr POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=5 #### A masked pattern was here #### @@ -821,11 +976,11 @@ 484 val_484 val_484 1 5 PREHOOK: query: -- query another skewed partition explain extended -SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') +SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') ORDER BY x, y, z, ds, hr PREHOOK: type: QUERY POSTHOOK: query: -- query another skewed partition explain extended -SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') +SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') ORDER BY x, y, z, ds, hr POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -843,7 +998,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=200,hr=1).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '100') (= (TOK_TABLE_OR_COL hr) '1')) (and (= (TOK_TABLE_OR_COL x) 495) (= (TOK_TABLE_OR_COL y) 'val_484')))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF)) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '100') (= (TOK_TABLE_OR_COL hr) '1')) (and (= (TOK_TABLE_OR_COL x) 495) (= (TOK_TABLE_OR_COL y) 'val_484')))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL z)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL ds)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL hr))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -875,23 +1030,31 @@ expr: hr type: string outputColumnNames: _col0, _col1, _col2, _col3, _col4 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0,_col1,_col2,_col3,_col4 - columns.types int:string:string:string:string - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: string + expr: _col4 + type: string + sort order: +++++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string + expr: _col2 + type: string + expr: _col3 + type: string + expr: _col4 + type: string Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -945,6 +1108,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1,_col2,_col3,_col4 + columns.types int:string:string:string:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=5/x=495/y=val_484 [fact_daily] @@ -953,11 +1135,11 @@ limit: -1 -PREHOOK: query: SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') +PREHOOK: query: SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') ORDER BY x, y, z, ds, hr PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=100/hr=1 #### A masked pattern was here #### -POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') +POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='100' and hr='1' and (x=495 and y ='val_484') ORDER BY x, y, z, ds, hr POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=100/hr=1 #### A masked pattern was here #### Index: ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out =================================================================== --- ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out (revision 1443722) +++ ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out (working copy) @@ -216,11 +216,11 @@ #### A masked pattern was here #### Storage Desc Params: serialization.format 1 -PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' +PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' ORDER BY x, y, z, ds PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1 #### A masked pattern was here #### -POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' +POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' ORDER BY x, y, z, ds POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1 #### A masked pattern was here #### @@ -234,10 +234,10 @@ POSTHOOK: Lineage: fact_tz PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_tz PARTITION(ds=1,hr=3).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] 86 val_86 val_86 1 +238 val_238 val_238 1 +238 val_238 val_238 1 278 val_278 val_278 1 278 val_278 val_278 1 -238 val_238 val_238 1 -238 val_238 val_238 1 484 val_484 val_484 1 PREHOOK: query: -- pruner pick up right directory -- explain plan shows which directory selected: Truncated Path -> Alias @@ -427,12 +427,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x,y,z FROM fact_daily WHERE ds='1' and not (x = 86) +SELECT x,y,z FROM fact_daily WHERE ds='1' and not (x = 86) ORDER BY x,y,z PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x,y,z FROM fact_daily WHERE ds='1' and not (x = 86) +SELECT x,y,z FROM fact_daily WHERE ds='1' and not (x = 86) ORDER BY x,y,z POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1 #### A masked pattern was here #### @@ -445,8 +445,8 @@ POSTHOOK: Lineage: fact_tz PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_tz PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_tz PARTITION(ds=1,hr=3).z SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +238 val_238 val_238 +238 val_238 val_238 278 val_278 val_278 278 val_278 val_278 -238 val_238 val_238 -238 val_238 val_238 484 val_484 val_484 Index: ql/src/test/results/clientpositive/list_bucket_query_multiskew_1.q.out =================================================================== --- ql/src/test/results/clientpositive/list_bucket_query_multiskew_1.q.out (revision 1443722) +++ ql/src/test/results/clientpositive/list_bucket_query_multiskew_1.q.out (working copy) @@ -186,11 +186,11 @@ #### A masked pattern was here #### Storage Desc Params: serialization.format 1 -PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' +PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' ORDER BY x, y, ds, hr PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### -POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' +POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' ORDER BY x, y, ds, hr POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### @@ -200,23 +200,23 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=2).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +238 val_238 1 4 +238 val_238 1 4 369 val_369 1 4 -406 val_406 1 4 369 val_369 1 4 369 val_369 1 4 406 val_406 1 4 406 val_406 1 4 406 val_406 1 4 -238 val_238 1 4 -238 val_238 1 4 +406 val_406 1 4 484 val_484 1 4 PREHOOK: query: -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') +explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') ORDER BY x PREHOOK: type: QUERY POSTHOOK: query: -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') +explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') ORDER BY x POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -225,7 +225,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (and (= (TOK_TABLE_OR_COL x) 484) (= (TOK_TABLE_OR_COL y) 'val_484')))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (and (= (TOK_TABLE_OR_COL x) 484) (= (TOK_TABLE_OR_COL y) 'val_484')))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -249,23 +249,15 @@ expr: x type: int outputColumnNames: _col0 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0 - columns.types int - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + sort order: + + tag: -1 + value expressions: + expr: _col0 + type: int Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -317,6 +309,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types int + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=4/x=484/y=val_484 [fact_daily] @@ -326,12 +337,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') +SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') ORDER BY x PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') +SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (x=484 and y= 'val_484') ORDER BY x POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### @@ -344,11 +355,11 @@ 484 PREHOOK: query: -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') +explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') ORDER BY x,y PREHOOK: type: QUERY POSTHOOK: query: -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') +explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') ORDER BY x,y POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -357,7 +368,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (and (= (TOK_TABLE_OR_COL x) 238) (= (TOK_TABLE_OR_COL y) 'val_238')))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (and (= (TOK_TABLE_OR_COL x) 238) (= (TOK_TABLE_OR_COL y) 'val_238')))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -383,23 +394,19 @@ expr: y type: string outputColumnNames: _col0, _col1 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0,_col1 - columns.types int:string - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + sort order: ++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -451,6 +458,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1 + columns.types int:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=4/x=238/y=val_238 [fact_daily] @@ -460,12 +486,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') +SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') ORDER BY x,y PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') +SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and (x=238 and y= 'val_238') ORDER BY x,y POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### @@ -479,11 +505,11 @@ 238 val_238 PREHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") +explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") ORDER BY x PREHOOK: type: QUERY POSTHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") +explain extended SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") ORDER BY x POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -492,7 +518,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL y) "3"))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL y) "3"))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -516,23 +542,15 @@ expr: x type: int outputColumnNames: _col0 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0 - columns.types int - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + sort order: + + tag: -1 + value expressions: + expr: _col0 + type: int Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -584,6 +602,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types int + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME [fact_daily] @@ -593,12 +630,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") +SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") ORDER BY x PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") +SELECT x FROM fact_daily WHERE ( ds='1' and hr='4') and (y = "3") ORDER BY x POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### @@ -610,11 +647,11 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] PREHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 495 +explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 495 ORDER BY x,y PREHOOK: type: QUERY POSTHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 495 +explain extended SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 495 ORDER BY x,y POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -623,7 +660,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL x) 495))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL x) 495))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -649,23 +686,19 @@ expr: y type: string outputColumnNames: _col0, _col1 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0,_col1 - columns.types int:string - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + sort order: ++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -717,6 +750,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1 + columns.types int:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME [fact_daily] @@ -726,12 +778,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 369 +SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 369 ORDER BY x,y PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 369 +SELECT x,y FROM fact_daily WHERE ( ds='1' and hr='4') and x = 369 ORDER BY x,y POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### Index: ql/src/test/results/clientpositive/list_bucket_query_multiskew_2.q.out =================================================================== --- ql/src/test/results/clientpositive/list_bucket_query_multiskew_2.q.out (revision 1443722) +++ ql/src/test/results/clientpositive/list_bucket_query_multiskew_2.q.out (working copy) @@ -186,11 +186,11 @@ #### A masked pattern was here #### Storage Desc Params: serialization.format 1 -PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' +PREHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' ORDER BY x, y, ds, hr PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### -POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' +POSTHOOK: query: SELECT * FROM fact_daily WHERE ds='1' and hr='4' ORDER BY x, y, ds, hr POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### @@ -200,23 +200,23 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=2).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +238 val_238 1 4 +238 val_238 1 4 369 val_369 1 4 -406 val_406 1 4 369 val_369 1 4 369 val_369 1 4 406 val_406 1 4 406 val_406 1 4 406 val_406 1 4 -238 val_238 1 4 -238 val_238 1 4 +406 val_406 1 4 484 val_484 1 4 PREHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' +explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' ORDER BY x, y PREHOOK: type: QUERY POSTHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' +explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' ORDER BY x, y POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -225,7 +225,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL y) 'val_484'))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL y) 'val_484'))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -251,23 +251,19 @@ expr: y type: string outputColumnNames: _col0, _col1 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0,_col1 - columns.types int:string - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + sort order: ++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -366,6 +362,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1 + columns.types int:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME [fact_daily] /fact_daily/ds=1/hr=4/x=484/y=val_484 [fact_daily] @@ -376,12 +391,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' ORDER BY x, y PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and y= 'val_484' ORDER BY x, y POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### @@ -394,11 +409,11 @@ 484 val_484 PREHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ds='1' and hr='4' and x= 406 +explain extended SELECT x FROM fact_daily WHERE ds='1' and hr='4' and x= 406 ORDER BY x PREHOOK: type: QUERY POSTHOOK: query: -- pruner only pick up default directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x FROM fact_daily WHERE ds='1' and hr='4' and x= 406 +explain extended SELECT x FROM fact_daily WHERE ds='1' and hr='4' and x= 406 ORDER BY x POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -407,7 +422,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL x) 406))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (= (TOK_TABLE_OR_COL x) 406))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -431,23 +446,15 @@ expr: x type: int outputColumnNames: _col0 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0 - columns.types int - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + sort order: + + tag: -1 + value expressions: + expr: _col0 + type: int Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -499,6 +506,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0 + columns.types int + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=4/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME/HIVE_DEFAULT_LIST_BUCKETING_DIR_NAME [fact_daily] @@ -508,12 +534,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and x= 406 +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and x= 406 ORDER BY x, y PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and x= 406 +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and x= 406 ORDER BY x, y POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### @@ -529,11 +555,11 @@ 406 val_406 PREHOOK: query: -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) +explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ORDER BY x, y PREHOOK: type: QUERY POSTHOOK: query: -- pruner only pick up skewed-value directory -- explain plan shows which directory selected: Truncated Path -> Alias -explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) +explain extended SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ORDER BY x, y POSTHOOK: type: QUERY POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=1).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] @@ -542,7 +568,7 @@ POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).x EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: fact_daily PARTITION(ds=1,hr=3).y SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (or (and (= (TOK_TABLE_OR_COL x) 484) (= (TOK_TABLE_OR_COL y) 'val_484')) (and (= (TOK_TABLE_OR_COL x) 238) (= (TOK_TABLE_OR_COL y) 'val_238'))))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME fact_daily))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL x)) (TOK_SELEXPR (TOK_TABLE_OR_COL y))) (TOK_WHERE (and (and (= (TOK_TABLE_OR_COL ds) '1') (= (TOK_TABLE_OR_COL hr) '4')) (or (and (= (TOK_TABLE_OR_COL x) 484) (= (TOK_TABLE_OR_COL y) 'val_484')) (and (= (TOK_TABLE_OR_COL x) 238) (= (TOK_TABLE_OR_COL y) 'val_238'))))) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL x)) (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL y))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -568,23 +594,19 @@ expr: y type: string outputColumnNames: _col0, _col1 - File Output Operator - compressed: false - GlobalTableId: 0 -#### A masked pattern was here #### - NumFilesPerFileSink: 1 -#### A masked pattern was here #### - table: - input format: org.apache.hadoop.mapred.TextInputFormat - output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat - properties: - columns _col0,_col1 - columns.types int:string - escape.delim \ - serialization.format 1 - TotalFiles: 1 - GatherStats: false - MultiFileSpray: false + Reduce Output Operator + key expressions: + expr: _col0 + type: int + expr: _col1 + type: string + sort order: ++ + tag: -1 + value expressions: + expr: _col0 + type: int + expr: _col1 + type: string Needs Tagging: false Path -> Alias: #### A masked pattern was here #### @@ -683,6 +705,25 @@ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.fact_daily name: default.fact_daily + Reduce Operator Tree: + Extract + File Output Operator + compressed: false + GlobalTableId: 0 +#### A masked pattern was here #### + NumFilesPerFileSink: 1 +#### A masked pattern was here #### + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + properties: + columns _col0,_col1 + columns.types int:string + escape.delim \ + serialization.format 1 + TotalFiles: 1 + GatherStats: false + MultiFileSpray: false Truncated Path -> Alias: /fact_daily/ds=1/hr=4/x=238/y=val_238 [fact_daily] /fact_daily/ds=1/hr=4/x=484/y=val_484 [fact_daily] @@ -693,12 +734,12 @@ PREHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ORDER BY x, y PREHOOK: type: QUERY PREHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### POSTHOOK: query: -- List Bucketing Query -SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) +SELECT x,y FROM fact_daily WHERE ds='1' and hr='4' and ( (x=484 and y ='val_484') or (x=238 and y= 'val_238')) ORDER BY x, y POSTHOOK: type: QUERY POSTHOOK: Input: default@fact_daily@ds=1/hr=4 #### A masked pattern was here #### Index: ql/src/test/queries/clientpositive/parenthesis_star_by.q =================================================================== --- ql/src/test/queries/clientpositive/parenthesis_star_by.q (revision 1443722) +++ ql/src/test/queries/clientpositive/parenthesis_star_by.q (working copy) @@ -1,10 +1,10 @@ -SELECT key, value FROM src CLUSTER BY key, value; SELECT key, value FROM src ORDER BY key ASC, value ASC; -SELECT key, value FROM src SORT BY key, value; -SELECT key, value FROM src DISTRIBUTE BY key, value; +SELECT * FROM ( SELECT key, value FROM src CLUSTER BY key, value) a ORDER BY key, value; +SELECT * FROM ( SELECT key, value FROM src SORT BY key, value) a ORDER BY key, value; +SELECT * FROM ( SELECT key, value FROM src DISTRIBUTE BY key, value) a ORDER BY key, value; -SELECT key, value FROM src CLUSTER BY (key, value); SELECT key, value FROM src ORDER BY (key ASC, value ASC); -SELECT key, value FROM src SORT BY (key, value); -SELECT key, value FROM src DISTRIBUTE BY (key, value); +SELECT * FROM ( SELECT key, value FROM src CLUSTER BY (key, value)) a ORDER BY key, value; +SELECT * FROM ( SELECT key, value FROM src SORT BY (key, value)) a ORDER BY key, value; +SELECT * FROM ( SELECT key, value FROM src DISTRIBUTE BY (key, value)) a ORDER BY key, value; Index: ql/src/test/results/clientpositive/parenthesis_star_by.q.out =================================================================== --- ql/src/test/results/clientpositive/parenthesis_star_by.q.out (revision 1443722) +++ ql/src/test/results/clientpositive/parenthesis_star_by.q.out (working copy) @@ -1,8 +1,8 @@ -PREHOOK: query: SELECT key, value FROM src CLUSTER BY key, value +PREHOOK: query: SELECT key, value FROM src ORDER BY key ASC, value ASC PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src CLUSTER BY key, value +POSTHOOK: query: SELECT key, value FROM src ORDER BY key ASC, value ASC POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### @@ -506,11 +506,11 @@ 97 val_97 98 val_98 98 val_98 -PREHOOK: query: SELECT key, value FROM src ORDER BY key ASC, value ASC +PREHOOK: query: SELECT * FROM ( SELECT key, value FROM src CLUSTER BY key, value) a ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src ORDER BY key ASC, value ASC +POSTHOOK: query: SELECT * FROM ( SELECT key, value FROM src CLUSTER BY key, value) a ORDER BY key, value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### @@ -1014,11 +1014,11 @@ 97 val_97 98 val_98 98 val_98 -PREHOOK: query: SELECT key, value FROM src SORT BY key, value +PREHOOK: query: SELECT * FROM ( SELECT key, value FROM src SORT BY key, value) a ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src SORT BY key, value +POSTHOOK: query: SELECT * FROM ( SELECT key, value FROM src SORT BY key, value) a ORDER BY key, value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### @@ -1522,519 +1522,519 @@ 97 val_97 98 val_98 98 val_98 -PREHOOK: query: SELECT key, value FROM src DISTRIBUTE BY key, value +PREHOOK: query: SELECT * FROM ( SELECT key, value FROM src DISTRIBUTE BY key, value) a ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src DISTRIBUTE BY key, value +POSTHOOK: query: SELECT * FROM ( SELECT key, value FROM src DISTRIBUTE BY key, value) a ORDER BY key, value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -238 val_238 -86 val_86 -311 val_311 -27 val_27 -165 val_165 -409 val_409 -255 val_255 -278 val_278 -98 val_98 -484 val_484 -265 val_265 -193 val_193 -401 val_401 -150 val_150 -273 val_273 -224 val_224 -369 val_369 -66 val_66 +0 val_0 +0 val_0 +0 val_0 +10 val_10 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +11 val_11 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +12 val_12 +12 val_12 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 128 val_128 -213 val_213 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 146 val_146 -406 val_406 -429 val_429 -374 val_374 +146 val_146 +149 val_149 +149 val_149 +15 val_15 +15 val_15 +150 val_150 152 val_152 -469 val_469 -145 val_145 -495 val_495 -37 val_37 -327 val_327 -281 val_281 -277 val_277 -209 val_209 -15 val_15 -82 val_82 -403 val_403 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 166 val_166 -417 val_417 -430 val_430 -252 val_252 -292 val_292 -219 val_219 -287 val_287 -153 val_153 -193 val_193 -338 val_338 -446 val_446 -459 val_459 -394 val_394 -237 val_237 -482 val_482 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +17 val_17 +170 val_170 +172 val_172 +172 val_172 174 val_174 -413 val_413 -494 val_494 -207 val_207 -199 val_199 -466 val_466 -208 val_208 174 val_174 -399 val_399 -396 val_396 -247 val_247 -417 val_417 -489 val_489 -162 val_162 -377 val_377 -397 val_397 -309 val_309 -365 val_365 -266 val_266 -439 val_439 -342 val_342 -367 val_367 -325 val_325 -167 val_167 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +18 val_18 +18 val_18 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +19 val_19 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 195 val_195 -475 val_475 -17 val_17 -113 val_113 -155 val_155 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +2 val_2 +20 val_20 +200 val_200 +200 val_200 +201 val_201 +202 val_202 203 val_203 -339 val_339 -0 val_0 -455 val_455 -128 val_128 -311 val_311 -316 val_316 -57 val_57 -302 val_302 +203 val_203 205 val_205 -149 val_149 -438 val_438 -345 val_345 -129 val_129 -170 val_170 -20 val_20 -489 val_489 -157 val_157 -378 val_378 -221 val_221 -92 val_92 -111 val_111 -47 val_47 -72 val_72 -4 val_4 -280 val_280 -35 val_35 -427 val_427 -277 val_277 +205 val_205 +207 val_207 +207 val_207 208 val_208 -356 val_356 -399 val_399 -169 val_169 -382 val_382 -498 val_498 -125 val_125 -386 val_386 -437 val_437 -469 val_469 -192 val_192 -286 val_286 -187 val_187 -176 val_176 -54 val_54 -459 val_459 -51 val_51 -138 val_138 -103 val_103 -239 val_239 +208 val_208 +208 val_208 +209 val_209 +209 val_209 213 val_213 +213 val_213 +214 val_214 216 val_216 -430 val_430 -278 val_278 -176 val_176 -289 val_289 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 221 val_221 -65 val_65 -318 val_318 -332 val_332 -311 val_311 -275 val_275 -137 val_137 -241 val_241 -83 val_83 -333 val_333 -180 val_180 -284 val_284 -12 val_12 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 230 val_230 -181 val_181 -67 val_67 -260 val_260 -404 val_404 -384 val_384 -489 val_489 -353 val_353 -373 val_373 -272 val_272 -138 val_138 -217 val_217 -84 val_84 -348 val_348 -466 val_466 -58 val_58 -8 val_8 -411 val_411 230 val_230 -208 val_208 -348 val_348 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 24 val_24 -463 val_463 -431 val_431 -179 val_179 -172 val_172 -42 val_42 -129 val_129 -158 val_158 -119 val_119 -496 val_496 -0 val_0 -322 val_322 -197 val_197 -468 val_468 -393 val_393 -454 val_454 -100 val_100 -298 val_298 -199 val_199 -191 val_191 -418 val_418 -96 val_96 +24 val_24 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 26 val_26 -165 val_165 -327 val_327 -230 val_230 -205 val_205 -120 val_120 -131 val_131 -51 val_51 -404 val_404 -43 val_43 -436 val_436 -156 val_156 -469 val_469 -468 val_468 -308 val_308 -95 val_95 -196 val_196 -288 val_288 -481 val_481 -457 val_457 -98 val_98 +26 val_26 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +27 val_27 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +28 val_28 +280 val_280 +280 val_280 +281 val_281 +281 val_281 282 val_282 -197 val_197 -187 val_187 -318 val_318 -318 val_318 -409 val_409 -470 val_470 -137 val_137 -369 val_369 -316 val_316 -169 val_169 -413 val_413 -85 val_85 -77 val_77 -0 val_0 -490 val_490 -87 val_87 -364 val_364 -179 val_179 -118 val_118 -134 val_134 -395 val_395 282 val_282 -138 val_138 -238 val_238 -419 val_419 -15 val_15 -118 val_118 -72 val_72 -90 val_90 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +30 val_30 +302 val_302 +305 val_305 +306 val_306 307 val_307 -19 val_19 -435 val_435 -10 val_10 -277 val_277 -273 val_273 -306 val_306 -224 val_224 +307 val_307 +308 val_308 309 val_309 -389 val_389 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 327 val_327 -242 val_242 -369 val_369 -392 val_392 -272 val_272 +327 val_327 +327 val_327 +33 val_33 331 val_331 -401 val_401 -242 val_242 -452 val_452 -177 val_177 -226 val_226 -5 val_5 -497 val_497 -402 val_402 -396 val_396 -317 val_317 -395 val_395 -58 val_58 -35 val_35 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 336 val_336 -95 val_95 -11 val_11 -168 val_168 +338 val_338 +339 val_339 34 val_34 -229 val_229 -233 val_233 -143 val_143 -472 val_472 -322 val_322 -498 val_498 -160 val_160 -195 val_195 -42 val_42 -321 val_321 -430 val_430 -119 val_119 -489 val_489 -458 val_458 -78 val_78 -76 val_76 -41 val_41 -223 val_223 -492 val_492 -149 val_149 -449 val_449 -218 val_218 -228 val_228 -138 val_138 -453 val_453 -30 val_30 -209 val_209 -64 val_64 -468 val_468 -76 val_76 -74 val_74 +341 val_341 342 val_342 -69 val_69 -230 val_230 -33 val_33 -368 val_368 -103 val_103 -296 val_296 -113 val_113 -216 val_216 -367 val_367 +342 val_342 344 val_344 -167 val_167 -274 val_274 -219 val_219 -239 val_239 -485 val_485 -116 val_116 -223 val_223 -256 val_256 -263 val_263 -70 val_70 -487 val_487 -480 val_480 -401 val_401 -288 val_288 -191 val_191 -5 val_5 -244 val_244 -438 val_438 -128 val_128 -467 val_467 -432 val_432 -202 val_202 -316 val_316 -229 val_229 -469 val_469 -463 val_463 -280 val_280 -2 val_2 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 35 val_35 -283 val_283 -331 val_331 -235 val_235 -80 val_80 -44 val_44 -193 val_193 -321 val_321 -335 val_335 -104 val_104 -466 val_466 +35 val_35 +35 val_35 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 366 val_366 -175 val_175 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +37 val_37 +37 val_37 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +4 val_4 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 403 val_403 -483 val_483 -53 val_53 -105 val_105 -257 val_257 +403 val_403 +403 val_403 +404 val_404 +404 val_404 406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 409 val_409 -190 val_190 -406 val_406 -401 val_401 -114 val_114 -258 val_258 -90 val_90 -203 val_203 -262 val_262 -348 val_348 +409 val_409 +409 val_409 +41 val_41 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +42 val_42 +42 val_42 +421 val_421 424 val_424 -12 val_12 -396 val_396 -201 val_201 -217 val_217 -164 val_164 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +43 val_43 +430 val_430 +430 val_430 +430 val_430 431 val_431 -454 val_454 -478 val_478 -298 val_298 -125 val_125 431 val_431 -164 val_164 -424 val_424 -187 val_187 -382 val_382 -5 val_5 -70 val_70 -397 val_397 -480 val_480 -291 val_291 -24 val_24 -351 val_351 -255 val_255 -104 val_104 -70 val_70 -163 val_163 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 438 val_438 -119 val_119 -414 val_414 -200 val_200 -491 val_491 -237 val_237 +438 val_438 +438 val_438 439 val_439 -360 val_360 -248 val_248 -479 val_479 -305 val_305 -417 val_417 -199 val_199 +439 val_439 +44 val_44 +443 val_443 444 val_444 -120 val_120 -429 val_429 -169 val_169 -443 val_443 -323 val_323 -325 val_325 -277 val_277 -230 val_230 -478 val_478 -178 val_178 -468 val_468 -310 val_310 -317 val_317 -333 val_333 -493 val_493 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 460 val_460 -207 val_207 -249 val_249 -265 val_265 -480 val_480 -83 val_83 -136 val_136 -353 val_353 -172 val_172 -214 val_214 462 val_462 -233 val_233 -406 val_406 -133 val_133 -175 val_175 -189 val_189 -454 val_454 -375 val_375 -401 val_401 -421 val_421 -407 val_407 -384 val_384 -256 val_256 -26 val_26 -134 val_134 -67 val_67 -384 val_384 -379 val_379 -18 val_18 462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +47 val_47 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 492 val_492 -100 val_100 -298 val_298 -9 val_9 -341 val_341 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 498 val_498 -146 val_146 -458 val_458 -362 val_362 -186 val_186 -285 val_285 -348 val_348 -167 val_167 -18 val_18 -273 val_273 -183 val_183 -281 val_281 -344 val_344 -97 val_97 -469 val_469 -315 val_315 +498 val_498 +498 val_498 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +8 val_8 +80 val_80 +82 val_82 +83 val_83 +83 val_83 84 val_84 -28 val_28 -37 val_37 -448 val_448 -152 val_152 -348 val_348 -307 val_307 -194 val_194 -414 val_414 -477 val_477 -222 val_222 -126 val_126 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +9 val_9 90 val_90 -169 val_169 -403 val_403 -400 val_400 -200 val_200 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 97 val_97 -PREHOOK: query: SELECT key, value FROM src CLUSTER BY (key, value) +97 val_97 +98 val_98 +98 val_98 +PREHOOK: query: SELECT key, value FROM src ORDER BY (key ASC, value ASC) PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src CLUSTER BY (key, value) +POSTHOOK: query: SELECT key, value FROM src ORDER BY (key ASC, value ASC) POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### @@ -2538,11 +2538,11 @@ 97 val_97 98 val_98 98 val_98 -PREHOOK: query: SELECT key, value FROM src ORDER BY (key ASC, value ASC) +PREHOOK: query: SELECT * FROM ( SELECT key, value FROM src CLUSTER BY (key, value)) a ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src ORDER BY (key ASC, value ASC) +POSTHOOK: query: SELECT * FROM ( SELECT key, value FROM src CLUSTER BY (key, value)) a ORDER BY key, value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### @@ -3046,11 +3046,11 @@ 97 val_97 98 val_98 98 val_98 -PREHOOK: query: SELECT key, value FROM src SORT BY (key, value) +PREHOOK: query: SELECT * FROM ( SELECT key, value FROM src SORT BY (key, value)) a ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src SORT BY (key, value) +POSTHOOK: query: SELECT * FROM ( SELECT key, value FROM src SORT BY (key, value)) a ORDER BY key, value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### @@ -3554,511 +3554,511 @@ 97 val_97 98 val_98 98 val_98 -PREHOOK: query: SELECT key, value FROM src DISTRIBUTE BY (key, value) +PREHOOK: query: SELECT * FROM ( SELECT key, value FROM src DISTRIBUTE BY (key, value)) a ORDER BY key, value PREHOOK: type: QUERY PREHOOK: Input: default@src #### A masked pattern was here #### -POSTHOOK: query: SELECT key, value FROM src DISTRIBUTE BY (key, value) +POSTHOOK: query: SELECT * FROM ( SELECT key, value FROM src DISTRIBUTE BY (key, value)) a ORDER BY key, value POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -238 val_238 -86 val_86 -311 val_311 -27 val_27 -165 val_165 -409 val_409 -255 val_255 -278 val_278 -98 val_98 -484 val_484 -265 val_265 -193 val_193 -401 val_401 -150 val_150 -273 val_273 -224 val_224 -369 val_369 -66 val_66 +0 val_0 +0 val_0 +0 val_0 +10 val_10 +100 val_100 +100 val_100 +103 val_103 +103 val_103 +104 val_104 +104 val_104 +105 val_105 +11 val_11 +111 val_111 +113 val_113 +113 val_113 +114 val_114 +116 val_116 +118 val_118 +118 val_118 +119 val_119 +119 val_119 +119 val_119 +12 val_12 +12 val_12 +120 val_120 +120 val_120 +125 val_125 +125 val_125 +126 val_126 128 val_128 -213 val_213 +128 val_128 +128 val_128 +129 val_129 +129 val_129 +131 val_131 +133 val_133 +134 val_134 +134 val_134 +136 val_136 +137 val_137 +137 val_137 +138 val_138 +138 val_138 +138 val_138 +138 val_138 +143 val_143 +145 val_145 146 val_146 -406 val_406 -429 val_429 -374 val_374 +146 val_146 +149 val_149 +149 val_149 +15 val_15 +15 val_15 +150 val_150 152 val_152 -469 val_469 -145 val_145 -495 val_495 -37 val_37 -327 val_327 -281 val_281 -277 val_277 -209 val_209 -15 val_15 -82 val_82 -403 val_403 +152 val_152 +153 val_153 +155 val_155 +156 val_156 +157 val_157 +158 val_158 +160 val_160 +162 val_162 +163 val_163 +164 val_164 +164 val_164 +165 val_165 +165 val_165 166 val_166 -417 val_417 -430 val_430 -252 val_252 -292 val_292 -219 val_219 -287 val_287 -153 val_153 -193 val_193 -338 val_338 -446 val_446 -459 val_459 -394 val_394 -237 val_237 -482 val_482 +167 val_167 +167 val_167 +167 val_167 +168 val_168 +169 val_169 +169 val_169 +169 val_169 +169 val_169 +17 val_17 +170 val_170 +172 val_172 +172 val_172 174 val_174 -413 val_413 -494 val_494 -207 val_207 -199 val_199 -466 val_466 -208 val_208 174 val_174 -399 val_399 -396 val_396 -247 val_247 -417 val_417 -489 val_489 -162 val_162 -377 val_377 -397 val_397 -309 val_309 -365 val_365 -266 val_266 -439 val_439 -342 val_342 -367 val_367 -325 val_325 -167 val_167 +175 val_175 +175 val_175 +176 val_176 +176 val_176 +177 val_177 +178 val_178 +179 val_179 +179 val_179 +18 val_18 +18 val_18 +180 val_180 +181 val_181 +183 val_183 +186 val_186 +187 val_187 +187 val_187 +187 val_187 +189 val_189 +19 val_19 +190 val_190 +191 val_191 +191 val_191 +192 val_192 +193 val_193 +193 val_193 +193 val_193 +194 val_194 195 val_195 -475 val_475 -17 val_17 -113 val_113 -155 val_155 +195 val_195 +196 val_196 +197 val_197 +197 val_197 +199 val_199 +199 val_199 +199 val_199 +2 val_2 +20 val_20 +200 val_200 +200 val_200 +201 val_201 +202 val_202 203 val_203 -339 val_339 -0 val_0 -455 val_455 -128 val_128 -311 val_311 -316 val_316 -57 val_57 -302 val_302 +203 val_203 205 val_205 -149 val_149 -438 val_438 -345 val_345 -129 val_129 -170 val_170 -20 val_20 -489 val_489 -157 val_157 -378 val_378 -221 val_221 -92 val_92 -111 val_111 -47 val_47 -72 val_72 -4 val_4 -280 val_280 -35 val_35 -427 val_427 -277 val_277 +205 val_205 +207 val_207 +207 val_207 208 val_208 -356 val_356 -399 val_399 -169 val_169 -382 val_382 -498 val_498 -125 val_125 -386 val_386 -437 val_437 -469 val_469 -192 val_192 -286 val_286 -187 val_187 -176 val_176 -54 val_54 -459 val_459 -51 val_51 -138 val_138 -103 val_103 -239 val_239 +208 val_208 +208 val_208 +209 val_209 +209 val_209 213 val_213 +213 val_213 +214 val_214 216 val_216 -430 val_430 -278 val_278 -176 val_176 -289 val_289 +216 val_216 +217 val_217 +217 val_217 +218 val_218 +219 val_219 +219 val_219 221 val_221 -65 val_65 -318 val_318 -332 val_332 -311 val_311 -275 val_275 -137 val_137 -241 val_241 -83 val_83 -333 val_333 -180 val_180 -284 val_284 -12 val_12 +221 val_221 +222 val_222 +223 val_223 +223 val_223 +224 val_224 +224 val_224 +226 val_226 +228 val_228 +229 val_229 +229 val_229 230 val_230 -181 val_181 -67 val_67 -260 val_260 -404 val_404 -384 val_384 -489 val_489 -353 val_353 -373 val_373 -272 val_272 -138 val_138 -217 val_217 -84 val_84 -348 val_348 -466 val_466 -58 val_58 -8 val_8 -411 val_411 230 val_230 -208 val_208 -348 val_348 +230 val_230 +230 val_230 +230 val_230 +233 val_233 +233 val_233 +235 val_235 +237 val_237 +237 val_237 +238 val_238 +238 val_238 +239 val_239 +239 val_239 24 val_24 -463 val_463 -431 val_431 -179 val_179 -172 val_172 -42 val_42 -129 val_129 -158 val_158 -119 val_119 -496 val_496 -0 val_0 -322 val_322 -197 val_197 -468 val_468 -393 val_393 -454 val_454 -100 val_100 -298 val_298 -199 val_199 -191 val_191 -418 val_418 -96 val_96 +24 val_24 +241 val_241 +242 val_242 +242 val_242 +244 val_244 +247 val_247 +248 val_248 +249 val_249 +252 val_252 +255 val_255 +255 val_255 +256 val_256 +256 val_256 +257 val_257 +258 val_258 26 val_26 -165 val_165 -327 val_327 -230 val_230 -205 val_205 -120 val_120 -131 val_131 -51 val_51 -404 val_404 -43 val_43 -436 val_436 -156 val_156 -469 val_469 -468 val_468 -308 val_308 -95 val_95 -196 val_196 -288 val_288 -481 val_481 -457 val_457 -98 val_98 +26 val_26 +260 val_260 +262 val_262 +263 val_263 +265 val_265 +265 val_265 +266 val_266 +27 val_27 +272 val_272 +272 val_272 +273 val_273 +273 val_273 +273 val_273 +274 val_274 +275 val_275 +277 val_277 +277 val_277 +277 val_277 +277 val_277 +278 val_278 +278 val_278 +28 val_28 +280 val_280 +280 val_280 +281 val_281 +281 val_281 282 val_282 -197 val_197 -187 val_187 -318 val_318 -318 val_318 -409 val_409 -470 val_470 -137 val_137 -369 val_369 -316 val_316 -169 val_169 -413 val_413 -85 val_85 -77 val_77 -0 val_0 -490 val_490 -87 val_87 -364 val_364 -179 val_179 -118 val_118 -134 val_134 -395 val_395 282 val_282 -138 val_138 -238 val_238 -419 val_419 -15 val_15 -118 val_118 -72 val_72 -90 val_90 +283 val_283 +284 val_284 +285 val_285 +286 val_286 +287 val_287 +288 val_288 +288 val_288 +289 val_289 +291 val_291 +292 val_292 +296 val_296 +298 val_298 +298 val_298 +298 val_298 +30 val_30 +302 val_302 +305 val_305 +306 val_306 307 val_307 -19 val_19 -435 val_435 -10 val_10 -277 val_277 -273 val_273 -306 val_306 -224 val_224 +307 val_307 +308 val_308 309 val_309 -389 val_389 +309 val_309 +310 val_310 +311 val_311 +311 val_311 +311 val_311 +315 val_315 +316 val_316 +316 val_316 +316 val_316 +317 val_317 +317 val_317 +318 val_318 +318 val_318 +318 val_318 +321 val_321 +321 val_321 +322 val_322 +322 val_322 +323 val_323 +325 val_325 +325 val_325 327 val_327 -242 val_242 -369 val_369 -392 val_392 -272 val_272 +327 val_327 +327 val_327 +33 val_33 331 val_331 -401 val_401 -242 val_242 -452 val_452 -177 val_177 -226 val_226 -5 val_5 -497 val_497 -402 val_402 -396 val_396 -317 val_317 -395 val_395 -58 val_58 -35 val_35 +331 val_331 +332 val_332 +333 val_333 +333 val_333 +335 val_335 336 val_336 -95 val_95 -11 val_11 -168 val_168 +338 val_338 +339 val_339 34 val_34 -229 val_229 -233 val_233 -143 val_143 -472 val_472 -322 val_322 -498 val_498 -160 val_160 -195 val_195 -42 val_42 -321 val_321 -430 val_430 -119 val_119 -489 val_489 -458 val_458 -78 val_78 -76 val_76 -41 val_41 -223 val_223 -492 val_492 -149 val_149 -449 val_449 -218 val_218 -228 val_228 -138 val_138 -453 val_453 -30 val_30 -209 val_209 -64 val_64 -468 val_468 -76 val_76 -74 val_74 +341 val_341 342 val_342 -69 val_69 -230 val_230 -33 val_33 -368 val_368 -103 val_103 -296 val_296 -113 val_113 -216 val_216 -367 val_367 +342 val_342 344 val_344 -167 val_167 -274 val_274 -219 val_219 -239 val_239 -485 val_485 -116 val_116 -223 val_223 -256 val_256 -263 val_263 -70 val_70 -487 val_487 -480 val_480 -401 val_401 -288 val_288 -191 val_191 -5 val_5 -244 val_244 -438 val_438 -128 val_128 -467 val_467 -432 val_432 -202 val_202 -316 val_316 -229 val_229 -469 val_469 -463 val_463 -280 val_280 -2 val_2 +344 val_344 +345 val_345 +348 val_348 +348 val_348 +348 val_348 +348 val_348 +348 val_348 35 val_35 -283 val_283 -331 val_331 -235 val_235 -80 val_80 -44 val_44 -193 val_193 -321 val_321 -335 val_335 -104 val_104 -466 val_466 +35 val_35 +35 val_35 +351 val_351 +353 val_353 +353 val_353 +356 val_356 +360 val_360 +362 val_362 +364 val_364 +365 val_365 366 val_366 -175 val_175 +367 val_367 +367 val_367 +368 val_368 +369 val_369 +369 val_369 +369 val_369 +37 val_37 +37 val_37 +373 val_373 +374 val_374 +375 val_375 +377 val_377 +378 val_378 +379 val_379 +382 val_382 +382 val_382 +384 val_384 +384 val_384 +384 val_384 +386 val_386 +389 val_389 +392 val_392 +393 val_393 +394 val_394 +395 val_395 +395 val_395 +396 val_396 +396 val_396 +396 val_396 +397 val_397 +397 val_397 +399 val_399 +399 val_399 +4 val_4 +400 val_400 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +401 val_401 +402 val_402 403 val_403 -483 val_483 -53 val_53 -105 val_105 -257 val_257 +403 val_403 +403 val_403 +404 val_404 +404 val_404 406 val_406 +406 val_406 +406 val_406 +406 val_406 +407 val_407 409 val_409 -190 val_190 -406 val_406 -401 val_401 -114 val_114 -258 val_258 -90 val_90 -203 val_203 -262 val_262 -348 val_348 +409 val_409 +409 val_409 +41 val_41 +411 val_411 +413 val_413 +413 val_413 +414 val_414 +414 val_414 +417 val_417 +417 val_417 +417 val_417 +418 val_418 +419 val_419 +42 val_42 +42 val_42 +421 val_421 424 val_424 -12 val_12 -396 val_396 -201 val_201 -217 val_217 -164 val_164 +424 val_424 +427 val_427 +429 val_429 +429 val_429 +43 val_43 +430 val_430 +430 val_430 +430 val_430 431 val_431 -454 val_454 -478 val_478 -298 val_298 -125 val_125 431 val_431 -164 val_164 -424 val_424 -187 val_187 -382 val_382 -5 val_5 -70 val_70 -397 val_397 -480 val_480 -291 val_291 -24 val_24 -351 val_351 -255 val_255 -104 val_104 -70 val_70 -163 val_163 +431 val_431 +432 val_432 +435 val_435 +436 val_436 +437 val_437 438 val_438 -119 val_119 -414 val_414 -200 val_200 -491 val_491 -237 val_237 +438 val_438 +438 val_438 439 val_439 -360 val_360 -248 val_248 -479 val_479 -305 val_305 -417 val_417 -199 val_199 +439 val_439 +44 val_44 +443 val_443 444 val_444 -120 val_120 -429 val_429 -169 val_169 -443 val_443 -323 val_323 -325 val_325 -277 val_277 -230 val_230 -478 val_478 -178 val_178 -468 val_468 -310 val_310 -317 val_317 -333 val_333 -493 val_493 +446 val_446 +448 val_448 +449 val_449 +452 val_452 +453 val_453 +454 val_454 +454 val_454 +454 val_454 +455 val_455 +457 val_457 +458 val_458 +458 val_458 +459 val_459 +459 val_459 460 val_460 -207 val_207 -249 val_249 -265 val_265 -480 val_480 -83 val_83 -136 val_136 -353 val_353 -172 val_172 -214 val_214 462 val_462 -233 val_233 -406 val_406 -133 val_133 -175 val_175 -189 val_189 -454 val_454 -375 val_375 -401 val_401 -421 val_421 -407 val_407 -384 val_384 -256 val_256 -26 val_26 -134 val_134 -67 val_67 -384 val_384 -379 val_379 -18 val_18 462 val_462 +463 val_463 +463 val_463 +466 val_466 +466 val_466 +466 val_466 +467 val_467 +468 val_468 +468 val_468 +468 val_468 +468 val_468 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +469 val_469 +47 val_47 +470 val_470 +472 val_472 +475 val_475 +477 val_477 +478 val_478 +478 val_478 +479 val_479 +480 val_480 +480 val_480 +480 val_480 +481 val_481 +482 val_482 +483 val_483 +484 val_484 +485 val_485 +487 val_487 +489 val_489 +489 val_489 +489 val_489 +489 val_489 +490 val_490 +491 val_491 492 val_492 -100 val_100 -298 val_298 -9 val_9 -341 val_341 +492 val_492 +493 val_493 +494 val_494 +495 val_495 +496 val_496 +497 val_497 498 val_498 -146 val_146 -458 val_458 -362 val_362 -186 val_186 -285 val_285 -348 val_348 -167 val_167 -18 val_18 -273 val_273 -183 val_183 -281 val_281 -344 val_344 -97 val_97 -469 val_469 -315 val_315 +498 val_498 +498 val_498 +5 val_5 +5 val_5 +5 val_5 +51 val_51 +51 val_51 +53 val_53 +54 val_54 +57 val_57 +58 val_58 +58 val_58 +64 val_64 +65 val_65 +66 val_66 +67 val_67 +67 val_67 +69 val_69 +70 val_70 +70 val_70 +70 val_70 +72 val_72 +72 val_72 +74 val_74 +76 val_76 +76 val_76 +77 val_77 +78 val_78 +8 val_8 +80 val_80 +82 val_82 +83 val_83 +83 val_83 84 val_84 -28 val_28 -37 val_37 -448 val_448 -152 val_152 -348 val_348 -307 val_307 -194 val_194 -414 val_414 -477 val_477 -222 val_222 -126 val_126 +84 val_84 +85 val_85 +86 val_86 +87 val_87 +9 val_9 90 val_90 -169 val_169 -403 val_403 -400 val_400 -200 val_200 +90 val_90 +90 val_90 +92 val_92 +95 val_95 +95 val_95 +96 val_96 97 val_97 +97 val_97 +98 val_98 +98 val_98