wjywbs opened a new issue, #667:
URL: https://github.com/apache/arrow-go/issues/667
### Describe the bug, including details regarding any error messages,
version, and platform.
I was using GPT-5.3-Codex to generate code for querying db using Arrow
Flight SQL, and it found a possible bug in the arrow-go client. All the text
below and the title is generated by Codex.
**Description**
I’m seeing inconsistent transaction behavior in
`github.com/apache/arrow-go/v18/arrow/flight/flightsql/driver` (`v18.5.1`) when
using `database/sql`.
In a transaction, queries with parameters behave correctly, but
zero-argument `tx.QueryRowContext(...)` appears to execute outside the
transaction.
This is easy to reproduce with tx-local DDL:
1. `BEGIN`
2. `CREATE TABLE tx_tmp (id BIGINT, v BIGINT)`
3. `INSERT INTO tx_tmp VALUES (1, 10)`
4. `tx.QueryRowContext(ctx, "SELECT COUNT(*) FROM tx_tmp")` -> fails
(`table does not exist`)
5. `tx.QueryRowContext(ctx, "SELECT COUNT(*) FROM tx_tmp WHERE id >= ?", 1)`
-> works (returns `1`)
Expected:
- Both queries run in the same active transaction and return `1`.
Actual:
- Zero-arg query can behave as if it is outside the tx (cannot see
uncommitted DDL/data).
From code inspection, this may be because `Connection.QueryContext` uses
`c.client.Execute(...)` directly and does not branch on `c.txn`, while
prepared-statement paths do use `txn.Prepare(...)`.
Likely affected code:
- `arrow/flight/flightsql/driver/driver.go`
- `Connection.QueryContext(...)`
- compare with `Connection.PrepareContext(...)` transaction handling
Suggested fix:
- In `Connection.QueryContext`, when `c.txn != nil && c.txn.ID().IsValid()`,
execute through transaction handle (or force transaction-bound prepared
execution path), so no-arg tx queries stay transaction-scoped.
Suggested tests:
- Add regression test for tx-local DDL visibility with:
- zero-arg `tx.QueryRowContext(...)`
- parameterized `tx.QueryRowContext(..., arg)`
- Both should see uncommitted tx-local table/data consistently.
### Component(s)
Integration, Other
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]