JOOQ удаляет SQL внутри игнорирования комментариев во время выполненияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JOOQ удаляет SQL внутри игнорирования комментариев во время выполнения

Сообщение Anonymous »

Я использую jOOQ с PostgreSQL и хочу выполнить запрос с префиксом EXPLAIN (ANALYZE, FORMAT JSON).
Я установил настройки парсера на игнорирование комментариев:

Код: Выделить всё

Settings settings = new Settings()
.withParseDialect(SQLDialect.ORACLE)
.withParseUnknownFunctions(ParseUnknownFunctions.IGNORE)
.withTransformTableListsToAnsiJoin(true)
.withTransformUnneededArithmeticExpressions(TransformUnneededArithmeticExpressions.ALWAYS)
.withTransformRownum(Transformation.ALWAYS)
.withParamCastMode(ParamCastMode.DEFAULT)
.withRenderOptionalAsKeywordForFieldAliases(RenderOptionalKeyword.ON)
.withRenderOptionalAsKeywordForTableAliases(RenderOptionalKeyword.ON)
.withRenderQuotedNames(RenderQuotedNames.EXPLICIT_DEFAULT_UNQUOTED)
.withRenderNameCase(RenderNameCase.UPPER)
.withRenderCoalesceToEmptyStringInConcat(true)
.withBatchSize(DbConnectionHelper.MAX_BATCH_SIZE)
.withParseIgnoreComments(true)
;
return settings;
Затем я разделяю предложение EXPLAIN следующим образом:

Код: Выделить всё

String explainSql = """
/* [jooq ignore start] */
EXPLAIN (ANALYZE, FORMAT JSON)
/* [jooq ignore stop] */
""" + sql;

try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(explainSql)) {
// process result
}
Проблема:
jOOQ теперь игнорирует предложение EXPLAIN во время синтаксического анализа, как и ожидалось, но также удаляет его из исполняемого SQL.
Таким образом, выполненный запрос больше не содержит EXPLAIN (ANALYZE, FORMAT JSON) и не может создать план.
Я использование:
  • Версия jOOQ: 3.19.6
  • PostgreSQL 14
  • JDBC (не через выборку DSL)
  • Java 11
  • Диалект источника базы данных: Oracle
  • Диалект назначения: PostgreSQL
Вопрос:
Есть ли способ заставить jOOQ игнорировать часть SQL во время синтаксического анализа, но сохранять ее в фактическом выполнении?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -execution
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»