diff --git a/src/main/java/com/alibaba/druid/sql/repository/SchemaResolveVisitorFactory.java b/src/main/java/com/alibaba/druid/sql/repository/SchemaResolveVisitorFactory.java index 836747c736..1f3a0965dc 100644 --- a/src/main/java/com/alibaba/druid/sql/repository/SchemaResolveVisitorFactory.java +++ b/src/main/java/com/alibaba/druid/sql/repository/SchemaResolveVisitorFactory.java @@ -2218,18 +2218,30 @@ class SchemaResolveVisitorFactory { return; } + String alias = from.getAlias(); + SchemaObject table = repository.findTable((SQLExprTableSource) from); if (table != null) { SQLCreateTableStatement createTableStmt = (SQLCreateTableStatement) table.getStatement(); for (SQLTableElement e : createTableStmt.getTableElementList()) { if (e instanceof SQLColumnDefinition) { SQLColumnDefinition column = (SQLColumnDefinition) e; - SQLIdentifierExpr name = (SQLIdentifierExpr) column.getName().clone(); - name.setResolvedColumn(column); - columns.add(new SQLSelectItem(name)); + + if (alias != null) { + SQLPropertyExpr name = new SQLPropertyExpr(alias, column.getName().getSimpleName()); + name.setResolvedColumn(column); + columns.add(new SQLSelectItem(name)); + } else { + SQLIdentifierExpr name = (SQLIdentifierExpr) column.getName().clone(); + name.setResolvedColumn(column); + columns.add(new SQLSelectItem(name)); + } + + } } } + return; } if (from instanceof SQLJoinTableSource) { diff --git a/src/test/java/com/alibaba/druid/bvt/sql/repository/OracleJoinResolveTest_2_join.java b/src/test/java/com/alibaba/druid/bvt/sql/repository/OracleJoinResolveTest_2_join.java index 5631b16b6e..ee72b718c2 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/repository/OracleJoinResolveTest_2_join.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/repository/OracleJoinResolveTest_2_join.java @@ -21,14 +21,13 @@ public class OracleJoinResolveTest_2_join extends TestCase { } public void test_for_issue() throws Exception { - - String sql = "select a.* from t_user a inner join t_group b where a.uid = id"; - assertEquals("SELECT a.uid, a.gid, a.name, b.id, a.name\n" + + assertEquals("SELECT a.uid, a.gid, a.name, b.id, b.name\n" + "FROM t_user a\n" + "\tINNER JOIN t_group b\n" + "WHERE a.uid = b.id" , repository.resolve("select * from t_user a inner join t_group b where a.uid = id")); + String sql = "select a.* from t_user a inner join t_group b where a.uid = id"; List statementList = SQLUtils.parseStatements(sql, JdbcConstants.ORACLE); SchemaStatVisitor schemaStatVisitor = SQLUtils.createSchemaStatVisitor(JdbcConstants.ORACLE); schemaStatVisitor.setRepository(repository);