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

Field level comparison operator configuration is not fully s

Error message

Field level comparison operator configuration is not fully supported yet. Please add all fields in filterable_fields.

What it means

The boolean expression type restricts filterable fields via a filterable_fields-style configuration, but field-level selection of filterable fields is not fully supported; all fields must be included. Thrown when only a subset of fields is marked filterable.

Source

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

        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>,
    },

    #[error(
        "Model {model:} has source data connector {model_data_connector:} but its filter expression type {filter_expression_type:} is backed by data connector {filter_expression_data_connector:}"
    )]

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Add all fields of the object type to the filterable_fields list so it is exhaustive
  2. Alternatively use operators enableAll and drop the field list

Example fix

// before
filterableFields: [id, name]
// after (object type also has 'email')
filterableFields: [id, name, email]
Defensive patterns

Strategy: validation

Validate before calling

const objFields = new Set(objectTypeFields(boolExpType.target));
for (const f of boolExpType.filterableFields ?? []) objFields.delete(f);
if (objFields.size > 0) fail(`filterable_fields missing: ${[...objFields]}`);

Prevention

When it happens

Trigger: Providing a booleanExpressionType with a filterableFields list that omits some fields of the object type, instead of listing all fields.

Common situations: Attempting to hide certain fields from filtering by omitting them from filterable_fields; partial copy-paste of a filterable field list that misses fields added later.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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