hasura/graphql-engine · warning · NamedAggregateBooleanExpressionIssue
issue in boolean expression type '{type_name}': {issue}
Error message
issue in boolean expression type '{type_name}': {issue} What it means
Wrapper error attaching the qualified boolean expression type name to an inner AggregateBooleanExpressionIssue. It tells you which named boolean expression type carries the underlying problem (e.g. a missing logical operator or count aggregation naming configuration), with the inner issue describing the specifics.
Source
Thrown at v3/crates/metadata-resolve/src/stages/aggregate_boolean_expressions/types.rs:402
#[derive(Debug, Eq, PartialEq, Copy, Clone, derive_more::with_trait::Display)]
pub enum NameSource {
#[display("comparable aggregation function")]
ComparableAggregationFunction,
#[display("comparable aggregatable field")]
ComparableAggregatableField,
#[display("comparable aggregatable relationship")]
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
- Read the inner {issue} text to identify the concrete problem (logical operator names or count aggregation names missing from GraphqlConfig).
- Add the corresponding names to query.filterInputConfig / query.aggregate in the GraphqlConfig.
- If the GraphQL API exposure is not intended, remove the graphql section from that boolean expression type.
Defensive patterns
Strategy: try-catch
Try / catch
match resolve_aggregate_boolean_expressions(&ctx) {
Err(issues) => {
for issue in &issues {
if let AggregateBooleanExpressionIssue::MissingLogicalOperatorNamesInGraphqlConfig
| AggregateBooleanExpressionIssue::MissingCountAggregationNamesInGraphqlConfig
= issue.issue { /* warn: graphql section is ineffective; fix GraphqlConfig */ }
}
}
Ok(v) => { /* ... */ }
} Prevention
- Treat these as build warnings: always pair a graphql section with the matching GraphqlConfig entries.
- Run metadata resolve locally and fail on warnings before pushing.
When it happens
Trigger: Any inner issue in AggregateBooleanExpressionIssue (MissingLogicalOperatorNamesInGraphqlConfig or MissingCountAggregationNamesInGraphqlConfig) raised while resolving the named boolean expression type '{type_name}'.
Common situations: Metadata where boolean expression types declare a graphql section but the global GraphqlConfig omits filterInputConfig logical operator names or aggregate count field names.
Related errors
- error in boolean expression type '{type_name}': {error}
- {0}
- {0}
- error fetching config from server: %w
- error fetching server config: %v
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/e948d261a7a80dc0.
Report an issue: GitHub.