/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/cockroachdb/gen/CockroachDBCommentOnGenerator.java
61 строка
2 KB
Patrick
Continuation of Reworking Connection to DB to support non-SQL connections
26 ноя 2020, 15:40
26 ноя 2020, 15:40
62e302e
Код
Авторство
О чём код?
package sqlancer.cockroachdb.gen; import java.util.List; import sqlancer.IgnoreMeException; import sqlancer.Randomly; import sqlancer.cockroachdb.CockroachDBErrors; import sqlancer.cockroachdb.CockroachDBProvider.CockroachDBGlobalState; import sqlancer.cockroachdb.CockroachDBSchema.CockroachDBColumn; import sqlancer.cockroachdb.CockroachDBSchema.CockroachDBTable; import sqlancer.common.query.ExpectedErrors; import sqlancer.common.query.SQLQueryAdapter; import sqlancer.common.schema.TableIndex; public final class CockroachDBCommentOnGenerator { private CockroachDBCommentOnGenerator() { } private enum Option { TABLE, INDEX, COLUMN } public static SQLQueryAdapter comment(CockroachDBGlobalState globalState) { StringBuilder sb = new StringBuilder("COMMENT ON "); CockroachDBTable randomTable = globalState.getSchema().getRandomTable(t -> !t.isView()); switch (Randomly.fromOptions(Option.values())) { case TABLE: sb.append("TABLE "); sb.append(randomTable.getName()); break; case INDEX: List<TableIndex> indexes = randomTable.getIndexes(); if (indexes.isEmpty()) { throw new IgnoreMeException(); } TableIndex index = Randomly.fromList(indexes); if (index.getIndexName().contains("primary")) { throw new IgnoreMeException(); } sb.append("INDEX "); sb.append(index.getIndexName()); break; case COLUMN: sb.append("COLUMN "); CockroachDBColumn randomColumn = randomTable.getRandomColumn(); sb.append(randomColumn.getFullQualifiedName()); break; default: throw new AssertionError(); } sb.append(" IS '"); sb.append(globalState.getRandomly().getString().replace("'", "''")); sb.append("'"); ExpectedErrors errors = new ExpectedErrors(); CockroachDBErrors.addTransactionErrors(errors); return new SQLQueryAdapter(sb.toString(), errors); } }