Skip to content

Commit 4caee35

Browse files
committed
Make the CockroachDB and SQLite implementation use the new GlobalState class
1 parent 990f64f commit 4caee35

8 files changed

Lines changed: 21 additions & 96 deletions

src/sqlancer/GlobalState.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.sql.Connection;
44

5+
import sqlancer.Main.QueryManager;
56
import sqlancer.Main.StateLogger;
67

78
public class GlobalState {
@@ -11,6 +12,7 @@ public class GlobalState {
1112
private MainOptions options;
1213
private StateLogger logger;
1314
private StateToReproduce state;
15+
private QueryManager manager;
1416

1517
public void setConnection(Connection con) {
1618
this.con = con;
@@ -52,4 +54,12 @@ public StateToReproduce getState() {
5254
return state;
5355
}
5456

57+
public QueryManager getManager() {
58+
return manager;
59+
}
60+
61+
public void setManager(QueryManager manager) {
62+
this.manager = manager;
63+
}
64+
5565
}

src/sqlancer/cockroachdb/CockroachDBProvider.java

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.beust.jcommander.JCommander;
1717

1818
import sqlancer.DatabaseProvider;
19+
import sqlancer.GlobalState;
1920
import sqlancer.IgnoreMeException;
2021
import sqlancer.Main.QueryManager;
2122
import sqlancer.Main.StateLogger;
@@ -95,24 +96,11 @@ public Query getQuery(CockroachDBGlobalState state) throws SQLException {
9596
}
9697
}
9798

98-
public static class CockroachDBGlobalState {
99+
public static class CockroachDBGlobalState extends GlobalState {
99100

100-
private Connection con;
101101
private CockroachDBSchema schema;
102-
private Randomly r;
103-
private MainOptions options;
104-
private StateLogger logger;
105-
private StateToReproduce state;
106102
private CockroachDBOptions cockroachdbOptions;
107103

108-
public void setConnection(Connection con) {
109-
this.con = con;
110-
}
111-
112-
public Connection getConnection() {
113-
return con;
114-
}
115-
116104
public void setSchema(CockroachDBSchema schema) {
117105
this.schema = schema;
118106
}
@@ -121,38 +109,6 @@ public CockroachDBSchema getSchema() {
121109
return schema;
122110
}
123111

124-
public void setRandomly(Randomly r) {
125-
this.r = r;
126-
}
127-
128-
public Randomly getRandomly() {
129-
return r;
130-
}
131-
132-
public MainOptions getOptions() {
133-
return options;
134-
}
135-
136-
public void setMainOptions(MainOptions options) {
137-
this.options = options;
138-
}
139-
140-
public void setStateLogger(StateLogger logger) {
141-
this.logger = logger;
142-
}
143-
144-
public StateLogger getLogger() {
145-
return logger;
146-
}
147-
148-
public void setState(StateToReproduce state) {
149-
this.state = state;
150-
}
151-
152-
public StateToReproduce getState() {
153-
return state;
154-
}
155-
156112
public void setCockroachDBOptions(CockroachDBOptions cockroachdbOptions) {
157113
this.cockroachdbOptions = cockroachdbOptions;
158114
}

src/sqlancer/sqlite3/SQLite3Provider.java

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import sqlancer.DatabaseFacade;
1717
import sqlancer.DatabaseProvider;
18+
import sqlancer.GlobalState;
1819
import sqlancer.IgnoreMeException;
1920
import sqlancer.Main.QueryManager;
2021
import sqlancer.Main.StateLogger;
@@ -156,28 +157,17 @@ public Query getQuery(SQLite3GlobalState state) throws SQLException {
156157
private SQLite3StateToReproduce state;
157158
private String databaseName;
158159

159-
public static class SQLite3GlobalState {
160+
public static class SQLite3GlobalState extends GlobalState {
160161

161-
private Connection con;
162162
private SQLite3Schema schema;
163163
private SQLite3StateToReproduce state;
164-
private Randomly r;
165-
private MainOptions mainOptions;
166164
private SQLite3Options sqliteOptions;
167-
private StateLogger logger;
168-
private QueryManager manager;
169165

170-
public Connection getConnection() {
171-
return con;
172-
}
173166

174167
public SQLite3Schema getSchema() {
175168
return schema;
176169
}
177170

178-
public void setConnection(Connection con) {
179-
this.con = con;
180-
}
181171

182172
public void setSchema(SQLite3Schema schema) {
183173
this.schema = schema;
@@ -191,21 +181,6 @@ public SQLite3StateToReproduce getState() {
191181
return state;
192182
}
193183

194-
public Randomly getRandomly() {
195-
return r;
196-
}
197-
198-
public void setRandomly(Randomly r) {
199-
this.r = r;
200-
}
201-
202-
public void setMainOptions(MainOptions mainOptions) {
203-
this.mainOptions = mainOptions;
204-
}
205-
206-
public MainOptions getMainOptions() {
207-
return mainOptions;
208-
}
209184

210185
public void setSqliteOptions(SQLite3Options sqliteOptions) {
211186
this.sqliteOptions = sqliteOptions;
@@ -215,22 +190,6 @@ public SQLite3Options getSqliteOptions() {
215190
return sqliteOptions;
216191
}
217192

218-
public void setLogger(StateLogger logger) {
219-
this.logger = logger;
220-
}
221-
222-
public StateLogger getLogger() {
223-
return logger;
224-
}
225-
226-
public void setManager(QueryManager manager) {
227-
this.manager = manager;
228-
}
229-
230-
public QueryManager getManager() {
231-
return manager;
232-
}
233-
234193
}
235194

236195
private final SQLite3GlobalState globalState = new SQLite3GlobalState();
@@ -250,7 +209,7 @@ public void generateAndTestDatabase(String databaseName, Connection con, StateLo
250209
globalState.setMainOptions(options);
251210
globalState.setSqliteOptions(sqliteOptions);
252211
globalState.setRandomly(r);
253-
globalState.setLogger(logger);
212+
globalState.setStateLogger(logger);
254213
globalState.setManager(manager);
255214
this.state = (SQLite3StateToReproduce) state;
256215
globalState.setConnection(con);

src/sqlancer/sqlite3/gen/SQLite3ExpressionGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ public SQLite3Expression getRandomExpression(int depth) {
212212
if (allowAggreates && Randomly.getBoolean()) {
213213
return getAggregateFunction(depth + 1);
214214
}
215-
if (depth >= globalState.getMainOptions().getMaxExpressionDepth()) {
215+
if (depth >= globalState.getOptions().getMaxExpressionDepth()) {
216216
if (Randomly.getBooleanWithRatherLowProbability() || columns.isEmpty()) {
217217
return getRandomLiteralValue(globalState);
218218
} else {

src/sqlancer/sqlite3/queries/SQLite3Fuzzer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public SQLite3Fuzzer(SQLite3GlobalState globalState) {
2222
public void check() throws SQLException {
2323
String s = SQLite3Visitor
2424
.asString(SQLite3RandomQuerySynthesizer.generate(globalState, Randomly.smallNumber() + 1));
25-
MainOptions options = globalState.getMainOptions();
25+
MainOptions options = globalState.getOptions();
2626
try {
2727
if (options.logEachSelect()) {
2828
globalState.getLogger().writeCurrent(s);

src/sqlancer/sqlite3/queries/SQLite3MetamorphicQuerySynthesizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public SQLite3MetamorphicQuerySynthesizer(SQLite3GlobalState globalState) {
5959
this.con = globalState.getConnection();
6060
this.state = globalState.getState();
6161
this.logger = globalState.getLogger();
62-
this.options = globalState.getMainOptions();
62+
this.options = globalState.getOptions();
6363
this.globalState = globalState;
6464
SQLite3Errors.addExpectedExpressionErrors(errors);
6565
SQLite3Errors.addMatchQueryErrors(errors);

src/sqlancer/sqlite3/queries/SQLite3PivotedQuerySynthesizer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public SQLite3PivotedQuerySynthesizer(SQLite3GlobalState globalState) throws SQL
6767

6868
public void check() throws SQLException {
6969
Query query = getQueryThatContainsAtLeastOneRow(globalState);
70-
if (globalState.getMainOptions().logEachSelect()) {
70+
if (globalState.getOptions().logEachSelect()) {
7171
globalState.getLogger().writeCurrent(query.getQueryString());
7272
}
7373
boolean isContainedIn = isContainedIn(query);
@@ -180,7 +180,7 @@ public SQLite3SelectStatement getQuery(SQLite3GlobalState globalState) throws SQ
180180
globalState.getState().whereClause = selectStatement;
181181
List<SQLite3Expression> groupByClause = generateGroupByClause(columns, rw, allTablesContainOneRow);
182182
selectStatement.setGroupByClause(groupByClause);
183-
SQLite3Expression limitClause = generateLimit((long) (Math.pow(globalState.getMainOptions().getMaxNumberInserts(), joinStatements.size() + randomFromTables.getTables().size())));
183+
SQLite3Expression limitClause = generateLimit((long) (Math.pow(globalState.getOptions().getMaxNumberInserts(), joinStatements.size() + randomFromTables.getTables().size())));
184184
selectStatement.setLimitClause(limitClause);
185185
if (limitClause != null) {
186186
SQLite3Expression offsetClause = generateOffset();

src/sqlancer/sqlite3/queries/SQLite3QueryPartitioningHavingTester.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public void check() throws SQLException {
7575
throw new IgnoreMeException();
7676
}
7777
List<String> secondResultSet = DatabaseProvider.getResultSetFirstColumnAsString(combinedString, errors, state.getConnection());
78-
if (state.getMainOptions().logEachSelect()) {
78+
if (state.getOptions().logEachSelect()) {
7979
state.getLogger().writeCurrent(originalQueryString);
8080
state.getLogger().writeCurrent(combinedString);
8181
}

0 commit comments

Comments
 (0)