chai
chai copied to clipboard
SQL driver doesn't support msgpack.EncodedDocument
Run simple program:
package main
import (
"database/sql"
"fmt"
_ "github.com/genjidb/genji/sql/driver"
)
type Doc struct {
Field1 string `genji:"field1"`
Field2 int `genji:"field2"`
}
func main() {
db, err := sql.Open("genji", ":memory:")
if err != nil {
panic(err)
}
defer db.Close()
_, err = db.Exec(`CREATE TABLE foo (doc DOCUMENT NOT NULL)`)
if err != nil {
panic(err)
}
_, err = db.Exec(`INSERT INTO foo (doc) VALUES (?)`, Doc{
Field1: "123",
Field2: 123,
})
if err != nil {
panic(err)
}
rows, err := db.Query(`SELECT doc FROM foo`)
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var doc Doc
if err := rows.Scan(&doc); err != nil {
panic(err)
}
fmt.Printf("foo found: (%v)", doc)
}
if err := rows.Err(); err != nil {
panic(err)
}
}
Get this:
panic: sql: Scan error on column index 0, name "doc": unsupported Scan, storing driver.Value type msgpack.EncodedDocument into type *main.Doc
Is this a bug or I misusing sql driver?
Thanks, we should definitely improve this case (either in the docs or at API level). Currently you should be using driver.Scanner
to scan documents.
diff
@@ -4,7 +4,7 @@
"database/sql"
"fmt"
- _ "github.com/genjidb/genji/sql/driver"
+ "github.com/genjidb/genji/sql/driver"
)
type Doc struct {
@@ -39,7 +39,7 @@
defer rows.Close()
for rows.Next() {
var doc Doc
- if err := rows.Scan(&doc); err != nil {
+ if err := rows.Scan(driver.Scanner(&doc)); err != nil {
panic(err)
}
fmt.Printf("foo found: (%v)", doc)
Thanks you!