From 355204a21ccfedf22a4f5a07d8f3b6b21c87cfdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=9D=AC=EB=A7=9D?= <105429536+esperar@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:23:52 +0900 Subject: [PATCH 1/6] Update Statement.kt --- .../exposed/sql/statements/Statement.kt | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt index 3a92361eb4..95c732bc37 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt @@ -80,16 +80,17 @@ class StatementContext(val statement: Statement<*>, val args: Iterable() var lastPos = 0 - var i = -1 - while (++i < sql.length) { + + for (i in sql.indices) { val char = sql[i] - if (char == '?') { - if (quoteStack.isEmpty()) { + when { + char == '?' && quoteStack.isEmpty() -> { if (sql.getOrNull(i + 1) == '?') { ++i continue @@ -99,15 +100,11 @@ fun StatementContext.expandArgs(transaction: Transaction): String { val (col, value) = iterator.next() append(col.valueToString(value)) } - } else if (char == '\'' || char == '\"') { - if (quoteStack.isEmpty()) { - quoteStack.push(char) - } else { - val currentQuote = quoteStack.peek() - if (currentQuote == char) { - quoteStack.pop() - } else { - quoteStack.push(char) + char == '\'' || char == '\"' -> { + when { + quoteStack.isEmpty() -> quoteStack.push(char) + quoteStack.peek() == char -> quoteStack.pop() + else -> quoteStack.push(char) } } } @@ -119,6 +116,7 @@ fun StatementContext.expandArgs(transaction: Transaction): String { } } + enum class StatementGroup { DDL, DML } From eda64ad11927cb2cc642bc1694003578ce92649b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=9D=AC=EB=A7=9D?= <105429536+esperar@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:25:16 +0900 Subject: [PATCH 2/6] Update StatementInterceptor.kt --- .../jetbrains/exposed/sql/statements/StatementInterceptor.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt index bc12d75622..01eafd0a4c 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt @@ -15,7 +15,9 @@ import org.jetbrains.exposed.sql.statements.api.PreparedStatementApi interface StatementInterceptor { fun beforeExecution(transaction: Transaction, context: StatementContext) {} + fun afterStatementPrepared(transaction: Transaction, preparedStatement: PreparedStatementApi) {} + fun afterExecution(transaction: Transaction, contexts: List, executedStatement: PreparedStatementApi) {} fun beforeCommit(transaction: Transaction) {} From dcccdb902dc857fa0ba98c5b836e2818a21ce3f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=9D=AC=EB=A7=9D?= <105429536+esperar@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:27:25 +0900 Subject: [PATCH 3/6] Update UpdateStatement.kt --- .../exposed/sql/statements/UpdateStatement.kt | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt index 0e4c7254ae..3522bc5441 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt @@ -37,17 +37,21 @@ open class UpdateStatement(val targetsSet: ColumnSet, val limit: Int?, val where } override fun arguments(): Iterable>> = QueryBuilder(true).run { - if (targetsSet is Join && currentDialect is OracleDialect) { - where?.toQueryBuilder(this) - values.forEach { - registerArgument(it.key, it.value) + when { + targetsSet is Join && currentDialect is OracleDialect -> { + where?.toQueryBuilder(this) + values.forEach { + registerArgument(it.key, it.value) + } } - } else { - values.forEach { - registerArgument(it.key, it.value) + else -> { + values.forEach { + registerArgument(it.key, it.value) + } + where?.toQueryBuilder(this) } - where?.toQueryBuilder(this) } if (args.isNotEmpty()) listOf(args) else emptyList() } + } From 7e0480ed2f00f3ab517b489cd4e0cd23b67dc85f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=9D=AC=EB=A7=9D?= <105429536+esperar@users.noreply.github.com> Date: Wed, 11 Oct 2023 15:17:21 +0900 Subject: [PATCH 4/6] Update Statement.kt From 703a1631fab9ad4e899e66f36a6198445eb2228a Mon Sep 17 00:00:00 2001 From: aesperer Date: Sat, 6 Jan 2024 14:46:53 +0900 Subject: [PATCH 5/6] fix :: i increment, duplex override method --- .../kotlin/org/jetbrains/exposed/sql/statements/Statement.kt | 2 +- .../jetbrains/exposed/sql/statements/StatementInterceptor.kt | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt index 44866035c0..569ad5f427 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt @@ -127,7 +127,7 @@ fun StatementContext.expandArgs(transaction: Transaction): String { when { char == '?' && quoteStack.isEmpty() -> { if (sql.getOrNull(i + 1) == '?') { - ++i + i.inc() continue } append(sql.substring(lastPos, i)) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt index 7cf8cbfbdf..a4d8a19a3a 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/StatementInterceptor.kt @@ -17,9 +17,7 @@ import org.jetbrains.exposed.sql.statements.api.PreparedStatementApi interface StatementInterceptor { /** Performs steps before a statement, from the provided [context], is executed in a [transaction]. */ fun beforeExecution(transaction: Transaction, context: StatementContext) {} - - fun afterStatementPrepared(transaction: Transaction, preparedStatement: PreparedStatementApi) {} - + /** * Performs steps after [preparedStatement] has been created in a [transaction], but before the statement * has been executed. From 2a1b8f945de21508ae6d242b5da51e2457910872 Mon Sep 17 00:00:00 2001 From: aesperer Date: Sat, 6 Jan 2024 23:43:03 +0900 Subject: [PATCH 6/6] delete blank line(s) --- .../kotlin/org/jetbrains/exposed/sql/statements/Statement.kt | 1 - .../org/jetbrains/exposed/sql/statements/UpdateStatement.kt | 1 - 2 files changed, 2 deletions(-) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt index 569ad5f427..70fb63b73f 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/Statement.kt @@ -151,7 +151,6 @@ fun StatementContext.expandArgs(transaction: Transaction): String { } } - /** Represents the groups that are used to classify the purpose of an SQL statement. */ enum class StatementGroup { /** Data definition language group. */ diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt index 98f8eac16d..c828f79733 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateStatement.kt @@ -61,5 +61,4 @@ open class UpdateStatement(val targetsSet: ColumnSet, val limit: Int?, val where } if (args.isNotEmpty()) listOf(args) else emptyList() } - }