exposed-jdbc/src/main/kotlin/org/jetbrains/exposed/v1/jdbc/SetOperations.kt [104:150]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - override fun prepareSQL(builder: QueryBuilder): String { builder { if (count) append("SELECT COUNT(*) FROM (") prepareStatementSQL(this) if (orderByExpressions.isNotEmpty()) { append(" ORDER BY ") orderByExpressions.appendTo { (expression, sortOrder) -> currentDialect.dataTypeProvider.precessOrderByClause(this, expression, sortOrder) } } if (limit != null || offset > 0) { append(" ") append(currentDialect.functionProvider.queryLimitAndOffset(limit, offset, true)) } if (count) append(") subquery") } return builder.toString() } protected open fun prepareStatementSQL(builder: QueryBuilder) { builder { rawStatements.appendTo(separator = " $operationName ") { when (it) { is Query -> { val isSubQuery = it.orderByExpressions.isNotEmpty() || it.limit != null if (isSubQuery) append("(") it.prepareSQL(this) if (isSubQuery) append(")") } is SetOperation -> it.prepareSQL(this) } } } } override fun limit(count: Int): SetOperation = apply { limit = count } override fun offset(start: Long): SetOperation = apply { offset = start } fun orderBy(column: Expression<*>, order: SortOrder = SortOrder.ASC): SetOperation = orderBy(column to order) override fun orderBy(vararg order: Pair, SortOrder>): SetOperation = apply { (orderByExpressions as MutableList).addAll(order) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - exposed-r2dbc/src/main/kotlin/org/jetbrains/exposed/v1/r2dbc/SetOperations.kt [107:153]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - override fun prepareSQL(builder: QueryBuilder): String { builder { if (count) append("SELECT COUNT(*) FROM (") prepareStatementSQL(this) if (orderByExpressions.isNotEmpty()) { append(" ORDER BY ") orderByExpressions.appendTo { (expression, sortOrder) -> currentDialect.dataTypeProvider.precessOrderByClause(this, expression, sortOrder) } } if (limit != null || offset > 0) { append(" ") append(currentDialect.functionProvider.queryLimitAndOffset(limit, offset, true)) } if (count) append(") subquery") } return builder.toString() } protected open fun prepareStatementSQL(builder: QueryBuilder) { builder { rawStatements.appendTo(separator = " $operationName ") { when (it) { is Query -> { val isSubQuery = it.orderByExpressions.isNotEmpty() || it.limit != null if (isSubQuery) append("(") it.prepareSQL(this) if (isSubQuery) append(")") } is SetOperation -> it.prepareSQL(this) } } } } override fun limit(count: Int): SetOperation = apply { limit = count } override fun offset(start: Long): SetOperation = apply { offset = start } fun orderBy(column: Expression<*>, order: SortOrder = SortOrder.ASC): SetOperation = orderBy(column to order) override fun orderBy(vararg order: Pair, SortOrder>): SetOperation = apply { (orderByExpressions as MutableList).addAll(order) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -