hasura/graphql-engine · warning · ScalarBooleanExpressionTypeIssue
a graphql section is defined in boolean expression type '{ty
Error message
a graphql section is defined in boolean expression type '{type_name}' but it will not appear in the GraphQL API unless logical operator field names are also configured in the GraphqlConfig in query.filterInputConfig What it means
A warning-level issue: the boolean expression type defines a graphql section, but because GraphqlConfig's filterInputConfig requires all fields, logical operator field names are not fully configured, so the whole boolean expression type will not be exposed in the GraphQL API.
Source
Thrown at v3/crates/metadata-resolve/src/stages/scalar_boolean_expressions/error.rs:65
},
#[error("Predicate types in data connectors are unsupported")]
PredicateTypesUnsupported,
#[error("{0}")]
GraphqlError(#[from] graphql_config::GraphqlConfigError),
}
impl ContextualError for ScalarBooleanExpressionTypeError {
fn create_error_context(&self) -> Option<error_context::Context> {
None
}
}
#[derive(Debug, thiserror::Error)]
pub enum ScalarBooleanExpressionTypeIssue {
// Because the GraphqlConfig's filterInputConfig requires all properties to be set, the effective meaning of not
// having the is_null operator set is that the entire boolean expression cannot be rendered in GraphQL and so we
// communicate that effect here, even though this issue is only about logical operators specifically.
#[error(
"a graphql section is defined in boolean expression type '{type_name}' but it will not appear in the GraphQL API unless logical operator field names are also configured in the GraphqlConfig in query.filterInputConfig"
)]
MissingLogicalOperatorNamesInGraphqlConfig {
type_name: Qualified<CustomTypeName>,
},
// Because the GraphqlConfig's filterInputConfig requires all properties to be set, the effective meaning of not
// having the is_null operator set is that the entire boolean expression cannot be rendered in GraphQL and so we
// communicate that effect here, even though this issue is only about the is null operator specifically.
#[error(
"a graphql section is defined in boolean expression type '{type_name}' but it will not appear in the GraphQL API unless the is_null operator field name is also configured in the GraphqlConfig in query.filterInputConfig"
)]
MissingIsNullOperatorNameInGraphqlConfig {
type_name: Qualified<CustomTypeName>,
},
#[error(
"the boolean expression '{type_name}' has enabled logical operators, but they will not appear in the GraphQL API unless you update your CompatibilityConfig date to at least 2024-11-26"
)]
LogicalOperatorsUnavailable {View on GitHub (pinned to 724551b9ae)
Solutions
- Set all logical operator field names (and/or/not) in GraphqlConfig query.filterInputConfig
- Alternatively remove the graphql section from the boolean expression type if GraphQL exposure is not needed
Example fix
// before
query:
filterInputConfig:
is_null: "is_null"
// after
query:
filterInputConfig:
is_null: "is_null"
logical_operator_names:
and: "_and"
or: "_or"
not: "_not" Defensive patterns
Strategy: validation
Validate before calling
// ensure filterInputConfig is complete before applying metadata
if graphql_config.filter_input_config.and.is_none()
|| graphql_config.filter_input_config.or.is_none()
|| graphql_config.filter_input_config.not.is_none() {
return Err("filterInputConfig missing logical operator names");
} Prevention
- Always configure all filterInputConfig fields together
- Add a config schema check in CI for GraphqlConfig completeness
When it happens
Trigger: Declaring a boolean expression type with a graphql block while query.filterInputConfig in GraphqlConfig does not set logical operator names (_and/_or/_not).
Common situations: Partial filterInputConfig configuration where only some field names (e.g. is_null) are set.
Related errors
- a graphql section is defined in boolean expression type '{ty
- a graphql section is defined but it will not appear in the G
- a {count_type} aggregation is defined but it will not appear
- graphql configuration is not defined in supergraph
- the filterInputFieldName for aggregate needs to be defined i
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/e3f1186fdbbfb7a2.
Report an issue: GitHub.