/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/postgres/gen/PostgresCommentGenerator.java
68 строк
2 KB
Manuel Rigger
Fix JavaDoc issues
21 янв 2021, 01:47
21 янв 2021, 01:47
e118824
Код
Авторство
О чём код?
package sqlancer.postgres.gen; import sqlancer.IgnoreMeException; import sqlancer.Randomly; import sqlancer.common.query.SQLQueryAdapter; import sqlancer.postgres.PostgresGlobalState; import sqlancer.postgres.PostgresSchema.PostgresTable; /** * @see <a href="https://www.postgresql.org/docs/devel/sql-comment.html">COMMENT</a> */ public final class PostgresCommentGenerator { private PostgresCommentGenerator() { } private enum Action { INDEX, COLUMN, STATISTICS, TABLE } public static SQLQueryAdapter generate(PostgresGlobalState globalState) { StringBuilder sb = new StringBuilder(); sb.append("COMMENT ON "); Action type = Randomly.fromOptions(Action.values()); PostgresTable randomTable = globalState.getSchema().getRandomTable(); switch (type) { case INDEX: sb.append("INDEX "); if (randomTable.getIndexes().isEmpty()) { throw new IgnoreMeException(); } else { sb.append(randomTable.getRandomIndex().getIndexName()); } break; case COLUMN: sb.append("COLUMN "); sb.append(randomTable.getRandomColumn().getFullQualifiedName()); break; case STATISTICS: sb.append("STATISTICS "); if (randomTable.getStatistics().isEmpty()) { throw new IgnoreMeException(); } else { sb.append(randomTable.getStatistics().get(0).getName()); } break; case TABLE: sb.append("TABLE "); if (randomTable.isView()) { throw new IgnoreMeException(); } sb.append(randomTable.getName()); break; default: throw new AssertionError(type); } sb.append(" IS "); if (Randomly.getBoolean()) { sb.append("NULL"); } else { sb.append("'"); sb.append(globalState.getRandomly().getString().replace("'", "''")); sb.append("'"); } return new SQLQueryAdapter(sb.toString()); } }