diff --git a/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java index 740cdb92dd..c3b1415667 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/ase/ASEDatabase.java @@ -39,6 +39,7 @@ import static org.jooq.util.ase.sys.tables.Sysindexes.SYSINDEXES; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.jooq.Record; @@ -202,8 +203,10 @@ public class ASEDatabase extends AbstractDatabase { List result = new ArrayList(); for (Record record : create().fetch("sp_help")) { - if (getSchemaName().equals(record.getValueAsString("Owner"))) { - result.add(record.getValueAsString("Name")); + if (Arrays.asList("view", "user table", "system table").contains(record.getValueAsString("Object_type"))) { + if (getSchemaName().equals(record.getValueAsString("Owner"))) { + result.add(record.getValueAsString("Name")); + } } } diff --git a/jOOQ-test/configuration/org/jooq/configuration/lukas/hsqldb/library.properties b/jOOQ-test/configuration/org/jooq/configuration/lukas/hsqldb/library.properties index bce96a9345..6949c3ceae 100644 --- a/jOOQ-test/configuration/org/jooq/configuration/lukas/hsqldb/library.properties +++ b/jOOQ-test/configuration/org/jooq/configuration/lukas/hsqldb/library.properties @@ -8,7 +8,7 @@ jdbc.Password= generator=org.jooq.util.DefaultGenerator generator.database=org.jooq.util.hsqldb.HSQLDBDatabase generator.database.includes=.* -generator.database.excludes=T_BOOK_DETAILS +generator.database.excludes=T_BOOK_DETAILS,S_TRIGGERS_SEQUENCE generator.generate.relations=true diff --git a/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.properties b/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.properties index 9aaaa09a55..f6a42db10d 100644 --- a/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.properties +++ b/jOOQ-test/configuration/org/jooq/configuration/lukas/oracle/library.properties @@ -8,7 +8,7 @@ jdbc.Password=TEST generator=org.jooq.util.DefaultGenerator generator.database=org.jooq.util.oracle.OracleDatabase generator.database.includes=.* -generator.database.excludes=T_BOOK_DETAILS +generator.database.excludes=T_BOOK_DETAILS,S_TRIGGERS_SEQUENCE generator.generate.relations=true #Generate a master data table enum from T_LANGUAGE diff --git a/jOOQ-test/configuration/org/jooq/configuration/lukas/postgres/library.properties b/jOOQ-test/configuration/org/jooq/configuration/lukas/postgres/library.properties index 43c4cd4fd8..e747c638f2 100644 --- a/jOOQ-test/configuration/org/jooq/configuration/lukas/postgres/library.properties +++ b/jOOQ-test/configuration/org/jooq/configuration/lukas/postgres/library.properties @@ -8,7 +8,7 @@ jdbc.Password=test generator=org.jooq.util.DefaultGenerator generator.database=org.jooq.util.postgres.PostgresDatabase generator.database.includes=.* -generator.database.excludes=t_book_details,t_book_store_id_seq +generator.database.excludes=t_book_details,.*?_seq generator.generate.relations=true generator.generate.deprecated=false diff --git a/jOOQ-test/src/org/jooq/test/ase/create.sql b/jOOQ-test/src/org/jooq/test/ase/create.sql index 7ab36ee512..162974edde 100644 --- a/jOOQ-test/src/org/jooq/test/ase/create.sql +++ b/jOOQ-test/src/org/jooq/test/ase/create.sql @@ -41,7 +41,7 @@ CREATE TABLE t_triggers ( id int null, counter int null, - CONSTRAINT pk_t_triggers UNIQUE (id) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) / diff --git a/jOOQ-test/src/org/jooq/test/ase/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/ase/generatedclasses/Keys.java index 1c15ebe340..9be3f98dce 100644 --- a/jOOQ-test/src/org/jooq/test/ase/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/ase/generatedclasses/Keys.java @@ -24,7 +24,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey pk_t_book = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.ase.generatedclasses.tables.TBook.ID); public static final org.jooq.UniqueKey uk_t_book_store_name = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.ase.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey pk_b2bs = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.ase.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.ase.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.ase.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.ase.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey pk_x_test_case_64_69 = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.ase.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey pk_x_test_case_71 = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.ase.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey pk_x_test_case_85 = createUniqueKey(org.jooq.test.ase.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.ase.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/TTriggers.java index c7eba6bc30..0567cae647 100644 --- a/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.ase.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = 1507849517; + private static final long serialVersionUID = 1753070474; /** * The singleton instance of t_triggers @@ -32,6 +32,8 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("id_generated", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); diff --git a/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/records/TTriggersRecord.java index 2cab722b3c..ce94d3e85d 100644 --- a/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/ase/generatedclasses/tables/records/TTriggersRecord.java @@ -10,10 +10,12 @@ package org.jooq.test.ase.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 253956263; + private static final long serialVersionUID = 1100463701; /** * An uncommented item + * + * PRIMARY KEY */ public void setIdGenerated(java.lang.Integer value) { setValue(org.jooq.test.ase.generatedclasses.tables.TTriggers.ID_GENERATED, value); @@ -21,6 +23,8 @@ public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl PK_T_BOOK = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.db2.generatedclasses.tables.TBook.ID); public static final org.jooq.UniqueKey UK_T_BOOK_STORE_NAME = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.db2.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey PK_B2BS = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.db2.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.db2.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.db2.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.db2.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey PK_X_TEST_CASE_64_69 = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.db2.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey PK_X_TEST_CASE_71 = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.db2.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey PK_X_TEST_CASE_85 = createUniqueKey(org.jooq.test.db2.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.db2.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/TTriggers.java index e62211a78c..c73e05e805 100644 --- a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.db2.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = -610495800; + private static final long serialVersionUID = -1110969074; /** * The singleton instance of T_TRIGGERS @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("ID_GENERATED", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("ID", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** diff --git a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/records/TTriggersRecord.java index 25c0fd7d95..7d6112c66f 100644 --- a/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/db2/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.db2.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = -58813923; + private static final long serialVersionUID = -1871836969; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.db2.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.db2.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.db2.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.db2.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/derby/create.sql b/jOOQ-test/src/org/jooq/test/derby/create.sql index e303fef969..f4d75778db 100644 --- a/jOOQ-test/src/org/jooq/test/derby/create.sql +++ b/jOOQ-test/src/org/jooq/test/derby/create.sql @@ -3,6 +3,7 @@ DROP VIEW v_book/ DROP VIEW v_library/ DROP TRIGGER t_triggers_trigger/ + DROP TABLE t_triggers/ DROP TABLE t_book_to_book_store/ DROP TABLE t_book_store/ @@ -33,7 +34,7 @@ CREATE TABLE t_triggers ( id int, counter int, - CONSTRAINT pk_t_triggers UNIQUE (ID) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) / diff --git a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Keys.java index 9c7331f93b..9d865c1bd9 100644 --- a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/Keys.java @@ -18,7 +18,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.Identity IDENTITY_T_BOOK_STORE = createIdentity(org.jooq.test.derby.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.derby.generatedclasses.tables.TBookStore.ID); // UNIQUE and PRIMARY KEY definitions - public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.derby.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.derby.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.derby.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.derby.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey PK_T_725_LOB_TEST = createUniqueKey(org.jooq.test.derby.generatedclasses.tables.T_725LobTest.T_725_LOB_TEST, org.jooq.test.derby.generatedclasses.tables.T_725LobTest.ID); public static final org.jooq.UniqueKey PK_T_AUTHOR = createUniqueKey(org.jooq.test.derby.generatedclasses.tables.TAuthor.T_AUTHOR, org.jooq.test.derby.generatedclasses.tables.TAuthor.ID); public static final org.jooq.UniqueKey PK_T_BOOK = createUniqueKey(org.jooq.test.derby.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.derby.generatedclasses.tables.TBook.ID); diff --git a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/TTriggers.java index 40654f8afe..d54bf2e7a3 100644 --- a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.derby.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = -1726272252; + private static final long serialVersionUID = -1942318461; /** * The singleton instance of T_TRIGGERS @@ -32,6 +32,8 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("ID_GENERATED", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); diff --git a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/records/TTriggersRecord.java index 2aff4cc370..f77bc981f0 100644 --- a/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/derby/generatedclasses/tables/records/TTriggersRecord.java @@ -10,10 +10,12 @@ package org.jooq.test.derby.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 2086496711; + private static final long serialVersionUID = 615281343; /** * An uncommented item + * + * PRIMARY KEY */ public void setIdGenerated(java.lang.Integer value) { setValue(org.jooq.test.derby.generatedclasses.tables.TTriggers.ID_GENERATED, value); @@ -21,6 +23,8 @@ public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl IDENTITY_T_TRIGGERS = createIdentity(org.jooq.test.h2.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.h2.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.Identity IDENTITY_T_TRIGGERS = createIdentity(org.jooq.test.h2.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.h2.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.Identity IDENTITY_T_BOOK_STORE = createIdentity(org.jooq.test.h2.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.h2.generatedclasses.tables.TBookStore.ID); // UNIQUE and PRIMARY KEY definitions - public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.h2.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.h2.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.h2.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.h2.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey PK_T_725_LOB_TEST = createUniqueKey(org.jooq.test.h2.generatedclasses.tables.T_725LobTest.T_725_LOB_TEST, org.jooq.test.h2.generatedclasses.tables.T_725LobTest.ID); public static final org.jooq.UniqueKey PK_T_AUTHOR = createUniqueKey(org.jooq.test.h2.generatedclasses.tables.TAuthor.T_AUTHOR, org.jooq.test.h2.generatedclasses.tables.TAuthor.ID); public static final org.jooq.UniqueKey PK_T_BOOK = createUniqueKey(org.jooq.test.h2.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.h2.generatedclasses.tables.TBook.ID); 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 a718e9ea63..9c1c56dabc 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 = -1342529007; + private static final long serialVersionUID = 1071755472; /** * The singleton instance of PUBLIC @@ -26,7 +26,9 @@ public class Public extends org.jooq.impl.SchemaImpl { @Override public final java.util.List getSequences() { - return java.util.Arrays.asList(org.jooq.test.h2.generatedclasses.Sequences.S_AUTHOR_ID); + return java.util.Arrays.asList( + org.jooq.test.h2.generatedclasses.Sequences.S_AUTHOR_ID, + org.jooq.test.h2.generatedclasses.Sequences.S_TRIGGERS_SEQUENCE); } @Override 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 ba0c506452..78b6233a83 100644 --- a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Sequences.java +++ b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/Sequences.java @@ -17,6 +17,11 @@ public final class Sequences { */ public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.h2.generatedclasses.Public.PUBLIC); + /** + * The sequence 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); + /** * No instances */ diff --git a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/TTriggers.java index 6852ee827e..d13d5a5021 100644 --- a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.h2.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = -997811883; + private static final long serialVersionUID = 1537829755; /** * The singleton instance of T_TRIGGERS @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("ID_GENERATED", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("ID", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** diff --git a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/records/TTriggersRecord.java index 214dc9099a..1c40ffa107 100644 --- a/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/h2/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.h2.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 1588395399; + private static final long serialVersionUID = 1764902775; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.h2.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.h2.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.h2.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.h2.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/hsqldb/create.sql b/jOOQ-test/src/org/jooq/test/hsqldb/create.sql index 3e70052f4e..3fe75d4441 100644 --- a/jOOQ-test/src/org/jooq/test/hsqldb/create.sql +++ b/jOOQ-test/src/org/jooq/test/hsqldb/create.sql @@ -22,6 +22,7 @@ DROP VIEW IF EXISTS v_book/ DROP VIEW IF EXISTS v_library/ DROP TRIGGER IF EXISTS t_triggers_trigger/ +DROP SEQUENCE s_triggers_sequence/ DROP TABLE IF EXISTS t_triggers/ DROP TABLE IF EXISTS t_arrays/ @@ -53,11 +54,14 @@ DROP TABLE IF EXISTS object/ DROP TABLE IF EXISTS string/ DROP TABLE IF EXISTS big_decimal/ +CREATE SEQUENCE s_triggers_sequence START WITH 1/ + CREATE TABLE t_triggers ( - id int not null, + id_generated int not null, + id int, counter int, - CONSTRAINT pk_t_triggers PRIMARY KEY (ID) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) / @@ -67,8 +71,12 @@ ON t_triggers REFERENCING NEW AS new FOR EACH ROW BEGIN ATOMIC - select nvl(max(id), 0) + 1 into new.id from t_triggers; - select nvl(max(counter), 0) + 2 into new.counter from t_triggers; + select next value for s_triggers_sequence + into new.id_generated + from information_schema.system_users; + + set new.id = new.id_generated; + set new.counter = new.id_generated * 2; END / diff --git a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Keys.java index 1602ca33f5..5b6e6158ae 100644 --- a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/Keys.java @@ -24,7 +24,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey PK_T_BOOK = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.hsqldb.generatedclasses.tables.TBook.ID); public static final org.jooq.UniqueKey UK_T_BOOK_STORE_NAME = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.hsqldb.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey PK_B2BS = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.hsqldb.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.hsqldb.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey PK_X_TEST_CASE_64_69 = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.hsqldb.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey PK_X_TEST_CASE_71 = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.hsqldb.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey PK_X_TEST_CASE_85 = createUniqueKey(org.jooq.test.hsqldb.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.hsqldb.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/TTriggers.java index 7296bffd56..c72adf22c7 100644 --- a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.hsqldb.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = 830158782; + private static final long serialVersionUID = -1284887400; /** * The singleton instance of T_TRIGGERS @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("ID_GENERATED", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("ID", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** diff --git a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/records/TTriggersRecord.java index 6639b710b7..127a1a9429 100644 --- a/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/hsqldb/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.hsqldb.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 1564457699; + private static final long serialVersionUID = -467383905; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.hsqldb.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/ingres/create.sql b/jOOQ-test/src/org/jooq/test/ingres/create.sql index 6dce4199de..663cbfe018 100644 --- a/jOOQ-test/src/org/jooq/test/ingres/create.sql +++ b/jOOQ-test/src/org/jooq/test/ingres/create.sql @@ -29,17 +29,19 @@ DROP TABLE IF EXISTS t_725_lob_test/ DROP TABLE IF EXISTS t_785/ CREATE TABLE t_triggers ( - id INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY, + id_generated INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY, + id int, counter int, - CONSTRAINT pk_t_triggers PRIMARY KEY (ID) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) / CREATE PROCEDURE p_triggers AS BEGIN UPDATE t_triggers - SET counter = id * 2; + SET id = id_generated, + counter = id_generated * 2; END / diff --git a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Keys.java index d91c463ea5..070d58ec1f 100644 --- a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/Keys.java @@ -15,7 +15,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { // IDENTITY definitions public static final org.jooq.Identity IDENTITY_t_book_store = createIdentity(org.jooq.test.ingres.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.ingres.generatedclasses.tables.TBookStore.ID); - public static final org.jooq.Identity IDENTITY_t_triggers = createIdentity(org.jooq.test.ingres.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.Identity IDENTITY_t_triggers = createIdentity(org.jooq.test.ingres.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID_GENERATED); // UNIQUE and PRIMARY KEY definitions public static final org.jooq.UniqueKey pk_t_639_numbers_table = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.T_639NumbersTable.T_639_NUMBERS_TABLE, org.jooq.test.ingres.generatedclasses.tables.T_639NumbersTable.ID); @@ -24,7 +24,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey pk_t_book = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.ingres.generatedclasses.tables.TBook.ID); public static final org.jooq.UniqueKey uk_t_book_store_name = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.ingres.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey pk_b2bs = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.ingres.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.ingres.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey pk_x_test_case_64_69 = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.ingres.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey pk_x_test_case_71 = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.ingres.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey pk_x_test_case_85 = createUniqueKey(org.jooq.test.ingres.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.ingres.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/TTriggers.java index c44552aaad..aafb92367d 100644 --- a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.ingres.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = 301614065; + private static final long serialVersionUID = 1545101495; /** * The singleton instance of t_triggers @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("id_generated", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("id", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** diff --git a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/records/TTriggersRecord.java index 1e30aece67..dc74243acc 100644 --- a/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/ingres/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.ingres.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = -2059434049; + private static final long serialVersionUID = -44808761; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.ingres.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/jOOQASETest.java b/jOOQ-test/src/org/jooq/test/jOOQASETest.java index edf77419b4..7c967b2b00 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQASETest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQASETest.java @@ -396,6 +396,11 @@ public class jOOQASETest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java index fb5b9da3c4..76aba252cf 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java @@ -227,6 +227,11 @@ public abstract class jOOQAbstractTest< continue; } + // There is no DROP TRIGGER IF EXISTS statement in Oracle + else if (e.getMessage().contains("ORA-04080")) { + continue; + } + // There is no DROP TABLE IF EXISTS statement in DB2 else if (e.getMessage().contains("SQLCODE=-204") && e.getMessage().contains("SQLSTATE=42704")) { continue; @@ -504,6 +509,7 @@ public abstract class jOOQAbstractTest< protected abstract TableField TDirectory_NAME(); protected abstract UpdatableTable TTriggers(); + protected abstract TableField TTriggers_ID_GENERATED(); protected abstract TableField TTriggers_ID(); protected abstract TableField TTriggers_COUNTER(); @@ -989,16 +995,16 @@ public abstract class jOOQAbstractTest< sequences++; // DB2 has an additional sequence for the T_TRIGGERS table - if (getDialect() == SQLDialect.DB2) { + if (getDialect() == SQLDialect.DB2 || + getDialect() == SQLDialect.H2) { + sequences++; } } - assertEquals(sequences, schema.getSequences().size()); - int tables = 15; // The additional T_DIRECTORY table for recursive queries @@ -3742,47 +3748,91 @@ public abstract class jOOQAbstractTest< // Without RETURNING clause query = create().insertQuery(TTriggers()); + query.addValue(TTriggers_ID(), null); query.addValue(TTriggers_COUNTER(), 0); assertEquals(1, query.execute()); - assertNull(query.getReturned()); + assertNull(query.getReturnedRecord()); // Check if the trigger works correctly assertEquals(1, create().selectFrom(TTriggers()).fetch().size()); - assertEquals(++ID, (int) create().selectFrom(TTriggers()).fetchOne(TTriggers_ID())); + assertEquals(++ID, (int) create().selectFrom(TTriggers()).fetchOne(TTriggers_ID_GENERATED())); + assertEquals( ID, (int) create().selectFrom(TTriggers()).fetchOne(TTriggers_ID())); assertEquals(2*ID, (int) create().selectFrom(TTriggers()).fetchOne(TTriggers_COUNTER())); // Returning all fields query = create().insertQuery(TTriggers()); + query.addValue(TTriggers_COUNTER(), null); query.addValue(TTriggers_COUNTER(), 0); query.setReturning(); assertEquals(1, query.execute()); - assertNotNull(query.getReturned()); - assertEquals(++ID, (int) query.getReturned().getValue(TTriggers_ID())); - assertEquals(2*ID, (int) query.getReturned().getValue(TTriggers_COUNTER())); + assertNotNull(query.getReturnedRecord()); + assertEquals(++ID, (int) query.getReturnedRecord().getValue(TTriggers_ID_GENERATED())); + assertEquals( ID, (int) query.getReturnedRecord().getValue(TTriggers_ID())); + assertEquals(2*ID, (int) query.getReturnedRecord().getValue(TTriggers_COUNTER())); // Returning only the ID field query = create().insertQuery(TTriggers()); query.addValue(TTriggers_COUNTER(), 0); - query.setReturning(TTriggers_ID()); + query.setReturning(TTriggers_ID_GENERATED()); assertEquals(1, query.execute()); - assertNotNull(query.getReturned()); - assertEquals(++ID, (int) query.getReturned().getValue(TTriggers_ID())); - assertNull(query.getReturned().getValue(TTriggers_COUNTER())); + assertNotNull(query.getReturnedRecord()); + assertEquals(++ID, (int) query.getReturnedRecord().getValue(TTriggers_ID_GENERATED())); + assertNull(query.getReturnedRecord().getValue(TTriggers_ID())); + assertNull(query.getReturnedRecord().getValue(TTriggers_COUNTER())); - query.getReturned().refresh(); - assertEquals(2*ID, (int) query.getReturned().getValue(TTriggers_COUNTER())); + query.getReturnedRecord().refresh(); + assertEquals( ID, (int) query.getReturnedRecord().getValue(TTriggers_ID_GENERATED())); + assertEquals( ID, (int) query.getReturnedRecord().getValue(TTriggers_ID())); + assertEquals(2*ID, (int) query.getReturnedRecord().getValue(TTriggers_COUNTER())); - // TODO [#813] DSL querying - // ------------------------ + // DSL querying + // ------------ TableRecord returned = (TableRecord) create().insertInto(TTriggers(), TTriggers_COUNTER()) .values(0) .returning() .fetchOne(); assertNotNull(returned); - assertEquals(++ID, (int) returned.getValue(TTriggers_ID())); + assertEquals(++ID, (int) returned.getValue(TTriggers_ID_GENERATED())); + assertEquals( ID, (int) returned.getValue(TTriggers_ID())); assertEquals(2*ID, (int) returned.getValue(TTriggers_COUNTER())); + switch (getDialect()) { + case ASE: + case DERBY: + case H2: + case INGRES: + case ORACLE: + // TODO [#832] Fix this. This might be a driver issue for Sybase + case SQLITE: + case SQLSERVER: + case SYBASE: + log.info("SKIPPING", "Multiple INSERT RETURNING"); + break; + + default: + Result many = + create().insertInto(TTriggers(), TTriggers_COUNTER()) + .values(-1) + .values(-2) + .values(-3) + .returning() + .fetch(); + assertNotNull(many); + assertEquals(3, many.size()); + assertEquals(++ID, (int) many.getValue(0, TTriggers_ID_GENERATED())); + assertEquals( ID, (int) many.getValue(0, TTriggers_ID())); + assertEquals(2*ID, (int) many.getValue(0, TTriggers_COUNTER())); + assertEquals(++ID, (int) many.getValue(1, TTriggers_ID_GENERATED())); + assertEquals( ID, (int) many.getValue(1, TTriggers_ID())); + assertEquals(2*ID, (int) many.getValue(1, TTriggers_COUNTER())); + assertEquals(++ID, (int) many.getValue(2, TTriggers_ID_GENERATED())); + assertEquals( ID, (int) many.getValue(2, TTriggers_ID())); + assertEquals(2*ID, (int) many.getValue(2, TTriggers_COUNTER())); + break; + } + + returned = (TableRecord) create().insertInto(TTriggers(), TTriggers_COUNTER()) .values(0) @@ -3790,18 +3840,22 @@ public abstract class jOOQAbstractTest< .fetchOne(); assertNotNull(returned); assertEquals(++ID, (int) returned.getValue(TTriggers_ID())); + assertNull(returned.getValue(TTriggers_ID_GENERATED())); assertNull(returned.getValue(TTriggers_COUNTER())); returned.refreshUsing(TTriggers_ID()); + assertEquals( ID, (int) returned.getValue(TTriggers_ID_GENERATED())); assertEquals(2*ID, (int) returned.getValue(TTriggers_COUNTER())); // store() and similar methods T triggered = create().newRecord(TTriggers()); triggered.setValue(TTriggers_COUNTER(), 0); assertEquals(1, triggered.store()); - assertEquals(++ID, (int) triggered.getValue(TTriggers_ID())); + assertEquals(++ID, (int) triggered.getValue(TTriggers_ID_GENERATED())); + assertEquals(null, triggered.getValue(TTriggers_ID())); assertEquals(0, (int) triggered.getValue(TTriggers_COUNTER())); triggered.refresh(); + assertEquals( ID, (int) triggered.getValue(TTriggers_ID())); assertEquals(2*ID, (int) triggered.getValue(TTriggers_COUNTER())); } diff --git a/jOOQ-test/src/org/jooq/test/jOOQDB2Test.java b/jOOQ-test/src/org/jooq/test/jOOQDB2Test.java index f53f48b26f..f206954806 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQDB2Test.java +++ b/jOOQ-test/src/org/jooq/test/jOOQDB2Test.java @@ -413,6 +413,11 @@ public class jOOQDB2Test extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQDerbyTest.java b/jOOQ-test/src/org/jooq/test/jOOQDerbyTest.java index 2d5bc75721..683addf72d 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQDerbyTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQDerbyTest.java @@ -403,6 +403,11 @@ public class jOOQDerbyTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQH2Test.java b/jOOQ-test/src/org/jooq/test/jOOQH2Test.java index cf114e0245..a60afb6592 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQH2Test.java +++ b/jOOQ-test/src/org/jooq/test/jOOQH2Test.java @@ -412,6 +412,11 @@ public class jOOQH2Test extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest.java b/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest.java index 98a8e87e7a..bd3ff0efb0 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest.java @@ -407,6 +407,11 @@ public class jOOQHSQLDBTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest2.java b/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest2.java index 22696d0284..23fa5ae160 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest2.java +++ b/jOOQ-test/src/org/jooq/test/jOOQHSQLDBTest2.java @@ -409,6 +409,11 @@ public class jOOQHSQLDBTest2 extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQIngresTest.java b/jOOQ-test/src/org/jooq/test/jOOQIngresTest.java index 1b0fb2fae5..5fdec9540d 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQIngresTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQIngresTest.java @@ -404,6 +404,11 @@ public class jOOQIngresTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQMySQLTest.java b/jOOQ-test/src/org/jooq/test/jOOQMySQLTest.java index 109843e4a5..2de5a758a2 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQMySQLTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQMySQLTest.java @@ -408,6 +408,11 @@ public class jOOQMySQLTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQOracleTest.java b/jOOQ-test/src/org/jooq/test/jOOQOracleTest.java index f29280d361..258c622533 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQOracleTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQOracleTest.java @@ -449,6 +449,11 @@ public class jOOQOracleTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQPostgresTest.java b/jOOQ-test/src/org/jooq/test/jOOQPostgresTest.java index 6e616104fb..8bee4f7888 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQPostgresTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQPostgresTest.java @@ -410,6 +410,11 @@ public class jOOQPostgresTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQSQLServerTest.java b/jOOQ-test/src/org/jooq/test/jOOQSQLServerTest.java index 8663aeba2b..3978efc43b 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQSQLServerTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQSQLServerTest.java @@ -404,6 +404,11 @@ public class jOOQSQLServerTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQSQLiteTest.java b/jOOQ-test/src/org/jooq/test/jOOQSQLiteTest.java index 3ee559eacd..940815afc4 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQSQLiteTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQSQLiteTest.java @@ -404,6 +404,11 @@ public class jOOQSQLiteTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/jOOQSybaseTest.java b/jOOQ-test/src/org/jooq/test/jOOQSybaseTest.java index 1b39db2a3a..d8a2206234 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQSybaseTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQSybaseTest.java @@ -399,6 +399,11 @@ public class jOOQSybaseTest extends jOOQAbstractTest< return TTriggers.T_TRIGGERS; } + @Override + protected TableField TTriggers_ID_GENERATED() { + return TTriggers.ID_GENERATED; + } + @Override protected TableField TTriggers_ID() { return TTriggers.ID; diff --git a/jOOQ-test/src/org/jooq/test/mysql/create.sql b/jOOQ-test/src/org/jooq/test/mysql/create.sql index aa5055f7c8..bd71229d9a 100644 --- a/jOOQ-test/src/org/jooq/test/mysql/create.sql +++ b/jOOQ-test/src/org/jooq/test/mysql/create.sql @@ -1,7 +1,9 @@ DROP VIEW IF EXISTS v_library/ DROP VIEW IF EXISTS v_author/ DROP VIEW IF EXISTS v_book/ + DROP TRIGGER IF EXISTS t_triggers_trigger/ + DROP TABLE IF EXISTS t_triggers/ DROP TABLE IF EXISTS t_book_to_book_store/ DROP TABLE IF EXISTS t_book_store/ @@ -35,10 +37,11 @@ DROP FUNCTION IF EXISTS f_number/ DROP FUNCTION IF EXISTS f317/ CREATE TABLE t_triggers ( - id int not null AUTO_INCREMENT, + id_generated int not null AUTO_INCREMENT, + id int, counter int, - CONSTRAINT pk_t_triggers PRIMARY KEY (ID) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) ENGINE = InnoDB / @@ -47,9 +50,12 @@ BEFORE INSERT ON t_triggers FOR EACH ROW BEGIN - DECLARE new_counter INT; - select ifnull(max(counter), 0) + 2 into new_counter from t_triggers; - SET NEW.counter = new_counter; + DECLARE new_id INT; + + SELECT IFNULL(MAX(id_generated), 0) + 1 INTO new_id FROM t_triggers; + + SET NEW.id = new_id; + SET NEW.counter = new_id * 2; END; / diff --git a/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/Keys.java index ec7b8bde38..9fcfa08585 100644 --- a/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/Keys.java @@ -15,7 +15,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { // IDENTITY definitions public static final org.jooq.Identity IDENTITY_t_book_store = createIdentity(org.jooq.test.mysql.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.mysql.generatedclasses.tables.TBookStore.ID); - public static final org.jooq.Identity IDENTITY_t_triggers = createIdentity(org.jooq.test.mysql.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.Identity IDENTITY_t_triggers = createIdentity(org.jooq.test.mysql.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID_GENERATED); // UNIQUE and PRIMARY KEY definitions public static final org.jooq.UniqueKey KEY_t_639_numbers_table_PRIMARY = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.T_639NumbersTable.T_639_NUMBERS_TABLE, org.jooq.test.mysql.generatedclasses.tables.T_639NumbersTable.ID); @@ -25,7 +25,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey KEY_t_book_store_uk_t_book_store_name = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.mysql.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey KEY_t_book_store_uk_t_book_store_id = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.mysql.generatedclasses.tables.TBookStore.ID); public static final org.jooq.UniqueKey KEY_t_book_to_book_store_PRIMARY = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.mysql.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.mysql.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey KEY_t_triggers_PRIMARY = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey KEY_t_triggers_PRIMARY = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey KEY_x_test_case_64_69_PRIMARY = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.mysql.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey KEY_x_test_case_71_PRIMARY = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.mysql.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey KEY_x_test_case_85_PRIMARY = createUniqueKey(org.jooq.test.mysql.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.mysql.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/TTriggers.java index 1747dcfb90..b67a00023d 100644 --- a/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.mysql.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = 1197587687; + private static final long serialVersionUID = 755517789; /** * The singleton instance of t_triggers @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("id_generated", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("id", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** diff --git a/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/records/TTriggersRecord.java index 00acdd1706..fc8eb85dd9 100644 --- a/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/mysql/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.mysql.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = -235249727; + private static final long serialVersionUID = 1935220531; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.mysql.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/mysql/reset.sql b/jOOQ-test/src/org/jooq/test/mysql/reset.sql index cd52f13a55..65d0d48a26 100644 --- a/jOOQ-test/src/org/jooq/test/mysql/reset.sql +++ b/jOOQ-test/src/org/jooq/test/mysql/reset.sql @@ -15,7 +15,7 @@ INSERT INTO t_language (id, cd, description, description_english) VALUES (1, 'en INSERT INTO t_language (id, cd, description, description_english) VALUES (2, 'de', 'Deutsch', 'German')/ INSERT INTO t_language (id, cd, description, description_english) VALUES (3, 'fr', 'Français', 'French')/ INSERT INTO t_language (id, cd, description, description_english) VALUES (4, 'pt', null, null)/ -/ + INSERT INTO t_658_11 VALUES ('A'), ('B'), ('C')/ INSERT INTO t_658_21 VALUES (1), (2), (3)/ @@ -25,25 +25,18 @@ INSERT INTO t_658_22 VALUES (1, 1), (2, 2), (3, 3)/ INSERT INTO t_658_32 VALUES (1, 1), (2, 2), (3, 3)/ INSERT INTO t_658_ref VALUES ('A', 1, 1, 'B', 2, 2)/ -INSERT INTO t_author VALUES (1, 'George', 'Orwell', '1903-06-25', 1903, null); -/ -INSERT INTO t_author VALUES (2, 'Paulo', 'Coelho', '1947-08-24', 1947, null); -/ +INSERT INTO t_author VALUES (1, 'George', 'Orwell', '1903-06-25', 1903, null);/ +INSERT INTO t_author VALUES (2, 'Paulo', 'Coelho', '1947-08-24', 1947, null);/ -INSERT INTO t_book VALUES (1, 1, null, null, '1984', 1948, 1, 'To know and not to know, to be conscious of complete truthfulness while telling carefully constructed lies, to hold simultaneously two opinions which cancelled out, knowing them to be contradictory and believing in both of them, to use logic against logic, to repudiate morality while laying claim to it, to believe that democracy was impossible and that the Party was the guardian of democracy, to forget, whatever it was necessary to forget, then to draw it back into memory again at the moment when it was needed, and then promptly to forget it again, and above all, to apply the same process to the process itself -- that was the ultimate subtlety; consciously to induce unconsciousness, and then, once again, to become unconscious of the act of hypnosis you had just performed. Even to understand the word ''doublethink'' involved the use of doublethink..', null, 'ORDERED') -/ -INSERT INTO t_book VALUES (2, 1, null, null, 'Animal Farm', 1945, 1, null, null, 'ON STOCK') -/ -INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null, 'ON STOCK') -/ -INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null, 'SOLD OUT') -/ +INSERT INTO t_book VALUES (1, 1, null, null, '1984', 1948, 1, 'To know and not to know, to be conscious of complete truthfulness while telling carefully constructed lies, to hold simultaneously two opinions which cancelled out, knowing them to be contradictory and believing in both of them, to use logic against logic, to repudiate morality while laying claim to it, to believe that democracy was impossible and that the Party was the guardian of democracy, to forget, whatever it was necessary to forget, then to draw it back into memory again at the moment when it was needed, and then promptly to forget it again, and above all, to apply the same process to the process itself -- that was the ultimate subtlety; consciously to induce unconsciousness, and then, once again, to become unconscious of the act of hypnosis you had just performed. Even to understand the word ''doublethink'' involved the use of doublethink..', null, 'ORDERED')/ +INSERT INTO t_book VALUES (2, 1, null, null, 'Animal Farm', 1945, 1, null, null, 'ON STOCK')/ +INSERT INTO t_book VALUES (3, 2, null, null, 'O Alquimista', 1988, 4, null, null, 'ON STOCK')/ +INSERT INTO t_book VALUES (4, 2, null, null, 'Brida', 1990, 2, null, null, 'SOLD OUT')/ INSERT INTO t_book_store (name) VALUES ('Orell Füssli'), ('Ex Libris'), - ('Buchhandlung im Volkshaus') -/ + ('Buchhandlung im Volkshaus')/ INSERT INTO t_book_to_book_store VALUES ('Orell Füssli', 1, 10), @@ -51,6 +44,5 @@ INSERT INTO t_book_to_book_store VALUES ('Orell Füssli', 3, 10), ('Ex Libris', 1, 1), ('Ex Libris', 3, 2), - ('Buchhandlung im Volkshaus', 3, 1) -/ + ('Buchhandlung im Volkshaus', 3, 1)/ diff --git a/jOOQ-test/src/org/jooq/test/oracle/create.sql b/jOOQ-test/src/org/jooq/test/oracle/create.sql index e506576e81..c0f829b9fe 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/create.sql +++ b/jOOQ-test/src/org/jooq/test/oracle/create.sql @@ -3,6 +3,7 @@ DROP VIEW v_author/ DROP VIEW v_book/ DROP VIEW v_incomplete/ +DROP SEQUENCE s_triggers_sequence/ DROP TRIGGER t_triggers_trigger/ DROP TABLE t_triggers/ @@ -94,11 +95,15 @@ CREATE TYPE u_address_type AS OBJECT ( ) / +CREATE SEQUENCE s_triggers_sequence +/ + CREATE TABLE t_triggers ( + id_generated number(7) not null, id number(7) not null, counter number(7) not null, - CONSTRAINT pk_t_triggers PRIMARY KEY (ID) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) / @@ -108,8 +113,12 @@ ON t_triggers REFERENCING NEW AS new FOR EACH ROW BEGIN - select nvl(max(id), 0) + 1 into :new.id from t_triggers; - select nvl(max(counter), 0) + 2 into :new.counter from t_triggers; + select s_triggers_sequence.nextval + into :new.id_generated + from dual; + + :new.id := :new.id_generated; + :new.counter := :new.id_generated * 2; END t_triggers_trigger; / diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Keys.java index 4653ebdfdf..67fd0e09d3 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/Keys.java @@ -22,7 +22,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey UK_T_BOOK_STORE_NAME = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.oracle.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey PK_B2BS = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.oracle.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.oracle.generatedclasses.tables.TBookToBookStore.BOOK_ID); public static final org.jooq.UniqueKey PK_T_DIRECTORY = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.TDirectory.T_DIRECTORY, org.jooq.test.oracle.generatedclasses.tables.TDirectory.ID); - public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.oracle.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey PK_T_TRIGGERS = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.oracle.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey PK_T_639_NUMBERS_TABLE = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.T_639NumbersTable.T_639_NUMBERS_TABLE, org.jooq.test.oracle.generatedclasses.tables.T_639NumbersTable.ID); public static final org.jooq.UniqueKey PK_T_725_LOB_TEST = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.T_725LobTest.T_725_LOB_TEST, org.jooq.test.oracle.generatedclasses.tables.T_725LobTest.ID); public static final org.jooq.UniqueKey PK_X_TEST_CASE_64_69 = createUniqueKey(org.jooq.test.oracle.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.oracle.generatedclasses.tables.XTestCase_64_69.ID); diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/TTriggers.java index 244c991bbe..f52aad4f77 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.oracle.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = 157980472; + private static final long serialVersionUID = 1085408850; /** * The singleton instance of T_TRIGGERS @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("ID_GENERATED", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("ID", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** diff --git a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/records/TTriggersRecord.java index 5394aa2a5c..d33574eb0a 100644 --- a/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/oracle/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.oracle.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = -713128001; + private static final long serialVersionUID = -57784889; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.oracle.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.oracle.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.oracle.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.oracle.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/postgres/create.sql b/jOOQ-test/src/org/jooq/test/postgres/create.sql index ba6bdd52cb..19f82f8dd3 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/create.sql +++ b/jOOQ-test/src/org/jooq/test/postgres/create.sql @@ -79,10 +79,11 @@ CREATE TYPE u_address_type AS ( / CREATE TABLE t_triggers ( - id int not null, + id_generated serial4 not null, + id int, counter int, - CONSTRAINT pk_t_triggers PRIMARY KEY (ID) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) / @@ -90,10 +91,10 @@ CREATE FUNCTION p_triggers () RETURNS trigger AS $$ BEGIN - select coalesce(max(id), 0) + 1 into new.id from t_triggers; - new.counter = new.id * 2; - - return new; + new.id = new.id_generated; + new.counter = new.id_generated * 2; + + return new; END $$ LANGUAGE plpgsql; / diff --git a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Keys.java index 3ff681af03..5ed509c048 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/Keys.java @@ -15,6 +15,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { // IDENTITY definitions public static final org.jooq.Identity IDENTITY_t_book_store = createIdentity(org.jooq.test.postgres.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.postgres.generatedclasses.tables.TBookStore.ID); + public static final org.jooq.Identity IDENTITY_t_triggers = createIdentity(org.jooq.test.postgres.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.postgres.generatedclasses.tables.TTriggers.ID_GENERATED); // UNIQUE and PRIMARY KEY definitions public static final org.jooq.UniqueKey pk_t_639_numbers_table = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.T_639NumbersTable.T_639_NUMBERS_TABLE, org.jooq.test.postgres.generatedclasses.tables.T_639NumbersTable.ID); @@ -24,7 +25,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey pk_t_book = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.postgres.generatedclasses.tables.TBook.ID); public static final org.jooq.UniqueKey uk_t_book_store_name = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.postgres.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey pk_b2bs = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.postgres.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.postgres.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.postgres.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.postgres.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey pk_x_test_case_64_69 = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.postgres.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey pk_x_test_case_71 = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.postgres.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey pk_x_test_case_85 = createUniqueKey(org.jooq.test.postgres.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.postgres.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/TTriggers.java index e05856bc7a..6026782a28 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.postgres.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = 605844723; + private static final long serialVersionUID = 620174928; /** * The singleton instance of t_triggers @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("id_generated", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("id", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** @@ -49,6 +54,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl getIdentity() { + return org.jooq.test.postgres.generatedclasses.Keys.IDENTITY_t_triggers; + } + @Override public org.jooq.UniqueKey getMainKey() { return org.jooq.test.postgres.generatedclasses.Keys.pk_t_triggers; diff --git a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/records/TTriggersRecord.java index 12950bcc63..ab4cc2a085 100644 --- a/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/postgres/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.postgres.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 1239061772; + private static final long serialVersionUID = 169903866; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.postgres.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.postgres.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.postgres.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.postgres.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/sqlite/create.sql b/jOOQ-test/src/org/jooq/test/sqlite/create.sql index 68a9b0fc59..98c9016554 100644 --- a/jOOQ-test/src/org/jooq/test/sqlite/create.sql +++ b/jOOQ-test/src/org/jooq/test/sqlite/create.sql @@ -26,7 +26,8 @@ DROP TABLE IF EXISTS t_725_lob_test/ DROP TABLE IF EXISTS t_785/ CREATE TABLE t_triggers ( - id integer primary key autoincrement, + id_generated integer primary key autoincrement, + id int, counter int ) / @@ -37,7 +38,8 @@ ON t_triggers FOR EACH ROW BEGIN update t_triggers - set counter = id * 2; + set id = id_generated, + counter = id_generated * 2; END; / diff --git a/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/Keys.java index 5f6921cfcc..6e9a23ccce 100644 --- a/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/Keys.java @@ -14,7 +14,7 @@ package org.jooq.test.sqlite.generatedclasses; public class Keys extends org.jooq.impl.AbstractKeys { // IDENTITY definitions - public static final org.jooq.Identity IDENTITY_t_triggers = createIdentity(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.Identity IDENTITY_t_triggers = createIdentity(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID_GENERATED); // UNIQUE and PRIMARY KEY definitions public static final org.jooq.UniqueKey pk_t_639_numbers_table_ID = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.T_639NumbersTable.T_639_NUMBERS_TABLE, org.jooq.test.sqlite.generatedclasses.tables.T_639NumbersTable.ID); @@ -24,7 +24,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey pk_t_book_store_name = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.sqlite.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey pk_t_book_to_book_store_book_store_name = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.sqlite.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME); public static final org.jooq.UniqueKey pk_t_book_to_book_store_book_id = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.sqlite.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey pk_t_triggers_id = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey pk_t_triggers_id_generated = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey pk_x_test_case_64_69_ID = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.sqlite.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey pk_x_test_case_71_ID = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.sqlite.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey pk_x_test_case_85_id = createUniqueKey(org.jooq.test.sqlite.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.sqlite.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/TTriggers.java index b1853fb971..ed61a505a3 100644 --- a/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.sqlite.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = -907994199; + private static final long serialVersionUID = -2071516285; /** * The singleton instance of t_triggers @@ -35,6 +35,11 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("id_generated", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); + + /** + * An uncommented item + */ public static final org.jooq.TableField ID = new org.jooq.impl.TableFieldImpl("id", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); /** @@ -56,12 +61,12 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl getMainKey() { - return org.jooq.test.sqlite.generatedclasses.Keys.pk_t_triggers_id; + return org.jooq.test.sqlite.generatedclasses.Keys.pk_t_triggers_id_generated; } @Override @SuppressWarnings("unchecked") public java.util.List> getKeys() { - return java.util.Arrays.>asList(org.jooq.test.sqlite.generatedclasses.Keys.pk_t_triggers_id); + return java.util.Arrays.>asList(org.jooq.test.sqlite.generatedclasses.Keys.pk_t_triggers_id_generated); } } diff --git a/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/records/TTriggersRecord.java index ba3b073779..5ec4fbeb11 100644 --- a/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/sqlite/generatedclasses/tables/records/TTriggersRecord.java @@ -10,21 +10,35 @@ package org.jooq.test.sqlite.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 292136915; + private static final long serialVersionUID = -1515326657; /** * An uncommented item * * PRIMARY KEY */ + public void setIdGenerated(java.lang.Integer value) { + setValue(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID_GENERATED, value); + } + + /** + * An uncommented item + * + * PRIMARY KEY + */ + public java.lang.Integer getIdGenerated() { + return getValue(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID_GENERATED); + } + + /** + * An uncommented item + */ public void setId(java.lang.Integer value) { setValue(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID, value); } /** * An uncommented item - * - * PRIMARY KEY */ public java.lang.Integer getId() { return getValue(org.jooq.test.sqlite.generatedclasses.tables.TTriggers.ID); diff --git a/jOOQ-test/src/org/jooq/test/sqlserver/create.sql b/jOOQ-test/src/org/jooq/test/sqlserver/create.sql index 52d6691ea0..be7a35be2d 100644 --- a/jOOQ-test/src/org/jooq/test/sqlserver/create.sql +++ b/jOOQ-test/src/org/jooq/test/sqlserver/create.sql @@ -64,7 +64,7 @@ CREATE TABLE t_triggers ( id int, counter int, - CONSTRAINT pk_t_triggers UNIQUE (ID) + CONSTRAINT pk_t_triggers PRIMARY KEY (id_generated) ) / diff --git a/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/Keys.java b/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/Keys.java index 041ba9ca20..a7d8113131 100644 --- a/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/Keys.java +++ b/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/Keys.java @@ -24,7 +24,7 @@ public class Keys extends org.jooq.impl.AbstractKeys { public static final org.jooq.UniqueKey pk_t_book = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.sqlserver.generatedclasses.tables.TBook.ID); public static final org.jooq.UniqueKey uk_t_book_store_name = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.sqlserver.generatedclasses.tables.TBookStore.NAME); public static final org.jooq.UniqueKey pk_b2bs = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.TBookToBookStore.T_BOOK_TO_BOOK_STORE, org.jooq.test.sqlserver.generatedclasses.tables.TBookToBookStore.BOOK_STORE_NAME, org.jooq.test.sqlserver.generatedclasses.tables.TBookToBookStore.BOOK_ID); - public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sqlserver.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey pk_t_triggers = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sqlserver.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey pk_x_test_case_64_69 = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.XTestCase_64_69.X_TEST_CASE_64_69, org.jooq.test.sqlserver.generatedclasses.tables.XTestCase_64_69.ID); public static final org.jooq.UniqueKey pk_x_test_case_71 = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.XTestCase_71.X_TEST_CASE_71, org.jooq.test.sqlserver.generatedclasses.tables.XTestCase_71.ID); public static final org.jooq.UniqueKey pk_x_test_case_85 = createUniqueKey(org.jooq.test.sqlserver.generatedclasses.tables.XTestCase_85.X_TEST_CASE_85, org.jooq.test.sqlserver.generatedclasses.tables.XTestCase_85.ID); diff --git a/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/TTriggers.java index 36fe5cbd90..6357c6f186 100644 --- a/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.sqlserver.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = 1329404027; + private static final long serialVersionUID = -146834588; /** * The singleton instance of t_triggers @@ -32,6 +32,8 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("id_generated", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); diff --git a/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/records/TTriggersRecord.java index 79f3e6099a..a300aa80a8 100644 --- a/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/sqlserver/generatedclasses/tables/records/TTriggersRecord.java @@ -10,10 +10,12 @@ package org.jooq.test.sqlserver.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 1935921255; + private static final long serialVersionUID = 1595105233; /** * An uncommented item + * + * PRIMARY KEY */ public void setIdGenerated(java.lang.Integer value) { setValue(org.jooq.test.sqlserver.generatedclasses.tables.TTriggers.ID_GENERATED, value); @@ -21,6 +23,8 @@ public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl IDENTITY_t_book_store = createIdentity(org.jooq.test.sybase.generatedclasses.tables.TBookStore.T_BOOK_STORE, org.jooq.test.sybase.generatedclasses.tables.TBookStore.ID); // UNIQUE and PRIMARY KEY definitions - public static final org.jooq.UniqueKey t_triggers_pk_t_triggers = createUniqueKey(org.jooq.test.sybase.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sybase.generatedclasses.tables.TTriggers.ID); + public static final org.jooq.UniqueKey t_triggers_pk_t_triggers = createUniqueKey(org.jooq.test.sybase.generatedclasses.tables.TTriggers.T_TRIGGERS, org.jooq.test.sybase.generatedclasses.tables.TTriggers.ID_GENERATED); public static final org.jooq.UniqueKey t_725_lob_test_pk_t_725_lob_test = createUniqueKey(org.jooq.test.sybase.generatedclasses.tables.T_725LobTest.T_725_LOB_TEST, org.jooq.test.sybase.generatedclasses.tables.T_725LobTest.ID); public static final org.jooq.UniqueKey t_author_pk_t_author = createUniqueKey(org.jooq.test.sybase.generatedclasses.tables.TAuthor.T_AUTHOR, org.jooq.test.sybase.generatedclasses.tables.TAuthor.ID); public static final org.jooq.UniqueKey t_book_pk_t_book = createUniqueKey(org.jooq.test.sybase.generatedclasses.tables.TBook.T_BOOK, org.jooq.test.sybase.generatedclasses.tables.TBook.ID); diff --git a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/TTriggers.java b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/TTriggers.java index 100ca90711..4e36ddc341 100644 --- a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/TTriggers.java +++ b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/TTriggers.java @@ -10,7 +10,7 @@ package org.jooq.test.sybase.generatedclasses.tables; comments = "This class is generated by jOOQ") public class TTriggers extends org.jooq.impl.UpdatableTableImpl { - private static final long serialVersionUID = -1087053605; + private static final long serialVersionUID = 1342002436; /** * The singleton instance of t_triggers @@ -32,6 +32,8 @@ public class TTriggers extends org.jooq.impl.UpdatableTableImpl ID_GENERATED = new org.jooq.impl.TableFieldImpl("id_generated", org.jooq.impl.SQLDataType.INTEGER, T_TRIGGERS); diff --git a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/records/TTriggersRecord.java b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/records/TTriggersRecord.java index 98c159eb49..58f68542a3 100644 --- a/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/records/TTriggersRecord.java +++ b/jOOQ-test/src/org/jooq/test/sybase/generatedclasses/tables/records/TTriggersRecord.java @@ -10,10 +10,12 @@ package org.jooq.test.sybase.generatedclasses.tables.records; comments = "This class is generated by jOOQ") public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl { - private static final long serialVersionUID = 1230083887; + private static final long serialVersionUID = 1536247563; /** * An uncommented item + * + * PRIMARY KEY */ public void setIdGenerated(java.lang.Integer value) { setValue(org.jooq.test.sybase.generatedclasses.tables.TTriggers.ID_GENERATED, value); @@ -21,6 +23,8 @@ public class TTriggersRecord extends org.jooq.impl.UpdatableRecordImpl> extends StoreQuery, In * must assure transactional integrity between the two statements. *
  • Ingres support will be added with #808
  • * + * + * @deprecated - 1.6.6 [#826] - Use {@link #getReturnedRecord()} instead */ + @Deprecated R getReturned(); + + /** + * The record holding returned values as specified by any of the + * {@link #setReturning()} methods. + *

    + * If the insert statement returns several records, this is the same as + * calling getReturnedRecords().get(0) + *

    + * This implemented differently for every dialect: + *

      + *
    • Postgres has native support for INSERT .. RETURNING + * clauses
    • + *
    • HSQLDB, Oracle, and DB2 JDBC drivers allow for retrieving any table + * column as "generated key" in one statement
    • + *
    • Derby, H2, MySQL, SQL Server only allow for retrieving IDENTITY + * column values as "generated key". If other fields are requested, a second + * statement is issued. Client code must assure transactional integrity + * between the two statements.
    • + *
    • Sybase and SQLite allow for retrieving IDENTITY values as + * @@identity or last_inserted_rowid() values. + * Those values are fetched in a separate SELECT statement. If + * other fields are requested, a second statement is issued. Client code + * must assure transactional integrity between the two statements.
    • + *
    • Ingres support will be added with #808
    • + *
    + * + * @see #getReturnedRecords() + */ + R getReturnedRecord(); + + /** + * The records holding returned values as specified by any of the + * {@link #setReturning()} methods. + *

    + * This implemented differently for every dialect: + *

      + *
    • Postgres has native support for INSERT .. RETURNING + * clauses
    • + *
    • HSQLDB, Oracle, and DB2 JDBC drivers allow for retrieving any table + * column as "generated key" in one statement
    • + *
    • Derby, H2, MySQL, SQL Server only allow for retrieving IDENTITY + * column values as "generated key". If other fields are requested, a second + * statement is issued. Client code must assure transactional integrity + * between the two statements.
    • + *
    • Sybase and SQLite allow for retrieving IDENTITY values as + * @@identity or last_inserted_rowid() values. + * Those values are fetched in a separate SELECT statement. If + * other fields are requested, a second statement is issued. Client code + * must assure transactional integrity between the two statements.
    • + *
    • Ingres support will be added with #808
    • + *
    + */ + Result getReturnedRecords(); + } diff --git a/jOOQ/src/main/java/org/jooq/InsertResultStep.java b/jOOQ/src/main/java/org/jooq/InsertResultStep.java index fec4095cca..9d133367dc 100644 --- a/jOOQ/src/main/java/org/jooq/InsertResultStep.java +++ b/jOOQ/src/main/java/org/jooq/InsertResultStep.java @@ -71,6 +71,12 @@ import java.sql.SQLException; */ public interface InsertResultStep extends Insert { + /** + * The result holding returned values as specified by the + * {@link InsertReturningStep} + */ + Result fetch() throws SQLException; + /** * The record holding returned values as specified by the * {@link InsertReturningStep} diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java index 657157cf46..eab4e7989f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java @@ -54,6 +54,7 @@ import org.jooq.InsertSetMoreStep; import org.jooq.InsertSetStep; import org.jooq.InsertValuesStep; import org.jooq.RenderContext; +import org.jooq.Result; import org.jooq.Table; import org.jooq.TableRecord; import org.jooq.exception.DetachedException; @@ -206,9 +207,15 @@ class InsertImpl> extends AbstractQueryPart implements return this; } + @Override + public final Result fetch() throws SQLException { + delegate.execute(); + return delegate.getReturnedRecords(); + } + @Override public final TableRecord fetchOne() throws SQLException { delegate.execute(); - return delegate.getReturned(); + return delegate.getReturnedRecord(); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java index 3330c4cd30..049db8019f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java @@ -58,6 +58,7 @@ import org.jooq.Merge; import org.jooq.QueryPart; import org.jooq.Record; import org.jooq.RenderContext; +import org.jooq.Result; import org.jooq.SQLDialect; import org.jooq.SQLDialectNotSupportedException; import org.jooq.Table; @@ -75,7 +76,7 @@ class InsertQueryImpl> extends AbstractStoreQuery im private final FieldMapForUpdate updateMap; private final FieldMapsForInsert insertMaps; private final FieldList returning; - private R returned; + private Result returned; private boolean onDuplicateKeyUpdate; InsertQueryImpl(Configuration configuration, Table into) { @@ -366,25 +367,31 @@ class InsertQueryImpl> extends AbstractStoreQuery im // SQLite can select _rowid_ after the insert case SQLITE: { result = statement.executeUpdate(); - returned = JooqUtil.newRecord(getInto(), configuration); SQLiteFactory create = new SQLiteFactory(configuration.getConnection()); Field rowid = create.rowid(); - Record record = - create.select(returning) - .from(getInto()) - .where(rowid.equal(rowid.getDataType().convert(create.lastID()))) - .fetchOne(); + for (Record untyped : create + .select(returning) + .from(getInto()) + .where(rowid.equal(rowid.getDataType().convert(create.lastID()))) + .fetch()) { - for (Field field : returning) { - setValue(record, field); + R typed = JooqUtil.newRecord(getInto(), configuration); + for (Field field : returning) { + setValue(field, typed, untyped); + } + + getReturnedRecords().add(typed); } return result; } // Sybase can select @@identity after the insert + // TODO [#832] Fix this. This might be a driver issue. JDBC + // Generated keys don't work with jconn3, but they seem to work + // with jTDS (which is used for Sybase ASE integration) case SYBASE: { result = statement.executeUpdate(); selectReturning(configuration, create(configuration).lastID()); @@ -402,11 +409,18 @@ class InsertQueryImpl> extends AbstractStoreQuery im result = statement.executeUpdate(); rs = statement.getGeneratedKeys(); - if (rs.next()) { - selectReturning(configuration, rs.getObject(1)); - } + try { + List list = new ArrayList(); + while (rs.next()) { + list.add(rs.getObject(1)); + } - return result; + selectReturning(configuration, list.toArray()); + return result; + } + finally { + rs.close(); + } } // Postgres can execute the INSERT .. RETURNING clause like @@ -430,7 +444,7 @@ class InsertQueryImpl> extends AbstractStoreQuery im } CursorImpl cursor = new CursorImpl(configuration, returning, rs, statement, getInto().getRecordType()); - returned = cursor.fetchOne(); + returned = cursor.fetchResult(); return result; } } @@ -440,33 +454,42 @@ class InsertQueryImpl> extends AbstractStoreQuery im * arbitrary fields from JDBC's {@link Statement#getGeneratedKeys()} method. */ @SuppressWarnings("unchecked") - private void selectReturning(Configuration configuration, Object o) throws SQLException { + private final void selectReturning(Configuration configuration, Object... values) throws SQLException { if (getInto() instanceof UpdatableTable) { UpdatableTable updatable = (UpdatableTable) getInto(); // This shouldn't be null, as relevant dialects should // return empty generated keys ResultSet if (updatable.getIdentity() != null) { - Field id = (Field) updatable.getIdentity().getField(); - Number value = id.getDataType().convert(o); - returned = JooqUtil.newRecord(updatable, configuration); + Field field = (Field) updatable.getIdentity().getField(); + Number[] ids = new Number[values.length]; + for (int i = 0; i < values.length; i++) { + ids[i] = field.getDataType().convert(values[i]); + } // Only the IDENTITY value was requested. No need for an // additional query - if (returning.size() == 1 && returning.get(0).equals(id)) { - ((AbstractRecord) returned).setValue(id, new Value(value)); + if (returning.size() == 1 && returning.get(0).equals(field)) { + for (Number id : ids) { + R typed = JooqUtil.newRecord(getInto(), configuration); + ((AbstractRecord) typed).setValue(field, new Value(id)); + getReturnedRecords().add(typed); + } } // Other values are requested, too. Run another query else { - Record record = - create(configuration).select(returning) - .from(updatable) - .where(id.equal(value)) - .fetchOne(); + for (Record untyped : create(configuration).select(returning) + .from(updatable) + .where(field.in(ids)) + .fetch()) { - for (Field field : returning) { - setValue(record, field); + R typed = JooqUtil.newRecord(getInto(), configuration); + for (Field f : returning) { + setValue(f, typed, untyped); + } + + getReturnedRecords().add(typed); } } } @@ -474,10 +497,10 @@ class InsertQueryImpl> extends AbstractStoreQuery im } /** - * Generic type-safe utility method + * Generic typesafety */ - private final void setValue(Record record, Field field) { - ((AbstractRecord) returned).setValue(field, new Value(record.getValue(field))); + private void setValue(Field field, R typed, Record untyped) { + typed.setValue(field, untyped.getValue(field)); } @Override @@ -504,7 +527,27 @@ class InsertQueryImpl> extends AbstractStoreQuery im } @Override + @Deprecated public final R getReturned() { + return getReturnedRecord(); + } + + @Override + public final R getReturnedRecord() { + if (getReturnedRecords().size() == 0) { + return null; + } + + return getReturnedRecords().get(0); + } + + @SuppressWarnings("deprecation") + @Override + public final Result getReturnedRecords() { + if (returned == null) { + returned = new ResultImpl(getConfiguration(), returning); + } + return returned; } } diff --git a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java index 0447c928a7..9d1a30a3f6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java @@ -138,9 +138,9 @@ public class TableRecordImpl> extends TypeRecord 0) { - if (insert.getReturned() != null) { + if (insert.getReturnedRecord() != null) { for (Field field : key) { - setValue0(field, new Value(insert.getReturned().getValue(field))); + setValue0(field, new Value(insert.getReturnedRecord().getValue(field))); } } }