MCPcopy Create free account
hub / github.com/araddon/qlbridge / TestExecGroupBy

Function TestExecGroupBy

exec/exec_test.go:140–202  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

138}
139
140func TestExecGroupBy(t *testing.T) {
141
142 sqlText := `
143 select
144 user_id, count(user_id), avg(price)
145 FROM orders
146 GROUP BY user_id
147 `
148 ctx := td.TestContext(sqlText)
149 job, err := exec.BuildSqlJob(ctx)
150 assert.True(t, err == nil, "no error %v", err)
151
152 msgs := make([]schema.Message, 0)
153 resultWriter := exec.NewResultBuffer(ctx, &msgs)
154 job.RootTask.Add(resultWriter)
155
156 err = job.Setup()
157 assert.True(t, err == nil)
158 err = job.Run()
159 time.Sleep(time.Millisecond * 10)
160 assert.True(t, err == nil, "no error %v", err)
161 assert.True(t, len(msgs) == 2, "should have grouped orders into 2 users %v", len(msgs))
162 var row []driver.Value
163 for _, msg := range msgs {
164 r := msg.(*datasource.SqlDriverMessageMap).Values()
165 if r[0].(string) == "9Ip1aKbeZe2njCDM" {
166 row = r
167 }
168 }
169
170 u.Debugf("row: %#v", row)
171 assert.True(t, len(row) == 3, "expects 3 cols but got %v", len(row))
172 assert.True(t, row[0] == "9Ip1aKbeZe2njCDM", "%#v", row)
173 // I really don't like this float behavior?
174 assert.True(t, int(row[1].(int64)) == 2, "expected 2 orders for %v", row)
175 assert.True(t, int(row[2].(float64)) == 30, "expected avg=30 for price %v", row)
176
177 sqlText = `
178 select
179 avg(len(email))
180 FROM users
181 GROUP BY "-"
182 `
183 ctx = td.TestContext(sqlText)
184 job, err = exec.BuildSqlJob(ctx)
185 assert.True(t, err == nil, "no error %v", err)
186
187 msgs = make([]schema.Message, 0)
188 resultWriter = exec.NewResultBuffer(ctx, &msgs)
189 job.RootTask.Add(resultWriter)
190
191 err = job.Setup()
192 assert.True(t, err == nil)
193 err = job.Run()
194 time.Sleep(time.Millisecond * 10)
195 assert.True(t, err == nil, "no error %v", err)
196 assert.True(t, len(msgs) == 1, "should have grouped orders into 1 record %v", len(msgs))
197 u.Debugf("msg: %#v", msgs[0])

Callers

nothing calls this directly

Calls 6

BuildSqlJobFunction · 0.92
NewResultBufferFunction · 0.92
AddMethod · 0.65
SetupMethod · 0.65
RunMethod · 0.65
ValuesMethod · 0.65

Tested by

no test coverage detected