[jOOQ/jOOQ#16777] Support BigQuery's QUALIFY .. WINDOW keyword order

This commit is contained in:
Lukas Eder 2024-06-06 11:25:55 +02:00
parent 3b7fbb8340
commit 1abb2a19fd

View File

@ -375,6 +375,8 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
static final Set<SQLDialect> SUPPORT_FULL_WITH_TIES = SQLDialect.supportedBy(CLICKHOUSE, H2, MARIADB, POSTGRES, TRINO);
static final Set<SQLDialect> EMULATE_DISTINCT_ON = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL, SQLITE, TRINO);
@ -2733,15 +2735,10 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
// WINDOW clause
// -------------
context.start(SELECT_WINDOW);
if (Tools.isNotEmpty(window) && !NO_SUPPORT_WINDOW_CLAUSE.contains(context.dialect()))
context.formatSeparator()
.visit(K_WINDOW)
.separatorRequired(true)
.declareWindows(true, c -> c.visit(window));
context.end(SELECT_WINDOW);
acceptWindow(context);
// QUALIFY clause
// -------------
@ -2754,6 +2751,11 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
// [#15188] Callers ensure that the two QUALIFY conditions are mutually exclusive
.visit(additionalQualify != null ? additionalQualify : getQualify().getWhere());
// ORDER BY clause for local subselect
// -----------------------------------
toSQLOrderBy(
@ -2829,6 +2831,18 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
));
}
private void acceptWindow(Context<?> context) {
context.start(SELECT_WINDOW);
if (Tools.isNotEmpty(window) && !NO_SUPPORT_WINDOW_CLAUSE.contains(context.dialect()))
context.formatSeparator()
.visit(K_WINDOW)
.separatorRequired(true)
.declareWindows(true, c -> c.visit(window));
context.end(SELECT_WINDOW);
}