{"record":{"id":"8eb681b7752506d6","repo":"hasura/graphql-engine","slug":"data-connector-error-in-boolean-expression-boolea","errorCode":null,"errorMessage":"data connector error in boolean expression {boolean_expression_name:}: {data_connector_error:}","messagePattern":"data connector error in boolean expression (.+?): (.+?)","errorType":"exception","errorClass":"BooleanExpressionError::DataConnectorError","httpStatus":null,"severity":"error","filePath":"v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs","lineNumber":209,"sourceCode":"        \"The relationship '{relationship_name}' cannot be used as a comparable relationship in boolean expression type '{boolean_expression_type_name}' because it is a remote relationship with an argument mapping target. Relationship '{relationship_name}' on type '{source_type}' has source field '{source_field}' mapped to target argument '{target_argument}'\"\n    )]\n    RemoteComparableRelationshipWithArgumentMappingTargetNotSupported {\n        boolean_expression_type_name: Qualified<CustomTypeName>,\n        relationship_name: open_dds::relationships::RelationshipName,\n        source_type: Qualified<CustomTypeName>,\n        source_field: FieldName,\n        target_argument: open_dds::query::ArgumentName,\n    },\n\n    #[error(\"{0}\")]\n    GraphqlConfigError(#[from] graphql_config::GraphqlConfigError),\n\n    #[error(\"{0}\")]\n    ScalarBooleanExpressionTypeError(\n        #[from] scalar_boolean_expressions::ScalarBooleanExpressionTypeError,\n    ),\n\n    #[error(\n        \"data connector error in boolean expression {boolean_expression_name:}: {data_connector_error:}\"\n    )]\n    DataConnectorError {\n        boolean_expression_name: Qualified<CustomTypeName>,\n        data_connector_error: data_connectors::NamedDataConnectorError,\n    },\n\n    #[error(\"{0}\")]\n    TypePredicateError(#[from] TypePredicateError),\n\n    #[error(\"{0}\")]\n    RelationshipError(#[from] relationships::RelationshipError),\n}\n\nimpl ContextualError for BooleanExpressionError {\n    fn create_error_context(&self) -> Option<error_context::Context> {\n        None\n    }","sourceCodeStart":191,"sourceCodeEnd":227,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs#L191-L227","documentation":"Raised when the data connector (referenced by name) reports an error while the boolean expression stage validates or builds filter support for a boolean expression type. The message names the boolean expression and includes the connector's own error text.","triggerScenarios":"A boolean expression type whose `data_connector` relationship/comparison mapping fails in the connector — e.g. the referenced data connector cannot be found by name, or the connector rejects the boolean expression's filter capabilities.","commonSituations":"Subgraph metadata referencing a data connector that was renamed or removed; version skew between the metadata and the connector plugin; connector-specific comparison operator mappings not supported.","solutions":["Check the inner `data_connector_error` (NamedDataConnectorError) to see if the connector name is unregistered or errored","Verify the data connector block with that name exists in the same metadata source and is healthy","Align connector plugin and metadata versions; simplify the boolean expression to operations the connector supports"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Verify all referenced data connectors exist before resolving\nlet known: HashSet<_> = metadata.data_connectors.keys().collect();\nfor be in metadata.boolean_expression_types() {\n    if let Some(dc) = be.data_connector_name() {\n        assert!(known.contains(&dc), \"unknown data connector {dc}\");\n    }\n}","typeGuard":"fn is_data_connector_error(e: &BooleanExpressionError) -> bool {\n    matches!(e, BooleanExpressionError::DataConnectorError { .. })\n}","tryCatchPattern":"if let BooleanExpressionError::DataConnectorError { boolean_expression_name, data_connector_error } = &err {\n    eprintln!(\"connector {data_connector_error} failed for {boolean_expression_name}\");\n}","preventionTips":["Keep data connector definitions and boolean expressions in the same metadata apply","Run connector health checks before applying metadata changes"],"tags":["rust","hasura","metadata","data-connector","boolean-expressions"],"backgroundTag":"data-connector-error","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}