(t *testing.T)
| 333 | } |
| 334 | |
| 335 | func TestExecUpdateAndUpsert(t *testing.T) { |
| 336 | |
| 337 | // By "Loading" table we force it to exist in this non DDL mock store |
| 338 | mockcsv.LoadTable(mockcsv.SchemaName, "user_event3", "id,user_id,event,date\n1,abcabcabc,signup,\"2012-12-24T17:29:39.738Z\"") |
| 339 | |
| 340 | dbPre, err := schema.OpenConn("mockcsv", "user_event3") |
| 341 | assert.True(t, err == nil, "%v", err) |
| 342 | dbTablePre, ok := dbPre.(*mockcsv.Table) |
| 343 | assert.True(t, ok, "Should be type MockCsvTable but was T:%T", dbTablePre) |
| 344 | //u.Infof("db: %#v", dbTable) |
| 345 | assert.True(t, dbTablePre.Length() == 1, "Should have inserted and have 1 but was %v", dbTablePre.Length()) |
| 346 | |
| 347 | sqlText := ` |
| 348 | UPSERT into user_event3 (id, user_id, event, date) |
| 349 | VALUES |
| 350 | ("1234abcd", "9Ip1aKbeZe2njCDM", "logon", todate("2012/07/07")) |
| 351 | ` |
| 352 | ctx := td.TestContext(sqlText) |
| 353 | job, err := exec.BuildSqlJob(ctx) |
| 354 | assert.True(t, err == nil, "%v", err) |
| 355 | |
| 356 | err = job.Setup() |
| 357 | assert.True(t, err == nil) |
| 358 | err = job.Run() |
| 359 | assert.True(t, err == nil) |
| 360 | |
| 361 | db, err := schema.OpenConn("mockcsv", "user_event3") |
| 362 | assert.True(t, err == nil, "%v", err) |
| 363 | dbTable, ok := db.(*mockcsv.Table) |
| 364 | assert.True(t, ok, "Should be type MockCsvTable ", dbTable) |
| 365 | //u.Infof("db: %#v", dbTable) |
| 366 | assert.True(t, dbTable.Length() == 2, "Should have inserted and have 2 but was %v", dbTable.Length()) |
| 367 | |
| 368 | // Now we are going to upsert the same row with changes |
| 369 | sqlText = ` |
| 370 | UPSERT into user_event3 (id, user_id, event, date) |
| 371 | VALUES |
| 372 | ("1234abcd", "9Ip1aKbeZe2njCDM", "logon", todate("2013/07/07")) |
| 373 | ` |
| 374 | ctx = td.TestContext(sqlText) |
| 375 | job, err = exec.BuildSqlJob(ctx) |
| 376 | assert.True(t, err == nil, "%v", err) |
| 377 | job.Setup() |
| 378 | err = job.Run() |
| 379 | assert.True(t, err == nil) |
| 380 | |
| 381 | // Should not have inserted, due to id being same |
| 382 | assert.True(t, dbTable.Length() == 2, "Should have inserted and have 2 but was %v", dbTable.Length()) |
| 383 | |
| 384 | // Now lets query it, we are going to use QLBridge Driver |
| 385 | sqlSelect1 := ` |
| 386 | select id, user_id, event, date |
| 387 | FROM user_event3 |
| 388 | WHERE user_id = "9Ip1aKbeZe2njCDM" |
| 389 | ` |
| 390 | sqlDb, err := sql.Open("qlbridge", "mockcsv") |
| 391 | assert.True(t, err == nil, "no error: %v", err) |
| 392 | assert.True(t, sqlDb != nil, "has conn: %v", sqlDb) |
nothing calls this directly
no test coverage detected