diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java index e6a3bb34c0..525f10f4c7 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGenerator.java @@ -300,10 +300,16 @@ public class DefaultGenerator implements Generator { out.print("\tpublic static final "); out.print(Sequence.class); + out.print("<"); + out.print(getJavaType(sequence.getType())); + out.print(">"); out.print(" "); out.print(strategy.getJavaIdentifierUC(sequence)); out.print(" = new "); out.print(SequenceImpl.class); + out.print("<"); + out.print(getJavaType(sequence.getType())); + out.print(">"); out.print("(\""); out.print(sequence.getName()); out.print("\""); @@ -315,6 +321,9 @@ public class DefaultGenerator implements Generator { out.print(", null"); } + out.print(", "); + out.print(getJavaTypeReference(sequence.getDatabase(), sequence.getType())); + out.println(");"); } @@ -322,7 +331,7 @@ public class DefaultGenerator implements Generator { out.println("}"); out.close(); - registerInSchema(outS, database.getSequences(), Sequence.class, false); + registerInSchema(outS, database.getSequences(), Sequence.class, true); watch.splitInfo("Sequences generated"); } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/DefaultSequenceDefinition.java b/jOOQ-meta/src/main/java/org/jooq/util/DefaultSequenceDefinition.java index 6b192313f1..887d5445e7 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/DefaultSequenceDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/DefaultSequenceDefinition.java @@ -38,9 +38,11 @@ package org.jooq.util; /** * @author Lukas Eder */ -public class DefaultSequenceDefinition extends AbstractDefinition implements SequenceDefinition { +public class DefaultSequenceDefinition + extends AbstractTypedElementDefinition + implements SequenceDefinition { - public DefaultSequenceDefinition(Database database, String name) { - super(database, name, null); + public DefaultSequenceDefinition(SchemaDefinition schema, String name, DataTypeDefinition type) { + super(schema, name, -1, type, null); } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/SequenceDefinition.java b/jOOQ-meta/src/main/java/org/jooq/util/SequenceDefinition.java index 3cabc94741..41584c4c48 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/SequenceDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/SequenceDefinition.java @@ -40,6 +40,6 @@ package org.jooq.util; * * @author Lukas Eder */ -public interface SequenceDefinition extends Definition { +public interface SequenceDefinition extends TypedElementDefinition { } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java b/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java index 056f124bf4..329f2500df 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/db2/DB2Database.java @@ -59,6 +59,8 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; import org.jooq.util.DefaultSequenceDefinition; import org.jooq.util.EnumDefinition; @@ -171,13 +173,25 @@ public class DB2Database extends AbstractDatabase { protected List getSequences0() throws SQLException { List result = new ArrayList(); - for (String name : create().select(Sequences.SEQNAME) - .from(SEQUENCES) - .where(Sequences.SEQSCHEMA.equal(getSchemaName())) - .orderBy(Sequences.SEQNAME) - .fetch(Sequences.SEQNAME)) { + for (Record record : create().select( + Sequences.SEQNAME, + Sequences.SEQTYPE, + Datatypes.TYPENAME, + Sequences.PRECISION) + .from(SEQUENCES) + .join(DATATYPES) + .on(Sequences.DATATYPEID.equal(Datatypes.TYPEID.cast(Integer.class))) + .where(Sequences.SEQSCHEMA.equal(getSchemaName())) + .orderBy(Sequences.SEQNAME) + .fetch()) { - result.add(new DefaultSequenceDefinition(this, name)); + DataTypeDefinition type = new DefaultDataTypeDefinition(this, + record.getValue(Datatypes.TYPENAME), + record.getValue(Sequences.PRECISION), + 0); + + result.add(new DefaultSequenceDefinition(getSchema(), + record.getValue(Sequences.SEQNAME), type)); } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java index 49b4553055..36e25e3328 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/derby/DerbyDatabase.java @@ -56,6 +56,8 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; import org.jooq.util.DefaultSequenceDefinition; import org.jooq.util.EnumDefinition; @@ -193,15 +195,22 @@ public class DerbyDatabase extends AbstractDatabase { protected List getSequences0() throws SQLException { List result = new ArrayList(); - for (String name : create().select(Syssequences.SEQUENCENAME) - .from(SYSSEQUENCES) - .join(SYSSCHEMAS) - .on(Sysschemas.SCHEMAID.equal(Syssequences.SCHEMAID)) - .where(Sysschemas.SCHEMANAME.equal(getSchemaName())) - .orderBy(Syssequences.SEQUENCENAME) - .fetch(Syssequences.SEQUENCENAME)) { + for (Record record : create().select( + Syssequences.SEQUENCENAME, + Syssequences.SEQUENCEDATATYPE) + .from(SYSSEQUENCES) + .join(SYSSCHEMAS) + .on(Sysschemas.SCHEMAID.equal(Syssequences.SCHEMAID)) + .where(Sysschemas.SCHEMANAME.equal(getSchemaName())) + .orderBy(Syssequences.SEQUENCENAME) + .fetch()) { - result.add(new DefaultSequenceDefinition(this, name)); + DataTypeDefinition type = new DefaultDataTypeDefinition(this, + record.getValue(Syssequences.SEQUENCEDATATYPE), + 0, 0); + + result.add(new DefaultSequenceDefinition( + getSchema(), record.getValueAsString(Syssequences.SEQUENCENAME), type)); } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java index a3a227e0c3..48e2befa94 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java @@ -51,6 +51,7 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; import org.jooq.util.DefaultSequenceDefinition; import org.jooq.util.EnumDefinition; @@ -163,12 +164,15 @@ public class H2Database extends AbstractDatabase { List result = new ArrayList(); for (String name : create().select(Sequences.SEQUENCE_NAME) - .from(SEQUENCES) - .where(Sequences.SEQUENCE_SCHEMA.equal(getSchemaName())) - .orderBy(Sequences.SEQUENCE_NAME) - .fetch(Sequences.SEQUENCE_NAME)) { + .from(SEQUENCES) + .where(Sequences.SEQUENCE_SCHEMA.equal(getSchemaName())) + .orderBy(Sequences.SEQUENCE_NAME) + .fetch(Sequences.SEQUENCE_NAME)) { - result.add(new DefaultSequenceDefinition(this, name)); + DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(this, + H2DataType.BIGINT.getTypeName(), 0, 0); + + result.add(new DefaultSequenceDefinition(getSchema(), name, type)); } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java index 6472fd65ee..19a2dd60bc 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java @@ -54,6 +54,8 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; import org.jooq.util.DefaultSequenceDefinition; import org.jooq.util.EnumDefinition; @@ -174,14 +176,20 @@ public class HSQLDBDatabase extends AbstractDatabase { protected List getSequences0() throws SQLException { List result = new ArrayList(); - for (String name : create() - .select(Sequences.SEQUENCE_NAME) + for (Record record : create() + .select( + Sequences.SEQUENCE_NAME, + Sequences.DATA_TYPE) .from(SEQUENCES) .where(Sequences.SEQUENCE_SCHEMA.equal(getSchemaName())) .orderBy(Sequences.SEQUENCE_NAME) - .fetch(Sequences.SEQUENCE_NAME)) { + .fetch()) { - result.add(new DefaultSequenceDefinition(this, name)); + DataTypeDefinition type = new DefaultDataTypeDefinition(this, + record.getValue(Sequences.DATA_TYPE), 0, 0); + + result.add(new DefaultSequenceDefinition( + getSchema(), record.getValue(Sequences.SEQUENCE_NAME), type)); } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java index 4539ed5d51..df2000d80c 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/ingres/IngresDatabase.java @@ -53,6 +53,8 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; import org.jooq.util.DefaultSequenceDefinition; import org.jooq.util.EnumDefinition; @@ -180,13 +182,19 @@ public class IngresDatabase extends AbstractDatabase { protected List getSequences0() throws SQLException { List result = new ArrayList(); - for (Record record : create().select(Iisequences.SEQ_NAME.trim()) + for (Record record : create().select( + Iisequences.SEQ_NAME.trim(), + Iisequences.DATA_TYPE.trim()) .from(IISEQUENCES) .where(Iisequences.SEQ_OWNER.equal(getSchemaName())) .orderBy(Iisequences.SEQ_NAME) .fetch()) { - result.add(new DefaultSequenceDefinition(this, record.getValue(Iisequences.SEQ_NAME.trim()))); + DataTypeDefinition type = new DefaultDataTypeDefinition(this, + record.getValue(Iisequences.DATA_TYPE.trim()), 0, 0); + + result.add(new DefaultSequenceDefinition( + getSchema(), record.getValue(Iisequences.SEQ_NAME.trim()), type)); } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java index 1f346ec16e..f531112a88 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/oracle/OracleDatabase.java @@ -59,6 +59,7 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; import org.jooq.util.DefaultArrayDefinition; import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; @@ -181,7 +182,10 @@ public class OracleDatabase extends AbstractDatabase { .orderBy(SEQUENCE_NAME) .fetch(SEQUENCE_NAME)) { - result.add(new DefaultSequenceDefinition(this, name)); + DataTypeDefinition type = new DefaultDataTypeDefinition(this, + OracleDataType.NUMBER.getTypeName(), 38, 0); + + result.add(new DefaultSequenceDefinition(getSchema(), name, type)); } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java index f040a905b6..2144d9af07 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/postgres/PostgresDatabase.java @@ -64,6 +64,8 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultEnumDefinition; import org.jooq.util.DefaultRelations; import org.jooq.util.DefaultSequenceDefinition; @@ -195,13 +197,24 @@ public class PostgresDatabase extends AbstractDatabase { protected List getSequences0() throws SQLException { List result = new ArrayList(); - for (String name : create().select(Sequences.SEQUENCE_NAME) - .from(SEQUENCES) - .where(Sequences.SEQUENCE_SCHEMA.equal(getSchemaName())) - .orderBy(Sequences.SEQUENCE_NAME) - .fetch(Sequences.SEQUENCE_NAME)) { + for (Record record : create() + .select( + Sequences.SEQUENCE_NAME, + Sequences.DATA_TYPE, + Sequences.NUMERIC_PRECISION, + Sequences.NUMERIC_SCALE) + .from(SEQUENCES) + .where(Sequences.SEQUENCE_SCHEMA.equal(getSchemaName())) + .orderBy(Sequences.SEQUENCE_NAME) + .fetch()) { - result.add(new DefaultSequenceDefinition(this, name)); + DataTypeDefinition type = new DefaultDataTypeDefinition(this, + record.getValue(Sequences.DATA_TYPE), + record.getValue(Sequences.NUMERIC_PRECISION), + record.getValue(Sequences.NUMERIC_SCALE)); + + result.add(new DefaultSequenceDefinition( + getSchema(), record.getValue(Sequences.SEQUENCE_NAME), type)); } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java index 0126d7cfe5..384dea66aa 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/sybase/SybaseDatabase.java @@ -47,6 +47,8 @@ import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; import org.jooq.util.DefaultSequenceDefinition; import org.jooq.util.EnumDefinition; @@ -203,8 +205,12 @@ public class SybaseDatabase extends AbstractDatabase { .orderBy(Syssequence.SEQUENCE_NAME) .fetch(Syssequence.SEQUENCE_NAME)) { - result.add(new DefaultSequenceDefinition(this, name)); + DataTypeDefinition type = new DefaultDataTypeDefinition(this, + SybaseDataType.NUMERIC.getTypeName(), 38, 0); + + result.add(new DefaultSequenceDefinition(getSchema(), name, type)); } + return result; } diff --git a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Lukas.java b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Lukas.java index 549e91a615..841b7d5853 100644 --- a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Lukas.java +++ b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Lukas.java @@ -10,7 +10,7 @@ package org.jooq.test.db2.generatedclasses; comments = "This class is generated by jOOQ") public class Lukas extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = 2041409044; + private static final long serialVersionUID = 1225381834; /** * The singleton instance of LUKAS @@ -25,8 +25,8 @@ public class Lukas extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList( + public final java.util.List> getSequences() { + return java.util.Arrays.>asList( org.jooq.test.db2.generatedclasses.Sequences.S_AUTHOR_ID, org.jooq.test.db2.generatedclasses.Sequences.S_TRIGGER_ID); } diff --git a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Sequences.java index 8d821737e9..02548d061e 100644 --- a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/Sequences.java @@ -13,14 +13,14 @@ package org.jooq.test.db2.generatedclasses; public final class Sequences { /** - * The sequence S_AUTHOR_ID + * The sequence LUKAS.LUKAS.S_AUTHOR_ID */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.db2.generatedclasses.Lukas.LUKAS); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.db2.generatedclasses.Lukas.LUKAS, org.jooq.impl.SQLDataType.INTEGER); /** - * The sequence S_TRIGGER_ID + * The sequence LUKAS.LUKAS.S_TRIGGER_ID */ - public static final org.jooq.Sequence S_TRIGGER_ID = new org.jooq.impl.SequenceImpl("S_TRIGGER_ID", org.jooq.test.db2.generatedclasses.Lukas.LUKAS); + public static final org.jooq.Sequence S_TRIGGER_ID = new org.jooq.impl.SequenceImpl("S_TRIGGER_ID", org.jooq.test.db2.generatedclasses.Lukas.LUKAS, org.jooq.impl.SQLDataType.INTEGER); /** * No instances diff --git a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Sequences.java index 33802642bf..a9de50358a 100644 --- a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Sequences.java @@ -13,9 +13,9 @@ package org.jooq.test.derby.generatedclasses; public final class Sequences { /** - * The sequence S_AUTHOR_ID + * The sequence TEST.TEST.S_AUTHOR_ID */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.derby.generatedclasses.Test.TEST); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.derby.generatedclasses.Test.TEST, org.jooq.impl.SQLDataType.INTEGER); /** * No instances diff --git a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Test.java b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Test.java index 234a2a169b..e8f33c0acc 100644 --- a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Test.java +++ b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Test.java @@ -10,7 +10,7 @@ package org.jooq.test.derby.generatedclasses; comments = "This class is generated by jOOQ") public class Test extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -2119002270; + private static final long serialVersionUID = 561937048; /** * The singleton instance of TEST @@ -25,8 +25,8 @@ public class Test extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList(org.jooq.test.derby.generatedclasses.Sequences.S_AUTHOR_ID); + public final java.util.List> getSequences() { + return java.util.Arrays.>asList(org.jooq.test.derby.generatedclasses.Sequences.S_AUTHOR_ID); } @Override diff --git a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Public.java b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Public.java index 1de23afa8f..6c8ea5a7e4 100644 --- a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Public.java +++ b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Public.java @@ -10,7 +10,7 @@ package org.jooq.test.h2.generatedclasses; comments = "This class is generated by jOOQ") public class Public extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -1780021047; + private static final long serialVersionUID = 131264191; /** * The singleton instance of PUBLIC @@ -25,8 +25,8 @@ public class Public extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList( + public final java.util.List> getSequences() { + return java.util.Arrays.>asList( org.jooq.test.h2.generatedclasses.Sequences.S_AUTHOR_ID, org.jooq.test.h2.generatedclasses.Sequences.S_TRIGGERS_SEQUENCE); } diff --git a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Sequences.java index e246f4db02..ebb70bacad 100644 --- a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Sequences.java @@ -13,14 +13,14 @@ package org.jooq.test.h2.generatedclasses; public final class Sequences { /** - * The sequence S_AUTHOR_ID + * The sequence PUBLIC.PUBLIC.S_AUTHOR_ID */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.h2.generatedclasses.Public.PUBLIC); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.h2.generatedclasses.Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT); /** - * The sequence S_TRIGGERS_SEQUENCE + * The sequence PUBLIC.PUBLIC.S_TRIGGERS_SEQUENCE */ - public static final org.jooq.Sequence S_TRIGGERS_SEQUENCE = new org.jooq.impl.SequenceImpl("S_TRIGGERS_SEQUENCE", org.jooq.test.h2.generatedclasses.Public.PUBLIC); + public static final org.jooq.Sequence S_TRIGGERS_SEQUENCE = new org.jooq.impl.SequenceImpl("S_TRIGGERS_SEQUENCE", org.jooq.test.h2.generatedclasses.Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT); /** * No instances diff --git a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Public.java b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Public.java index c63d99e2bf..bfa47d5627 100644 --- a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Public.java +++ b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Public.java @@ -10,7 +10,7 @@ package org.jooq.test.hsqldb.generatedclasses; comments = "This class is generated by jOOQ") public class Public extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -701266683; + private static final long serialVersionUID = 1798190159; /** * The singleton instance of PUBLIC @@ -25,8 +25,8 @@ public class Public extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList(org.jooq.test.hsqldb.generatedclasses.Sequences.S_AUTHOR_ID); + public final java.util.List> getSequences() { + return java.util.Arrays.>asList(org.jooq.test.hsqldb.generatedclasses.Sequences.S_AUTHOR_ID); } @Override diff --git a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Sequences.java index b2d6b874f8..0c22608e93 100644 --- a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Sequences.java @@ -13,9 +13,9 @@ package org.jooq.test.hsqldb.generatedclasses; public final class Sequences { /** - * The sequence S_AUTHOR_ID + * The sequence PUBLIC.PUBLIC.S_AUTHOR_ID */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.hsqldb.generatedclasses.Public.PUBLIC); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.hsqldb.generatedclasses.Public.PUBLIC, org.jooq.impl.SQLDataType.INTEGER); /** * No instances diff --git a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Sequences.java index 8e32d634c6..93a5eaec70 100644 --- a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Sequences.java @@ -13,9 +13,9 @@ package org.jooq.test.ingres.generatedclasses; public final class Sequences { /** - * The sequence s_author_id + * The sequence test.test.s_author_id */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("s_author_id", org.jooq.test.ingres.generatedclasses.Test.TEST); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("s_author_id", org.jooq.test.ingres.generatedclasses.Test.TEST, org.jooq.impl.SQLDataType.BIGINT); /** * No instances diff --git a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Test.java b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Test.java index 38bdc039ec..86831f02cb 100644 --- a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Test.java +++ b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Test.java @@ -10,7 +10,7 @@ package org.jooq.test.ingres.generatedclasses; comments = "This class is generated by jOOQ") public class Test extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -1015067730; + private static final long serialVersionUID = 1311361976; /** * The singleton instance of test @@ -25,8 +25,8 @@ public class Test extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList(org.jooq.test.ingres.generatedclasses.Sequences.S_AUTHOR_ID); + public final java.util.List> getSequences() { + return java.util.Arrays.>asList(org.jooq.test.ingres.generatedclasses.Sequences.S_AUTHOR_ID); } @Override diff --git a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java index bbe4e60018..f58a52a8f3 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java @@ -2117,9 +2117,10 @@ public abstract class jOOQAbstractTest< reset = false; - Sequence sequence = (Sequence) cSequences().getField("S_AUTHOR_ID").get(cSequences()); - Field nextval = sequence.nextval(); - Field currval = null; + @SuppressWarnings("unchecked") + Sequence sequence = (Sequence) cSequences().getField("S_AUTHOR_ID").get(cSequences()); + Field nextval = sequence.nextval(); + Field currval = null; assertEquals("3", "" + create().select(nextval).fetchOne(nextval)); assertEquals("4", "" + create().select(nextval).fetchOne(nextval)); @@ -2142,15 +2143,15 @@ public abstract class jOOQAbstractTest< assertEquals("5", "" + create().select(currval).fetchOne(currval)); assertEquals("5", "" + create().select(currval).fetchOne(currval)); - assertEquals(new BigInteger("5"), create().currval(sequence)); - assertEquals(new BigInteger("5"), create().currval(sequence)); + assertEquals(5, create().currval(sequence).intValue()); + assertEquals(5, create().currval(sequence).intValue()); } assertEquals("6", "" + create().select(nextval).fetchOne(nextval)); // Test convenience syntax - assertEquals(new BigInteger("7"), create().nextval(sequence)); - assertEquals(new BigInteger("8"), create().nextval(sequence)); + assertEquals(7, create().nextval(sequence).intValue()); + assertEquals(8, create().nextval(sequence).intValue()); } @Test diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Sequences.java index 2b0b6da45e..50b92fb905 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Sequences.java @@ -13,9 +13,9 @@ package org.jooq.test.oracle.generatedclasses; public final class Sequences { /** - * The sequence S_AUTHOR_ID + * The sequence TEST.TEST.S_AUTHOR_ID */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.oracle.generatedclasses.Test.TEST); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.oracle.generatedclasses.Test.TEST, org.jooq.impl.SQLDataType.DECIMAL_INTEGER); /** * No instances diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Test.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Test.java index a03fa17362..a2ae8b4313 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Test.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Test.java @@ -10,7 +10,7 @@ package org.jooq.test.oracle.generatedclasses; comments = "This class is generated by jOOQ") public class Test extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -1777958162; + private static final long serialVersionUID = 1485629092; /** * The singleton instance of TEST @@ -36,8 +36,8 @@ public class Test extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList(org.jooq.test.oracle.generatedclasses.Sequences.S_AUTHOR_ID); + public final java.util.List> getSequences() { + return java.util.Arrays.>asList(org.jooq.test.oracle.generatedclasses.Sequences.S_AUTHOR_ID); } @Override diff --git a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Public.java b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Public.java index f0006f38b6..4b304e8710 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Public.java +++ b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Public.java @@ -10,7 +10,7 @@ package org.jooq.test.postgres.generatedclasses; comments = "This class is generated by jOOQ") public class Public extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -2116922621; + private static final long serialVersionUID = -810150023; /** * The singleton instance of public @@ -33,8 +33,8 @@ public class Public extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList(org.jooq.test.postgres.generatedclasses.Sequences.S_AUTHOR_ID); + public final java.util.List> getSequences() { + return java.util.Arrays.>asList(org.jooq.test.postgres.generatedclasses.Sequences.S_AUTHOR_ID); } @Override diff --git a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Sequences.java index fcb7f50712..a56f6b4e1b 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Sequences.java @@ -13,9 +13,9 @@ package org.jooq.test.postgres.generatedclasses; public final class Sequences { /** - * The sequence s_author_id + * The sequence public.public.s_author_id */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("s_author_id", org.jooq.test.postgres.generatedclasses.Public.PUBLIC); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("s_author_id", org.jooq.test.postgres.generatedclasses.Public.PUBLIC, org.jooq.impl.SQLDataType.BIGINT); /** * No instances diff --git a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Dba.java b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Dba.java index 9bbd09e527..4dd2548da3 100644 --- a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Dba.java +++ b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Dba.java @@ -10,7 +10,7 @@ package org.jooq.test.sybase.generatedclasses; comments = "This class is generated by jOOQ") public class Dba extends org.jooq.impl.SchemaImpl { - private static final long serialVersionUID = -187178479; + private static final long serialVersionUID = 1624815899; /** * The singleton instance of dba @@ -25,8 +25,8 @@ public class Dba extends org.jooq.impl.SchemaImpl { } @Override - public final java.util.List getSequences() { - return java.util.Arrays.asList(org.jooq.test.sybase.generatedclasses.Sequences.S_AUTHOR_ID); + public final java.util.List> getSequences() { + return java.util.Arrays.>asList(org.jooq.test.sybase.generatedclasses.Sequences.S_AUTHOR_ID); } @Override diff --git a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Sequences.java index e04e4b7a23..68456d3d05 100644 --- a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/Sequences.java @@ -13,9 +13,9 @@ package org.jooq.test.sybase.generatedclasses; public final class Sequences { /** - * The sequence s_author_id + * The sequence dba.dba.s_author_id */ - public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("s_author_id", org.jooq.test.sybase.generatedclasses.Dba.DBA); + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("s_author_id", org.jooq.test.sybase.generatedclasses.Dba.DBA, org.jooq.impl.SQLDataType.DECIMAL_INTEGER); /** * No instances diff --git a/jOOQ/src/main/java/org/jooq/Schema.java b/jOOQ/src/main/java/org/jooq/Schema.java index 8ca1b69db0..98fef8ae07 100644 --- a/jOOQ/src/main/java/org/jooq/Schema.java +++ b/jOOQ/src/main/java/org/jooq/Schema.java @@ -72,5 +72,5 @@ public interface Schema extends NamedQueryPart { /** * List all sequences contained in this schema */ - List getSequences(); + List> getSequences(); } diff --git a/jOOQ/src/main/java/org/jooq/Sequence.java b/jOOQ/src/main/java/org/jooq/Sequence.java index 74a8b6ed62..273cfda04b 100644 --- a/jOOQ/src/main/java/org/jooq/Sequence.java +++ b/jOOQ/src/main/java/org/jooq/Sequence.java @@ -35,22 +35,21 @@ */ package org.jooq; -import java.math.BigInteger; /** * A type representing sequences in databases that support this. * * @author Lukas Eder */ -public interface Sequence { +public interface Sequence { /** * Get the current value of this sequence */ - Field currval(); + Field currval(); /** * Increment the sequence and get the next value */ - Field nextval(); + Field nextval(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Factory.java b/jOOQ/src/main/java/org/jooq/impl/Factory.java index fdc0c45e12..fe0e233730 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Factory.java +++ b/jOOQ/src/main/java/org/jooq/impl/Factory.java @@ -1483,8 +1483,8 @@ public class Factory implements Configuration { * Convenience method to fetch the NEXTVAL for a sequence directly from this * {@link Factory}'s underlying JDBC {@link Connection} */ - public final BigInteger nextval(Sequence sequence) throws SQLException { - Field nextval = sequence.nextval(); + public final T nextval(Sequence sequence) throws SQLException { + Field nextval = sequence.nextval(); return select(nextval).fetchOne(nextval); } @@ -1492,8 +1492,8 @@ public class Factory implements Configuration { * Convenience method to fetch the CURRVAL for a sequence directly from this * {@link Factory}'s underlying JDBC {@link Connection} */ - public final BigInteger currval(Sequence sequence) throws SQLException { - Field currval = sequence.currval(); + public final T currval(Sequence sequence) throws SQLException { + Field currval = sequence.currval(); return select(currval).fetchOne(currval); } diff --git a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java index 3c5faeb0ec..0ab3476655 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java @@ -117,7 +117,7 @@ public class SchemaImpl extends AbstractNamedQueryPart implements Schema { * Subclasses should override this method */ @Override - public List getSequences() { + public List> getSequences() { return Collections.emptyList(); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/SequenceFunction.java b/jOOQ/src/main/java/org/jooq/impl/SequenceFunction.java index e2640b1e03..505f4b1b4e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SequenceFunction.java +++ b/jOOQ/src/main/java/org/jooq/impl/SequenceFunction.java @@ -37,8 +37,6 @@ package org.jooq.impl; import static org.jooq.impl.Factory.field; -import java.math.BigInteger; - import org.jooq.Configuration; import org.jooq.Field; import org.jooq.RenderContext; @@ -47,44 +45,44 @@ import org.jooq.SQLDialectNotSupportedException; /** * @author Lukas Eder */ -class SequenceFunction extends AbstractFunction { +class SequenceFunction extends AbstractFunction { /** * Generated UID */ - private static final long serialVersionUID = 2292275568395094887L; + private static final long serialVersionUID = 2292275568395094887L; - private final SequenceImpl sequence; - private final String method; + private final SequenceImpl sequence; + private final String method; - SequenceFunction(SequenceImpl sequence, String method) { - super(method, SQLDataType.DECIMAL_INTEGER); + SequenceFunction(SequenceImpl sequence, String method) { + super(method, sequence.type); this.sequence = sequence; this.method = method; } @Override - final Field getFunction0(Configuration configuration) { + final Field getFunction0(Configuration configuration) { switch (configuration.getDialect()) { case DB2: // No break case INGRES: // No break case ORACLE: // No break case SYBASE: { String field = getQualifiedName(configuration) + "." + method; - return field(field, BigInteger.class); + return field(field, getDataType()); } case H2: // No break case POSTGRES: { String field = method + "('" + getQualifiedName(configuration) + "')"; - return field(field, BigInteger.class); + return field(field, getDataType()); } case DERBY: // No break case HSQLDB: { if ("nextval".equals(method)) { String field = "next value for " + getQualifiedName(configuration); - return field(field, BigInteger.class); + return field(field, getDataType()); } else { throw new SQLDialectNotSupportedException("The sequence's current value functionality is not supported for the " + configuration.getDialect() + " dialect."); @@ -94,7 +92,7 @@ class SequenceFunction extends AbstractFunction { // Default is needed for hashCode() and toString() default: { String field = getQualifiedName(configuration) + "." + method; - return field(field, BigInteger.class); + return field(field, getDataType()); } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java index 524f2e9869..675ba54721 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java @@ -35,8 +35,7 @@ */ package org.jooq.impl; -import java.math.BigInteger; - +import org.jooq.DataType; import org.jooq.Field; import org.jooq.Schema; import org.jooq.Sequence; @@ -48,27 +47,29 @@ import org.jooq.Sequence; * * @author Lukas Eder */ -public class SequenceImpl implements Sequence { +public class SequenceImpl implements Sequence { final String name; final Schema schema; + final DataType type; - public SequenceImpl(String name, Schema schema) { + public SequenceImpl(String name, Schema schema, DataType type) { this.name = name; this.schema = schema; + this.type = type; } @Override - public Field currval() { + public Field currval() { return getSequence("currval"); } @Override - public Field nextval() { + public Field nextval() { return getSequence("nextval"); } - private Field getSequence(final String sequence) { - return new SequenceFunction(this, sequence); + private Field getSequence(final String sequence) { + return new SequenceFunction(this, sequence); } }