/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/cockroachdb/oracle/tlp/CockroachDBTLPHavingOracle.java
54 строки
2 KB
Manuel Rigger
Introduce an overridable generatePredicate() method in the TLP base class
16 июл 2020, 14:52
16 июл 2020, 14:52
34e63e2
Код
Авторство
О чём код?
package sqlancer.cockroachdb.oracle.tlp; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import sqlancer.ComparatorHelper; import sqlancer.Randomly; import sqlancer.cockroachdb.CockroachDBProvider.CockroachDBGlobalState; import sqlancer.cockroachdb.CockroachDBSchema.CockroachDBDataType; import sqlancer.cockroachdb.CockroachDBVisitor; import sqlancer.cockroachdb.ast.CockroachDBExpression; public class CockroachDBTLPHavingOracle extends CockroachDBTLPBase { public CockroachDBTLPHavingOracle(CockroachDBGlobalState state) { super(state); errors.add("GROUP BY term out of range"); } @Override public void check() throws SQLException { super.check(); if (Randomly.getBoolean()) { select.setWhereClause(gen.generateExpression(CockroachDBDataType.BOOL.get())); } boolean orderBy = Randomly.getBoolean(); if (orderBy) { select.setOrderByExpressions(gen.generateOrderBys()); } select.setGroupByExpressions(gen.generateExpressions(Randomly.smallNumber() + 1)); select.setHavingClause(null); String originalQueryString = CockroachDBVisitor.asString(select); List<String> resultSet = ComparatorHelper.getResultSetFirstColumnAsString(originalQueryString, errors, state); select.setHavingClause(predicate); String firstQueryString = CockroachDBVisitor.asString(select); select.setHavingClause(negatedPredicate); String secondQueryString = CockroachDBVisitor.asString(select); select.setHavingClause(isNullPredicate); String thirdQueryString = CockroachDBVisitor.asString(select); List<String> combinedString = new ArrayList<>(); List<String> secondResultSet = ComparatorHelper.getCombinedResultSet(firstQueryString, secondQueryString, thirdQueryString, combinedString, !orderBy, state, errors); ComparatorHelper.assumeResultSetsAreEqual(resultSet, secondResultSet, originalQueryString, combinedString, state); } @Override protected CockroachDBExpression generatePredicate() { return gen.generateHavingClause(); } }