|
|
@@ -4,6 +4,7 @@ package gocql
|
|
|
|
|
|
import (
|
|
|
"testing"
|
|
|
+ "time"
|
|
|
)
|
|
|
|
|
|
func TestBatch_Errors(t *testing.T) {
|
|
|
@@ -24,3 +25,34 @@ func TestBatch_Errors(t *testing.T) {
|
|
|
t.Fatal("expected to get error for invalid query in batch")
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func TestBatch_WithTimestamp(t *testing.T) {
|
|
|
+ if *flagProto < protoVersion3 {
|
|
|
+ t.Skip("Batch timestamps are only available on protocol >= 3")
|
|
|
+ }
|
|
|
+
|
|
|
+ session := createSession(t)
|
|
|
+ defer session.Close()
|
|
|
+
|
|
|
+ if err := createTable(session, `CREATE TABLE gocql_test.batch_ts (id int primary key, val text)`); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ micros := time.Now().UnixNano()/1e3 - 1000
|
|
|
+
|
|
|
+ b := session.NewBatch(LoggedBatch)
|
|
|
+ b.WithTimestamp(micros)
|
|
|
+ b.Query("INSERT INTO batch_ts (id, val) VALUES (?, ?)", 1, "val")
|
|
|
+ if err := session.ExecuteBatch(b); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ var storedTs int64
|
|
|
+ if err := session.Query(`SELECT writetime(val) FROM batch_ts WHERE id = ?`, 1).Scan(&storedTs); err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if storedTs != micros {
|
|
|
+ t.Errorf("got ts %d, expected %d", storedTs, micros)
|
|
|
+ }
|
|
|
+}
|