diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java index 2cb0935..b434cfa 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java @@ -218,6 +218,17 @@ public void setNeededColumns(List neededColumns) { return neededColumns; } + @Explain(displayName = "Pruned Column Paths") + public List getPrunedColumnPaths() { + List result = new ArrayList<>(); + for (String p : neededNestedColumnPaths) { + if (p.indexOf('.') >= 0) { + result.add(p); + } + } + return result; + } + public void setReferencedColumns(List referencedColumns) { this.referencedColumns = referencedColumns; } diff --git a/ql/src/test/results/clientpositive/case_sensitivity.q.out b/ql/src/test/results/clientpositive/case_sensitivity.q.out index b3969cc..1952c8a 100644 --- a/ql/src/test/results/clientpositive/case_sensitivity.q.out +++ b/ql/src/test/results/clientpositive/case_sensitivity.q.out @@ -30,6 +30,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: src_thrift + Pruned Column Paths: lintstring.mystring Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (lint[0] > 0) (type: boolean) diff --git a/ql/src/test/results/clientpositive/input_testxpath.q.out b/ql/src/test/results/clientpositive/input_testxpath.q.out index e07628a..422a936 100644 --- a/ql/src/test/results/clientpositive/input_testxpath.q.out +++ b/ql/src/test/results/clientpositive/input_testxpath.q.out @@ -30,6 +30,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: src_thrift + Pruned Column Paths: lintstring.mystring Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: lint[1] (type: int), lintstring[0].mystring (type: string), mstringstring['key_2'] (type: string) diff --git a/ql/src/test/results/clientpositive/input_testxpath3.q.out b/ql/src/test/results/clientpositive/input_testxpath3.q.out index 5779bfd..2fe5c61 100644 --- a/ql/src/test/results/clientpositive/input_testxpath3.q.out +++ b/ql/src/test/results/clientpositive/input_testxpath3.q.out @@ -16,6 +16,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: src_thrift + Pruned Column Paths: lintstring.myint Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: mstringstring['key_9'] (type: string), lintstring.myint (type: array) diff --git a/ql/src/test/results/clientpositive/nested_column_pruning.q.out b/ql/src/test/results/clientpositive/nested_column_pruning.q.out index f01e3ea..c501c6a 100644 --- a/ql/src/test/results/clientpositive/nested_column_pruning.q.out +++ b/ql/src/test/results/clientpositive/nested_column_pruning.q.out @@ -153,6 +153,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f1 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f1 (type: boolean) @@ -195,6 +196,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f1, s1.f2 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f1 (type: boolean), s1.f2 (type: string) @@ -239,6 +241,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f3 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f3 (type: struct), s1.f3.f4 (type: int) @@ -283,6 +286,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f3.f5 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f3.f5 (type: double) @@ -327,6 +331,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f3.f4, s2.f8.f9 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f3.f4 (type: int), s2.f8.f9 (type: boolean) @@ -373,6 +378,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f2, s1.f1 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (s1.f1 = false) (type: boolean) @@ -418,6 +424,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f3.f5, s1.f3.f4 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (s1.f3.f4 = 4) (type: boolean) @@ -463,6 +470,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f2, s2.f8 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: ((s1.f2 = 'foo') and (size(s2.f8.f10) > 1) and s2.f8.f11['key1']) (type: boolean) @@ -516,6 +524,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s2.f8.f10 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Lateral View Forward Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE @@ -657,6 +666,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s2.f8.f10, s1.f3.f4 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (s2.f8.f10[1] pmod s1.f3.f4) (type: int) @@ -703,6 +713,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f3.f5, s1.f3.f4 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f3.f5 (type: double), s1.f3.f4 (type: int) @@ -764,6 +775,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f3 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f3 (type: struct), s1.f3.f4 (type: int) @@ -826,6 +838,7 @@ STAGE PLANS: Map Operator Tree: TableScan alias: nested_tbl_1 + Pruned Column Paths: s1.f3 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: s1.f3 (type: struct), s1.f3.f4 (type: int) diff --git a/ql/src/test/results/clientpositive/udf_coalesce.q.out b/ql/src/test/results/clientpositive/udf_coalesce.q.out index 361d173..dc3d9df 100644 --- a/ql/src/test/results/clientpositive/udf_coalesce.q.out +++ b/ql/src/test/results/clientpositive/udf_coalesce.q.out @@ -140,6 +140,7 @@ STAGE PLANS: Processor Tree: TableScan alias: src_thrift + Pruned Column Paths: lintstring.mystring Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: COALESCE(lint[1],999) (type: int), COALESCE(lintstring[0].mystring,'999') (type: string), COALESCE(mstringstring['key_2'],'999') (type: string)