1212import sqlancer .Main .StateLogger ;
1313import sqlancer .MainOptions ;
1414import sqlancer .Randomly ;
15- import sqlancer .StateToReproduce .PostgresStateToReproduce ;
1615import sqlancer .common .oracle .PivotedQuerySynthesisBase ;
1716import sqlancer .postgres .PostgresGlobalState ;
1817import sqlancer .postgres .PostgresSchema .PostgresColumn ;
2928public class PostgresPivotedQuerySynthesisOracle
3029 extends PivotedQuerySynthesisBase <PostgresGlobalState , PostgresRowValue , PostgresExpression > {
3130
32- private PostgresStateToReproduce state ;
3331 private List <PostgresColumn > fetchColumns ;
3432 private final MainOptions options ;
3533 private final StateLogger logger ;
@@ -42,8 +40,8 @@ public PostgresPivotedQuerySynthesisOracle(PostgresGlobalState globalState) thro
4240
4341 @ Override
4442 public void check () throws SQLException {
45- String queryString = getQueryThatContainsAtLeastOneRow (state );
46- state .getLocalState ().log (queryString );
43+ String queryString = getQueryThatContainsAtLeastOneRow ();
44+ globalState . getState () .getLocalState ().log (queryString );
4745 if (options .logEachSelect ()) {
4846 logger .writeCurrent (queryString );
4947 }
@@ -56,27 +54,21 @@ public void check() throws SQLException {
5654
5755 }
5856
59- public String getQueryThatContainsAtLeastOneRow (PostgresStateToReproduce state ) throws SQLException {
60- this .state = state ;
57+ public String getQueryThatContainsAtLeastOneRow () throws SQLException {
6158 PostgresTables randomFromTables = globalState .getSchema ().getRandomTableNonEmptyTables ();
6259
63- state .queryTargetedTablesString = randomFromTables .tableNamesAsString ();
64-
6560 PostgresSelect selectStatement = new PostgresSelect ();
6661 selectStatement .setSelectType (Randomly .fromOptions (PostgresSelect .SelectType .values ()));
6762 List <PostgresColumn > columns = randomFromTables .getColumns ();
68- pivotRow = randomFromTables .getRandomRowValue (globalState .getConnection (), state );
63+ pivotRow = randomFromTables .getRandomRowValue (globalState .getConnection ());
6964
7065 fetchColumns = columns ;
7166 selectStatement .setFromList (randomFromTables .getTables ().stream ().map (t -> new PostgresFromTable (t , false ))
7267 .collect (Collectors .toList ()));
7368 selectStatement .setFetchColumns (fetchColumns .stream ()
7469 .map (c -> new PostgresColumnValue (c , pivotRow .getValues ().get (c ))).collect (Collectors .toList ()));
75- state .queryTargetedColumnsString = fetchColumns .stream ().map (c -> c .getFullQualifiedName ())
76- .collect (Collectors .joining (", " ));
7770 PostgresExpression whereClause = generateWhereClauseThatContainsRowValue (columns , pivotRow );
7871 selectStatement .setWhereClause (whereClause );
79- state .whereClause = selectStatement ;
8072 List <PostgresExpression > groupByClause = generateGroupByClause (columns , pivotRow );
8173 selectStatement .setGroupByExpressions (groupByClause );
8274 PostgresExpression limitClause = generateLimit ();
@@ -107,7 +99,6 @@ public String getQueryThatContainsAtLeastOneRow(PostgresStateToReproduce state)
10799 }
108100 }
109101 sb2 .append (") as result;" );
110- state .queryThatSelectsRow = sb2 .toString ();
111102
112103 PostgresToStringVisitor visitor = new PostgresToStringVisitor ();
113104 visitor .visit (selectStatement );
@@ -170,7 +161,6 @@ private boolean isContainedIn(String queryString, MainOptions options, StateLogg
170161 }
171162 String resultingQueryString = sb .toString ();
172163 // log both SELECT queries at the bottom of the error log file
173- state .getLocalState ().log (String .format ("-- %s;\n -- %s;" , queryString , resultingQueryString ));
174164 if (options .logEachSelect ()) {
175165 logger .writeCurrent (resultingQueryString );
176166 }
0 commit comments