Skip to content
This repository was archived by the owner on Jun 14, 2019. It is now read-only.

Commit db975c8

Browse files
committed
update benchmark test for limit query
1 parent f3ef908 commit db975c8

File tree

1 file changed

+34
-11
lines changed

1 file changed

+34
-11
lines changed

builder_select_test.go

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -205,10 +205,32 @@ func TestBuilder_Limit(t *testing.T) {
205205
fmt.Println(sql, args)
206206
}
207207

208-
func BenchmarkBuilder_Limit(b *testing.B) {
208+
func BenchmarkBuilder_LimitForOracle(b *testing.B) {
209209
for i := 0; i < b.N; i++ {
210210
b.StopTimer()
211-
builder := randQuery(rand.Intn(1000) >= 500, true)
211+
builder := randQuery(ORACLE, rand.Intn(1000) >= 500, true)
212+
b.StartTimer()
213+
214+
_, _, err := builder.ToSQL()
215+
assert.NoError(b, err)
216+
}
217+
}
218+
219+
func BenchmarkBuilder_LimitForMssql(b *testing.B) {
220+
for i := 0; i < b.N; i++ {
221+
b.StopTimer()
222+
builder := randQuery(ORACLE, rand.Intn(1000) >= 500, true)
223+
b.StartTimer()
224+
225+
_, _, err := builder.ToSQL()
226+
assert.NoError(b, err)
227+
}
228+
}
229+
230+
func BenchmarkBuilder_LimitForMysqlLike(b *testing.B) {
231+
for i := 0; i < b.N; i++ {
232+
b.StopTimer()
233+
builder := randQuery(MYSQL, rand.Intn(1000) >= 500, true)
212234
b.StartTimer()
213235

214236
_, _, err := builder.ToSQL()
@@ -217,30 +239,31 @@ func BenchmarkBuilder_Limit(b *testing.B) {
217239
}
218240

219241
func TestRandQuery(t *testing.T) {
220-
sql, args, err := randQuery(false, true).ToSQL()
242+
dialect := randDialect()
243+
sql, args, err := randQuery(dialect, false, true).ToSQL()
221244
assert.NoError(t, err)
222245
fmt.Println(sql, args)
223246

224-
sql, args, err = randQuery(false, false).ToSQL()
247+
sql, args, err = randQuery(dialect, false, false).ToSQL()
225248
assert.NoError(t, err)
226249
fmt.Println(sql, args)
227250

228-
sql, args, err = randQuery(true, false).ToSQL()
251+
sql, args, err = randQuery(dialect, true, false).ToSQL()
229252
assert.NoError(t, err)
230253
fmt.Println(sql, args)
231254

232-
sql, args, err = randQuery(true, true).ToSQL()
255+
sql, args, err = randQuery(dialect, true, true).ToSQL()
233256
assert.NoError(t, err)
234257
fmt.Println(sql, args)
235258
}
236259

237260
// randQuery Generate a basic query for benchmark test. But be careful it's not a executable SQL in real db.
238-
func randQuery(allowUnion, allowLimit bool) *Builder {
239-
b := randSimpleQuery(allowLimit)
261+
func randQuery(dialect string, allowUnion, allowLimit bool) *Builder {
262+
b := randSimpleQuery(dialect, allowLimit)
240263
if allowUnion {
241264
r := rand.Intn(3) + 1
242265
for i := r; i < r; i++ {
243-
b = b.Union("all", randSimpleQuery(allowLimit))
266+
b = b.Union("all", randSimpleQuery(dialect, allowLimit))
244267
}
245268
}
246269

@@ -251,8 +274,8 @@ func randQuery(allowUnion, allowLimit bool) *Builder {
251274
return b
252275
}
253276

254-
func randSimpleQuery(allowLimit bool) *Builder {
255-
b := Dialect(randDialect()).Select(randSelects()...).From(randTableName(0)).PK("id")
277+
func randSimpleQuery(dialect string, allowLimit bool) *Builder {
278+
b := Dialect(dialect).Select(randSelects()...).From(randTableName(0)).PK("id")
256279
b = randJoin(b, 3)
257280
b = b.Where(randCond(b.selects, 3))
258281
if allowLimit {

0 commit comments

Comments
 (0)