[jOOQ/jOOQ#7539] Auto-alias CTE contents
This commit is contained in:
parent
c5d1e154ae
commit
2e7be261c6
@ -51,6 +51,8 @@ import static org.jooq.impl.Keywords.K_AS;
|
||||
import static org.jooq.impl.Keywords.K_MATERIALIZED;
|
||||
import static org.jooq.impl.Keywords.K_NOT;
|
||||
import static org.jooq.impl.SubqueryCharacteristics.DERIVED_TABLE;
|
||||
import static org.jooq.impl.Tools.isEmpty;
|
||||
import static org.jooq.impl.Tools.isNotEmpty;
|
||||
import static org.jooq.impl.Tools.map;
|
||||
import static org.jooq.impl.Tools.visitSubquery;
|
||||
|
||||
@ -61,6 +63,7 @@ import org.jooq.Context;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.DerivedColumnList;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Name;
|
||||
// ...
|
||||
import org.jooq.QueryPart;
|
||||
import org.jooq.Record;
|
||||
@ -79,8 +82,9 @@ import org.jooq.impl.Tools.SimpleDataKey;
|
||||
*/
|
||||
final class CommonTableExpressionImpl<R extends Record> extends AbstractTable<R> implements CommonTableExpression<R> {
|
||||
|
||||
static final Set<SQLDialect> SUPPORT_MATERIALIZED = SQLDialect.supportedBy(POSTGRES, SQLITE);
|
||||
static final Set<SQLDialect> NO_SUPPORT_COLUMN_LIST = SQLDialect.supportedBy(CLICKHOUSE);
|
||||
static final Set<SQLDialect> SUPPORT_MATERIALIZED = SQLDialect.supportedBy(POSTGRES, SQLITE);
|
||||
static final Set<SQLDialect> NO_SUPPORT_COLUMN_LIST = SQLDialect.supportedBy(CLICKHOUSE);
|
||||
static final Set<SQLDialect> REQUIRE_EXPLICIT_ALIASING = SQLDialect.supportedBy(CLICKHOUSE);
|
||||
|
||||
|
||||
|
||||
@ -133,7 +137,7 @@ final class CommonTableExpressionImpl<R extends Record> extends AbstractTable<R>
|
||||
QueryPart s = query;
|
||||
|
||||
// [#4474] [#16629] Support this for ResultQuery as well
|
||||
if (NO_SUPPORT_COLUMN_LIST.contains(ctx.dialect())) {
|
||||
if (NO_SUPPORT_COLUMN_LIST.contains(ctx.dialect()) && isNotEmpty(name.fieldNames)) {
|
||||
ctx.visit(name.name);
|
||||
|
||||
if (query instanceof Select<R> q)
|
||||
@ -144,6 +148,14 @@ final class CommonTableExpressionImpl<R extends Record> extends AbstractTable<R>
|
||||
query
|
||||
);
|
||||
}
|
||||
|
||||
// [#7539] The automatic aliases generated by ClickHouse for CTE and derived tables are unreliable
|
||||
else if (REQUIRE_EXPLICIT_ALIASING.contains(ctx.dialect()) && isEmpty(name.fieldNames)) {
|
||||
ctx.visit(name.name);
|
||||
|
||||
if (query instanceof Select<R> q)
|
||||
s = new AliasedSelect<>(q, false, true, false, map(q.getSelect(), f -> f.getUnqualifiedName(), Name[]::new));
|
||||
}
|
||||
else
|
||||
ctx.visit(name);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user