From cfd934c9fe4cb2091d78dbbff744eac65f50d616 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 8 Mar 2012 19:11:59 +0000 Subject: [PATCH] [#1221] Incorrect ExecuteListener invocation for INSERT .. RETURNING. executeStart() and executeEnd() are omitted --- .../main/java/org/jooq/impl/InsertQueryImpl.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java index 2b55d0fb65..24a887c162 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java @@ -376,7 +376,9 @@ class InsertQueryImpl extends AbstractStoreQuery implements // SQLite can select _rowid_ after the insert case SQLITE: { + listener.executeStart(ctx); result = ctx.statement().executeUpdate(); + listener.executeEnd(ctx); SQLiteFactory create = new SQLiteFactory(ctx.getConnection()); returned = @@ -393,7 +395,10 @@ class InsertQueryImpl extends AbstractStoreQuery implements // Generated keys don't work with jconn3, but they seem to work // with jTDS (which is used for Sybase ASE integration) case SYBASE: { + listener.executeStart(ctx); result = ctx.statement().executeUpdate(); + listener.executeEnd(ctx); + selectReturning(ctx.configuration(), create(ctx).lastID()); return result; } @@ -406,7 +411,10 @@ class InsertQueryImpl extends AbstractStoreQuery implements case INGRES: case MYSQL: case SQLSERVER: { + listener.executeStart(ctx); result = ctx.statement().executeUpdate(); + listener.executeEnd(ctx); + rs = ctx.statement().getGeneratedKeys(); try { @@ -426,7 +434,9 @@ class InsertQueryImpl extends AbstractStoreQuery implements // Postgres can execute the INSERT .. RETURNING clause like // a select clause. JDBC support is not implemented case POSTGRES: { + listener.executeStart(ctx); rs = ctx.statement().executeQuery(); + listener.executeEnd(ctx); break; } @@ -436,9 +446,11 @@ class InsertQueryImpl extends AbstractStoreQuery implements case HSQLDB: case ORACLE: default: { + listener.executeStart(ctx); result = ctx.statement().executeUpdate(); - rs = ctx.statement().getGeneratedKeys(); + listener.executeEnd(ctx); + rs = ctx.statement().getGeneratedKeys(); break; } }