Все методы принимают context.Context: QueryContext, ExecContext, BeginTx. При отмене контекста (таймаут, cancel) драйвер должен прервать запрос и освободить ресурсы. В HTTP handler передают r.Context(); при долгих операциях создают контекст с таймаутом. Важно не держать контекст запроса для фоновых задач - создавать свой контекст.
ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
defer cancel()
row := db.QueryRowContext(ctx, "SELECT ...", id)