(t *testing.T)
| 202 | } |
| 203 | |
| 204 | func TestExecHaving(t *testing.T) { |
| 205 | sqlText := ` |
| 206 | select |
| 207 | user_id, count(user_id) AS order_ct |
| 208 | FROM orders |
| 209 | GROUP BY user_id |
| 210 | HAVING order_ct > 1 |
| 211 | ` |
| 212 | ctx := td.TestContext(sqlText) |
| 213 | job, err := exec.BuildSqlJob(ctx) |
| 214 | assert.True(t, err == nil, "no error %v", err) |
| 215 | |
| 216 | msgs := make([]schema.Message, 0) |
| 217 | resultWriter := exec.NewResultBuffer(ctx, &msgs) |
| 218 | job.RootTask.Add(resultWriter) |
| 219 | |
| 220 | err = job.Setup() |
| 221 | assert.True(t, err == nil) |
| 222 | err = job.Run() |
| 223 | time.Sleep(time.Millisecond * 10) |
| 224 | assert.True(t, err == nil, "no error %v", err) |
| 225 | assert.True(t, len(msgs) == 1, "should have filtered HAVING orders into 1 users %v", len(msgs)) |
| 226 | u.Debugf("msg: %#v", msgs[0]) |
| 227 | row := msgs[0].(*datasource.SqlDriverMessageMap).Values() |
| 228 | u.Debugf("row: %#v", row) |
| 229 | assert.True(t, len(row) == 2, "expects 2 cols but got %v", len(row)) |
| 230 | assert.True(t, row[0] == "9Ip1aKbeZe2njCDM") |
| 231 | // I really don't like this float behavior? |
| 232 | assert.True(t, int(row[1].(int64)) == 2, "expected 2 orders for %v", row) |
| 233 | } |
| 234 | |
| 235 | type UserEvent struct { |
| 236 | Id string |
nothing calls this directly
no test coverage detected