- [#6332] JPADatabase with GeneratedValue does not account for dialect - [#6339] Recognise H2 SYSTEM_SEQUENCE in INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT as an Identity column
This commit is contained in:
parent
8a9acbaf41
commit
178e6216e5
@ -7,7 +7,7 @@ package org.jooq.example.jpa.jooq;
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Index;
|
||||
import org.jooq.SortField;
|
||||
import org.jooq.OrderField;
|
||||
import org.jooq.example.jpa.jooq.tables.Actor;
|
||||
import org.jooq.example.jpa.jooq.tables.Film;
|
||||
import org.jooq.example.jpa.jooq.tables.FilmActor;
|
||||
@ -45,12 +45,12 @@ public class Indexes {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private static class Indexes0 extends AbstractKeys {
|
||||
public static Index PRIMARY_KEY_3 = createIndex("PRIMARY_KEY_3", Actor.ACTOR, new SortField[] { Actor.ACTOR.ACTORID.asc() }, true);
|
||||
public static Index FKD2YJC1RU34H1SMWLA3FX7B6NX_INDEX_2 = createIndex("FKD2YJC1RU34H1SMWLA3FX7B6NX_INDEX_2", Film.FILM, new SortField[] { Film.FILM.LANGUAGE_LANGUAGEID.asc() }, false);
|
||||
public static Index FKN2UB730RPO5B5E9X6U2LWL9FT_INDEX_2 = createIndex("FKN2UB730RPO5B5E9X6U2LWL9FT_INDEX_2", Film.FILM, new SortField[] { Film.FILM.ORIGINALLANGUAGE_LANGUAGEID.asc() }, false);
|
||||
public static Index PRIMARY_KEY_2 = createIndex("PRIMARY_KEY_2", Film.FILM, new SortField[] { Film.FILM.FILMID.asc() }, true);
|
||||
public static Index FK43SD2F45W7YN0GAXQ94EHTWT2_INDEX_7 = createIndex("FK43SD2F45W7YN0GAXQ94EHTWT2_INDEX_7", FilmActor.FILM_ACTOR, new SortField[] { FilmActor.FILM_ACTOR.ACTORS_ACTORID.asc() }, false);
|
||||
public static Index PRIMARY_KEY_7 = createIndex("PRIMARY_KEY_7", FilmActor.FILM_ACTOR, new SortField[] { FilmActor.FILM_ACTOR.FILMS_FILMID.asc(), FilmActor.FILM_ACTOR.ACTORS_ACTORID.asc() }, true);
|
||||
public static Index PRIMARY_KEY_C = createIndex("PRIMARY_KEY_C", Language.LANGUAGE, new SortField[] { Language.LANGUAGE.LANGUAGEID.asc() }, true);
|
||||
public static Index PRIMARY_KEY_3 = createIndex("PRIMARY_KEY_3", Actor.ACTOR, new OrderField[] { Actor.ACTOR.ACTORID }, true);
|
||||
public static Index FKD2YJC1RU34H1SMWLA3FX7B6NX_INDEX_2 = createIndex("FKD2YJC1RU34H1SMWLA3FX7B6NX_INDEX_2", Film.FILM, new OrderField[] { Film.FILM.LANGUAGE_LANGUAGEID }, false);
|
||||
public static Index FKN2UB730RPO5B5E9X6U2LWL9FT_INDEX_2 = createIndex("FKN2UB730RPO5B5E9X6U2LWL9FT_INDEX_2", Film.FILM, new OrderField[] { Film.FILM.ORIGINALLANGUAGE_LANGUAGEID }, false);
|
||||
public static Index PRIMARY_KEY_2 = createIndex("PRIMARY_KEY_2", Film.FILM, new OrderField[] { Film.FILM.FILMID }, true);
|
||||
public static Index FK43SD2F45W7YN0GAXQ94EHTWT2_INDEX_7 = createIndex("FK43SD2F45W7YN0GAXQ94EHTWT2_INDEX_7", FilmActor.FILM_ACTOR, new OrderField[] { FilmActor.FILM_ACTOR.ACTORS_ACTORID }, false);
|
||||
public static Index PRIMARY_KEY_7 = createIndex("PRIMARY_KEY_7", FilmActor.FILM_ACTOR, new OrderField[] { FilmActor.FILM_ACTOR.FILMS_FILMID, FilmActor.FILM_ACTOR.ACTORS_ACTORID }, true);
|
||||
public static Index PRIMARY_KEY_C = createIndex("PRIMARY_KEY_C", Language.LANGUAGE, new OrderField[] { Language.LANGUAGE.LANGUAGEID }, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ import org.jooq.impl.SchemaImpl;
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Public extends SchemaImpl {
|
||||
|
||||
private static final long serialVersionUID = 2090254858;
|
||||
private static final long serialVersionUID = -1420337279;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC</code>
|
||||
@ -85,9 +85,9 @@ public class Public extends SchemaImpl {
|
||||
|
||||
private final List<Sequence<?>> getSequences0() {
|
||||
return Arrays.<Sequence<?>>asList(
|
||||
Sequences.SYSTEM_SEQUENCE_0B2F3736_FD28_4F70_9981_27E255E167DC,
|
||||
Sequences.SYSTEM_SEQUENCE_19DC280A_2BA5_4C8D_BBEC_7914EB6BE5F5,
|
||||
Sequences.SYSTEM_SEQUENCE_F2DB1AD8_3E0D_4C94_BBDF_9EB28539D8F0);
|
||||
Sequences.SYSTEM_SEQUENCE_70BE46BF_63D1_4F2A_B1C0_A31847E2D3F6,
|
||||
Sequences.SYSTEM_SEQUENCE_7C66F721_38BD_4793_86A9_FB9269960DA2,
|
||||
Sequences.SYSTEM_SEQUENCE_CB0D4218_064F_45BC_B7EB_ACA8D001DEC2);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -24,17 +24,17 @@ import org.jooq.impl.SequenceImpl;
|
||||
public class Sequences {
|
||||
|
||||
/**
|
||||
* The sequence <code>PUBLIC.SYSTEM_SEQUENCE_0B2F3736_FD28_4F70_9981_27E255E167DC</code>
|
||||
* The sequence <code>PUBLIC.SYSTEM_SEQUENCE_70BE46BF_63D1_4F2A_B1C0_A31847E2D3F6</code>
|
||||
*/
|
||||
public static final Sequence<Long> SYSTEM_SEQUENCE_0B2F3736_FD28_4F70_9981_27E255E167DC = new SequenceImpl<Long>("SYSTEM_SEQUENCE_0B2F3736_FD28_4F70_9981_27E255E167DC", Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT);
|
||||
public static final Sequence<Long> SYSTEM_SEQUENCE_70BE46BF_63D1_4F2A_B1C0_A31847E2D3F6 = new SequenceImpl<Long>("SYSTEM_SEQUENCE_70BE46BF_63D1_4F2A_B1C0_A31847E2D3F6", Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT);
|
||||
|
||||
/**
|
||||
* The sequence <code>PUBLIC.SYSTEM_SEQUENCE_19DC280A_2BA5_4C8D_BBEC_7914EB6BE5F5</code>
|
||||
* The sequence <code>PUBLIC.SYSTEM_SEQUENCE_7C66F721_38BD_4793_86A9_FB9269960DA2</code>
|
||||
*/
|
||||
public static final Sequence<Long> SYSTEM_SEQUENCE_19DC280A_2BA5_4C8D_BBEC_7914EB6BE5F5 = new SequenceImpl<Long>("SYSTEM_SEQUENCE_19DC280A_2BA5_4C8D_BBEC_7914EB6BE5F5", Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT);
|
||||
public static final Sequence<Long> SYSTEM_SEQUENCE_7C66F721_38BD_4793_86A9_FB9269960DA2 = new SequenceImpl<Long>("SYSTEM_SEQUENCE_7C66F721_38BD_4793_86A9_FB9269960DA2", Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT);
|
||||
|
||||
/**
|
||||
* The sequence <code>PUBLIC.SYSTEM_SEQUENCE_F2DB1AD8_3E0D_4C94_BBDF_9EB28539D8F0</code>
|
||||
* The sequence <code>PUBLIC.SYSTEM_SEQUENCE_CB0D4218_064F_45BC_B7EB_ACA8D001DEC2</code>
|
||||
*/
|
||||
public static final Sequence<Long> SYSTEM_SEQUENCE_F2DB1AD8_3E0D_4C94_BBDF_9EB28539D8F0 = new SequenceImpl<Long>("SYSTEM_SEQUENCE_F2DB1AD8_3E0D_4C94_BBDF_9EB28539D8F0", Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT);
|
||||
public static final Sequence<Long> SYSTEM_SEQUENCE_CB0D4218_064F_45BC_B7EB_ACA8D001DEC2 = new SequenceImpl<Long>("SYSTEM_SEQUENCE_CB0D4218_064F_45BC_B7EB_ACA8D001DEC2", Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT);
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ import org.jooq.impl.TableImpl;
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Actor extends TableImpl<ActorRecord> {
|
||||
|
||||
private static final long serialVersionUID = 953917007;
|
||||
private static final long serialVersionUID = -135380361;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.ACTOR</code>
|
||||
@ -56,7 +56,7 @@ public class Actor extends TableImpl<ActorRecord> {
|
||||
/**
|
||||
* The column <code>PUBLIC.ACTOR.ACTORID</code>.
|
||||
*/
|
||||
public final TableField<ActorRecord, Integer> ACTORID = createField("ACTORID", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaultValue(org.jooq.impl.DSL.field("(NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_F2DB1AD8_3E0D_4C94_BBDF_9EB28539D8F0)", org.jooq.impl.SQLDataType.INTEGER)), this, "");
|
||||
public final TableField<ActorRecord, Integer> ACTORID = createField("ACTORID", org.jooq.impl.SQLDataType.INTEGER.nullable(false).identity(true), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.ACTOR.FIRSTNAME</code>.
|
||||
|
||||
@ -39,7 +39,7 @@ import org.jooq.impl.TableImpl;
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Film extends TableImpl<FilmRecord> {
|
||||
|
||||
private static final long serialVersionUID = -1430753716;
|
||||
private static final long serialVersionUID = 1608616621;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.FILM</code>
|
||||
@ -57,7 +57,7 @@ public class Film extends TableImpl<FilmRecord> {
|
||||
/**
|
||||
* The column <code>PUBLIC.FILM.FILMID</code>.
|
||||
*/
|
||||
public final TableField<FilmRecord, Integer> FILMID = createField("FILMID", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaultValue(org.jooq.impl.DSL.field("(NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_19DC280A_2BA5_4C8D_BBEC_7914EB6BE5F5)", org.jooq.impl.SQLDataType.INTEGER)), this, "");
|
||||
public final TableField<FilmRecord, Integer> FILMID = createField("FILMID", org.jooq.impl.SQLDataType.INTEGER.nullable(false).identity(true), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.FILM.LENGTH</code>.
|
||||
|
||||
@ -38,7 +38,7 @@ import org.jooq.impl.TableImpl;
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Language extends TableImpl<LanguageRecord> {
|
||||
|
||||
private static final long serialVersionUID = -1952045324;
|
||||
private static final long serialVersionUID = 1642663592;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.LANGUAGE</code>
|
||||
@ -56,7 +56,7 @@ public class Language extends TableImpl<LanguageRecord> {
|
||||
/**
|
||||
* The column <code>PUBLIC.LANGUAGE.LANGUAGEID</code>.
|
||||
*/
|
||||
public final TableField<LanguageRecord, Integer> LANGUAGEID = createField("LANGUAGEID", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaultValue(org.jooq.impl.DSL.field("(NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_0B2F3736_FD28_4F70_9981_27E255E167DC)", org.jooq.impl.SQLDataType.INTEGER)), this, "");
|
||||
public final TableField<LanguageRecord, Integer> LANGUAGEID = createField("LANGUAGEID", org.jooq.impl.SQLDataType.INTEGER.nullable(false).identity(true), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.LANGUAGE.NAME</code>.
|
||||
|
||||
@ -83,6 +83,13 @@ public class H2TableDefinition extends AbstractTableDefinition {
|
||||
.orderBy(Columns.ORDINAL_POSITION)
|
||||
.fetch()) {
|
||||
|
||||
// [#5331] AUTO_INCREMENT (MySQL style)
|
||||
// [#5331] DEFAULT nextval('sequence') (PostgreSQL style)
|
||||
// [#6332] [#6339] system-generated defaults shouldn't produce a default clause
|
||||
boolean isIdentity =
|
||||
null != record.get(Columns.SEQUENCE_NAME)
|
||||
|| defaultString(record.get(Columns.COLUMN_DEFAULT)).trim().toLowerCase().startsWith("nextval");
|
||||
|
||||
DataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
getDatabase(),
|
||||
getSchema(),
|
||||
@ -91,19 +98,14 @@ public class H2TableDefinition extends AbstractTableDefinition {
|
||||
record.get(Columns.NUMERIC_PRECISION),
|
||||
record.get(Columns.NUMERIC_SCALE),
|
||||
record.get(Columns.IS_NULLABLE, boolean.class),
|
||||
record.get(Columns.COLUMN_DEFAULT));
|
||||
isIdentity ? null : record.get(Columns.COLUMN_DEFAULT));
|
||||
|
||||
ColumnDefinition column = new DefaultColumnDefinition(
|
||||
getDatabase().getTable(getSchema(), getName()),
|
||||
record.get(Columns.COLUMN_NAME),
|
||||
record.get(Columns.ORDINAL_POSITION),
|
||||
type,
|
||||
|
||||
// [#5331] AUTO_INCREMENT (MySQL style)
|
||||
null != record.get(Columns.SEQUENCE_NAME)
|
||||
|
||||
// [#5331] DEFAULT nextval('sequence') (PostgreSQL style)
|
||||
|| defaultString(record.get(Columns.COLUMN_DEFAULT)).trim().toLowerCase().startsWith("nextval"),
|
||||
isIdentity,
|
||||
record.get(Columns.REMARKS));
|
||||
|
||||
result.add(column);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user