hasura/graphql-engine · error · BooleanExpressionError::GraphqlConfigError
{0}
Error message
{0} What it means
Wrapper error: a graphql_config::GraphqlConfigError occurred during boolean expression resolution, for example invalid GraphQL naming configuration or a name customization that cannot be applied to a boolean expression type. The inner error's message is surfaced verbatim.
Source
Thrown at v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs:201
DifferentDataConnectorObjectTypeInFilterExpression {
model: Qualified<ModelName>,
model_data_connector_object_type: DataConnectorObjectType,
filter_expression_type: Qualified<CustomTypeName>,
filter_expression_data_connector_object_type: DataConnectorObjectType,
},
#[error(
"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),
View on GitHub (pinned to 724551b9ae)
Solutions
- Inspect the wrapped GraphqlConfigError message to identify the invalid configuration item and fix it in the graphql_config block
- Validate graphql naming customization against the OpenDDs graphql_config schema
- Remove the offending customization if not needed
Example fix
// before
graphql_config:
type_names: { boolean_expression_type_prefix: "123bad" }
// after
graphql_config:
type_names: { boolean_expression_type_prefix: "Bad123" } Defensive patterns
Strategy: try-catch
Try / catch
// catch and unwrap the source error for actionable messages
try {
await applyMetadata(md);
} catch (e) {
if (/GraphqlConfigError/.test(String(e?.message))) {
// e.message is the wrapped graphql_config error; fix the named config item
throw new Error(`Invalid graphql_config: ${e.message}`);
}
throw e;
} Prevention
- Validate graphql_config blocks against the OpenDDs schema in CI
- Use valid GraphQL identifier rules for all name customizations
When it happens
Trigger: Declaring a booleanExpressionType under a GraphQL config that customizes type/field names in a way that fails validation (invalid characters, conflicting names, missing type prefix configuration), so graphql_config parsing fails while resolving filters.
Common situations: Adding a graphql_config block to a model or boolean expression type with malformed naming customization; metadata schema upgrades that made previously-tolerated graphql config invalid.
Related errors
- error fetching config from server: %w
- error fetching server config: %v
- {0}
- could not find a scalar-operanded boolean expression type na
- the type of the comparable field '{field_name}' ({field_type
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/4c47c2a439cd7740.
Report an issue: GitHub.