|
|
@@ -21,3 +21,36 @@ func TestProto1BatchInsert(t *testing.T) {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+func TestShouldPrepareFunction(t *testing.T) {
|
|
|
+ var shouldPrepareTests = []struct {
|
|
|
+ Stmt string
|
|
|
+ Result bool
|
|
|
+ }{
|
|
|
+ {`
|
|
|
+ BEGIN BATCH
|
|
|
+ INSERT INTO users (userID, password)
|
|
|
+ VALUES ('smith', 'secret')
|
|
|
+ APPLY BATCH
|
|
|
+ ;
|
|
|
+ `, true},
|
|
|
+ {`INSERT INTO users (userID, password, name) VALUES ('user2', 'ch@ngem3b', 'second user')`, true},
|
|
|
+ {`BEGIN COUNTER BATCH UPDATE stats SET views = views + 1 WHERE pageid = 1 APPLY BATCH`, true},
|
|
|
+ {`delete name from users where userID = 'smith';`, true},
|
|
|
+ {` UPDATE users SET password = 'secret' WHERE userID = 'smith' `, true},
|
|
|
+ {`CREATE TABLE users (
|
|
|
+ user_name varchar PRIMARY KEY,
|
|
|
+ password varchar,
|
|
|
+ gender varchar,
|
|
|
+ session_token varchar,
|
|
|
+ state varchar,
|
|
|
+ birth_year bigint
|
|
|
+ );`, false},
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, test := range shouldPrepareTests {
|
|
|
+ if got := shouldPrepare(test.Stmt); got != test.Result {
|
|
|
+ t.Fatalf("%q: got %v, expected %v\n", test.Stmt, got, test.Result)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|