diff options
author | Volodymyr Vysotskyi <vvovyk@gmail.com> | 2019-01-10 20:47:08 +0200 |
---|---|---|
committer | Vitalii Diravka <vitalii.diravka@gmail.com> | 2019-01-18 17:52:02 +0200 |
commit | 95d91f40c5991720b6f9d1cd2147edf58c8b136f (patch) | |
tree | f2833333bf340d1ae301c06ccb93428219af51cc /contrib/storage-hive | |
parent | da7cb4e2fc67393f0ef26b0a03954ad139fdf7f9 (diff) |
DRILL-6969: Fix inconsistency of reading MaprDB JSON tables using hive plugin when native reader is enabled
closes #1610
Diffstat (limited to 'contrib/storage-hive')
-rw-r--r-- | contrib/storage-hive/core/scrMapr/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/contrib/storage-hive/core/scrMapr/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java b/contrib/storage-hive/core/scrMapr/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java index b8c267589..7aca59d58 100644 --- a/contrib/storage-hive/core/scrMapr/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java +++ b/contrib/storage-hive/core/scrMapr/main/java/org/apache/drill/exec/planner/sql/logical/ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan.java @@ -23,8 +23,11 @@ import org.apache.calcite.rel.type.RelDataTypeFactory; import org.apache.calcite.rel.type.RelDataTypeField; import org.apache.drill.common.exceptions.DrillRuntimeException; import org.apache.drill.common.expression.SchemaPath; +import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.planner.logical.DrillScanRel; import org.apache.drill.exec.planner.logical.RelOptHelper; +import org.apache.drill.exec.planner.physical.PlannerSettings; +import org.apache.drill.exec.planner.physical.PrelUtil; import org.apache.drill.exec.store.StoragePluginOptimizerRule; import org.apache.drill.exec.store.hive.HiveMetadataProvider; import org.apache.drill.exec.store.hive.HiveReadEntry; @@ -75,6 +78,7 @@ public class ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan extends StoragePlugi public void onMatch(RelOptRuleCall call) { try { DrillScanRel hiveScanRel = call.rel(0); + PlannerSettings settings = PrelUtil.getPlannerSettings(call.getPlanner()); HiveScan hiveScan = (HiveScan) hiveScanRel.getGroupScan(); HiveReadEntry hiveReadEntry = hiveScan.getHiveReadEntry(); @@ -90,7 +94,7 @@ public class ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan extends StoragePlugi "partitions"); } - DrillScanRel nativeScanRel = createNativeScanRel(hiveScanRel); + DrillScanRel nativeScanRel = createNativeScanRel(hiveScanRel, settings); call.transformTo(nativeScanRel); /* @@ -110,7 +114,7 @@ public class ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan extends StoragePlugi /** * Helper method which creates a DrillScanRel with native Drill HiveScan. */ - private DrillScanRel createNativeScanRel(final DrillScanRel hiveScanRel) { + private DrillScanRel createNativeScanRel(DrillScanRel hiveScanRel, PlannerSettings settings) { RelDataTypeFactory typeFactory = hiveScanRel.getCluster().getTypeFactory(); HiveScan hiveScan = (HiveScan) hiveScanRel.getGroupScan(); Map<String, String> parameters = hiveScan.getHiveReadEntry().getHiveTableWrapper().getParameters(); @@ -129,6 +133,9 @@ public class ConvertHiveMapRDBJsonScanToDrillMapRDBJsonScan extends StoragePlugi hiveScanCols ); + nativeMapRDBScan.getFormatPlugin().getConfig().readTimestampWithZoneOffset = + settings.getOptions().getBoolean(ExecConstants.HIVE_READ_MAPRDB_JSON_TIMESTAMP_WITH_TIMEZONE_OFFSET); + List<String> nativeScanColNames = hiveScanRel.getRowType().getFieldList().stream() .map(field -> replaceOverriddenColumnId(parameters, field.getName())) .collect(Collectors.toList()); |