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

Function TestExecUpdateAndUpsert

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

Source from the content-addressed store, hash-verified

333}
334
335func 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)

Callers

nothing calls this directly

Calls 13

LoadTableFunction · 0.92
OpenConnFunction · 0.92
BuildSqlJobFunction · 0.92
LengthMethod · 0.80
SetupMethod · 0.65
RunMethod · 0.65
OpenMethod · 0.65
CloseMethod · 0.65
ColumnsMethod · 0.65
NextMethod · 0.65
ErrMethod · 0.65
QueryMethod · 0.45

Tested by

no test coverage detected