diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 3bbf420..696fce0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -13580,6 +13580,22 @@ private RelNode genLogicalPlan(QB qb) throws SemanticException { aliasToRel.put(tableAlias, op); } + + if (aliasToRel.isEmpty()) { + //// This may happen for queries like select 1; (no source table) + // We can do following which is same, as what Hive does. + // With this, we will be able to generate Optiq plan. + // qb.getMetaData().setSrcForAlias(DUMMY_TABLE, getDummyTable()); + // RelNode op = genTableLogicalPlan(DUMMY_TABLE, qb); + // qb.addAlias(DUMMY_TABLE); + // qb.setTabAlias(DUMMY_TABLE, DUMMY_TABLE); + // aliasToRel.put(DUMMY_TABLE, op); + // However, Hive trips later while trying to get Metadata for this dummy table + // So, for now lets just disable this. Anyway there is nothing much to + // optimize in such cases. + throw new OptiqSemanticException("Unsupported"); + + } // 1.3 process join if (qb.getParseInfo().getJoinExpr() != null) { srcRel = genJoinLogicalPlan(qb.getParseInfo().getJoinExpr(), aliasToRel);