jackc/pgx · error
Stmt.Query deprecated and not implemented
Error message
Stmt.Query deprecated and not implemented
What it means
stdlib Stmt.Query implements database/sql's deprecated single-round-trip Query hook, which pgx deliberately does not support and always errors on. Standard database/sql code paths call QueryContext instead; reaching this error means a legacy driver-level call.
Solutions
- Call QueryContext via database/sql rather than the deprecated driver.Stmt hook
- Use pgx directly for statement-oriented APIs
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at stdlib/sql.go:620 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of jackc/pgx@ec1a0befd2 (2026-08-04).
Data as JSON: /api/errors/31c08a2352a8dbda.
Report an issue: GitHub.
Appendix: source
Thrown at stdlib/sql.go:620
}
return s.conn.conn.Deallocate(ctx, s.sd.SQL)
}
func (s *Stmt) NumInput() int {
return len(s.sd.ParamOIDs)
}
func (s *Stmt) Exec(argsV []driver.Value) (driver.Result, error) {
return nil, errors.New("Stmt.Exec deprecated and not implemented")
}
func (s *Stmt) ExecContext(ctx context.Context, argsV []driver.NamedValue) (driver.Result, error) {
return s.conn.ExecContext(ctx, s.sd.SQL, argsV)
}
func (s *Stmt) Query(argsV []driver.Value) (driver.Rows, error) {
return nil, errors.New("Stmt.Query deprecated and not implemented")
}
func (s *Stmt) QueryContext(ctx context.Context, argsV []driver.NamedValue) (driver.Rows, error) {
return s.conn.QueryContext(ctx, s.sd.SQL, argsV)
}
type rowValueFunc func(src []byte) (driver.Value, error)
type Rows struct {
conn *Conn
rows pgx.Rows
valueFuncs []rowValueFunc
skipNext bool
skipNextMore bool
columnNames []string
}
View on GitHub (pinned to ec1a0befd2)