From 12ca10cd0a46e0d2137f063550fc55f941df7a73 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 11 May 2018 17:23:33 +0200 Subject: [PATCH] [#7479] Log warning when { Insert | Update | Delete }ReturningStep.returning() is used with arbitrary column expressions --- .../java/org/jooq/impl/AbstractDMLQuery.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java index 35916caadd..861741bcc4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java @@ -179,17 +179,29 @@ abstract class AbstractDMLQuery extends AbstractQuery { // @Override @SuppressWarnings("unchecked") public final Result getReturnedRecords() { - if (returned == null) + if (returned == null) { // [#3682] Plain SQL tables do not have any fields - if (table.fields().length > 0) + if (table.fields().length > 0) { + + // [#7479] [#7475] Warn users about potential API misuse + warnOnAPIMisuse(); returned = getResult().into(table); - else + } + else { returned = (Result) getResult(); + } + } return returned; } + private final void warnOnAPIMisuse() { + for (Field field : getResult().fields()) + if (table.field(field) == null) + log.warn("API misuse", "Column " + field + " has been requested through the returning() clause, which is not present in table " + table + ". Use StoreQuery.getResult() or the returningResult() clause instead."); + } + // @Override public final Result getResult() { if (returnedResult == null)