diff --git a/fe/src/com/baidu/palo/analysis/Analyzer.java b/fe/src/com/baidu/palo/analysis/Analyzer.java index 5b071819b8..ba2126d855 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.AccessPrivilege; 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 class Analyzer { 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 1a5c6c131a..f74f2f7d94 100644 --- a/fe/src/com/baidu/palo/analysis/ExprSubstitutionMap.java +++ b/fe/src/com/baidu/palo/analysis/ExprSubstitutionMap.java @@ -49,9 +49,9 @@ public final class 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 2fd85be6cd..9341077acb 100644 --- a/fe/src/com/baidu/palo/analysis/ShowVariablesStmt.java +++ b/fe/src/com/baidu/palo/analysis/ShowVariablesStmt.java @@ -82,7 +82,7 @@ public class ShowVariablesStmt extends ShowStmt { 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 24a2f0c31c..a06c4dfc41 100644 --- a/fe/src/com/baidu/palo/catalog/InfoSchemaDb.java +++ b/fe/src/com/baidu/palo/catalog/InfoSchemaDb.java @@ -90,4 +90,15 @@ public class InfoSchemaDb extends Database { 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); + } }