Skip to content

Commit 6872b98

Browse files
committed
[inner-2030] fix the bug with the schema name
(cherry picked from commit c453d8b)
1 parent efe7127 commit 6872b98

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/main/java/com/actiontech/dble/route/parser/druid/impl/DruidSelectParser.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,9 @@ private Set<SQLSelectItem> groupColumnPushSelectList(List<SQLExpr> groupByItemLi
475475
}
476476

477477
private boolean hasColumnOrAlia(String columnName, List<SQLSelectItem> selectColumns) {
478-
return selectColumns.stream().anyMatch(s -> (s.getAlias() != null && StringUtil.removeBackQuote(s.getAlias()).equalsIgnoreCase(columnName)) || StringUtil.removeBackQuote(s.getExpr().toString()).equalsIgnoreCase(columnName));
478+
return selectColumns.stream().anyMatch(s -> (s.getAlias() != null && StringUtil.removeBackQuote(s.getAlias()).equalsIgnoreCase(columnName)) ||
479+
((s.getExpr() instanceof SQLPropertyExpr) && StringUtil.removeBackQuote(((SQLPropertyExpr) s.getExpr()).getSimpleName()).equalsIgnoreCase(columnName)) ||
480+
StringUtil.removeBackQuote(s.getExpr().toString()).equalsIgnoreCase(columnName));
479481
}
480482

481483
private boolean hasShardingColumn(BaseTableConfig tc, String columnName) {
@@ -571,9 +573,11 @@ private void parseAggGroupCommon(ShardingService service, SchemaConfig schema, S
571573
mysqlSelectQuery, rrs, service.getCharset().getResultsIndex());
572574

573575
if (isDistinct) {
574-
rrs.changeNodeSqlAfterAddLimit(statementToString(stmt), 0, -1);
576+
String sql = RouterUtil.removeSchema(statementToString(stmt), schema.getName());
577+
rrs.changeNodeSqlAfterAddLimit(sql, 0, -1);
575578
} else if (isGroupByColPushSelectList) {
576-
rrs.changeNodeSqlAfterAddLimit(statementToString(stmt), rrs.getLimitStart(), rrs.getLimitSize());
579+
String sql = RouterUtil.removeSchema(statementToString(stmt), schema.getName());
580+
rrs.changeNodeSqlAfterAddLimit(sql, rrs.getLimitStart(), rrs.getLimitSize());
577581
}
578582
}
579583

@@ -614,13 +618,17 @@ private LinkedList<Item> handleSelectItems(List<SQLSelectItem> selectList, Route
614618
String tName;
615619
String cName;
616620
if (sel.getExpr() instanceof SQLPropertyExpr) {
617-
SQLPropertyExpr seli = (SQLPropertyExpr) sel.getExpr();
618621
if (sel.getAlias() != null) {
619622
tName = tableName;
620623
cName = sel.getAlias();
621624
} else {
622-
tName = seli.getOwner().toString();
623-
cName = seli.getName();
625+
SQLPropertyExpr seli = (SQLPropertyExpr) sel.getExpr();
626+
if (seli.getOwner() instanceof SQLPropertyExpr) {
627+
tName = ((SQLPropertyExpr) seli.getOwner()).getSimpleName();
628+
} else {
629+
tName = seli.getOwner().toString();
630+
}
631+
cName = seli.getSimpleName();
624632
}
625633
} else {
626634
tName = tableName;
@@ -680,7 +688,7 @@ private String[] buildGroupByCols(List<SQLExpr> groupByItems, Map<String, String
680688
* eg:select id from (select h.id from hotnews h union
681689
* select h.title from hotnews h ) as t1 group by t1.id;
682690
*/
683-
column = sqlExpr.toString();
691+
column = ((SQLPropertyExpr) sqlExpr).getSimpleName();
684692
}
685693
if (column == null) {
686694
column = sqlExpr.toString();

0 commit comments

Comments
 (0)