From d751d6edc7bcf719f5bef3fc23c707a03d2e7dbb Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Tue, 28 May 2019 15:51:08 +0200 Subject: [PATCH] [#8547] Fix SQLITE comparisons against dialect SQLITE should normally be compared against the dialect family. Also replace some occurrences of `context.configuration().dialect()` with `context.dialect()`. --- jOOQ-meta/src/main/java/org/jooq/meta/Databases.java | 4 ++++ jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java | 2 +- jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java | 2 +- jOOQ/src/main/java/org/jooq/impl/Function.java | 2 +- jOOQ/src/main/java/org/jooq/impl/FunctionTable.java | 4 ++-- jOOQ/src/main/java/org/jooq/impl/MetaImpl.java | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java b/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java index 76be8628c1..aae8374e5a 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java @@ -133,6 +133,10 @@ public static final Class databaseClass(SQLDialect dialect) case POSTGRES: result = PostgresDatabase.class; break; + + + + case SQLITE: result = SQLiteDatabase.class; break; case DEFAULT: diff --git a/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java b/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java index 04e9ca3108..d3020d53f0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CaseWhenStepImpl.java @@ -226,7 +226,7 @@ public final void accept(Context ctx) { .visit(K_CASE); int size = compareValues.size(); - switch (ctx.configuration().dialect()) { + switch (ctx.dialect()) { // The DERBY dialect doesn't support the simple CASE clause case DERBY: { diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index 19ef97fad4..7b537ba83d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -1444,7 +1444,7 @@ final void set0(BindingSetSQLOutputContext ctx, BigInteger value) throws SQLE final BigInteger get0(BindingGetResultSetContext ctx) throws SQLException { // The SQLite JDBC driver doesn't support BigDecimals - if (ctx.configuration().dialect() == SQLDialect.SQLITE) + if (ctx.family() == SQLDialect.SQLITE) return Convert.convert(ctx.resultSet().getString(ctx.index()), BigInteger.class); BigDecimal b = ctx.resultSet().getBigDecimal(ctx.index()); diff --git a/jOOQ/src/main/java/org/jooq/impl/Function.java b/jOOQ/src/main/java/org/jooq/impl/Function.java index f0a86dd684..6239c05627 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Function.java +++ b/jOOQ/src/main/java/org/jooq/impl/Function.java @@ -642,7 +642,7 @@ final void toSQLFunctionName(Context ctx) { if (name != null) ctx.visit(name); else if (term != null) - ctx.sql(term.translate(ctx.configuration().dialect())); + ctx.sql(term.translate(ctx.dialect())); else ctx.sql(getName()); } diff --git a/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java b/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java index 7532eaa42f..81e5dfc339 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/FunctionTable.java @@ -82,7 +82,7 @@ public final Table as(Name as, Name... fieldAliases) { @Override public final void accept(Context ctx) { - switch (ctx.configuration().dialect()) { + switch (ctx.dialect()) { case HSQLDB: { ctx.visit(K_TABLE).sql('(').visit(function).sql(')'); break; @@ -99,7 +99,7 @@ public final void accept(Context ctx) { } default: - throw new SQLDialectNotSupportedException("FUNCTION TABLE is not supported for " + ctx.configuration().dialect()); + throw new SQLDialectNotSupportedException("FUNCTION TABLE is not supported for " + ctx.dialect()); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java index 74168deb19..d97ae593ef 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java @@ -429,7 +429,7 @@ private final Result getColumns(String schema, String table) { // SQLite JDBC's DatabaseMetaData.getColumns() can only return a single // table's columns - if (columnCache == null && configuration.dialect() != SQLITE) { + if (columnCache == null && configuration.family() != SQLITE) { Result columns = getColumns0(schema, "%"); Field tableCat = (Field) columns.field(0); // TABLE_CAT