Add test for limit with query #1787

Merged
lunny merged 3 commits from lunny/limit_query into master 2021-07-21 13:13:16 +00:00
2 changed files with 25 additions and 0 deletions

View File

@ -396,3 +396,25 @@ func TestJoinWithSubQuery(t *testing.T) {
assert.EqualValues(t, 1, len(querys))
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))
}

View File

@ -247,6 +247,9 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
top = fmt.Sprintf("TOP %d ", LimitNValue)
}
if statement.Start > 0 {
if statement.RefTable == nil {
return "", nil, errors.New("Unsupported query limit without reference table")
}
var column string
if len(statement.RefTable.PKColumns()) == 0 {
for _, index := range statement.RefTable.Indexes {