cass1batch_test.go 1.5 KB

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