From 4ee099a59da334670ec249fde13b44b9b4bad19e Mon Sep 17 00:00:00 2001 From: roharon Date: Sun, 2 Jun 2024 20:27:18 +0900 Subject: [PATCH] Refactor: EXPOSED-396 fetchBatchedResults logic inside override iterator method --- .../kotlin/org/jetbrains/exposed/sql/Query.kt | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Query.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Query.kt index d237f25f70..6e82f921e3 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Query.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Query.kt @@ -264,26 +264,25 @@ open class Query(override var set: FieldSet, where: Op?) : AbstractQuer limit = batchSize (orderByExpressions as MutableList).add(autoIncColumn to sortOrder) val whereOp = where ?: Op.TRUE + val fetchInAscendingOrder = sortOrder in listOf(SortOrder.ASC, SortOrder.ASC_NULLS_FIRST, SortOrder.ASC_NULLS_LAST) return object : Iterable> { override fun iterator(): Iterator> { return iterator { - var lastOffset: Long? = null + var lastOffset = if (fetchInAscendingOrder) 0L else null while (true) { val query = this@Query.copy().adjustWhere { - return@adjustWhere lastOffset.let { - if (it == null) return@let whereOp - - return@let if (listOf(SortOrder.ASC, SortOrder.ASC_NULLS_FIRST, SortOrder.ASC_NULLS_LAST) - .contains(sortOrder) - ) { - whereOp and (autoIncColumn greater it) + lastOffset?.let { + whereOp and if (fetchInAscendingOrder) { + (autoIncColumn greater it) } else { - whereOp and (autoIncColumn less it) + (autoIncColumn less it) } - } + } ?: whereOp } + println(query.prepareSQL(QueryBuilder(false))) + val results = query.iterator().asSequence().toList() if (results.isNotEmpty()) {