diff --git a/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/PreparedStatementTestBase.java b/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/PreparedStatementTestBase.java index ea51c34ca..1dd2a3913 100644 --- a/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/PreparedStatementTestBase.java +++ b/vertx-pg-client/src/test/java/io/vertx/tests/pgclient/PreparedStatementTestBase.java @@ -587,6 +587,17 @@ public void testInferDataTypeLazy42P18(TestContext ctx) { })); } + @Test + public void testCloseLazyPreparedStatementNotExecuted42P18(TestContext ctx) { + PgConnection.connect(vertx, options()).onComplete(ctx.asyncAssertSuccess(conn -> { + conn + .prepare("SELECT CONCAT('HELLO', $1)") + .compose(PreparedStatement::close) + .eventually(() -> conn.close()) + .onComplete(ctx.asyncAssertSuccess()); + })); + } + @Test public void testInferDataTypeFailure42P18(TestContext ctx) { PgConnection.connect(vertx, options()).onComplete(ctx.asyncAssertSuccess(conn -> { diff --git a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java index 793b50118..38e4f2dde 100644 --- a/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java +++ b/vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/PreparedStatementBase.java @@ -134,6 +134,10 @@ protected void close(Promise promise) { promise.fail(ar.cause()); } }); + } else { + // Never executed, so never prepared: nothing to close, and it must not be prepared afterwards + future = context.failedFuture("Prepared statement closed"); + promise.complete(); } } @Override