|
|
|
@ -51,7 +51,7 @@ func Test_TableCreation(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"]}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"]}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query, expected %s, got %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -75,7 +75,7 @@ func Test_SimpleSingleStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"]]}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"]]}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query, expected %s, got %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -88,7 +88,7 @@ func Test_SimpleSingleStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"aoife"]]}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"aoife"]]}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -96,7 +96,7 @@ func Test_SimpleSingleStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[2,"aoife"]]}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[2,"aoife"]]}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -104,7 +104,7 @@ func Test_SimpleSingleStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"]}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"]}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -112,7 +112,7 @@ func Test_SimpleSingleStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[2,"aoife"],[1,"fiona"]]}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[2,"aoife"],[1,"fiona"]]}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -120,7 +120,7 @@ func Test_SimpleSingleStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name","name"],"values":[[1,"fiona","fiona"],[2,"aoife","aoife"]]}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name","name"],"values":[[1,"fiona","fiona"],[2,"aoife","aoife"]]}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -139,7 +139,7 @@ func Test_SimpleMultiStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to insert record: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1}]`, asJson(re); exp != got {
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1}]`, asJSON(re); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -147,7 +147,7 @@ func Test_SimpleMultiStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query empty table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"dana"]]},{"columns":["id","name"],"values":[[1,"fiona"],[2,"dana"]]}]`, asJson(ro); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"dana"]]},{"columns":["id","name"],"values":[[1,"fiona"],[2,"dana"]]}]`, asJSON(ro); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -161,7 +161,7 @@ func Test_SimpleFailingStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("error executing insertion into non-existent table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"error":"no such table: foo"}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"error":"no such table: foo"}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -169,14 +169,14 @@ func Test_SimpleFailingStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to create table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
r, err = db.Execute([]string{`CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)`}, false, false)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to attempt creation of duplicate table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"error":"table foo already exists"}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"error":"table foo already exists"}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -184,14 +184,14 @@ func Test_SimpleFailingStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to insert record: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"last_insert_id":11,"rows_affected":1}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"last_insert_id":11,"rows_affected":1}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
r, err = db.Execute([]string{`INSERT INTO foo(id, name) VALUES(11, "fiona")`}, false, false)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to attempt duplicate record insertion: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"error":"UNIQUE constraint failed: foo.id"}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"error":"UNIQUE constraint failed: foo.id"}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -199,7 +199,7 @@ func Test_SimpleFailingStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to attempt query of non-existant table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"error":"no such table: bar"}]`, asJson(ro); exp != got {
|
|
|
|
|
if exp, got := `[{"error":"no such table: bar"}]`, asJSON(ro); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -207,14 +207,14 @@ func Test_SimpleFailingStatements(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to attempt nonsense query: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"error":"near \"SELECTxx\": syntax error"}]`, asJson(ro); exp != got {
|
|
|
|
|
if exp, got := `[{"error":"near \"SELECTxx\": syntax error"}]`, asJSON(ro); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
r, err = db.Execute([]string{`utter nonsense`}, false, false)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to attempt nonsense execution: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"error":"near \"utter\": syntax error"}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"error":"near \"utter\": syntax error"}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -239,14 +239,14 @@ func Test_PartialFail(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to insert records: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1},{"error":"UNIQUE constraint failed: foo.id"},{"last_insert_id":4,"rows_affected":1}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1},{"error":"UNIQUE constraint failed: foo.id"},{"last_insert_id":4,"rows_affected":1}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
ro, err := db.Query([]string{`SELECT * FROM foo`}, false, false)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"fiona"],[4,"fiona"]]}]`, asJson(ro); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"fiona"],[4,"fiona"]]}]`, asJSON(ro); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -271,14 +271,14 @@ func Test_SimpleTransaction(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to insert records: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1},{"last_insert_id":3,"rows_affected":1},{"last_insert_id":4,"rows_affected":1}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1},{"last_insert_id":3,"rows_affected":1},{"last_insert_id":4,"rows_affected":1}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
ro, err := db.Query([]string{`SELECT * FROM foo`}, false, false)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"fiona"],[3,"fiona"],[4,"fiona"]]}]`, asJson(ro); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"],"values":[[1,"fiona"],[2,"fiona"],[3,"fiona"],[4,"fiona"]]}]`, asJSON(ro); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -303,14 +303,14 @@ func Test_PartialFailTransaction(t *testing.T) {
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to insert records: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1},{"error":"UNIQUE constraint failed: foo.id"}]`, asJson(r); exp != got {
|
|
|
|
|
if exp, got := `[{"last_insert_id":1,"rows_affected":1},{"last_insert_id":2,"rows_affected":1},{"error":"UNIQUE constraint failed: foo.id"}]`, asJSON(r); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
ro, err := db.Query([]string{`SELECT * FROM foo`}, false, false)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("failed to query table: %s", err.Error())
|
|
|
|
|
}
|
|
|
|
|
if exp, got := `[{"columns":["id","name"]}]`, asJson(ro); exp != got {
|
|
|
|
|
if exp, got := `[{"columns":["id","name"]}]`, asJSON(ro); exp != got {
|
|
|
|
|
t.Fatalf("unexpected results for query\nexp: %s\ngot: %s", exp, got)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -331,7 +331,7 @@ func mustCreateDatabase() (*DB, string) {
|
|
|
|
|
return db, f.Name()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func asJson(v interface{}) string {
|
|
|
|
|
func asJSON(v interface{}) string {
|
|
|
|
|
b, err := json.Marshal(v)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic("failed to JSON marshal value")
|
|
|
|
|