From caae7fd953e7d8681f07933c5f31b319aa640a4b Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 6 Jul 2012 15:21:47 +0200 Subject: [PATCH] [#1536] Add documentation to the FOR UPDATE OF clause, indicating that DB2 may have stricter requirements regarding updatability of fields --- .../org/jooq/test/_/testcases/SelectTests.java | 17 +++++++++++++---- jOOQ/src/main/java/org/jooq/LockProvider.java | 4 ++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/SelectTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/SelectTests.java index d96f4ea60f..26560066c1 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/SelectTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/SelectTests.java @@ -524,16 +524,25 @@ extends BaseTest result = create().select(TAuthor_ID()) + Result result = + create().select(TAuthor_ID()) .from(TAuthor()) .forUpdate() - .of(TAuthor_LAST_NAME(), TAuthor_FIRST_NAME()) + + // DB2 requires a key column to be contained in the + // FOR UPDATE OF ... clause + .of(TAuthor_ID(), + TAuthor_LAST_NAME(), + TAuthor_FIRST_NAME()) .fetch(); assertEquals(2, result.size()); - Result result2 = create().selectFrom(TAuthor()) + Result result2 = + create().selectFrom(TAuthor()) .forUpdate() - .of(TAuthor_LAST_NAME(), TAuthor_FIRST_NAME()) + .of(TAuthor_ID(), + TAuthor_LAST_NAME(), + TAuthor_FIRST_NAME()) .fetch(); assertEquals(2, result2.size()); diff --git a/jOOQ/src/main/java/org/jooq/LockProvider.java b/jOOQ/src/main/java/org/jooq/LockProvider.java index a9a120d373..010d211ac0 100644 --- a/jOOQ/src/main/java/org/jooq/LockProvider.java +++ b/jOOQ/src/main/java/org/jooq/LockProvider.java @@ -135,6 +135,10 @@ public interface LockProvider { *
  • Oracle
  • *
  • Sybase
  • * + *

    + * Note, that {@link SQLDialect#DB2} has some stricter requirements + * regarding the updatability of fields. Refer to the DB2 documentation for + * further details * * @param fields The fields that should be locked */