Add test for limit with query #1787
|
@ -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))
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue
Block a user