Repository: drill Updated Branches: refs/heads/master ca53c2440 -> af98e93f0
DRILL-4323: Handle skipAll query when use HiveDrillNativeParquetScan Do not add Project when no column is needed to be read out from Scan (e.g., select count(*) from hive.table) Project: http://git-wip-us.apache.org/repos/asf/drill/repo Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/af98e93f Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/af98e93f Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/af98e93f Branch: refs/heads/master Commit: af98e93f09f13e82881637a68f40bbb0bc92586c Parents: ca53c24 Author: Hsuan-Yi Chu <hsua...@usc.edu> Authored: Fri Jan 29 13:20:12 2016 -0800 Committer: Jinfeng Ni <j...@apache.org> Committed: Thu Feb 4 21:11:21 2016 -0800 ---------------------------------------------------------------------- .../ConvertHiveParquetScanToDrillParquetScan.java | 9 ++++++--- .../org/apache/drill/exec/hive/TestHiveStorage.java | 9 ++++++++- .../exec/hive/TestInfoSchemaOnHiveStorage.java | 1 + .../exec/store/hive/HiveTestDataGenerator.java | 16 ++++++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/drill/blob/af98e93f/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveParquetScanToDrillParquetScan.java ---------------------------------------------------------------------- diff --git a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveParquetScanToDrillParquetScan.java b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveParquetScanToDrillParquetScan.java index a1933be..97a5b98 100644 --- a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveParquetScanToDrillParquetScan.java +++ b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveParquetScanToDrillParquetScan.java @@ -177,9 +177,12 @@ public class ConvertHiveParquetScanToDrillParquetScan extends StoragePluginOptim getPartitionColMapping(hiveTable, partitionColumnLabel); final DrillScanRel nativeScanRel = createNativeScanRel(partitionColMapping, hiveScanRel); - final DrillProjectRel projectRel = createProjectRel(hiveScanRel, partitionColMapping, nativeScanRel); - - call.transformTo(projectRel); + if(hiveScanRel.getRowType().getFieldCount() == 0) { + call.transformTo(nativeScanRel); + } else { + final DrillProjectRel projectRel = createProjectRel(hiveScanRel, partitionColMapping, nativeScanRel); + call.transformTo(projectRel); + } } catch (final Exception e) { logger.warn("Failed to convert HiveScan to HiveDrillNativeParquetScan", e); } http://git-wip-us.apache.org/repos/asf/drill/blob/af98e93f/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestHiveStorage.java ---------------------------------------------------------------------- diff --git a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestHiveStorage.java b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestHiveStorage.java index c2e367d..55de2d7 100644 --- a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestHiveStorage.java +++ b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestHiveStorage.java @@ -44,8 +44,15 @@ public class TestHiveStorage extends HiveTestBase { try { test(String.format("alter session set `%s` = true", ExecConstants.HIVE_OPTIMIZE_SCAN_WITH_NATIVE_READERS)); - String query = "SELECT count(*) FROM hive.readtest_parquet"; + String query = "SELECT count(*) as col FROM hive.countStar_Parquet"; testPhysicalPlan(query, "hive-drill-native-parquet-scan"); + + testBuilder() + .sqlQuery(query) + .unOrdered() + .baselineColumns("col") + .baselineValues(200l) + .go(); } finally { test(String.format("alter session set `%s` = %s", ExecConstants.HIVE_OPTIMIZE_SCAN_WITH_NATIVE_READERS, http://git-wip-us.apache.org/repos/asf/drill/blob/af98e93f/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestInfoSchemaOnHiveStorage.java ---------------------------------------------------------------------- diff --git a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestInfoSchemaOnHiveStorage.java b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestInfoSchemaOnHiveStorage.java index 9352ce0..f9fc0ac 100644 --- a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestInfoSchemaOnHiveStorage.java +++ b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/hive/TestInfoSchemaOnHiveStorage.java @@ -41,6 +41,7 @@ public class TestInfoSchemaOnHiveStorage extends HiveTestBase { .baselineValues("hive.default", "kv") .baselineValues("hive.default", "kv_parquet") .baselineValues("hive.default", "kv_sh") + .baselineValues("hive.default", "countstar_parquet") .go(); testBuilder() http://git-wip-us.apache.org/repos/asf/drill/blob/af98e93f/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/HiveTestDataGenerator.java ---------------------------------------------------------------------- diff --git a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/HiveTestDataGenerator.java b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/HiveTestDataGenerator.java index f42e8d7..b38290b 100644 --- a/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/HiveTestDataGenerator.java +++ b/contrib/storage-hive/core/src/test/java/org/apache/drill/exec/store/hive/HiveTestDataGenerator.java @@ -440,6 +440,22 @@ public class HiveTestDataGenerator { executeQuery(hiveDriver, "INSERT INTO TABLE kv_parquet PARTITION(part1) SELECT key, value, key FROM default.kv"); executeQuery(hiveDriver, "ALTER TABLE kv_parquet ADD COLUMNS (newcol string)"); + executeQuery(hiveDriver, + "CREATE TABLE countStar_Parquet (int_field INT) STORED AS parquet"); + + final int numOfRows = 200; + final StringBuffer sb = new StringBuffer(); + sb.append("VALUES "); + for(int i = 0; i < numOfRows; ++i) { + if(i != 0) { + sb.append(","); + } + sb.append("(").append(i).append(")"); + } + + executeQuery(hiveDriver, "INSERT INTO TABLE countStar_Parquet \n" + + sb.toString()); + // Create a StorageHandler based table (DRILL-3739) executeQuery(hiveDriver, "CREATE TABLE kv_sh(key INT, value STRING) STORED BY " + "'org.apache.hadoop.hive.ql.metadata.DefaultStorageHandler'");