diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java index 74b595a..88116c0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java @@ -48,6 +48,11 @@ public ColumnAccessInfo analyzeColumnAccess() throws SemanticException { for (int i : op.getNeededColumnIDs()) { columnAccessInfo.add(tableName, tableCols.get(i).getName()); } + if (table.isPartitioned()) { + for (FieldSchema partKey : table.getPartitionKeys()) { + columnAccessInfo.add(tableName, partKey.getName()); + } + } } return columnAccessInfo; } diff --git ql/src/test/queries/clientpositive/column_access_stats.q ql/src/test/queries/clientpositive/column_access_stats.q index fbf8bba..4f43403 100644 --- ql/src/test/queries/clientpositive/column_access_stats.q +++ ql/src/test/queries/clientpositive/column_access_stats.q @@ -160,3 +160,8 @@ FROM JOIN T3 ON T3.key = T4.key ORDER BY T3.key, T4.key; + +-- for partitioned table +SELECT * FROM srcpart TABLESAMPLE (10 ROWS); +SELECT key,ds FROM srcpart TABLESAMPLE (10 ROWS) WHERE hr='11'; +SELECT value FROM srcpart TABLESAMPLE (10 ROWS) WHERE ds='2008-04-08'; diff --git ql/src/test/results/clientpositive/column_access_stats.q.out ql/src/test/results/clientpositive/column_access_stats.q.out index 7eee4ba..f96cf47 100644 --- ql/src/test/results/clientpositive/column_access_stats.q.out +++ ql/src/test/results/clientpositive/column_access_stats.q.out @@ -58,21 +58,21 @@ PREHOOK: type: QUERY PREHOOK: Input: default@t4 #### A masked pattern was here #### Table:default@t4 -Columns:key,val +Columns:key,p,val PREHOOK: query: SELECT val FROM T4 where p=1 PREHOOK: type: QUERY PREHOOK: Input: default@t4 #### A masked pattern was here #### Table:default@t4 -Columns:val +Columns:p,val PREHOOK: query: SELECT p, val FROM T4 where p=1 PREHOOK: type: QUERY PREHOOK: Input: default@t4 #### A masked pattern was here #### Table:default@t4 -Columns:val +Columns:p,val PREHOOK: query: -- More complicated select queries EXPLAIN SELECT key FROM (SELECT key, val FROM T1) subq1 ORDER BY key @@ -934,3 +934,63 @@ Columns:key,val 7 7 17.0 8 8 46.0 8 8 46.0 +PREHOOK: query: -- for partitioned table +SELECT * FROM srcpart TABLESAMPLE (10 ROWS) +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12 +#### A masked pattern was here #### +Table:default@srcpart +Columns:ds,hr,key,value + +238 val_238 2008-04-08 11 +86 val_86 2008-04-08 11 +311 val_311 2008-04-08 11 +27 val_27 2008-04-08 11 +165 val_165 2008-04-08 11 +409 val_409 2008-04-08 11 +255 val_255 2008-04-08 11 +278 val_278 2008-04-08 11 +98 val_98 2008-04-08 11 +484 val_484 2008-04-08 11 +PREHOOK: query: SELECT key,ds FROM srcpart TABLESAMPLE (10 ROWS) WHERE hr='11' +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11 +#### A masked pattern was here #### +Table:default@srcpart +Columns:ds,hr,key + +238 2008-04-08 +86 2008-04-08 +311 2008-04-08 +27 2008-04-08 +165 2008-04-08 +409 2008-04-08 +255 2008-04-08 +278 2008-04-08 +98 2008-04-08 +484 2008-04-08 +PREHOOK: query: SELECT value FROM srcpart TABLESAMPLE (10 ROWS) WHERE ds='2008-04-08' +PREHOOK: type: QUERY +PREHOOK: Input: default@srcpart +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11 +PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12 +#### A masked pattern was here #### +Table:default@srcpart +Columns:ds,hr,value + +val_238 +val_86 +val_311 +val_27 +val_165 +val_409 +val_255 +val_278 +val_98 +val_484