hasura/graphql-engine · error · BooleanExpressionError::UnsupportedTypeInObjectBooleanExpressionType

unsupported type '{type_name}' used in object boolean expres

Error message

unsupported type '{type_name}' used in object boolean expression. '{boolean_expression_type_name}'; only object types are supported

What it means

The boolean expression stage requires the backing type of an object boolean expression to be an object type. This error fires when the referenced type exists but resolves to a non-object kind (e.g. a scalar type, enum, or a boolean expression type itself), so its fields/relationships cannot be used to build comparison expressions.

Source

Thrown at v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs:25

use crate::types::error::{ContextualError, TypePredicateError};
use crate::types::subgraph::{Qualified, QualifiedTypeName};
use open_dds::{
    data_connector::{DataConnectorName, DataConnectorObjectType},
    models::ModelName,
    relationships::RelationshipName,
    types::{CustomTypeName, FieldName},
};

#[derive(Debug, thiserror::Error)]
pub enum BooleanExpressionError {
    #[error(
        "unknown type '{type_name}' used in object boolean expression '{boolean_expression_type_name}'"
    )]
    UnknownTypeInObjectBooleanExpressionType {
        boolean_expression_type_name: Qualified<CustomTypeName>,
        type_name: Qualified<CustomTypeName>,
    },
    #[error(
        "unsupported type '{type_name}' used in object boolean expression. '{boolean_expression_type_name}'; only object types are supported"
    )]
    UnsupportedTypeInObjectBooleanExpressionType {
        boolean_expression_type_name: Qualified<CustomTypeName>,
        type_name: Qualified<CustomTypeName>,
    },
    #[error(
        "unknown data connector {data_connector:} referenced in object boolean expression type {object_boolean_expression_type:}"
    )]
    UnknownDataConnectorInObjectBooleanExpressionType {
        data_connector: Qualified<DataConnectorName>,
        object_boolean_expression_type: Qualified<CustomTypeName>,
    },
    #[error(
        "unknown data connector object type {data_connector_object_type:} (in data connector {data_connector:}) referenced in object boolean expression type {object_boolean_expression_type:}"
    )]
    UnknownDataConnectorTypeInObjectBooleanExpressionType {
        data_connector: Qualified<DataConnectorName>,

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Point objectType at an actual object type (one with fields) in your metadata
  2. If you meant to filter on a scalar, use the scalar boolean expression / filter configuration on the model instead
  3. Check for kind changes after upgrades and update boolean expression definitions
  4. Rebuild metadata

Example fix

# before
objectType: my_sub.UserStatus   # an enum
# after
objectType: my_sub.User        # an object type
Defensive patterns

Strategy: validation

Validate before calling

// Ensure the backing type exists AND is an object kind
match types.get(&be.object_type) {
    Some(t) if t.is_object_type() => {}
    Some(_) => return Err("backing type is not an object type"),
    None => return Err("backing type not found"),
}

Type guard

fn is_object_type(t: &ResolvedType) -> bool { matches!(t, ResolvedType::ObjectType(_)) }

Try / catch

match resolve(metadata) {
    Err(BooleanExpressionError::UnsupportedTypeInObjectBooleanExpressionType { type_name, .. }) => {
        // tell user to point objectType at an object type or use scalar filter config
    }
    other => other,
}

Prevention

When it happens

Trigger: Setting objectType of an ObjectBooleanExpressionType to a scalar, enum, or another boolean expression type instead of a real object type; or a type whose kind changed between metadata versions (object → scalar) while boolean expression definitions were left unchanged.

Common situations: Mistaking scalar type names for object types when authoring filter expressions; upgrading OpenDD/hasura CLI versions where a type's kind semantics changed; reusing a filter input type as the backing object type.

Related errors


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