From 945be7dac31901ea70ef2dc1c7debe7e6205299a Mon Sep 17 00:00:00 2001 From: oshai Date: Thu, 15 Dec 2022 18:28:49 +0200 Subject: [PATCH] on rollback sendQueryAfterCurrent --- .../com/github/jasync/sql/db/mysql/MySQLConnection.kt | 10 ++++++++++ r2dbc-mysql/src/main/java/JasyncClientConnection.kt | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/mysql-async/src/main/java/com/github/jasync/sql/db/mysql/MySQLConnection.kt b/mysql-async/src/main/java/com/github/jasync/sql/db/mysql/MySQLConnection.kt index 594f6b38..db31b640 100644 --- a/mysql-async/src/main/java/com/github/jasync/sql/db/mysql/MySQLConnection.kt +++ b/mysql-async/src/main/java/com/github/jasync/sql/db/mysql/MySQLConnection.kt @@ -32,6 +32,7 @@ import com.github.jasync.sql.db.util.Success import com.github.jasync.sql.db.util.Version import com.github.jasync.sql.db.util.complete import com.github.jasync.sql.db.util.failed +import com.github.jasync.sql.db.util.flatMap import com.github.jasync.sql.db.util.isCompleted import com.github.jasync.sql.db.util.length import com.github.jasync.sql.db.util.mapTry @@ -339,6 +340,15 @@ class MySQLConnection @JvmOverloads constructor( this.connectionHandler.write(AuthenticationSwitchResponse(configuration.password, message)) } + fun sendQueryAfterCurrent(query: String): CompletableFuture { + return if (isQuerying()) { + logger.info { "attaching after current query $query" } + queryPromise().get().flatMap { sendQuery(query) } + } else { + sendQuery(query) + } + } + override fun sendQueryDirect(query: String): CompletableFuture { logger.trace { "$connectionId sendQuery() - $query" } this.validateIsReadyForQuery() diff --git a/r2dbc-mysql/src/main/java/JasyncClientConnection.kt b/r2dbc-mysql/src/main/java/JasyncClientConnection.kt index 882bdb92..c6226543 100644 --- a/r2dbc-mysql/src/main/java/JasyncClientConnection.kt +++ b/r2dbc-mysql/src/main/java/JasyncClientConnection.kt @@ -93,7 +93,7 @@ class JasyncClientConnection( } override fun rollbackTransaction(): Publisher { - return executeVoid("ROLLBACK") + return Mono.defer { (jasyncConnection as MySQLConnection).sendQueryAfterCurrent("ROLLBACK").toMono().then() } } override fun setTransactionIsolationLevel(isolationLevel: IsolationLevel): Publisher {