Skip to content

Commit 87c4219

Browse files
committed
Remove comments. Rework TLPHaving/TLPWhere via TLPBase. Move TLP oracles to separate module.
1 parent 85ebbd9 commit 87c4219

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+3836
-735
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ target/
33
.settings
44
.project
55
.checkstyle
6+
*.DS_Store

pom.xml

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -126,20 +126,20 @@
126126
<artifactId>maven-pmd-plugin</artifactId>
127127
<version>3.13.0</version>
128128
<executions>
129-
<execution>
130-
<id>pmd</id>
131-
<phase>verify</phase>
132-
<goals>
133-
<goal>check</goal>
134-
</goals>
135-
<configuration>
136-
<failurePriority>2</failurePriority>
137-
<failOnViolation>true</failOnViolation>
138-
<rulesets>
139-
<ruleset>configs/pmd-rules.xml</ruleset>
140-
</rulesets>
141-
</configuration>
142-
</execution>
129+
<execution>
130+
<id>pmd</id>
131+
<phase>verify</phase>
132+
<goals>
133+
<goal>check</goal>
134+
</goals>
135+
<configuration>
136+
<failurePriority>2</failurePriority>
137+
<failOnViolation>true</failOnViolation>
138+
<rulesets>
139+
<ruleset>configs/pmd-rules.xml</ruleset>
140+
</rulesets>
141+
</configuration>
142+
</execution>
143143
</executions>
144144
</plugin>
145145
<plugin>
@@ -200,8 +200,18 @@
200200
<version>5.6.2</version>
201201
<scope>test</scope>
202202
</dependency>
203+
<dependency>
204+
<groupId>org.slf4j</groupId>
205+
<artifactId> slf4j-simple</artifactId>
206+
<version>1.7.30</version>
207+
<scope>test</scope>
208+
</dependency>
209+
<dependency>
210+
<groupId>ru.yandex.clickhouse</groupId>
211+
<artifactId>clickhouse-jdbc</artifactId>
212+
<version>0.2.4</version>
213+
</dependency>
203214
</dependencies>
204-
205215
<reporting>
206216
<plugins>
207217
<plugin>

src/sqlancer/Main.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import com.beust.jcommander.JCommander;
2727
import com.beust.jcommander.JCommander.Builder;
2828

29-
import sqlancer.clickhouse.ClickhouseProvider;
29+
import sqlancer.clickhouse.ClickHouseProvider;
3030
import sqlancer.cockroachdb.CockroachDBProvider;
3131
import sqlancer.duckdb.DuckDBProvider;
3232
import sqlancer.mariadb.MariaDBProvider;
@@ -472,7 +472,7 @@ private void runThread(final String databaseName) {
472472
providers.add(new MariaDBProvider());
473473
providers.add(new TiDBProvider());
474474
providers.add(new PostgresProvider());
475-
providers.add(new ClickhouseProvider());
475+
providers.add(new ClickHouseProvider());
476476
providers.add(new DuckDBProvider());
477477
return providers;
478478
}

src/sqlancer/MainOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public int getNrStatementRetryCount() {
8080
}
8181

8282
public enum DBMS {
83-
MariaDB, SQLite3, MySQL, PostgreSQL, TDEngine, CockroachDB, TiDB
83+
MariaDB, SQLite3, MySQL, PostgreSQL, TDEngine, CockroachDB, TiDB, ClickHouse
8484
}
8585

