diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLDatabase.java index d2c4b901d0..571dbc9426 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLDatabase.java @@ -70,6 +70,7 @@ import static org.jooq.impl.SQLDataType.VARCHAR; import static org.jooq.meta.mysql.information_schema.Tables.CHECK_CONSTRAINTS; import static org.jooq.meta.mysql.information_schema.Tables.COLUMNS; import static org.jooq.meta.mysql.information_schema.Tables.KEY_COLUMN_USAGE; +import static org.jooq.meta.mysql.information_schema.Tables.PARAMETERS; import static org.jooq.meta.mysql.information_schema.Tables.REFERENTIAL_CONSTRAINTS; import static org.jooq.meta.mysql.information_schema.Tables.ROUTINES; import static org.jooq.meta.mysql.information_schema.Tables.SCHEMATA; @@ -146,6 +147,7 @@ import org.jetbrains.annotations.Nullable; */ public class MySQLDatabase extends AbstractDatabase implements ResultQueryDatabase { + private Boolean is5_5; private Boolean is5_7; private Boolean is8; private Boolean is8_0_16; @@ -303,6 +305,22 @@ public class MySQLDatabase extends AbstractDatabase implements ResultQueryDataba return is5_7; } + protected boolean is5_5() { + + // Check if this is a MySQL 5.5 or later database + if (is5_5 == null) { + try { + create().selectOne().from(PARAMETERS).limit(1).fetchOne(); + is5_5 = true; + } + catch (Exception e) { + is5_5 = false; + } + } + + return is5_5; + } + @Override public ResultQuery> primaryKeys(List schemas) { return keys(schemas, true); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLRoutineDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLRoutineDefinition.java index 271fe408ef..6459669890 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLRoutineDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/mysql/MySQLRoutineDefinition.java @@ -59,8 +59,6 @@ import org.jooq.tools.StringUtils; */ public class MySQLRoutineDefinition extends AbstractRoutineDefinition { - private static Boolean is55; - private final String params; private final String returns; private final ProcType procType; @@ -83,7 +81,7 @@ public class MySQLRoutineDefinition extends AbstractRoutineDefinition { @Override protected void init0() { - if (is55()) + if (((MySQLDatabase) getDatabase()).is5_5()) init55(); else init54(); @@ -208,20 +206,4 @@ public class MySQLRoutineDefinition extends AbstractRoutineDefinition { return new DefaultParameterDefinition(this, paramName, columnIndex, type); } - - private boolean is55() { - - // Check if this is a MySQL 5.5 or later database - if (is55 == null) { - try { - create().selectOne().from(PARAMETERS).limit(1).fetchOne(); - is55 = true; - } - catch (Exception e) { - is55 = false; - } - } - - return is55; - } } diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteDatabase.java index 92cba6d9d4..c1d33e547f 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteDatabase.java @@ -42,6 +42,7 @@ import static org.jooq.impl.DSL.coalesce; import static org.jooq.impl.DSL.field; import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.list; +import static org.jooq.impl.DSL.lower; import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.noCondition; import static org.jooq.impl.DSL.one; @@ -635,4 +636,18 @@ public class SQLiteDatabase extends AbstractDatabase implements ResultQueryDatab return snapshot; } + + private Boolean existsSqliteSequence; + + boolean existsSqliteSequence() { + if (existsSqliteSequence == null) { + existsSqliteSequence = create() + .selectCount() + .from(SQLITE_MASTER) + .where(lower(SQLiteMaster.NAME).eq("sqlite_sequence")) + .fetchOne(0, boolean.class); + } + + return existsSqliteSequence; + } } diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteTableDefinition.java index f390218a95..7e90dc141b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteTableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/sqlite/SQLiteTableDefinition.java @@ -78,7 +78,6 @@ import org.jooq.tools.JooqLogger; public class SQLiteTableDefinition extends AbstractTableDefinition { private static final JooqLogger log = JooqLogger.getLogger(SQLiteTableDefinition.class); - private static Boolean existsSqliteSequence; private Table interpretedTable; public SQLiteTableDefinition(SchemaDefinition schema, String name, String comment) { @@ -188,7 +187,7 @@ public class SQLiteTableDefinition extends AbstractTableDefinition { break identityCheck; // [#6854] sqlite_sequence only contains identity information once a table contains records. - identity |= existsSqliteSequence() && create() + identity |= ((SQLiteDatabase) getDatabase()).existsSqliteSequence() && create() .fetchOne("select count(*) from sqlite_sequence where name = ?", getName()) .get(0, Boolean.class); @@ -232,16 +231,4 @@ public class SQLiteTableDefinition extends AbstractTableDefinition { return result; } - - private boolean existsSqliteSequence() { - if (existsSqliteSequence == null) { - existsSqliteSequence = create() - .selectCount() - .from(SQLITE_MASTER) - .where(lower(SQLiteMaster.NAME).eq("sqlite_sequence")) - .fetchOne(0, boolean.class); - } - - return existsSqliteSequence; - } }