From 0590c6b3eaeafaec3f0a66bcc530e14c6d80fb28 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 15 Feb 2023 13:11:55 +0100 Subject: [PATCH] [jOOQ/jOOQ#14573] Don't refresh if only identity is requested Before this new feature set, we used to refresh only when generated keys didn't succeed, i.e. when columns other than the identity were requested. This must be maintained to avoid unnecessary queries. --- jOOQ/src/main/java/org/jooq/conf/SettingsTools.java | 10 +++++++++- jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java b/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java index 362fc001fc..84bc360e6c 100644 --- a/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java +++ b/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java @@ -475,7 +475,15 @@ public final class SettingsTools { */ public static final boolean returnAnyOnUpdatableRecord(Settings settings) { return !FALSE.equals(settings.isReturnIdentityOnUpdatableRecord()) - || TRUE.equals(settings.isReturnAllOnUpdatableRecord()) + || returnAnyNonIdentityOnUpdatableRecord(settings); + } + + /** + * Whether any non-identity value should be returned on an + * {@link UpdatableRecord} operation. + */ + public static final boolean returnAnyNonIdentityOnUpdatableRecord(Settings settings) { + return TRUE.equals(settings.isReturnAllOnUpdatableRecord()) || TRUE.equals(settings.isReturnDefaultOnUpdatableRecord()) || TRUE.equals(settings.isReturnComputedOnUpdatableRecord()); } diff --git a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java index d6fcc747cb..93c97de95e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... // ... +import static org.jooq.conf.SettingsTools.returnAnyNonIdentityOnUpdatableRecord; import static org.jooq.conf.SettingsTools.returnAnyOnUpdatableRecord; import static org.jooq.conf.SettingsTools.updatablePrimaryKeys; import static org.jooq.conf.WriteIfReadonly.IGNORE; @@ -227,7 +228,7 @@ public class TableRecordImpl> extends AbstractQualified // [#1859] In some databases, not all fields can be fetched via getGeneratedKeys() Configuration c = configuration(); - if (returnAnyOnUpdatableRecord(c.settings()) + if (returnAnyNonIdentityOnUpdatableRecord(c.settings()) // [#11620] Refresh only if the RETURNING clause didn't run // E.g. in MySQL when there was no identity column