diff --git a/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/AsyncSQLClientImpl.java b/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/AsyncSQLClientImpl.java
index 8bda55e1..6efe4e58 100644
--- a/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/AsyncSQLClientImpl.java
+++ b/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/AsyncSQLClientImpl.java
@@ -17,12 +17,15 @@
package io.vertx.ext.asyncsql.impl;
import io.vertx.core.AsyncResult;
+import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.Vertx;
+import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.asyncsql.AsyncSQLClient;
-import io.vertx.ext.sql.SQLClient;
-import io.vertx.ext.sql.SQLConnection;
+import io.vertx.ext.sql.*;
+
+import java.util.function.Function;
/**
* @author Joern Bernhardt.
@@ -55,4 +58,68 @@ public SQLClient getConnection(Handler> handler) {
return this;
}
+ @Override
+ public SQLClient query(String sql, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.query(sql, f)), handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient queryStream(String sql, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.queryStream(sql, f)), handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient queryStreamWithParams(String sql, JsonArray params, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.queryStreamWithParams(sql, params, f)), handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient queryWithParams(String sql, JsonArray params, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.queryWithParams(sql, params, f)), handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient update(String sql, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.update(sql, f)), handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient updateWithParams(String sql, JsonArray params, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.updateWithParams(sql, params, f)), handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient call(String sql, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.call(sql, f)), handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient callWithParams(String sql, JsonArray params, JsonArray outputs, Handler> handler) {
+ executeDirect(conn -> Future.future(f -> conn.callWithParams(sql, params, outputs, f)), handler);
+ return this;
+ }
+
+ private void executeDirect(Function> action, Handler> handler) {
+ getConnection(getConnection -> {
+ if (getConnection.failed()) {
+ handler.handle(Future.failedFuture(getConnection.cause()));
+ } else {
+ final SQLConnection conn = getConnection.result();
+ Future future;
+ try {
+ future = action.apply(conn);
+ } catch (Throwable e) {
+ future = Future.failedFuture(e);
+ }
+ future.setHandler(handler);
+ }
+ });
+ }
}
diff --git a/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/ClientWrapper.java b/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/ClientWrapper.java
index 8e396c89..78553ece 100644
--- a/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/ClientWrapper.java
+++ b/vertx-mysql-postgresql-client-jasync/src/main/java/io/vertx/ext/asyncsql/impl/ClientWrapper.java
@@ -18,9 +18,9 @@
import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
+import io.vertx.core.json.JsonArray;
import io.vertx.ext.asyncsql.AsyncSQLClient;
-import io.vertx.ext.sql.SQLClient;
-import io.vertx.ext.sql.SQLConnection;
+import io.vertx.ext.sql.*;
/**
* Wraps a client with the {@link ClientHolder} in order to keep track of the references.
@@ -51,4 +51,52 @@ public void close() {
public SQLClient getConnection(Handler> handler) {
return client.getConnection(handler);
}
+
+ @Override
+ public SQLClient query(String sql, Handler> handler) {
+ client.query(sql, handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient queryStream(String sql, Handler> handler) {
+ client.queryStream(sql, handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient queryStreamWithParams(String sql, JsonArray params, Handler> handler) {
+ client.queryStreamWithParams(sql, params, handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient queryWithParams(String sql, JsonArray params, Handler> handler) {
+ client.queryWithParams(sql, params, handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient update(String sql, Handler> handler) {
+ client.update(sql, handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient updateWithParams(String sql, JsonArray params, Handler> handler) {
+ client.updateWithParams(sql, params, handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient call(String sql, Handler> handler) {
+ client.call(sql, handler);
+ return this;
+ }
+
+ @Override
+ public SQLClient callWithParams(String sql, JsonArray params, JsonArray outputs, Handler> handler) {
+ client.callWithParams(sql, params, outputs, handler);
+ return this;
+ }
}
diff --git a/vertx-mysql-postgresql-client-jasync/src/test/java/io/vertx/ext/asyncsql/MySQLClientTest.java b/vertx-mysql-postgresql-client-jasync/src/test/java/io/vertx/ext/asyncsql/MySQLClientTest.java
index 057944de..03c1438c 100644
--- a/vertx-mysql-postgresql-client-jasync/src/test/java/io/vertx/ext/asyncsql/MySQLClientTest.java
+++ b/vertx-mysql-postgresql-client-jasync/src/test/java/io/vertx/ext/asyncsql/MySQLClientTest.java
@@ -16,6 +16,7 @@
package io.vertx.ext.asyncsql;
+import com.github.jasync.sql.db.exceptions.InsufficientParametersException;
import io.vertx.ext.asyncsql.category.NeedsDocker;
import org.junit.*;
@@ -116,6 +117,18 @@ public void testInsertedIds(TestContext context) {
});
}
+ @Test
+ public void test(TestContext context){
+ JsonArray arr = new JsonArray().add(1).add(2);
+ Async async = context.async();
+ // a exception will throw. @see https://github.com/jasync-sql/jasync-sql/blob/master/mysql-async/src/main/java/com/github/jasync/sql/db/mysql/MySQLConnection.kt#L288-L301
+ client.queryWithParams("?", arr, r -> {
+ context.assertTrue(r.failed());
+ context.assertTrue(r.cause() instanceof InsufficientParametersException);
+ async.complete();
+ });
+ }
+
@Override
protected void compareInstantStrings(TestContext context, String result, String expected) {
// mysql will perform some rounding since it does not have the precision to store the full TS