cass1batch_test.go 1.6 KB

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