diff --git a/clause/limit.go b/clause/limit.go index abda0055..b0f2fb0a 100644 --- a/clause/limit.go +++ b/clause/limit.go @@ -1,7 +1,5 @@ package clause -import "strconv" - // Limit limit clause type Limit struct { Limit *int @@ -17,14 +15,16 @@ func (limit Limit) Name() string { func (limit Limit) Build(builder Builder) { if limit.Limit != nil && *limit.Limit >= 0 { builder.WriteString("LIMIT ") - builder.WriteString(strconv.Itoa(*limit.Limit)) + // builder.WriteString(strconv.Itoa(*limit.Limit)) + builder.AddVar(builder, *limit.Limit) } if limit.Offset > 0 { if limit.Limit != nil && *limit.Limit >= 0 { builder.WriteByte(' ') } builder.WriteString("OFFSET ") - builder.WriteString(strconv.Itoa(limit.Offset)) + builder.AddVar(builder, limit.Offset) + // builder.WriteString(strconv.Itoa(limit.Offset)) } } diff --git a/clause/limit_test.go b/clause/limit_test.go index a9fd4e24..63f1b1ab 100644 --- a/clause/limit_test.go +++ b/clause/limit_test.go @@ -22,43 +22,43 @@ func TestLimit(t *testing.T) { Limit: &limit10, Offset: 20, }}, - "SELECT * FROM `users` LIMIT 10 OFFSET 20", nil, + "SELECT * FROM `users` LIMIT ? OFFSET ?", []interface{}{limit10, 20}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: &limit0}}, - "SELECT * FROM `users` LIMIT 0", nil, + "SELECT * FROM `users` LIMIT ?", []interface{}{limit0}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: &limit0}, clause.Limit{Offset: 0}}, - "SELECT * FROM `users` LIMIT 0", nil, + "SELECT * FROM `users` LIMIT ?", []interface{}{limit0}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Offset: 20}}, - "SELECT * FROM `users` OFFSET 20", nil, + "SELECT * FROM `users` OFFSET ?", []interface{}{20}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Offset: 20}, clause.Limit{Offset: 30}}, - "SELECT * FROM `users` OFFSET 30", nil, + "SELECT * FROM `users` OFFSET ?", []interface{}{30}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Offset: 20}, clause.Limit{Limit: &limit10}}, - "SELECT * FROM `users` LIMIT 10 OFFSET 20", nil, + "SELECT * FROM `users` LIMIT ? OFFSET ?", []interface{}{limit10, 20}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: &limit10, Offset: 20}, clause.Limit{Offset: 30}}, - "SELECT * FROM `users` LIMIT 10 OFFSET 30", nil, + "SELECT * FROM `users` LIMIT ? OFFSET ?", []interface{}{limit10, 30}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: &limit10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Offset: -10}}, - "SELECT * FROM `users` LIMIT 10", nil, + "SELECT * FROM `users` LIMIT ?", []interface{}{limit10}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: &limit10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Limit: &limitNeg10}}, - "SELECT * FROM `users` OFFSET 30", nil, + "SELECT * FROM `users` OFFSET ?", []interface{}{30}, }, { []clause.Interface{clause.Select{}, clause.From{}, clause.Limit{Limit: &limit10, Offset: 20}, clause.Limit{Offset: 30}, clause.Limit{Limit: &limit50}}, - "SELECT * FROM `users` LIMIT 50 OFFSET 30", nil, + "SELECT * FROM `users` LIMIT ? OFFSET ?", []interface{}{limit50, 30}, }, }