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

  1. Read the inner {issue} text to identify the concrete problem (logical operator names or count aggregation names missing from GraphqlConfig).
  2. Add the corresponding names to query.filterInputConfig / query.aggregate in the GraphqlConfig.
  3. 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

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


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