forked from mirror/go-sqlite3
Disable Execer/Queryer until database/sql/driver implement QueryRow: #82
This commit is contained in:
parent
1c16dbe609
commit
1ca536cf83
120
sqlite3.go
120
sqlite3.go
|
@ -134,65 +134,67 @@ func (c *SQLiteConn) AutoCommit() bool {
|
||||||
return int(C.sqlite3_get_autocommit(c.db)) != 0
|
return int(C.sqlite3_get_autocommit(c.db)) != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements Execer
|
// TODO: Execer & Queryer currently disabled
|
||||||
func (c *SQLiteConn) Exec(query string, args []driver.Value) (driver.Result, error) {
|
// https://github.com/mattn/go-sqlite3/issues/82
|
||||||
tx, err := c.Begin()
|
//// Implements Execer
|
||||||
if err != nil {
|
//func (c *SQLiteConn) Exec(query string, args []driver.Value) (driver.Result, error) {
|
||||||
return nil, err
|
// tx, err := c.Begin()
|
||||||
}
|
// if err != nil {
|
||||||
for {
|
// return nil, err
|
||||||
s, err := c.Prepare(query)
|
// }
|
||||||
if err != nil {
|
// for {
|
||||||
tx.Rollback()
|
// s, err := c.Prepare(query)
|
||||||
return nil, err
|
// if err != nil {
|
||||||
}
|
// tx.Rollback()
|
||||||
na := s.NumInput()
|
// return nil, err
|
||||||
res, err := s.Exec(args[:na])
|
// }
|
||||||
if err != nil && err != driver.ErrSkip {
|
// na := s.NumInput()
|
||||||
tx.Rollback()
|
// res, err := s.Exec(args[:na])
|
||||||
s.Close()
|
// if err != nil && err != driver.ErrSkip {
|
||||||
return nil, err
|
// tx.Rollback()
|
||||||
}
|
// s.Close()
|
||||||
args = args[na:]
|
// return nil, err
|
||||||
tail := s.(*SQLiteStmt).t
|
// }
|
||||||
if tail == "" {
|
// args = args[na:]
|
||||||
tx.Commit()
|
// tail := s.(*SQLiteStmt).t
|
||||||
return res, nil
|
// if tail == "" {
|
||||||
}
|
// tx.Commit()
|
||||||
s.Close()
|
// return res, nil
|
||||||
query = tail
|
// }
|
||||||
}
|
// s.Close()
|
||||||
}
|
// query = tail
|
||||||
|
// }
|
||||||
// Implements Queryer
|
//}
|
||||||
func (c *SQLiteConn) Query(query string, args []driver.Value) (driver.Rows, error) {
|
//
|
||||||
tx, err := c.Begin()
|
//// Implements Queryer
|
||||||
if err != nil {
|
//func (c *SQLiteConn) Query(query string, args []driver.Value) (driver.Rows, error) {
|
||||||
return nil, err
|
// tx, err := c.Begin()
|
||||||
}
|
// if err != nil {
|
||||||
for {
|
// return nil, err
|
||||||
s, err := c.Prepare(query)
|
// }
|
||||||
if err != nil {
|
// for {
|
||||||
tx.Rollback()
|
// s, err := c.Prepare(query)
|
||||||
return nil, err
|
// if err != nil {
|
||||||
}
|
// tx.Rollback()
|
||||||
na := s.NumInput()
|
// return nil, err
|
||||||
rows, err := s.Query(args[:na])
|
// }
|
||||||
if err != nil && err != driver.ErrSkip {
|
// na := s.NumInput()
|
||||||
tx.Rollback()
|
// rows, err := s.Query(args[:na])
|
||||||
s.Close()
|
// if err != nil && err != driver.ErrSkip {
|
||||||
return nil, err
|
// tx.Rollback()
|
||||||
}
|
// s.Close()
|
||||||
args = args[na:]
|
// return nil, err
|
||||||
tail := s.(*SQLiteStmt).t
|
// }
|
||||||
if tail == "" {
|
// args = args[na:]
|
||||||
tx.Commit()
|
// tail := s.(*SQLiteStmt).t
|
||||||
return rows, nil
|
// if tail == "" {
|
||||||
}
|
// tx.Commit()
|
||||||
s.Close()
|
// return rows, nil
|
||||||
query = tail
|
// }
|
||||||
}
|
// s.Close()
|
||||||
}
|
// query = tail
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
func (c *SQLiteConn) exec(cmd string) error {
|
func (c *SQLiteConn) exec(cmd string) error {
|
||||||
pcmd := C.CString(cmd)
|
pcmd := C.CString(cmd)
|
||||||
|
|
128
sqlite3_test.go
128
sqlite3_test.go
|
@ -580,67 +580,69 @@ func TestTransaction(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestExecer(t *testing.T) {
|
// TODO: Execer & Queryer currently disabled
|
||||||
tempFilename := TempFilename()
|
// https://github.com/mattn/go-sqlite3/issues/82
|
||||||
db, err := sql.Open("sqlite3", tempFilename)
|
//func TestExecer(t *testing.T) {
|
||||||
if err != nil {
|
// tempFilename := TempFilename()
|
||||||
t.Fatal("Failed to open database:", err)
|
// db, err := sql.Open("sqlite3", tempFilename)
|
||||||
}
|
// if err != nil {
|
||||||
defer os.Remove(tempFilename)
|
// t.Fatal("Failed to open database:", err)
|
||||||
defer db.Close()
|
// }
|
||||||
|
// defer os.Remove(tempFilename)
|
||||||
_, err = db.Exec(`
|
// defer db.Close()
|
||||||
create table foo (id integer);
|
//
|
||||||
insert into foo(id) values(?);
|
// _, err = db.Exec(`
|
||||||
insert into foo(id) values(?);
|
// create table foo (id integer);
|
||||||
insert into foo(id) values(?);
|
// insert into foo(id) values(?);
|
||||||
`, 1, 2, 3)
|
// insert into foo(id) values(?);
|
||||||
if err != nil {
|
// insert into foo(id) values(?);
|
||||||
t.Error("Failed to call db.Exec:", err)
|
// `, 1, 2, 3)
|
||||||
}
|
// if err != nil {
|
||||||
if err != nil {
|
// t.Error("Failed to call db.Exec:", err)
|
||||||
t.Error("Failed to call res.RowsAffected:", err)
|
// }
|
||||||
}
|
// if err != nil {
|
||||||
}
|
// t.Error("Failed to call res.RowsAffected:", err)
|
||||||
|
// }
|
||||||
func TestQueryer(t *testing.T) {
|
//}
|
||||||
tempFilename := TempFilename()
|
//
|
||||||
db, err := sql.Open("sqlite3", tempFilename)
|
//func TestQueryer(t *testing.T) {
|
||||||
if err != nil {
|
// tempFilename := TempFilename()
|
||||||
t.Fatal("Failed to open database:", err)
|
// db, err := sql.Open("sqlite3", tempFilename)
|
||||||
}
|
// if err != nil {
|
||||||
defer os.Remove(tempFilename)
|
// t.Fatal("Failed to open database:", err)
|
||||||
defer db.Close()
|
// }
|
||||||
|
// defer os.Remove(tempFilename)
|
||||||
_, err = db.Exec(`
|
// defer db.Close()
|
||||||
create table foo (id integer);
|
//
|
||||||
`)
|
// _, err = db.Exec(`
|
||||||
if err != nil {
|
// create table foo (id integer);
|
||||||
t.Error("Failed to call db.Query:", err)
|
// `)
|
||||||
}
|
// if err != nil {
|
||||||
|
// t.Error("Failed to call db.Query:", err)
|
||||||
rows, err := db.Query(`
|
// }
|
||||||
insert into foo(id) values(?);
|
//
|
||||||
insert into foo(id) values(?);
|
// rows, err := db.Query(`
|
||||||
insert into foo(id) values(?);
|
// insert into foo(id) values(?);
|
||||||
select id from foo order by id;
|
// insert into foo(id) values(?);
|
||||||
`, 3, 2, 1)
|
// insert into foo(id) values(?);
|
||||||
if err != nil {
|
// select id from foo order by id;
|
||||||
t.Error("Failed to call db.Query:", err)
|
// `, 3, 2, 1)
|
||||||
}
|
// if err != nil {
|
||||||
defer rows.Close()
|
// t.Error("Failed to call db.Query:", err)
|
||||||
n := 1
|
// }
|
||||||
if rows != nil {
|
// defer rows.Close()
|
||||||
for rows.Next() {
|
// n := 1
|
||||||
var id int
|
// if rows != nil {
|
||||||
err = rows.Scan(&id)
|
// for rows.Next() {
|
||||||
if err != nil {
|
// var id int
|
||||||
t.Error("Failed to db.Query:", err)
|
// err = rows.Scan(&id)
|
||||||
}
|
// if err != nil {
|
||||||
if id != n {
|
// t.Error("Failed to db.Query:", err)
|
||||||
t.Error("Failed to db.Query: not matched results")
|
// }
|
||||||
}
|
// if id != n {
|
||||||
}
|
// t.Error("Failed to db.Query: not matched results")
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue