diff --git ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java index 3eadc26a75..bea3f89aa0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSplit.java @@ -273,38 +273,18 @@ public long getColumnarProjectionSize() { @Override public boolean canUseLlapIo(Configuration conf) { - final boolean hasDelta = deltas != null && !deltas.isEmpty(); - final boolean isAcidRead = AcidUtils.isFullAcidScan(conf); - final boolean isVectorized = Utilities.getIsVectorized(conf); - Boolean isSplitUpdate = null; - if (isAcidRead) { - final AcidUtils.AcidOperationalProperties acidOperationalProperties - = AcidUtils.getAcidOperationalProperties(conf); - isSplitUpdate = acidOperationalProperties.isSplitUpdate(); - // TODO: this is brittle. Who said everyone has to upgrade using upgrade process? - assert isSplitUpdate : "should be true in Hive 3.0"; - } - - if (isOriginal) { - if (!isAcidRead && !hasDelta) { - // Original scan only - return true; + if (AcidUtils.isFullAcidScan(conf)) { + if (HiveConf.getBoolVar(conf, ConfVars.LLAP_IO_ACID_ENABLED) && + HiveConf.getBoolVar(conf, ConfVars.HIVE_VECTORIZATION_ENABLED)) + { + boolean hasDeleteDelta = deltas != null && !deltas.isEmpty(); + return VectorizedOrcAcidRowBatchReader.canUseLlapForAcid(this, hasDeleteDelta, conf); + } else { + return false; } } else { - boolean isAcidEnabled = HiveConf.getBoolVar(conf, ConfVars.LLAP_IO_ACID_ENABLED); - if (isAcidEnabled && isAcidRead && hasBase && isVectorized) { - if (hasDelta) { - if (isSplitUpdate) { - // Base with delete deltas - return true; - } - } else { - // Base scan only - return true; - } - } + return true; } - return false; } /**