Skip to content

Commit 3a293f4

Browse files
committed
[Postgres] Use the ExpectedErrors class in the PQS implementation
1 parent 78a5437 commit 3a293f4

1 file changed

Lines changed: 6 additions & 9 deletions

File tree

src/sqlancer/postgres/oracle/PostgresPivotedQuerySynthesisOracle.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import sqlancer.postgres.ast.PostgresExpression;
2727
import sqlancer.postgres.ast.PostgresSelect;
2828
import sqlancer.postgres.ast.PostgresSelect.PostgresFromTable;
29+
import sqlancer.postgres.gen.PostgresCommon;
2930
import sqlancer.postgres.gen.PostgresExpressionGenerator;
3031

3132
public class PostgresPivotedQuerySynthesisOracle
@@ -39,6 +40,8 @@ public PostgresPivotedQuerySynthesisOracle(PostgresGlobalState globalState) thro
3940
super(globalState);
4041
options = globalState.getOptions();
4142
logger = globalState.getLogger();
43+
PostgresCommon.addCommonExpressionErrors(errors);
44+
PostgresCommon.addCommonFetchErrors(errors);
4245
}
4346

4447
@Override
@@ -153,20 +156,14 @@ protected boolean isContainedIn(Query query) throws SQLException {
153156
if (options.logEachSelect()) {
154157
logger.writeCurrent(resultingQueryString);
155158
}
159+
globalState.getState().getLocalState().log(resultingQueryString);
160+
QueryAdapter finalQuery = new QueryAdapter(resultingQueryString, errors);
156161
try (ResultSet result = createStatement.executeQuery(resultingQueryString)) {
157162
boolean isContainedIn = result.next();
158163
createStatement.close();
159164
return isContainedIn;
160165
} catch (PSQLException e) {
161-
if (e.getMessage().contains("out of range") || e.getMessage().contains("cannot cast")
162-
|| e.getMessage().contains("invalid input syntax for ") || e.getMessage().contains("must be type")
163-
|| e.getMessage().contains("operator does not exist")
164-
|| e.getMessage().contains("Could not choose a best candidate function.")
165-
|| e.getMessage().contains("division by zero")
166-
|| e.getMessage().contains("zero raised to a negative power is undefined")
167-
|| e.getMessage().contains("canceling statement due to statement timeout")
168-
|| e.getMessage().contains("operator is not unique")
169-
|| e.getMessage().contains("could not determine which collation to use for string comparison")) {
166+
if (finalQuery.getExpectedErrors().errorIsExpected(e.getMessage())) {
170167
return true;
171168
} else {
172169
throw e;

0 commit comments

Comments
 (0)