Commit 786dc13f authored by gwenn's avatar gwenn

Add StmtStatus support.

parent f857010b
...@@ -65,6 +65,9 @@ func TestOpen(t *testing.T) { ...@@ -65,6 +65,9 @@ func TestOpen(t *testing.T) {
db := open(t) db := open(t)
db.Trace(nil, nil) db.Trace(nil, nil)
db.SetAuthorizer(nil, nil) db.SetAuthorizer(nil, nil)
db.Profile(nil, nil)
db.ProgressHandler(nil, 0, nil)
db.BusyHandler(nil, nil)
db.Close() db.Close()
} }
...@@ -95,15 +98,14 @@ func TestCreateTable(t *testing.T) { ...@@ -95,15 +98,14 @@ func TestCreateTable(t *testing.T) {
func TestExists(t *testing.T) { func TestExists(t *testing.T) {
db := open(t) db := open(t)
defer db.Close() defer db.Close()
createTable(db, t) b, err := db.Exists("SELECT 1 where 1 = 0")
b, err := db.Exists("SELECT * FROM test")
if err != nil { if err != nil {
t.Fatalf("Error: %s", err) t.Fatalf("Error: %s", err)
} }
if b { if b {
t.Error("No row expected") t.Error("No row expected")
} }
b, err = db.Exists("SELECT count(1) FROM test") b, err = db.Exists("SELECT 1 where 1 = 1")
if err != nil { if err != nil {
t.Fatalf("Error: %s", err) t.Fatalf("Error: %s", err)
} }
...@@ -244,6 +246,15 @@ func TestInsertWithStatement(t *testing.T) { ...@@ -244,6 +246,15 @@ func TestInsertWithStatement(t *testing.T) {
t.Errorf("Expected 'hello' <> %s\n", sstr) t.Errorf("Expected 'hello' <> %s\n", sstr)
} }
} }
if 999 != rs.Status(STMTSTATUS_FULLSCAN_STEP, false) {
t.Errorf("Expected full scan")
}
if 1 != rs.Status(STMTSTATUS_SORT, false) {
t.Errorf("Expected one sort")
}
if 0 != rs.Status(STMTSTATUS_AUTOINDEX, false) {
t.Errorf("Expected no auto index")
}
} }
func TestTables(t *testing.T) { func TestTables(t *testing.T) {
......
...@@ -219,3 +219,16 @@ func (c *Conn) ProgressHandler(f ProgressHandler, freq int, arg interface{}) { ...@@ -219,3 +219,16 @@ func (c *Conn) ProgressHandler(f ProgressHandler, freq int, arg interface{}) {
c.progressHandler = &sqliteProgressHandler{f, arg} c.progressHandler = &sqliteProgressHandler{f, arg}
C.goSqlite3ProgressHandler(c.db, C.int(freq), unsafe.Pointer(c.progressHandler)) C.goSqlite3ProgressHandler(c.db, C.int(freq), unsafe.Pointer(c.progressHandler))
} }
type StmtStatus int
const (
STMTSTATUS_FULLSCAN_STEP StmtStatus = C.SQLITE_STMTSTATUS_FULLSCAN_STEP
STMTSTATUS_SORT StmtStatus = C.SQLITE_STMTSTATUS_SORT
STMTSTATUS_AUTOINDEX StmtStatus = C.SQLITE_STMTSTATUS_AUTOINDEX
)
// Calls http://sqlite.org/c3ref/stmt_status.html
func (s *Stmt) Status(op StmtStatus, reset bool) int {
return int(C.sqlite3_stmt_status(s.stmt, C.int(op), btocint(reset)))
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment