Skip to content

Commit

Permalink
91 where is dropped from the query (#94)
Browse files Browse the repository at this point in the history
* fixed alias and other patterns

* updated default regexp

* updated default regexp

* fixed where patterns

---------

Co-authored-by: pvranik <[email protected]>
  • Loading branch information
konikvranik and pvranik authored Nov 21, 2023
1 parent 4a7df0e commit fdf94aa
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 14 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
version=0.2.2
version=0.2.4
group=net.suteren.jdbc.influxdb
10 changes: 5 additions & 5 deletions src/main/java/net/suteren/jdbc/influxdb/InfluxDbConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ public class InfluxDbConnection implements Connection {
private static final Pattern KEEP_ALIVE_SQL_PATTERN =
Pattern.compile("\\s*SELECT\\s+['\"]keep\\s+alive['\"]\\s*.*", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
private static final Pattern TABLE_ALIASES_SQL_PATTERN =
Pattern.compile("\\s*SELECT\\s+(\\S+)\\s+FROM\\s+(\\S+)\\s+as\\s+(['\"]?)(\\S+)\\3(\\s.*)",
Pattern.compile("\\s*SELECT\\s+(\\S+)\\s+FROM\\s+(\\S+)\\s+(?!where)(?:as\\s+)?((['\"]?)(\\S+)\\4)(.*)",
Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

private static final Pattern TABLE_SCHEMA_SQL_PATTERN =
Pattern.compile("\\s*SELECT\\s+(\\S+)\\s+FROM\\s+(\\S+)\\.(\\S+(?:\\s.*)?)",
Pattern.compile("\\s*SELECT\\s+(\\S+)\\s+FROM\\s+(([\"']?)\\S+\\3)\\.(([\"']?)\\S+\\5(?:\\s.*)?)",
Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

private static final Pattern DEFAULT_SCHEMA_PATTERN =
Expand Down Expand Up @@ -80,14 +80,14 @@ public InfluxDbConnection(String url, String username, String password, String d
}
Matcher matcher = TABLE_ALIASES_SQL_PATTERN.matcher(sql);
if (matcher.matches()) {
String alias = matcher.group(4);
sql = matcher.replaceFirst("SELECT $1 FROM $2$5")
String alias = matcher.group(5);
sql = matcher.replaceFirst("SELECT $1 FROM $2$6")
.replaceAll(String.format("\\s+%s\\.", alias), " ")
.replaceAll(String.format("\\s+\"%s\"\\.", alias), " ");
}
matcher = TABLE_SCHEMA_SQL_PATTERN.matcher(sql);
if (matcher.matches()) {
sql = matcher.replaceFirst("SELECT $1 FROM $3");
sql = matcher.replaceFirst("SELECT $1 FROM $4");
}

if (DEFAULT_SCHEMA_PATTERN.matcher(sql).matches()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ public void setUp() {

public static Stream<Arguments> sqlSamples() {
return Stream.of(
Arguments.arguments("SELECT * from measure", "SELECT * from measure"),
Arguments.arguments("SELECT * from \"measure\"", "SELECT * from \"measure\""),
Arguments.arguments("SELECT * from \\\"measure\\\"", "SELECT * from \\\"measure\\\""),
Arguments.arguments("SELECT * from \\\"measure\\\"", "SELECT * from \"\"measure\"\""),
Arguments.arguments("SELECT * from \"\\\"measure\\\"\"", "SELECT * from \"\"\"measure\"\"\""),
Arguments.arguments("SELECT * FROM measure", "SELECT * from test.measure"),
Arguments.arguments("SELECT * FROM jmeter where timestamp > now() - \"1 day\"", "select * from jmeter.jmeter where timestamp > now() - \"1 day\"")

Arguments.arguments("select * from measure", "select * from measure"),
Arguments.arguments("select * from \"measure\"", "select * from \"measure\""),
Arguments.arguments("select * from \\\"measure\\\"", "select * from \\\"measure\\\""),
Arguments.arguments("select * from \\\"measure\\\"", "select * from \"\"measure\"\""),
Arguments.arguments("select * from \"\\\"measure\\\"\"", "select * from \"\"\"measure\"\"\""),
Arguments.arguments("SELECT * FROM measure", "select * from test.measure"),
Arguments.arguments("SELECT * FROM jmeter where timestamp > now() - \"1 day\"", "select * from jmeter.jmeter where timestamp > now() - \"1 day\""),
Arguments.arguments("SELECT * FROM jmeter\nwhere timestamp > now() - \"2 days\"",
"select t.*\nfrom jmeter.jmeter t\nwhere timestamp > now() - \"2 days\""),
Arguments.arguments("SELECT * FROM jmeter","select t.*\nfrom jmeter.jmeter t")
);
}

Expand Down

0 comments on commit fdf94aa

Please sign in to comment.