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 af915ee680..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 @@ -115,18 +115,19 @@ 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 + i.inc() continue } append(sql.substring(lastPos, i)) @@ -134,15 +135,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) } } } 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 690aa10ba2..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 @@ -45,16 +45,19 @@ 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() }