8686
public String getUserName() {

src/sqlancer/StateToReproduce.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import java.util.List;
55
import java.util.Map;
66

7+
import sqlancer.clickhouse.ClickHouseSchema;
8+
import sqlancer.clickhouse.ast.ClickHouseConstant;
9+
import sqlancer.clickhouse.ast.ClickHouseExpression;
710
import sqlancer.mysql.MySQLSchema.MySQLColumn;
811
import sqlancer.mysql.ast.MySQLConstant;
912
import sqlancer.mysql.ast.MySQLExpression;
@@ -35,7 +38,6 @@ public class StateToReproduce {
3538

3639
public StateToReproduce(String databaseName) {
3740
this.databaseName = databaseName;
38-
3941
}
4042

4143
public String getException() {
@@ -125,4 +127,26 @@ public PostgresExpression getWhereClause() {
125127

126128
}
127129

130+
public static class ClickHouseStateToReproduce extends StateToReproduce {
131+
132+
public Map<ClickHouseSchema.ClickHouseColumn, ClickHouseConstant> randomRowValues;
133+
134+
public ClickHouseExpression whereClause;
135+
136+
public String queryThatSelectsRow;
137+
138+
public ClickHouseStateToReproduce(String databaseName) {
139+
super(databaseName);
140+
}
141+
142+
public Map<ClickHouseSchema.ClickHouseColumn, ClickHouseConstant> getRandomRowValues() {
143+
return randomRowValues;
144+
}
145+
146+
public ClickHouseExpression getWhereClause() {
147+
return whereClause;
148+
}
149+
150+
}
151+
128152
}

src/sqlancer/ast/ClickhouseSelect.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/sqlancer/clickhouse/ClickhouseErrors.java renamed to src/sqlancer/clickhouse/ClickHouseErrors.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
import java.util.Set;
44

5-
public final class ClickhouseErrors {
5+
public final class ClickHouseErrors {
66

7-
private ClickhouseErrors() {
7+
private ClickHouseErrors() {
88
}
99

10-
public static void addExpressionErrors(Set<String> errors) {
10+
public static void addExpectedExpressionErrors(Set<String> errors) {
1111
// errors.add("Illegal type (String) of argument of function not");
1212
// errors.add("Illegal type String of column for constant filter. Must be UInt8 or Nullable(UInt8)");
1313
// errors.add("Illegal type Int32 of column for constant filter. Must be UInt8 or Nullable(UInt8)");
@@ -24,6 +24,24 @@ public static void addExpressionErrors(Set<String> errors) {
2424
// regex
2525
errors.add("invalid escape sequence");
2626
errors.add("invalid character class range");
27+
errors.add("Memory limit");
28+
errors.add("There is no supertype for types");
29+
errors.add("Bad get: has Int64, requested UInt64");
30+
errors.add("Cannot convert string");
31+
errors.add("Attempt to read after eof: while converting");
32+
errors.add("doesn't exist"); // TODO: consecutive test runs can lead to dropped database
33+
errors.add("is not under aggregate function");
2734
}
2835

36+
public static void addExpressionHavingErrors(Set<String> errors) {
37+
errors.add("Memory limit");
38+
}
39+
40+
public static void addQueryErrors(Set<String> errors) {
41+
errors.add("Memory limit");
42+
}
43+
44+
public static void addGroupingErrors(Set<String> errors) {
45+
errors.add("Memory limit");
46+
}
2947
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package sqlancer.clickhouse;
2+
3+
import com.beust.jcommander.Parameter;
4+
import com.beust.jcommander.Parameters;
5+
import sqlancer.MainOptions;
6+
import sqlancer.TestOracle;
7+
import sqlancer.clickhouse.oracle.tlp.ClickHouseTLPWhereOracle;
8+
import sqlancer.clickhouse.oracle.tlp.ClickHouseTLPHavingOracle;
9+
10+
import java.sql.SQLException;
11+
import java.util.Arrays;
12+
import java.util.List;
13+
14+
@Parameters(separators = "=", commandDescription = "ClickHouse")
15+
public class ClickHouseOptions extends MainOptions {
16+
17+
@Parameter(names = "--oracle", converter = MainOptions.DBMSConverter.class)
18+
public List<ClickHouseOracle> oracle = Arrays.asList(ClickHouseOracle.TLPWhere);
19+
20+
@Parameter(names = { "--test-joins" }, description = "Allow the generation of JOIN clauses", arity = 1)
21+
public boolean testJoins = true;
22+
23+
public enum ClickHouseOracle {
24+
TLPWhere {
25+
@Override
26+
public TestOracle create(ClickHouseProvider.ClickHouseGlobalState globalState) throws SQLException {
27+
return new ClickHouseTLPWhereOracle(globalState);
28+
}
29+
},
30+
HAVING {
31+
@Override
32+
public TestOracle create(ClickHouseProvider.ClickHouseGlobalState globalState) throws SQLException {
33+
return new ClickHouseTLPHavingOracle(globalState);
34+
}
35+
};
36+
37+
public abstract TestOracle create(ClickHouseProvider.ClickHouseGlobalState globalState) throws SQLException;
38+
}
39+
}

0 commit comments

Comments
 (0)