[jOOQ/jOOQ#16290] Wrong SQL generated for CREATE TABLE in non-default schemas for DuckDB

This commit is contained in:
Lukas Eder 2024-02-15 15:12:42 +01:00
parent 30c0273f30
commit 3f727f759f
2 changed files with 14 additions and 4 deletions

View File

@ -344,7 +344,7 @@ implements
static final Set<SQLDialect> NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD);
static final Set<SQLDialect> NO_SUPPORT_WITH_DATA = SQLDialect.supportedBy(DUCKDB, H2, MARIADB, MYSQL, SQLITE);
static final Set<SQLDialect> NO_SUPPORT_CTAS_COLUMN_NAMES = SQLDialect.supportedBy(H2);
static final Set<SQLDialect> NO_SUPPORT_CTAS_COLUMN_NAMES = SQLDialect.supportedBy(DUCKDB, H2);
static final Set<SQLDialect> EMULATE_INDEXES_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB);
static final Set<SQLDialect> EMULATE_SOME_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB);
static final Set<SQLDialect> EMULATE_STORED_ENUM_TYPES_AS_CHECK = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, SQLITE);

View File

@ -37,10 +37,12 @@
*/
package org.jooq.impl;
import static org.jooq.SQLDialect.DUCKDB;
import static org.jooq.impl.Keywords.K_EXCEPT;
import java.util.Arrays;
import java.util.Collection;
import java.util.Set;
import org.jooq.Context;
import org.jooq.Field;
@ -48,6 +50,7 @@ import org.jooq.Name;
import org.jooq.QualifiedAsterisk;
import org.jooq.QueryPart;
// ...
import org.jooq.SQLDialect;
import org.jooq.Table;
// ...
import org.jooq.impl.QOM.UnmodifiableList;
@ -57,8 +60,10 @@ import org.jooq.impl.QOM.UnmodifiableList;
*/
final class QualifiedAsteriskImpl extends AbstractQueryPart implements QualifiedAsterisk {
private final Table<?> table;
final QueryPartList<Field<?>> fields;
private static final Set<SQLDialect> NO_SUPPORT_FULLY_QUALIFIED_ASTERISKS = SQLDialect.supportedBy(DUCKDB);
private final Table<?> table;
final QueryPartList<Field<?>> fields;
QualifiedAsteriskImpl(Table<?> table) {
this(table, null);
@ -83,7 +88,12 @@ final class QualifiedAsteriskImpl extends AbstractQueryPart implements Qualified
default:
ctx.visit(table).sql('.').visit(AsteriskImpl.INSTANCE.get());
if (NO_SUPPORT_FULLY_QUALIFIED_ASTERISKS.contains(ctx.dialect()))
ctx.qualify(false, c -> c.visit(table));
else
ctx.visit(table);
ctx.sql('.').visit(AsteriskImpl.INSTANCE.get());
// [#7921] H2 has native support for EXCEPT. Emulations are implemented
// in SelectQueryImpl