1
0
Fork 0

Set value in nil-proof way

master
Philip O'Toole 7 months ago
parent 7f33b97ee7
commit fc932f3108

@ -1430,8 +1430,10 @@ func normalizeRowValues(row []interface{}, types []string) ([]*command.Parameter
}
case []byte:
if isTextType(types[i]) {
values[i].Value = &command.Parameter_S{
values[i] = &command.Parameter{
Value: &command.Parameter_S{
S: string(val),
},
}
} else {
values[i] = &command.Parameter{

@ -146,17 +146,52 @@ func testSQLiteTimeTypes(t *testing.T, db *DB) {
}
}
func testSQLiteRandomBlob(t *testing.T, db *DB) {
_, err := db.ExecuteStringStmt("CREATE TABLE large_data (id INTEGER PRIMARY KEY, large_text TEXT)")
if err != nil {
t.Fatalf("failed to create table: %s", err.Error())
}
_, err = db.ExecuteStringStmt(`
WITH RECURSIVE generate_large_data(id, large_text) AS (
SELECT 1, randomblob(1)
UNION ALL
SELECT id + 1, randomblob(1)
FROM generate_large_data
WHERE id < 2
)
INSERT INTO large_data(id, large_text)
SELECT id, large_text FROM generate_large_data
`)
if err != nil {
t.Fatalf("failed to create table: %s", err.Error())
}
r, err := db.QueryStringStmt("SELECT * FROM large_data LIMIT 1")
if err != nil {
t.Fatalf("failed to query master table: %s", err.Error())
}
if !strings.Contains(asJSON(r), "large_text") {
// Just check that it doesn't panic.
t.Fatalf("unexpected results for query, expected large_text, got %s", asJSON(r))
}
}
func testNotNULLField(t *testing.T, db *DB) {
_, err := db.ExecuteStringStmt("CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)")
if err != nil {
t.Fatalf("failed to create table: %s", err.Error())
}
r, err := db.QueryStringStmt(`PRAGMA table_info("foo")`)
_, err = db.ExecuteStringStmt(`
WITH RECURSIVE generate_large_data(id, large_text) AS (
SELECT 1, randomblob(100000)
UNION ALL
SELECT id + 1, randomblob(100000)
FROM generate_large_data
WHERE id < 2
)
INSERT INTO large_data(id, large_text)
SELECT id, large_text FROM generate_large_data`)
if err != nil {
t.Fatalf("failed to get PRAGMA table_info: %s", err.Error())
}
if exp, got := `[{"columns":["cid","name","type","notnull","dflt_value","pk"],"types":["integer","text","text","integer","",""],"values":[[0,"id","INTEGER",1,null,1],[1,"name","TEXT",0,null,0]]}]`, asJSON(r); exp != got {
t.Fatalf("unexpected results for query, expected %s, got %s", exp, got)
t.Fatalf("failed to create table: %s", err.Error())
}
}
@ -1558,6 +1593,7 @@ func Test_DatabaseCommonOperations(t *testing.T) {
{"SQLiteMasterTable", testSQLiteMasterTable},
{"SQLiteTimeTypes", testSQLiteTimeTypes},
{"NotNULLField", testNotNULLField},
{"RandomBlob", testSQLiteRandomBlob},
{"EmptyStatements", testEmptyStatements},
{"SimpleSingleStatements", testSimpleSingleStatements},
{"SimpleStatementsNumeric", testSimpleStatementsNumeric},

Loading…
Cancel
Save