diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 8d44907..53f31f6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -976,15 +976,17 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { } if (tab.isView()) { + String fullViewName = tab.getDbName()+"."+tab.getTableName(); // TODO: add support to referencing views in foreign databases. if (!tab.getDbName().equals(db.getCurrentDatabase())) { throw new SemanticException(ErrorMsg.INVALID_TABLE_ALIAS. - getMsg("Referencing view from foreign databases is not supported.")); + getMsg("Referencing view " + fullViewName + " from foreign " + + "databases is not supported.")); } if (qb.getParseInfo().isAnalyzeCommand()) { throw new SemanticException(ErrorMsg.ANALYZE_VIEW.getMsg()); } - String fullViewName = tab.getDbName()+"."+tab.getTableName(); + // Prevent view cycles if(viewsExpanded.contains(fullViewName)){ throw new SemanticException("Recursive view " + fullViewName +