/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/mariadb/gen/MariaDBUpdateGenerator.java
45 строк
1 KB
Patrick
Continuation of Reworking Connection to DB to support non-SQL connections
26 ноя 2020, 15:40
26 ноя 2020, 15:40
62e302e
Код
Авторство
О чём код?
package sqlancer.mariadb.gen; import sqlancer.Randomly; import sqlancer.common.query.ExpectedErrors; import sqlancer.common.query.SQLQueryAdapter; import sqlancer.mariadb.MariaDBErrors; import sqlancer.mariadb.MariaDBSchema; import sqlancer.mariadb.MariaDBSchema.MariaDBTable; import sqlancer.mariadb.ast.MariaDBVisitor; public final class MariaDBUpdateGenerator { private MariaDBUpdateGenerator() { } public static SQLQueryAdapter update(MariaDBSchema s, Randomly r) { MariaDBTable randomTable = s.getRandomTable(); StringBuilder sb = new StringBuilder("UPDATE "); if (Randomly.getBoolean()) { sb.append("LOW_PRIORITY "); } if (Randomly.getBoolean()) { sb.append("IGNORE "); } sb.append(randomTable.getName()); sb.append(" SET "); for (int i = 0; i < Randomly.smallNumber() + 1; i++) { if (i != 0) { sb.append(", "); } sb.append(randomTable.getRandomColumn().getName()); sb.append("="); if (Randomly.getBoolean()) { sb.append(MariaDBVisitor.asString(MariaDBExpressionGenerator.getRandomConstant(r))); } else { sb.append("DEFAULT"); } // [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] } ExpectedErrors errors = new ExpectedErrors(); MariaDBErrors.addInsertErrors(errors); return new SQLQueryAdapter(sb.toString(), errors); } }