xorm/internal/statements/legacy_select.go

45 lines
1.3 KiB
Go
Raw Normal View History

// Copyright 2022 The Xorm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package statements
import (
"xorm.io/builder"
)
// isUsingLegacy returns true if xorm uses legacy LIMIT OFFSET.
// It's only available in sqlserver and oracle, if param USE_LEGACY_LIMIT_OFFSET is set to "true"
func (statement *Statement) isUsingLegacyLimitOffset() bool {
u, ok := statement.dialect.(interface{ UseLegacyLimitOffset() bool })
return ok && u.UseLegacyLimitOffset()
}
// write mssql legacy query sql
func (statement *Statement) writeMssqlLegacySelect(buf *builder.BytesWriter, columnStr string) error {
return statement.writeMultiple(buf,
statement.writeStrings("SELECT"),
statement.writeDistinct,
statement.writeTop,
statement.writeFrom,
statement.writeWhereWithMssqlPagination,
statement.writeGroupBy,
statement.writeHaving,
statement.writeOrderBys,
statement.writeForUpdate,
)
}
func (statement *Statement) writeOracleLegacySelect(buf *builder.BytesWriter, columnStr string) error {
return statement.writeMultiple(buf,
statement.writeSelectColumns(columnStr),
statement.writeFrom,
2024-02-05 10:44:56 +00:00
statement.writeWhere,
statement.writeOracleLimit(columnStr),
statement.writeGroupBy,
statement.writeHaving,
statement.writeOrderBys,
statement.writeForUpdate,
)
}