Add test for limit with query (#1787)
Reviewed-on: https://gitea.com/xorm/xorm/pulls/1787 Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-committed-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
0f3f4ea7fb
commit
47cfe0347f
|
@ -396,3 +396,25 @@ func TestJoinWithSubQuery(t *testing.T) {
|
||||||
assert.EqualValues(t, 1, len(querys))
|
assert.EqualValues(t, 1, len(querys))
|
||||||
assert.EqualValues(t, q, querys[0])
|
assert.EqualValues(t, q, querys[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestQueryStringWithLimit(t *testing.T) {
|
||||||
|
assert.NoError(t, PrepareEngine())
|
||||||
|
|
||||||
|
if testEngine.Dialect().URI().DBType == schemas.MSSQL {
|
||||||
|
t.SkipNow()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type QueryWithLimit struct {
|
||||||
|
Id int64 `xorm:"autoincr pk"`
|
||||||
|
Msg string `xorm:"varchar(255)"`
|
||||||
|
DepartId int64
|
||||||
|
Money float32
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.NoError(t, testEngine.Sync2(new(QueryWithLimit)))
|
||||||
|
|
||||||
|
data, err := testEngine.Table("query_with_limit").Limit(20, 20).QueryString()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 0, len(data))
|
||||||
|
}
|
||||||
|
|
|
@ -247,6 +247,9 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
|
||||||
top = fmt.Sprintf("TOP %d ", LimitNValue)
|
top = fmt.Sprintf("TOP %d ", LimitNValue)
|
||||||
}
|
}
|
||||||
if statement.Start > 0 {
|
if statement.Start > 0 {
|
||||||
|
if statement.RefTable == nil {
|
||||||
|
return "", nil, errors.New("Unsupported query limit without reference table")
|
||||||
|
}
|
||||||
var column string
|
var column string
|
||||||
if len(statement.RefTable.PKColumns()) == 0 {
|
if len(statement.RefTable.PKColumns()) == 0 {
|
||||||
for _, index := range statement.RefTable.Indexes {
|
for _, index := range statement.RefTable.Indexes {
|
||||||
|
|
Loading…
Reference in New Issue