diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java index c8fa1b97dd..0789fea758 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java @@ -157,6 +157,8 @@ public void setValidWriteIdList(String writeIdStr) { LOG.debug("FetchOperator set writeIdStr: " + writeIdStr); } private void initialize() throws HiveException { + ensureCorrectSchemaEvolutionConfigs(job); + if (isStatReader) { outputOI = work.getStatRowOI(); return; @@ -316,6 +318,19 @@ static void setFetchOperatorContext(JobConf conf, List paths) { } } + private void ensureCorrectSchemaEvolutionConfigs(JobConf conf) { + boolean isSchemaEvolution = HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_SCHEMA_EVOLUTION); + boolean isForcePositionalEvolution = + HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_ORC_FORCE_POSITIONAL_SCHEMA_EVOLUTION); + + if (!isSchemaEvolution && isForcePositionalEvolution) { + LOG.warn( + "invalid schema evolution ({}) and force positional evolution ({}) combination, falling back to disabling both", + isSchemaEvolution, isForcePositionalEvolution); + HiveConf.setBoolVar(conf, HiveConf.ConfVars.HIVE_ORC_FORCE_POSITIONAL_SCHEMA_EVOLUTION, false); + } + } + private RecordReader getRecordReader() throws Exception { if (!iterSplits.hasNext()) { List splits = getNextSplits();