From 4c8c03fc8488326c43ca20f34feb17470a0f1978 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 17 Jan 2025 08:56:06 +0100 Subject: [PATCH] [jOOQ/jOOQ#16409] Move some logic to OSS edition --- .../java/org/jooq/impl/AbstractDMLQuery.java | 13 ++++---- .../java/org/jooq/impl/DeleteQueryImpl.java | 13 +++----- .../java/org/jooq/impl/InsertQueryImpl.java | 32 ++++++++----------- .../java/org/jooq/impl/UpdateQueryImpl.java | 14 +++----- 4 files changed, 28 insertions(+), 44 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java index dbdac1ee57..42450b228d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java @@ -823,13 +823,6 @@ abstract class AbstractDMLQuery extends AbstractRowCountQuery - - - - - - - @@ -1351,6 +1344,12 @@ abstract class AbstractDMLQuery extends AbstractRowCountQuery log.debug("RETURNING was set on query, but no rows were returned. This is likely due to a missing identity column (or an identity column unknown to jOOQ)."); } + /** + * The estimated number of affected rows, {@link Integer#MAX_VALUE}, if + * unknown. + */ + abstract int estimatedRowCount(Scope ctx); + private final int executeReturningGeneratedKeys(ExecuteContext ctx, ExecuteListener listener) throws SQLException { listener.executeStart(ctx); int result = executeImmediate(ctx.statement()).executeUpdate(); diff --git a/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java index 5f8bb41bc6..df78bc8489 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java @@ -597,15 +597,10 @@ implements return super.isExecutable(); } - - - - - - - - - + @Override + final int estimatedRowCount(Scope ctx) { + return Integer.MAX_VALUE; + } // ------------------------------------------------------------------------- // XXX: Query Object Model diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java index 94218cfa6f..e47670843b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java @@ -1197,6 +1197,17 @@ implements return insertMaps.isExecutable() || defaultValues(configuration()) || select != null; } + @Override + final int estimatedRowCount(Scope ctx) { + if (defaultValues(ctx.configuration())) + return 1; + + else if (select != null) + return Integer.MAX_VALUE; + + // [#2682] [#15632] Inline derived tables (and policies) may generate a SELECT + else if (InlineDerivedTable.inlineDerivedTable(ctx, table(ctx)) instanceof InlineDerivedTable) + return Integer.MAX_VALUE; @@ -1205,24 +1216,9 @@ implements - - - - - - - - - - - - - - - - - - + else + return insertMaps.rows; + } // ------------------------------------------------------------------------- // XXX: Query Object Model diff --git a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java index d117480c0c..53db4ae7e8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java @@ -931,16 +931,10 @@ implements return updateMap.size() > 0; } - - - - - - - - - - + @Override + final int estimatedRowCount(Scope ctx) { + return Integer.MAX_VALUE; + } // ------------------------------------------------------------------------- // XXX: Query Object Model