{"record":{"id":"3e63b008189bd033","repo":"dbt-labs/dbt-core","slug":"replaystatement-bind-stream","errorCode":null,"errorMessage":"ReplayStatement::bind_stream","messagePattern":"ReplayStatement::bind_stream","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adbc-record-replay/src/replay.rs","lineNumber":221,"sourceCode":"        ctx: RecordingContext,\n    ) -> Self {\n        Self {\n            recordings_path,\n            config,\n            ctx,\n            sql: None,\n            recorded_options: BTreeMap::new(),\n        }\n    }\n}\n\nimpl Statement for ReplayStatement {\n    fn bind(&mut self, _batch: RecordBatch) -> AdbcResult<()> {\n        todo!(\"ReplayStatement::bind\")\n    }\n\n    fn bind_stream(&mut self, _reader: Box<dyn RecordBatchReader + Send>) -> AdbcResult<()> {\n        todo!(\"ReplayStatement::bind_stream\")\n    }\n\n    #[allow(deprecated)]\n    fn execute<'a>(&'a mut self) -> AdbcResult<Box<dyn RecordBatchReader + Send + 'a>> {\n        let replay_sql = match &self.sql {\n            Some(sql) => sql,\n            None => \"none\",\n        };\n\n        let path = self.recordings_path.clone();\n        let unique_id = compute_file_name(\n            &path,\n            self.ctx.node_id.as_ref(),\n            Some(replay_sql),\n            self.ctx.metadata,\n        )?;\n\n        let storage_type = crate::storage::detect_storage_type(&path, &unique_id);","sourceCodeStart":203,"sourceCodeEnd":239,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/adbc-record-replay/src/replay.rs#L203-L239","documentation":"todo!() stub in the ADBC record-replay backend: ReplayStatement::bind_stream (binding parameters from a RecordBatchReader stream) is not implemented for replay mode. Any ADBC client that streams parameter batches through this statement will abort here — only ingestion via the non-streaming bind or replayed DML is available.","triggerScenarios":"Calling Statement::bind_stream with a Box<dyn RecordBatchReader + Send> on a record-replay driver statement.","commonSituations":"Replaying parameterized queries that bind large datasets via streams; generic ADBC client code that calls bind_stream on every statement regardless of driver support.","solutions":["Avoid bind_stream() in recorded workloads; materialize parameters into the SQL or skip replay for such statements","Implement ReplayStatement::bind_stream to persist and replay stream data","Return a proper Status::NotImplemented error instead of panicking","Use the real ADBC driver when stream binding is required"],"exampleFix":"// before\nfn bind_stream(&mut self, _reader: Box<dyn RecordBatchReader + Send>) -> AdbcResult<()> {\n    todo!(\"ReplayStatement::bind_stream\")\n}\n// after\nfn bind_stream(&mut self, _reader: Box<dyn RecordBatchReader + Send>) -> AdbcResult<()> {\n    Err(adbc_core::error::Error::with_message(\n        Status::NotImplemented,\n        \"bind_stream is not supported by the replay driver\".into(),\n    ))\n}","handlingStrategy":"validation","validationCode":"fn replay_supports_bind_stream(stmt: &ReplayStatement) -> bool {\n    false // bind_stream is not implemented in the replay driver\n}","typeGuard":null,"tryCatchPattern":"if replay_supports_bind_stream(&stmt) {\n    stmt.bind_stream(reader)?;\n} else {\n    return Err(anyhow!(\"bind_stream unsupported on replay driver\"));\n}","preventionTips":["Avoid bind_stream() in recorded workloads","Branch driver behavior on whether the driver is record-replay","Contribute bind_stream support before replaying parameterized streams"],"tags":["adbc","unimplemented","replay","placeholder"],"backgroundTag":"method-not-implemented","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}