@@ -54,7 +54,7 @@ func TestBatcherLimit(t *testing.T) {
54
54
q .BatchSize (2 )
55
55
q .Limit (5 )
56
56
r .NoError (q .AddRelation (RelSchema , "rels" , OneToMany , Eq (f ("foo" ), "1" )))
57
- runner := newBatchQueryRunner (ModelSchema , squirrel . NewStmtCacher ( db ) , q )
57
+ runner := newBatchQueryRunner (ModelSchema , store . proxy , q )
58
58
rs := NewBatchingResultSet (runner )
59
59
60
60
var count int
@@ -66,3 +66,42 @@ func TestBatcherLimit(t *testing.T) {
66
66
r .NoError (err )
67
67
r .Equal (5 , count )
68
68
}
69
+
70
+ func TestBatcherNoExtraQueryIfLessThanLimit (t * testing.T ) {
71
+ r := require .New (t )
72
+ db , err := openTestDB ()
73
+ r .NoError (err )
74
+ setupTables (t , db )
75
+ defer db .Close ()
76
+ defer teardownTables (t , db )
77
+
78
+ store := NewStore (db )
79
+ for i := 0 ; i < 4 ; i ++ {
80
+ m := newModel ("foo" , "bar" , 1 )
81
+ r .NoError (store .Insert (ModelSchema , m ))
82
+
83
+ for i := 0 ; i < 4 ; i ++ {
84
+ r .NoError (store .Insert (RelSchema , newRel (m .GetID (), fmt .Sprint (i ))))
85
+ }
86
+ }
87
+
88
+ q := NewBaseQuery (ModelSchema )
89
+ q .Limit (6 )
90
+ r .NoError (q .AddRelation (RelSchema , "rels" , OneToMany , Eq (f ("foo" ), "1" )))
91
+ var queries int
92
+ proxy := store .DebugWith (func (_ string , _ ... interface {}) {
93
+ queries ++
94
+ }).proxy
95
+ runner := newBatchQueryRunner (ModelSchema , proxy , q )
96
+ rs := NewBatchingResultSet (runner )
97
+
98
+ var count int
99
+ for rs .Next () {
100
+ _ , err := rs .Get (nil )
101
+ r .NoError (err )
102
+ count ++
103
+ }
104
+ r .NoError (err )
105
+ r .Equal (4 , count )
106
+ r .Equal (2 , queries )
107
+ }
0 commit comments