diff --git a/jOOQ-test/src/org/jooq/test/OracleTest.java b/jOOQ-test/src/org/jooq/test/OracleTest.java index 8817e10c00..15cac88d07 100644 --- a/jOOQ-test/src/org/jooq/test/OracleTest.java +++ b/jOOQ-test/src/org/jooq/test/OracleTest.java @@ -41,10 +41,8 @@ import static java.util.Collections.emptyList; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNull; import static org.jooq.impl.Factory.currentUser; -import static org.jooq.impl.Factory.falseCondition; import static org.jooq.impl.Factory.sum; import static org.jooq.impl.Factory.table; -import static org.jooq.impl.Factory.trueCondition; import static org.jooq.impl.Factory.val; import static org.jooq.test.oracle.generatedclasses.multi_schema.Tables.T_BOOK_SALE; import static org.jooq.test.oracle.generatedclasses.test.Routines.f691cursorIn; @@ -1115,83 +1113,6 @@ public class OracleTest extends jOOQAbstractTest< assertEquals(BigInteger.valueOf(1), ora().nextval(Sequences.S_961_BIG_INTEGER)); } - @Test - public void testOracleMergeStatementExtensions() throws Exception { - reset = false; - TAuthorRecord author; - - // Test updating with a positive condition - // --------------------------------------- - assertEquals(1, - ora().mergeInto(T_AUTHOR) - .usingDual() - .on(T_AUTHOR.ID.equal(1)) - .whenMatchedThenUpdate() - .set(T_AUTHOR.LAST_NAME, "Frisch") - .where(T_AUTHOR.ID.equal(1)) - .execute()); - - author = create().fetchOne(T_AUTHOR, T_AUTHOR.ID.equal(1)); - assertEquals(2, create().selectCount().from(T_AUTHOR).fetchOne(0)); - assertEquals(1, (int) author.getId()); - assertEquals(AUTHOR_FIRST_NAMES.get(0), author.getFirstName()); - assertEquals("Frisch", author.getLastName()); - - // Test updating with a negative condition - // --------------------------------------- - assertEquals(0, - ora().mergeInto(T_AUTHOR) - .usingDual() - .on(T_AUTHOR.ID.equal(1)) - .whenMatchedThenUpdate() - .set(T_AUTHOR.LAST_NAME, "Frisch") - .where(T_AUTHOR.ID.equal(3)) - .execute()); - - author = create().fetchOne(T_AUTHOR, T_AUTHOR.ID.equal(1)); - assertEquals(2, create().selectCount().from(T_AUTHOR).fetchOne(0)); - assertEquals(1, (int) author.getId()); - assertEquals(AUTHOR_FIRST_NAMES.get(0), author.getFirstName()); - assertEquals("Frisch", author.getLastName()); - - // Test deleting - // ------------- - // ON DELETE CASCADE doesn't work with MERGE...? - ora().delete(T_BOOK).execute(); - - assertEquals(1, - ora().mergeInto(T_AUTHOR) - .usingDual() - .on(trueCondition()) - .whenMatchedThenUpdate() - .set(T_AUTHOR.LAST_NAME, "Frisch") - .where(T_AUTHOR.ID.equal(2)) - .deleteWhere(T_AUTHOR.ID.equal(2)) - .execute()); - - author = create().fetchOne(T_AUTHOR, T_AUTHOR.ID.equal(1)); - assertEquals(1, create().selectCount().from(T_AUTHOR).fetchOne(0)); - assertEquals(1, (int) author.getId()); - assertEquals(AUTHOR_FIRST_NAMES.get(0), author.getFirstName()); - assertEquals("Frisch", author.getLastName()); - - // Test inserting - // -------------- - assertEquals(0, - ora().mergeInto(T_AUTHOR) - .usingDual() - .on(trueCondition()) - .whenNotMatchedThenInsert( - T_AUTHOR.ID, - T_AUTHOR.FIRST_NAME, - T_AUTHOR.LAST_NAME) - .values(3, "Yvette", "Z'Graggen") - .where(falseCondition()) - .execute()); - - // No tests on results - } - @Test public void testOracleDateAsTimestamp() throws Exception { Timestamp now = new Timestamp(System.currentTimeMillis() / 1000 * 1000); diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/InsertUpdateTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/InsertUpdateTests.java index 8b3f8b070e..8dd144907c 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/InsertUpdateTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/InsertUpdateTests.java @@ -55,11 +55,13 @@ import static org.jooq.SQLDialect.SYBASE; import static org.jooq.impl.Factory.cast; import static org.jooq.impl.Factory.castNull; import static org.jooq.impl.Factory.count; +import static org.jooq.impl.Factory.falseCondition; import static org.jooq.impl.Factory.inline; import static org.jooq.impl.Factory.max; import static org.jooq.impl.Factory.row; import static org.jooq.impl.Factory.select; import static org.jooq.impl.Factory.selectOne; +import static org.jooq.impl.Factory.trueCondition; import static org.jooq.impl.Factory.val; import static org.jooq.impl.Factory.vals; @@ -874,7 +876,101 @@ extends BaseTest extends MergeNotMatche * WHEN MATCHED THEN UPDATE clause. *

* Note: This syntax is only available for the - * {@link SQLDialect#ORACLE} database! + * {@link SQLDialect#CUBRID} and {@link SQLDialect#ORACLE} databases! *

* See http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016. * htm for a full definition of the Oracle MERGE statement */ - @Support(ORACLE) + @Support({ CUBRID, ORACLE }) MergeNotMatchedStep deleteWhere(Condition condition); } diff --git a/jOOQ/src/main/java/org/jooq/MergeMatchedWhereStep.java b/jOOQ/src/main/java/org/jooq/MergeMatchedWhereStep.java index e4a3521681..078bc8e50e 100644 --- a/jOOQ/src/main/java/org/jooq/MergeMatchedWhereStep.java +++ b/jOOQ/src/main/java/org/jooq/MergeMatchedWhereStep.java @@ -35,6 +35,7 @@ */ package org.jooq; +import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.ORACLE; /** @@ -63,13 +64,13 @@ public interface MergeMatchedWhereStep extends MergeNotMatched * WHEN MATCHED THEN UPDATE clause. *

* Note: This syntax is only available for the - * {@link SQLDialect#ORACLE} database! + * {@link SQLDialect#CUBRID} and {@link SQLDialect#ORACLE} databases! *

* See http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016. * htm for a full definition of the Oracle MERGE statement */ - @Support(ORACLE) + @Support({ CUBRID, ORACLE }) MergeMatchedDeleteStep where(Condition condition); } diff --git a/jOOQ/src/main/java/org/jooq/MergeNotMatchedWhereStep.java b/jOOQ/src/main/java/org/jooq/MergeNotMatchedWhereStep.java index a85c60bdaf..06c9d2e2ef 100644 --- a/jOOQ/src/main/java/org/jooq/MergeNotMatchedWhereStep.java +++ b/jOOQ/src/main/java/org/jooq/MergeNotMatchedWhereStep.java @@ -35,6 +35,7 @@ */ package org.jooq; +import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.ORACLE; /** @@ -63,13 +64,13 @@ public interface MergeNotMatchedWhereStep extends MergeFinalSt * WHEN NOT MATCHED THEN INSERT clause. *

* Note: This syntax is only available for the - * {@link SQLDialect#ORACLE} database! + * {@link SQLDialect#CUBRID} and {@link SQLDialect#ORACLE} databases! *

* See http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016. * htm for a full definition of the Oracle MERGE statement */ - @Support(ORACLE) + @Support({ CUBRID, ORACLE }) MergeFinalStep where(Condition condition); }