hasura/graphql-engine · warning · AggregateBooleanExpressionIssue
a graphql section is defined but it will not appear in the G
Error message
a graphql section is defined 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 boolean expression type declares a graphql section, but the global GraphqlConfig does not configure logical operator field names in query.filterInputConfig, so the type will not be exposed in the GraphQL API. The resolver emits this to warn that your graphql section is silently ineffective.
Source
Thrown at v3/crates/metadata-resolve/src/stages/aggregate_boolean_expressions/types.rs:410
ComparableAggregatableRelationship,
#[display("logical operator")]
LogicalOperator,
#[display("count aggregation function")]
CountAggregationFunction,
#[display("count distinct aggregation function")]
CountDistinctAggregationFunction,
}
#[derive(Debug, thiserror::Error)]
#[error("issue in boolean expression type '{type_name}': {issue}")]
pub struct NamedAggregateBooleanExpressionIssue {
pub type_name: Qualified<CustomTypeName>,
pub issue: AggregateBooleanExpressionIssue,
}
#[derive(Debug, thiserror::Error)]
pub enum AggregateBooleanExpressionIssue {
#[error(
"a graphql section is defined but it will not appear in the GraphQL API unless logical operator field names are also configured in the GraphqlConfig in query.filterInputConfig"
)]
MissingLogicalOperatorNamesInGraphqlConfig,
#[error(
"a {count_type} aggregation is defined but it will not appear in the GraphQL API unless count aggregate field names are also configured in the GraphqlConfig in query.aggregate"
)]
MissingCountAggregationNamesInGraphqlConfig { count_type: CountAggregateType },
}
View on GitHub (pinned to 724551b9ae)
Solutions
- Add logical operator field names under query.filterInputConfig in your GraphqlConfig (typically _and, _or, _not).
- If you do not want this type in the GraphQL API, remove its graphql section to silence the warning.
Example fix
# before
# boolean expression type has:
graphql: {}
# GraphqlConfig has no query.filterInputConfig
# after
query:
filterInputConfig:
logical_operator_names:
and: _and
or: _or
not: _not Defensive patterns
Strategy: validation
Validate before calling
fn graphql_section_effective(be: &BooleanExpressionType, cfg: &GraphqlConfig) -> bool {
be.graphql.is_some()
&& cfg.query.filter_input_config
.and_then(|f| f.logical_operator_names).is_some()
} Prevention
- Whenever you add graphql: to a boolean expression type, immediately add filterInputConfig logical operator names.
- Keep GraphqlConfig complete in a shared base metadata document.
When it happens
Trigger: Boolean expression metadata with a graphql block while query.filterInputConfig.logical_operator_names (and/or related filter input config) is absent from the GraphqlConfig.
Common situations: Enabling boolean expression GraphQL exposure per-type without flipping the global config; upgrading to a metadata version that moved logical operator naming into GraphqlConfig; partial config migration.
Related errors
- a {count_type} aggregation is defined but it will not appear
- a graphql section is defined in boolean expression type '{ty
- a graphql section is defined in boolean expression type '{ty
- the aggregate expression {name} defines a graphql section bu
- graphql configuration is not defined in supergraph
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/8e6b5e9a117dbfef.
Report an issue: GitHub.