/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/mariadb/gen/MariaDBIndexGenerator.java
60 строк
2 KB
Gregg
Create DBMSCommon utility class and implement a matchesIndexName method.
05 дек 2020, 20:49
05 дек 2020, 20:49
8184633
Код
Авторство
О чём код?
package sqlancer.mariadb.gen; import java.util.List; import sqlancer.Randomly; import sqlancer.common.DBMSCommon; import sqlancer.common.query.ExpectedErrors; import sqlancer.common.query.SQLQueryAdapter; import sqlancer.mariadb.MariaDBSchema; import sqlancer.mariadb.MariaDBSchema.MariaDBColumn; import sqlancer.mariadb.MariaDBSchema.MariaDBTable; public final class MariaDBIndexGenerator { private MariaDBIndexGenerator() { } public static SQLQueryAdapter generate(MariaDBSchema s) { ExpectedErrors errors = new ExpectedErrors(); StringBuilder sb = new StringBuilder("CREATE "); errors.add("Key/Index cannot be defined on a virtual generated column"); if (Randomly.getBoolean()) { errors.add("Duplicate entry"); errors.add("Key/Index cannot be defined on a virtual generated column"); sb.append("UNIQUE "); } sb.append("INDEX "); sb.append("i"); sb.append(DBMSCommon.createColumnName(Randomly.smallNumber())); if (Randomly.getBoolean()) { sb.append(" USING "); sb.append(Randomly.fromOptions("BTREE", "HASH")); // , "RTREE") } sb.append(" ON "); MariaDBTable randomTable = s.getRandomTable(); sb.append(randomTable.getName()); sb.append("("); List<MariaDBColumn> columns = Randomly.nonEmptySubset(randomTable.getColumns()); for (int i = 0; i < columns.size(); i++) { if (i != 0) { sb.append(", "); } sb.append(columns.get(i).getName()); if (Randomly.getBoolean()) { sb.append(" "); sb.append(Randomly.fromOptions("ASC", "DESC")); } } sb.append(")"); // if (Randomly.getBoolean()) { // sb.append(" ALGORITHM="); // sb.append(Randomly.fromOptions("DEFAULT", "INPLACE", "COPY", "NOCOPY", "INSTANT")); // errors.add("is not supported for this operation"); // } return new SQLQueryAdapter(sb.toString(), errors, true); } }