cass1batch_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // +build all integration
  2. package gocql
  3. import (
  4. "strings"
  5. "testing"
  6. )
  7. func TestProto1BatchInsert(t *testing.T) {
  8. session := createSession(t)
  9. if err := session.Query("CREATE TABLE large (id int primary key)").Exec(); err != nil {
  10. t.Fatal("create table:", err)
  11. }
  12. begin := "BEGIN BATCH"
  13. end := "APPLY BATCH"
  14. query := "INSERT INTO large (id) VALUES (?)"
  15. fullQuery := strings.Join([]string{begin, query, end}, "\n")
  16. args := []interface{}{5}
  17. if err := session.Query(fullQuery, args...).Consistency(Quorum).Exec(); err != nil {
  18. t.Fatal(err)
  19. }
  20. }
  21. func TestShouldPrepareFunction(t *testing.T) {
  22. var shouldPrepareTests = []struct {
  23. Stmt string
  24. Result bool
  25. }{
  26. {`
  27. BEGIN BATCH
  28. INSERT INTO users (userID, password)
  29. VALUES ('smith', 'secret')
  30. APPLY BATCH
  31. ;
  32. `, true},
  33. {`INSERT INTO users (userID, password, name) VALUES ('user2', 'ch@ngem3b', 'second user')`, true},
  34. {`BEGIN COUNTER BATCH UPDATE stats SET views = views + 1 WHERE pageid = 1 APPLY BATCH`, true},
  35. {`delete name from users where userID = 'smith';`, true},
  36. {` UPDATE users SET password = 'secret' WHERE userID = 'smith' `, true},
  37. {`CREATE TABLE users (
  38. user_name varchar PRIMARY KEY,
  39. password varchar,
  40. gender varchar,
  41. session_token varchar,
  42. state varchar,
  43. birth_year bigint
  44. );`, false},
  45. }
  46. for _, test := range shouldPrepareTests {
  47. q := &Query{stmt: test.Stmt}
  48. if got := q.shouldPrepare(); got != test.Result {
  49. t.Fatalf("%q: got %v, expected %v\n", test.Stmt, got, test.Result)
  50. }
  51. }
  52. }