diff --git a/fe/src/com/baidu/palo/analysis/Analyzer.java b/fe/src/com/baidu/palo/analysis/Analyzer.java index 5b071819b87f99..ba2126d855b9c6 100644 --- a/fe/src/com/baidu/palo/analysis/Analyzer.java +++ b/fe/src/com/baidu/palo/analysis/Analyzer.java @@ -24,6 +24,7 @@ import com.baidu.palo.catalog.Catalog; import com.baidu.palo.catalog.Column; import com.baidu.palo.catalog.Database; +import com.baidu.palo.catalog.InfoSchemaDb; import com.baidu.palo.catalog.Table; import com.baidu.palo.cluster.ClusterNamespace; import com.baidu.palo.catalog.Type; @@ -525,6 +526,10 @@ public SlotDescriptor registerColumnRef(TableName tblName, String colName) throw if (tblName == null) { d = resolveColumnRef(colName); } else { + if (InfoSchemaDb.isInfoSchemaDb(tblName.getDb()) || + (tblName.getDb() == null && InfoSchemaDb.isInfoSchemaDb(getDefaultDb()))) { + tblName = new TableName(tblName.getDb(), tblName.getTbl().toLowerCase()); + } d = resolveColumnRef(tblName, colName); } if (d == null && hasAncestors() && isSubquery) { diff --git a/fe/src/com/baidu/palo/analysis/ExprSubstitutionMap.java b/fe/src/com/baidu/palo/analysis/ExprSubstitutionMap.java index 1a5c6c131a9359..f74f2f7d94b606 100644 --- a/fe/src/com/baidu/palo/analysis/ExprSubstitutionMap.java +++ b/fe/src/com/baidu/palo/analysis/ExprSubstitutionMap.java @@ -49,9 +49,9 @@ public ExprSubstitutionMap() { } // Only used to convert show statement to select statement - public ExprSubstitutionMap(boolean check_analyzed) { + public ExprSubstitutionMap(boolean checkAnalyzed) { this(Lists.newArrayList(), Lists.newArrayList()); - this.checkAnalyzed_ = false; + this.checkAnalyzed_ = checkAnalyzed; } public ExprSubstitutionMap(List lhs, List rhs) { diff --git a/fe/src/com/baidu/palo/analysis/ShowVariablesStmt.java b/fe/src/com/baidu/palo/analysis/ShowVariablesStmt.java index 2fd85be6cd1984..9341077acb3d5a 100644 --- a/fe/src/com/baidu/palo/analysis/ShowVariablesStmt.java +++ b/fe/src/com/baidu/palo/analysis/ShowVariablesStmt.java @@ -82,7 +82,7 @@ public SelectStmt toSelectStmt(Analyzer analyzer) { analyze(analyzer); // Columns SelectList selectList = new SelectList(); - ExprSubstitutionMap aliasMap = new ExprSubstitutionMap(); + ExprSubstitutionMap aliasMap = new ExprSubstitutionMap(false); TableName tableName = null; if (type == SetType.GLOBAL) { tableName = new TableName(InfoSchemaDb.getDatabaseName(), "GLOBAL_VARIABLES"); diff --git a/fe/src/com/baidu/palo/catalog/InfoSchemaDb.java b/fe/src/com/baidu/palo/catalog/InfoSchemaDb.java index 24a2f0c31c4a55..a06c4dfc414dd4 100644 --- a/fe/src/com/baidu/palo/catalog/InfoSchemaDb.java +++ b/fe/src/com/baidu/palo/catalog/InfoSchemaDb.java @@ -90,4 +90,15 @@ public Table getTable(String name) { public static String getFullInfoSchemaDbName(String cluster) { return ClusterNamespace.getDbFullName(cluster, DATABASE_NAME); } + + public static boolean isInfoSchemaDb(String dbName) { + if (dbName == null) { + return false; + } + String[] ele = dbName.split(ClusterNamespace.CLUSTER_DELIMITER); + if (ele.length == 2) { + dbName = ele[1]; + } + return DATABASE_NAME.equalsIgnoreCase(dbName); + } }