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

  1. Set all logical operator field names (and/or/not) in GraphqlConfig query.filterInputConfig
  2. 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

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


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