{"record":{"id":"45c8527669af3455","repo":"databendlabs/databend","slug":"not-implemented-45c852","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/query/service/src/servers/flight_sql/flight_sql_service/service.rs","lineNumber":655,"sourceCode":"                    )));\n                }\n            }\n        }\n        Ok(())\n    }\n\n    #[async_backtrace::framed]\n    async fn register_sql_info(&self, id: i32, result: &SqlInfo) {\n        info!(\"register_sql_info({id}, {result:?})\");\n    }\n\n    /// Get a FlightInfo to extract information about the supported XDBC types.\n    async fn get_flight_info_xdbc_type_info(\n        &self,\n        _query: CommandGetXdbcTypeInfo,\n        _request: Request<FlightDescriptor>,\n    ) -> std::result::Result<Response<FlightInfo>, Status> {\n        unimplemented!()\n    }\n\n    /// Get a FlightDataStream containing the data related to the supported XDBC types.\n    async fn do_get_xdbc_type_info(\n        &self,\n        _query: CommandGetXdbcTypeInfo,\n        _request: Request<Ticket>,\n    ) -> std::result::Result<Response<<Self as FlightService>::DoGetStream>, Status> {\n        unimplemented!()\n    }\n\n    async fn get_flight_info_substrait_plan(\n        &self,\n        _query: CommandStatementSubstraitPlan,\n        _request: Request<FlightDescriptor>,\n    ) -> std::result::Result<Response<FlightInfo>, Status> {\n        unimplemented!()\n    }","sourceCodeStart":637,"sourceCodeEnd":673,"githubUrl":"https://github.com/databendlabs/databend/blob/288d84d76e20a2f8f7173bda9691eb6ece301aa9/src/query/service/src/servers/flight_sql/flight_sql_service/service.rs#L637-L673","documentation":"Databend's FlightSQL service does not implement `get_flight_info_xdbc_type_info`, so hitting the `CommandGetXdbcTypeInfo` RPC endpoint panics with `unimplemented!()`. The gRPC call reaches the handler but has no backing logic.","triggerScenarios":"A FlightSQL client issues CommandGetXdbcTypeInfo (XDBC type-info metadata request) against the Databend FlightSQL endpoint.","commonSituations":"JDBC/ODBC-style drivers or tools (e.g. Dremio/Arrow Flight SQL clients) that request XDBC type metadata on connect; schema browsers using FlightSQL.","solutions":["Use a FlightSQL client path that does not call getXdbcTypeInfo (or tolerate the failure in the client)","Return a predefined FlightInfo describing supported types instead of unimplemented!()","Upgrade Databend to a version where XDBC type info is implemented","Return Status::unimplemented from the handler so clients get a clean gRPC error instead of a server panic"],"exampleFix":"// before\nasync fn get_flight_info_xdbc_type_info(&self, _q: CommandGetXdbcTypeInfo, _r: Request<FlightDescriptor>)\n    -> Result<Response<FlightInfo>, Status> { unimplemented!() }\n// after\nasync fn get_flight_info_xdbc_type_info(&self, _q: CommandGetXdbcTypeInfo, _r: Request<FlightDescriptor>)\n    -> Result<Response<FlightInfo>, Status> {\n    Err(Status::unimplemented(\"XDBC type info is not supported\"))\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"match flight_sql_client.get_xdbc_type_info(desc).await {\n    Ok(resp) => resp,\n    Err(Status { code: Code::Unimplemented, .. }) | Err(_) if is_unimplemented_panic(&e) => fallback_to_sql_type_query(),\n    Err(e) => return Err(e),\n}","preventionTips":["Don't call getXdbcTypeInfo against Databend FlightSQL","Discover type support via SQL (information_schema) instead","Pin client features that avoid XDBC metadata RPCs"],"tags":["flightsql","grpc","rpc","panic"],"backgroundTag":"method-not-implemented","analyzedSha":"288d84d76e20a2f8f7173bda9691eb6ece301aa9","analyzedAt":"2026-09-11T11:29:36.208Z","contentChangedAt":"2026-09-11T11:29:36.208Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}