Closed runningmaster closed 2 years ago
Prepared statemet for select query returns io.EOF error after second QueryRow()).Scan() inside for loop.
func stmtEOF(db *sql.DB) error { query := "SELECT 1 AS ID FROM RDB$DATABASE WHERE 0 < ?" tx, err := db.Begin() if err != nil { return err } defer func() { _ = tx.Commit() }() ctx := context.Background() stmt, err := tx.PrepareContext(ctx, query) if err != nil { return err } defer func() { _ = stmt.Close() }() for _, v := range []int{1, 2, 3} { var x int err = stmt.QueryRowContext(ctx, v).Scan(&x) if err != nil { fmt.Println(v, err) return err } fmt.Println(x) } return nil }
fmt.Println() prints:
1 2 EOF
insted of
1 1 1
This error occurs here:
func (rows *firebirdsqlRows) Next(dest []driver.Value) (err error) { ... if rows.currentChunkRow == nil { err = io.EOF return } ...
https://github.com/nakagami/firebirdsql/blob/803b00772b9107746fa9081fb8beb70081ff6e81/rows.go#L104
What do I do wrong?
Sorry, I was wrong.
- err = stmt.QueryRowContext(ctx, v).Scan(&x) + err = tx.StmtContext(ctx, stmt).QueryRowContext(ctx, v).Scan(&x)
This issue is invalid.
Prepared statemet for select query returns io.EOF error after second QueryRow()).Scan() inside for loop.
fmt.Println() prints:
insted of
This error occurs here:
https://github.com/nakagami/firebirdsql/blob/803b00772b9107746fa9081fb8beb70081ff6e81/rows.go#L104
What do I do wrong?