Skip to content

Commit

Permalink
Remove comments. Rework TLPHaving/TLPWhere via TLPBase. Move TLP orac…
Browse files Browse the repository at this point in the history
…les to separate module.
  • Loading branch information
qoega committed Jul 1, 2020
1 parent 85ebbd9 commit 87c4219
Show file tree
Hide file tree
Showing 42 changed files with 3,836 additions and 735 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,3 +3,4 @@ target/
.settings
.project
.checkstyle
*.DS_Store
40 changes: 25 additions & 15 deletions pom.xml
Expand Up @@ -126,20 +126,20 @@
<artifactId>maven-pmd-plugin</artifactId>
<version>3.13.0</version>
<executions>
<execution>
<id>pmd</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<failurePriority>2</failurePriority>
<failOnViolation>true</failOnViolation>
<rulesets>
<ruleset>configs/pmd-rules.xml</ruleset>
</rulesets>
</configuration>
</execution>
<execution>
<id>pmd</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<failurePriority>2</failurePriority>
<failOnViolation>true</failOnViolation>
<rulesets>
<ruleset>configs/pmd-rules.xml</ruleset>
</rulesets>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
Expand Down Expand Up @@ -200,8 +200,18 @@
<version>5.6.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId> slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.2.4</version>
</dependency>
</dependencies>

<reporting>
<plugins>
<plugin>
Expand Down
4 changes: 2 additions & 2 deletions src/sqlancer/Main.java
Expand Up @@ -26,7 +26,7 @@
import com.beust.jcommander.JCommander;
import com.beust.jcommander.JCommander.Builder;

import sqlancer.clickhouse.ClickhouseProvider;
import sqlancer.clickhouse.ClickHouseProvider;
import sqlancer.cockroachdb.CockroachDBProvider;
import sqlancer.duckdb.DuckDBProvider;
import sqlancer.mariadb.MariaDBProvider;
Expand Down Expand Up @@ -472,7 +472,7 @@ private void runThread(final String databaseName) {
providers.add(new MariaDBProvider());
providers.add(new TiDBProvider());
providers.add(new PostgresProvider());
providers.add(new ClickhouseProvider());
providers.add(new ClickHouseProvider());
providers.add(new DuckDBProvider());
return providers;
}
Expand Down
2 changes: 1 addition & 1 deletion src/sqlancer/MainOptions.java
Expand Up @@ -80,7 +80,7 @@ public int getNrStatementRetryCount() {
}

public enum DBMS {
MariaDB, SQLite3, MySQL, PostgreSQL, TDEngine, CockroachDB, TiDB
MariaDB, SQLite3, MySQL, PostgreSQL, TDEngine, CockroachDB, TiDB, ClickHouse
}

public String getUserName() {
Expand Down
26 changes: 25 additions & 1 deletion src/sqlancer/StateToReproduce.java
Expand Up @@ -4,6 +4,9 @@
import java.util.List;
import java.util.Map;

import sqlancer.clickhouse.ClickHouseSchema;
import sqlancer.clickhouse.ast.ClickHouseConstant;
import sqlancer.clickhouse.ast.ClickHouseExpression;
import sqlancer.mysql.MySQLSchema.MySQLColumn;
import sqlancer.mysql.ast.MySQLConstant;
import sqlancer.mysql.ast.MySQLExpression;
Expand Down Expand Up @@ -35,7 +38,6 @@ public class StateToReproduce {

public StateToReproduce(String databaseName) {
this.databaseName = databaseName;

}

public String getException() {
Expand Down Expand Up @@ -125,4 +127,26 @@ public PostgresExpression getWhereClause() {

}

public static class ClickHouseStateToReproduce extends StateToReproduce {

public Map<ClickHouseSchema.ClickHouseColumn, ClickHouseConstant> randomRowValues;

public ClickHouseExpression whereClause;

public String queryThatSelectsRow;

public ClickHouseStateToReproduce(String databaseName) {
super(databaseName);
}

public Map<ClickHouseSchema.ClickHouseColumn, ClickHouseConstant> getRandomRowValues() {
return randomRowValues;
}

public ClickHouseExpression getWhereClause() {
return whereClause;
}

}

}
8 changes: 0 additions & 8 deletions src/sqlancer/ast/ClickhouseSelect.java

This file was deleted.

Expand Up @@ -2,12 +2,12 @@

import java.util.Set;

public final class ClickhouseErrors {
public final class ClickHouseErrors {

private ClickhouseErrors() {
private ClickHouseErrors() {
}

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

public static void addExpressionHavingErrors(Set<String> errors) {
errors.add("Memory limit");
}

public static void addQueryErrors(Set<String> errors) {
errors.add("Memory limit");
}

public static void addGroupingErrors(Set<String> errors) {
errors.add("Memory limit");
}
}
39 changes: 39 additions & 0 deletions src/sqlancer/clickhouse/ClickHouseOptions.java
@@ -0,0 +1,39 @@
package sqlancer.clickhouse;

import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;
import sqlancer.MainOptions;
import sqlancer.TestOracle;
import sqlancer.clickhouse.oracle.tlp.ClickHouseTLPWhereOracle;
import sqlancer.clickhouse.oracle.tlp.ClickHouseTLPHavingOracle;

import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

@Parameters(separators = "=", commandDescription = "ClickHouse")
public class ClickHouseOptions extends MainOptions {

@Parameter(names = "--oracle", converter = MainOptions.DBMSConverter.class)
public List<ClickHouseOracle> oracle = Arrays.asList(ClickHouseOracle.TLPWhere);

@Parameter(names = { "--test-joins" }, description = "Allow the generation of JOIN clauses", arity = 1)
public boolean testJoins = true;

public enum ClickHouseOracle {
TLPWhere {
@Override
public TestOracle create(ClickHouseProvider.ClickHouseGlobalState globalState) throws SQLException {
return new ClickHouseTLPWhereOracle(globalState);
}
},
HAVING {
@Override
public TestOracle create(ClickHouseProvider.ClickHouseGlobalState globalState) throws SQLException {
return new ClickHouseTLPHavingOracle(globalState);
}
};

public abstract TestOracle create(ClickHouseProvider.ClickHouseGlobalState globalState) throws SQLException;
}
}

0 comments on commit 87c4219

Please sign in to comment.