/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/clickhouse/oracle/tlp/ClickHouseTLPBase.java
63 строки
2 KB
Yatsishin Ilya
Re-enable ClickHouse
20 авг 2020, 17:18
20 авг 2020, 17:18
67b1845
Код
Авторство
О чём код?
package sqlancer.clickhouse.oracle.tlp; import java.sql.SQLException; import java.util.List; import java.util.stream.Collectors; import sqlancer.Randomly; import sqlancer.clickhouse.ClickHouseErrors; import sqlancer.clickhouse.ClickHouseProvider.ClickHouseGlobalState; import sqlancer.clickhouse.ClickHouseSchema; import sqlancer.clickhouse.ClickHouseSchema.ClickHouseTable; import sqlancer.clickhouse.ClickHouseSchema.ClickHouseTables; import sqlancer.clickhouse.ast.ClickHouseColumnReference; import sqlancer.clickhouse.ast.ClickHouseExpression; import sqlancer.clickhouse.ast.ClickHouseExpression.ClickHouseJoin; import sqlancer.clickhouse.ast.ClickHouseSelect; import sqlancer.clickhouse.gen.ClickHouseCommon; import sqlancer.clickhouse.gen.ClickHouseExpressionGenerator; import sqlancer.common.gen.ExpressionGenerator; import sqlancer.common.oracle.TernaryLogicPartitioningOracleBase; import sqlancer.common.oracle.TestOracle; public class ClickHouseTLPBase extends TernaryLogicPartitioningOracleBase<ClickHouseExpression, ClickHouseGlobalState> implements TestOracle { ClickHouseSchema s; ClickHouseTables targetTables; ClickHouseExpressionGenerator gen; ClickHouseSelect select; public ClickHouseTLPBase(ClickHouseGlobalState state) { super(state); ClickHouseErrors.addExpectedExpressionErrors(errors); ClickHouseErrors.addQueryErrors(errors); } @Override public void check() throws SQLException { s = state.getSchema(); targetTables = s.getRandomTableNonEmptyTables(); gen = new ClickHouseExpressionGenerator(state).setColumns(targetTables.getColumns()); initializeTernaryPredicateVariants(); select = new ClickHouseSelect(); select.setFetchColumns(generateFetchColumns()); List<ClickHouseTable> tables = targetTables.getTables(); List<ClickHouseJoin> joinStatements = gen.getRandomJoinClauses(tables); List<ClickHouseExpression> tableRefs = ClickHouseCommon.getTableRefs(tables, s); select.setJoinClauses(joinStatements.stream().collect(Collectors.toList())); select.setFromTables(tableRefs); select.setWhereClause(null); } List<ClickHouseExpression> generateFetchColumns() { return Randomly.nonEmptySubset(targetTables.getColumns()).stream() .map(c -> new ClickHouseColumnReference(c, null)).collect(Collectors.toList()); } @Override protected ExpressionGenerator<ClickHouseExpression> getGen() { return gen; } }