{"record":{"id":"7770212eb312bed1","repo":"dbt-labs/dbt-core","slug":"replaystatement-get-parameter-schema","errorCode":null,"errorMessage":"ReplayStatement::get_parameter_schema","messagePattern":"ReplayStatement::get_parameter_schema","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adbc-record-replay/src/replay.rs","lineNumber":340,"sourceCode":"\n                self.recorded_options = entry.options;\n\n                Ok(None)\n            }\n            StorageType::FileArrowIpc | StorageType::FileParquet => Ok(None),\n        }\n    }\n\n    fn execute_schema(&mut self) -> AdbcResult<Schema> {\n        todo!(\"ReplayStatement::execute_schema\")\n    }\n\n    fn execute_partitions(&mut self) -> AdbcResult<adbc_core::PartitionedResult> {\n        todo!(\"ReplayStatement::execute_partitions\")\n    }\n\n    fn get_parameter_schema(&self) -> AdbcResult<Schema> {\n        todo!(\"ReplayStatement::get_parameter_schema\")\n    }\n\n    fn prepare(&mut self) -> AdbcResult<()> {\n        todo!(\"ReplayStatement::prepare\")\n    }\n\n    fn set_sql_query(&mut self, sql: &str) -> AdbcResult<()> {\n        self.sql = Some(sql.to_string());\n        Ok(())\n    }\n\n    fn set_substrait_plan(&mut self, _plan: &[u8]) -> AdbcResult<()> {\n        unimplemented!(\"ReplayStatement::set_substrait_plan\")\n    }\n\n    fn cancel(&mut self) -> AdbcResult<()> {\n        todo!(\"ReplayStatement::cancel\")\n    }","sourceCodeStart":322,"sourceCodeEnd":358,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/adbc-record-replay/src/replay.rs#L322-L358","documentation":"ReplayStatement::get_parameter_schema is unimplemented in the adbc-record-replay crate. The todo!() placeholder panics when a caller requests the prepared statement's bind-parameter schema. Parameter schema introspection is not available in the replay driver.","triggerScenarios":"Calling Statement::get_parameter_schema after prepare() on a record-replay driver statement.","commonSituations":"Clients that build binders from get_parameter_schema before calling bind; prepared-statement workflows replayed through the record-replay driver; generic ADBC tooling that always introspects parameter schemas.","solutions":["Skip parameter-schema introspection during replay; bind data is not supported anyway (see bind/bind_stream)","Implement get_parameter_schema by persisting the recorded parameter schema at capture time","Return a proper Status::NotImplemented error instead of panicking","Use the real driver for prepared-statement parameter workflows"],"exampleFix":"// before\nfn get_parameter_schema(&self) -> AdbcResult<Schema> {\n    todo!(\"ReplayStatement::get_parameter_schema\")\n}\n// after\nfn get_parameter_schema(&self) -> AdbcResult<Schema> {\n    Err(adbc_core::error::Error::with_message(\n        Status::NotImplemented,\n        \"get_parameter_schema is not supported by the replay driver\".into(),\n    ))\n}","handlingStrategy":"fallback","validationCode":"fn replay_supports_param_schema(stmt: &ReplayStatement) -> bool {\n    false // get_parameter_schema is not implemented in the replay driver\n}","typeGuard":null,"tryCatchPattern":"let param_schema = if replay_supports_param_schema(&stmt) {\n    Some(stmt.get_parameter_schema()?)\n} else {\n    None // fallback: skip binder construction during replay\n};","preventionTips":["Skip parameter introspection when using the replay driver","Remember bind/prepare are also unsupported on replay statements","Contribute parameter-schema persistence to the recording format"],"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"}