|
|
@ -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) {
|
|
|
|
func testNotNULLField(t *testing.T, db *DB) {
|
|
|
|
_, err := db.ExecuteStringStmt("CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)")
|
|
|
|
_, err := db.ExecuteStringStmt("CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)")
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("failed to create table: %s", err.Error())
|
|
|
|
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 {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("failed to get PRAGMA table_info: %s", err.Error())
|
|
|
|
t.Fatalf("failed to create table: %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)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1558,6 +1593,7 @@ func Test_DatabaseCommonOperations(t *testing.T) {
|
|
|
|
{"SQLiteMasterTable", testSQLiteMasterTable},
|
|
|
|
{"SQLiteMasterTable", testSQLiteMasterTable},
|
|
|
|
{"SQLiteTimeTypes", testSQLiteTimeTypes},
|
|
|
|
{"SQLiteTimeTypes", testSQLiteTimeTypes},
|
|
|
|
{"NotNULLField", testNotNULLField},
|
|
|
|
{"NotNULLField", testNotNULLField},
|
|
|
|
|
|
|
|
{"RandomBlob", testSQLiteRandomBlob},
|
|
|
|
{"EmptyStatements", testEmptyStatements},
|
|
|
|
{"EmptyStatements", testEmptyStatements},
|
|
|
|
{"SimpleSingleStatements", testSimpleSingleStatements},
|
|
|
|
{"SimpleSingleStatements", testSimpleSingleStatements},
|
|
|
|
{"SimpleStatementsNumeric", testSimpleStatementsNumeric},
|
|
|
|
{"SimpleStatementsNumeric", testSimpleStatementsNumeric},
|
|
|
|