/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/mysql/oracle/MySQLQueryPartitioningBase.java
61 строка
2 KB
Manuel Rigger
Introduce a sqlancer.common.oracle package
13 авг 2020, 00:37
13 авг 2020, 00:37
0c736fa
Код
Авторство
О чём код?
package sqlancer.mysql.oracle; import java.sql.SQLException; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import sqlancer.common.gen.ExpressionGenerator; import sqlancer.common.oracle.TernaryLogicPartitioningOracleBase; import sqlancer.common.oracle.TestOracle; import sqlancer.mysql.MySQLErrors; import sqlancer.mysql.MySQLGlobalState; import sqlancer.mysql.MySQLSchema; import sqlancer.mysql.MySQLSchema.MySQLTable; import sqlancer.mysql.MySQLSchema.MySQLTables; import sqlancer.mysql.ast.MySQLColumnReference; import sqlancer.mysql.ast.MySQLExpression; import sqlancer.mysql.ast.MySQLSelect; import sqlancer.mysql.ast.MySQLTableReference; import sqlancer.mysql.gen.MySQLExpressionGenerator; public abstract class MySQLQueryPartitioningBase extends TernaryLogicPartitioningOracleBase<MySQLExpression, MySQLGlobalState> implements TestOracle { MySQLSchema s; MySQLTables targetTables; MySQLExpressionGenerator gen; MySQLSelect select; public MySQLQueryPartitioningBase(MySQLGlobalState state) { super(state); MySQLErrors.addExpressionErrors(errors); } @Override public void check() throws SQLException { s = state.getSchema(); targetTables = s.getRandomTableNonEmptyTables(); gen = new MySQLExpressionGenerator(state).setColumns(targetTables.getColumns()); initializeTernaryPredicateVariants(); select = new MySQLSelect(); select.setFetchColumns(generateFetchColumns()); List<MySQLTable> tables = targetTables.getTables(); List<MySQLExpression> tableList = tables.stream().map(t -> new MySQLTableReference(t)) .collect(Collectors.toList()); // List<MySQLExpression> joins = MySQLJoin.getJoins(tableList, state); select.setFromList(tableList); select.setWhereClause(null); // select.setJoins(joins); } List<MySQLExpression> generateFetchColumns() { return Arrays.asList(MySQLColumnReference.create(targetTables.getColumns().get(0), null)); } @Override protected ExpressionGenerator<MySQLExpression> getGen() { return gen; } }