diff --git a/kmp/src/commonMain/kotlin/org/tasks/data/TaskListQueryRecursive.kt b/kmp/src/commonMain/kotlin/org/tasks/data/TaskListQueryRecursive.kt index 4854568bc..7230d4395 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/data/TaskListQueryRecursive.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/data/TaskListQueryRecursive.kt @@ -115,14 +115,20 @@ internal object TaskListQueryRecursive { ${SortHelper.orderForGroupTypeRecursive(groupMode, groupAscending)}, ${SortHelper.orderForSortTypeRecursive(sortMode, sortAscending, subtaskMode, subtaskAscending)} ), - numbered_tasks AS ( - SELECT task, ROW_NUMBER() OVER () AS sequence + max_indent AS ( + SELECT + task, + MAX(recursive_tasks.indent) OVER (PARTITION BY task) AS max_indent FROM recursive_tasks ), - max_indent AS ( - SELECT task, - MAX(recursive_tasks.indent) OVER (PARTITION BY task) AS max_indent + numbered_tasks AS ( + SELECT + recursive_tasks.task, + max_indent, + ROW_NUMBER() OVER () AS sequence FROM recursive_tasks + INNER JOIN max_indent ON max_indent.task = recursive_tasks.task + WHERE recursive_tasks.indent = max_indent ), child_counts AS ( SELECT DISTINCT(parent), @@ -140,17 +146,16 @@ internal object TaskListQueryRecursive { secondary_sort, parent_complete FROM tasks - INNER JOIN numbered_tasks ON tasks._id = numbered_tasks.task - INNER JOIN max_indent ON tasks._id = max_indent.task INNER JOIN recursive_tasks ON recursive_tasks.task = tasks._id + INNER JOIN numbered_tasks ON tasks._id = numbered_tasks.task LEFT JOIN child_counts ON child_counts.parent = tasks._id LEFT JOIN tags ON tags.task = tasks._id ${TaskListQuery.JOINS} WHERE recursive_tasks.hidden = 0 AND recursive_tasks.indent = max_indent - GROUP BY tasks._id - ORDER BY sequence + GROUP BY tasks._id + ORDER BY sequence """.trimIndent() return SortHelper.adjustQueryForFlags(preferences, query)