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

Field level comparison operator configuration is not fully s

Error message

Field level comparison operator configuration is not fully supported yet. Please use \"enableAll\":true.

What it means

Indicates that per-field comparison operator configuration on a boolean expression type is not yet implemented; only enabling all operators for all fields is supported. Thrown when metadata restricts comparison operators on specific fields of a boolean expression type.

Source

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

    #[error(
        "The field {field_name:} has type {field_type:} but the field's boolean expression type {field_boolean_expression_type_name:} has type {underlying_type:}"
    )]
    FieldTypeMismatch {
        field_name: FieldName,
        field_type: QualifiedTypeName,
        field_boolean_expression_type_name: BooleanExpressionTypeIdentifier,
        underlying_type: QualifiedTypeName,
    },

    #[error(
        "Scalar representations for data connector '{data_connector_name}' could not found for boolean expression type {boolean_expression_type}"
    )]
    DataConnectorScalarRepresentationsNotFound {
        data_connector_name: Qualified<DataConnectorName>,
        boolean_expression_type: Qualified<CustomTypeName>,
    },

    #[error(
        "Field level comparison operator configuration is not fully supported yet. Please use \"enableAll\":true."
    )]
    FieldLevelComparisonOperatorConfigurationNotSupported,

    #[error(
        "Field level comparison operator configuration is not fully supported yet. Please add all fields in filterable_fields."
    )]
    FieldLevelComparisonOperatorNeedsAllFields,

    #[error("a source must be defined for model {model:} in order to use filter expressions")]
    CannotUseFilterExpressionsWithoutSource { model: Qualified<ModelName> },

    #[error(
        "Target model {model_name:} not found, referenced in relationship {relationship_name:}"
    )]
    TargetModelNotFound {
        relationship_name: RelationshipName,
        model_name: Qualified<ModelName>,

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Replace the per-field comparison operator configuration with the global option that enables all operators (e.g. operators: { enableAll: true } on the booleanExpressionType)
  2. Remove the field-level operators block entirely

Example fix

// before
booleanExpressionType:
  operators:
    _eq: [rating]
// after
booleanExpressionType:
  operators:
    enableAll: true
Defensive patterns

Strategy: validation

Validate before calling

if (boolExpType.operators && !boolExpType.operators.enableAll && boolExpType.operators.fields) {
  fail('per-field comparison operators are not supported; use enableAll: true');
}

Prevention

When it happens

Trigger: Declaring a booleanExpressionType with per-field comparisonOperators configuration (e.g. enabling only _eq/_lt on a single field) instead of using the blanket operators option.

Common situations: Trying to fine-tune which GraphQL comparison operators are exposed per field; migrating metadata written against a spec that implied field-level operator control.

Related errors


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