diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/DerivedTableInjector.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/DerivedTableInjector.java index e324b9c..f632d64 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/DerivedTableInjector.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/DerivedTableInjector.java @@ -138,7 +138,12 @@ private static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, // (limit)?(OB)?(ProjectRelBase).... List rootChildExps = originalProjRel.getChildExps(); if (resultSchema.size() != rootChildExps.size()) { - throw new RuntimeException("Result Schema didn't match Optiq Optimized Op Tree Schema"); + // this is a bug in Hive where for queries like select key,value,value + // convertRowSchemaToResultSetSchema() only returns schema containing key,value + // Underlying issue is much deeper because it seems like RowResolver itself doesnt have + // those mappings. see limit_pushdown.q & limit_pushdown_negative.q + // Till Hive issue is fixed, disable CBO for such queries. + throw new OptiqSemanticException("Result Schema didn't match Optiq Optimized Op Tree Schema"); } List newSelAliases = new ArrayList();