@@ -54,7 +54,7 @@ func TestBatcherLimit(t *testing.T) {
5454 q .BatchSize (2 )
5555 q .Limit (5 )
5656 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 )
5858 rs := NewBatchingResultSet (runner )
5959
6060 var count int
@@ -66,3 +66,42 @@ func TestBatcherLimit(t *testing.T) {
6666 r .NoError (err )
6767 r .Equal (5 , count )
6868}
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