Skip to content

Commit b0eea78

Browse files
committed
Enhance the parser so that it can deal with test cases from ClickHouse repo
1 parent 6f618bf commit b0eea78

5 files changed

Lines changed: 254 additions & 56 deletions

File tree

src/main/java/ru/yandex/clickhouse/ClickHouseStatementImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.EnumMap;
1414
import java.util.HashMap;
1515
import java.util.List;
16+
import java.util.Locale;
1617
import java.util.Map;
1718
import java.util.TimeZone;
1819
import java.util.UUID;
@@ -584,7 +585,7 @@ private String extractDBAndTableName(String sql) {
584585
private boolean extractWithTotals(String sql) {
585586
if (Utils.startsWithIgnoreCase(sql, "select")) {
586587
String withoutStrings = Utils.retainUnquoted(sql, '\'');
587-
return withoutStrings.toLowerCase().contains(" with totals");
588+
return withoutStrings.toLowerCase(Locale.ROOT).contains(" with totals");
588589
}
589590
return false;
590591
}

src/main/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlStatement.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.Collections;
44
import java.util.HashMap;
55
import java.util.List;
6+
import java.util.Locale;
67
import java.util.Map;
78
import java.util.Map.Entry;
89

@@ -52,7 +53,7 @@ public ClickHouseSqlStatement(String sql, StatementType stmtType, String cluster
5253
Integer position = e.getValue();
5354

5455
if (keyword != null && position != null) {
55-
p.put(keyword.toUpperCase(), position);
56+
p.put(keyword.toUpperCase(Locale.ROOT), position);
5657
}
5758
}
5859
this.positions = Collections.unmodifiableMap(p);
@@ -145,7 +146,7 @@ public int getStartPosition(String keyword) {
145146
int position = -1;
146147

147148
if (!this.positions.isEmpty() && keyword != null) {
148-
Integer p = this.positions.get(keyword.toUpperCase());
149+
Integer p = this.positions.get(keyword.toUpperCase(Locale.ROOT));
149150
if (p != null) {
150151
position = p.intValue();
151152
}

0 commit comments

Comments
 (0)