Skip to content

Commit d9fab80

Browse files
committed
Add a base class for all TLP oracles
1 parent 8b7f1dd commit d9fab80

8 files changed

Lines changed: 30 additions & 7 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package sqlancer;
2+
3+
/**
4+
* This is the base class of the Ternary Logic Partitioning (TLP) oracles. The core idea of TLP is to partition a given
5+
* so-called original query to three so-called partitioning queries, each of which computes a partition of the original
6+
* query's result.
7+
*
8+
* @param <E>
9+
* the expression type
10+
*/
11+
public abstract class TernaryLogicPartitioningOracleBase<E> {
12+
13+
}

src/sqlancer/clickhouse/oracle/tlp/ClickHouseTLPBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import ru.yandex.clickhouse.domain.ClickHouseDataType;
44
import sqlancer.Randomly;
5+
import sqlancer.TernaryLogicPartitioningOracleBase;
56
import sqlancer.TestOracle;
67
import sqlancer.clickhouse.ClickHouseErrors;
78
import sqlancer.clickhouse.ClickHouseProvider.ClickHouseGlobalState;
@@ -26,7 +27,7 @@
2627
import java.util.Set;
2728
import java.util.stream.Collectors;
2829

29-
public class ClickHouseTLPBase implements TestOracle {
30+
public class ClickHouseTLPBase extends TernaryLogicPartitioningOracleBase<ClickHouseExpression> implements TestOracle {
3031

3132
final ClickHouseGlobalState state;
3233
final Set<String> errors = new HashSet<>();

src/sqlancer/cockroachdb/oracle/tlp/CockroachDBTLPBase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.stream.Collectors;
99

1010
import sqlancer.Randomly;
11+
import sqlancer.TernaryLogicPartitioningOracleBase;
1112
import sqlancer.TestOracle;
1213
import sqlancer.cockroachdb.CockroachDBErrors;
1314
import sqlancer.cockroachdb.CockroachDBProvider.CockroachDBGlobalState;
@@ -26,7 +27,8 @@
2627
import sqlancer.cockroachdb.gen.CockroachDBExpressionGenerator;
2728
import sqlancer.cockroachdb.oracle.CockroachDBNoRECOracle;
2829

29-
public class CockroachDBTLPBase implements TestOracle {
30+
public class CockroachDBTLPBase extends TernaryLogicPartitioningOracleBase<CockroachDBExpression>
31+
implements TestOracle {
3032

3133
final CockroachDBGlobalState state;
3234
final Set<String> errors = new HashSet<>();

src/sqlancer/duckdb/test/DuckDBQueryPartitioningBase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.stream.Collectors;
99

1010
import sqlancer.Randomly;
11+
import sqlancer.TernaryLogicPartitioningOracleBase;
1112
import sqlancer.TestOracle;
1213
import sqlancer.ast.newast.ColumnReferenceNode;
1314
import sqlancer.ast.newast.NewUnaryPostfixOperatorNode;
@@ -27,7 +28,8 @@
2728
import sqlancer.duckdb.gen.DuckDBExpressionGenerator.DuckDBUnaryPostfixOperator;
2829
import sqlancer.duckdb.gen.DuckDBExpressionGenerator.DuckDBUnaryPrefixOperator;
2930

30-
public class DuckDBQueryPartitioningBase implements TestOracle {
31+
public class DuckDBQueryPartitioningBase extends TernaryLogicPartitioningOracleBase<Node<DuckDBExpression>>
32+
implements TestOracle {
3133

3234
final DuckDBGlobalState state;
3335
final Set<String> errors = new HashSet<>();

src/sqlancer/mysql/oracle/MySQLQueryPartitioningBase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.Set;
88
import java.util.stream.Collectors;
99

10+
import sqlancer.TernaryLogicPartitioningOracleBase;
1011
import sqlancer.TestOracle;
1112
import sqlancer.mysql.MySQLErrors;
1213
import sqlancer.mysql.MySQLGlobalState;
@@ -22,7 +23,8 @@
2223
import sqlancer.mysql.ast.MySQLUnaryPrefixOperation.MySQLUnaryPrefixOperator;
2324
import sqlancer.mysql.gen.MySQLExpressionGenerator;
2425

25-
public abstract class MySQLQueryPartitioningBase implements TestOracle {
26+
public abstract class MySQLQueryPartitioningBase extends TernaryLogicPartitioningOracleBase<MySQLExpression>
27+
implements TestOracle {
2628

2729
final MySQLGlobalState state;
2830
final Set<String> errors = new HashSet<>();

src/sqlancer/postgres/oracle/tlp/PostgresTLPBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.stream.Collectors;
99

1010
import sqlancer.Randomly;
11+
import sqlancer.TernaryLogicPartitioningOracleBase;
1112
import sqlancer.TestOracle;
1213
import sqlancer.postgres.PostgresGlobalState;
1314
import sqlancer.postgres.PostgresSchema;
@@ -27,7 +28,7 @@
2728
import sqlancer.postgres.gen.PostgresExpressionGenerator;
2829
import sqlancer.postgres.oracle.PostgresNoRECOracle;
2930

30-
public class PostgresTLPBase implements TestOracle {
31+
public class PostgresTLPBase extends TernaryLogicPartitioningOracleBase<PostgresExpression> implements TestOracle {
3132

3233
final PostgresGlobalState state;
3334
final Set<String> errors = new HashSet<>();

src/sqlancer/sqlite3/oracle/tlp/SQLite3TLPBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.stream.Collectors;
99

1010
import sqlancer.Randomly;
11+
import sqlancer.TernaryLogicPartitioningOracleBase;
1112
import sqlancer.TestOracle;
1213
import sqlancer.sqlite3.SQLite3Errors;
1314
import sqlancer.sqlite3.SQLite3Provider.SQLite3GlobalState;
@@ -26,7 +27,7 @@
2627
import sqlancer.sqlite3.schema.SQLite3Schema.SQLite3Table;
2728
import sqlancer.sqlite3.schema.SQLite3Schema.SQLite3Tables;
2829

29-
public class SQLite3TLPBase implements TestOracle {
30+
public class SQLite3TLPBase extends TernaryLogicPartitioningOracleBase<SQLite3Expression> implements TestOracle {
3031

3132
final SQLite3GlobalState state;
3233
final Set<String> errors = new HashSet<>();

src/sqlancer/tidb/oracle/TiDBTLPBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.stream.Collectors;
99

1010
import sqlancer.Randomly;
11+
import sqlancer.TernaryLogicPartitioningOracleBase;
1112
import sqlancer.TestOracle;
1213
import sqlancer.tidb.TiDBErrors;
1314
import sqlancer.tidb.TiDBExpressionGenerator;
@@ -26,7 +27,7 @@
2627
import sqlancer.tidb.ast.TiDBUnaryPrefixOperation.TiDBUnaryPrefixOperator;
2728
import sqlancer.tidb.gen.TiDBHintGenerator;
2829

29-
public abstract class TiDBTLPBase implements TestOracle {
30+
public abstract class TiDBTLPBase extends TernaryLogicPartitioningOracleBase<TiDBExpression> implements TestOracle {
3031

3132
final TiDBGlobalState state;
3233
final Set<String> errors = new HashSet<>();

0 commit comments

Comments
 (0)