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
- Add all fields of the object type to the filterable_fields list so it is exhaustive
- 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
- If listing filterable fields, always list every field of the object type
- Prefer enableAll over partial field lists until support is complete
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
- error fetching config from server: %w
- error fetching server config: %v
- could not find a scalar-operanded boolean expression type na
- the type of the comparable field '{field_name}' ({field_type
- the boolean expression type ({boolean_expression_type}) used
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/c84c90dac0399c8d.
Report an issue: GitHub.