hasura/graphql-engine · error · BooleanExpressionError::DataConnectorError

data connector error in boolean expression {boolean_expressi

Error message

data connector error in boolean expression {boolean_expression_name:}: {data_connector_error:}

What it means

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.

Source

Thrown at v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs:209

        "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}'"
    )]
    RemoteComparableRelationshipWithArgumentMappingTargetNotSupported {
        boolean_expression_type_name: Qualified<CustomTypeName>,
        relationship_name: open_dds::relationships::RelationshipName,
        source_type: Qualified<CustomTypeName>,
        source_field: FieldName,
        target_argument: open_dds::query::ArgumentName,
    },

    #[error("{0}")]
    GraphqlConfigError(#[from] graphql_config::GraphqlConfigError),

    #[error("{0}")]
    ScalarBooleanExpressionTypeError(
        #[from] scalar_boolean_expressions::ScalarBooleanExpressionTypeError,
    ),

    #[error(
        "data connector error in boolean expression {boolean_expression_name:}: {data_connector_error:}"
    )]
    DataConnectorError {
        boolean_expression_name: Qualified<CustomTypeName>,
        data_connector_error: data_connectors::NamedDataConnectorError,
    },

    #[error("{0}")]
    TypePredicateError(#[from] TypePredicateError),

    #[error("{0}")]
    RelationshipError(#[from] relationships::RelationshipError),
}

impl ContextualError for BooleanExpressionError {
    fn create_error_context(&self) -> Option<error_context::Context> {
        None
    }

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Check the inner `data_connector_error` (NamedDataConnectorError) to see if the connector name is unregistered or errored
  2. Verify the data connector block with that name exists in the same metadata source and is healthy
  3. Align connector plugin and metadata versions; simplify the boolean expression to operations the connector supports
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify all referenced data connectors exist before resolving
let known: HashSet<_> = metadata.data_connectors.keys().collect();
for be in metadata.boolean_expression_types() {
    if let Some(dc) = be.data_connector_name() {
        assert!(known.contains(&dc), "unknown data connector {dc}");
    }
}

Type guard

fn is_data_connector_error(e: &BooleanExpressionError) -> bool {
    matches!(e, BooleanExpressionError::DataConnectorError { .. })
}

Try / catch

if let BooleanExpressionError::DataConnectorError { boolean_expression_name, data_connector_error } = &err {
    eprintln!("connector {data_connector_error} failed for {boolean_expression_name}");
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28). Data as JSON: /api/errors/8eb681b7752506d6. Report an issue: GitHub.