Skip to content

Commit 17f7d3e

Browse files
committed
Use generic TLPWhere oracle for SQLite3
1 parent 6e42048 commit 17f7d3e

File tree

1 file changed

+18
-31
lines changed

1 file changed

+18
-31
lines changed
Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,37 @@
11
package sqlancer.sqlite3.oracle.tlp;
22

33
import java.sql.SQLException;
4-
import java.util.ArrayList;
5-
import java.util.List;
64

7-
import sqlancer.ComparatorHelper;
8-
import sqlancer.Randomly;
5+
import sqlancer.common.oracle.TLPWhereOracle;
6+
import sqlancer.common.oracle.TestOracle;
7+
import sqlancer.common.query.ExpectedErrors;
8+
import sqlancer.sqlite3.SQLite3Errors;
99
import sqlancer.sqlite3.SQLite3GlobalState;
10-
import sqlancer.sqlite3.SQLite3Visitor;
10+
import sqlancer.sqlite3.ast.SQLite3Expression;
11+
import sqlancer.sqlite3.ast.SQLite3Select;
12+
import sqlancer.sqlite3.gen.SQLite3ExpressionGenerator;
13+
import sqlancer.sqlite3.schema.SQLite3Schema;
14+
import sqlancer.sqlite3.schema.SQLite3Schema.SQLite3Column;
15+
import sqlancer.sqlite3.schema.SQLite3Schema.SQLite3Table;
1116

12-
public class SQLite3TLPWhereOracle extends SQLite3TLPBase {
17+
public class SQLite3TLPWhereOracle implements TestOracle<SQLite3GlobalState> {
1318

14-
private String generatedQueryString;
19+
private final TLPWhereOracle<SQLite3Select, SQLite3Expression.Join, SQLite3Expression, SQLite3Schema, SQLite3Table, SQLite3Column, SQLite3GlobalState> oracle;
1520

1621
public SQLite3TLPWhereOracle(SQLite3GlobalState state) {
17-
super(state);
22+
SQLite3ExpressionGenerator gen = new SQLite3ExpressionGenerator(state);
23+
ExpectedErrors expectedErrors = ExpectedErrors.newErrors().with(SQLite3Errors.getExpectedExpressionErrors())
24+
.build();
25+
this.oracle = new TLPWhereOracle<>(state, gen, expectedErrors);
1826
}
1927

2028
@Override
2129
public void check() throws SQLException {
22-
super.check();
23-
select.setWhereClause(null);
24-
String originalQueryString = SQLite3Visitor.asString(select);
25-
generatedQueryString = originalQueryString;
26-
List<String> resultSet = ComparatorHelper.getResultSetFirstColumnAsString(originalQueryString, errors, state);
27-
28-
boolean orderBy = Randomly.getBooleanWithSmallProbability();
29-
if (orderBy) {
30-
select.setOrderByClauses(gen.generateOrderBys());
31-
}
32-
select.setWhereClause(predicate);
33-
String firstQueryString = SQLite3Visitor.asString(select);
34-
select.setWhereClause(negatedPredicate);
35-
String secondQueryString = SQLite3Visitor.asString(select);
36-
select.setWhereClause(isNullPredicate);
37-
String thirdQueryString = SQLite3Visitor.asString(select);
38-
List<String> combinedString = new ArrayList<>();
39-
List<String> secondResultSet = ComparatorHelper.getCombinedResultSet(firstQueryString, secondQueryString,
40-
thirdQueryString, combinedString, !orderBy, state, errors);
41-
ComparatorHelper.assumeResultSetsAreEqual(resultSet, secondResultSet, originalQueryString, combinedString,
42-
state);
30+
oracle.check();
4331
}
4432

4533
@Override
4634
public String getLastQueryString() {
47-
return generatedQueryString;
35+
return oracle.getLastQueryString();
4836
}
49-
5037
}

0 commit comments

Comments
 (0)