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

unknown type '{type_name}' used in object boolean expression

Error message

unknown type '{type_name}' used in object boolean expression '{boolean_expression_type_name}'

What it means

Thrown by the boolean_expressions resolution stage when an object boolean expression type references an object type (via objectType) that is not defined in the resolved subgraph metadata. Every boolean expression type must be backed by an existing, resolvable object type; a lookup miss produces this error with both type names.

Source

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

use super::BooleanExpressionTypeIdentifier;
use crate::QualifiedTypeReference;
use crate::helpers::type_mappings::TypeMappingCollectionError;
use crate::stages::{
    boolean_expressions, data_connectors, graphql_config, relationships, scalar_boolean_expressions,
};
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>,

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Correct the objectType reference in the boolean expression type definition to point at an existing object type
  2. Verify the object type is defined in the same namespace and included in the current metadata build
  3. If the type was renamed/deleted, update or remove the boolean expression type accordingly
  4. Rebuild to confirm resolution passes

Example fix

# before
- name: my_sub
  objectType: my_sub.Missing_Type
# after
- name: my_sub
  objectType: my_sub.ExistingType
Defensive patterns

Strategy: validation

Validate before calling

// Pre-check: every boolean expression's objectType must be a declared object type
for be in &metadata.object_boolean_expression_types {
    let q = be.object_type.to_qualified_string();
    if !object_types.contains(&q) {
        return Err(format!("boolean expression {} references unknown object type {q}", be.name));
    }
}

Try / catch

match resolve(metadata) {
    Err(BooleanExpressionError::UnknownTypeInObjectBooleanExpressionType { boolean_expression_type_name, type_name }) => {
        // point user at the boolean expression definition to fix objectType
    }
    other => other,
}

Prevention

When it happens

Trigger: Declaring an ObjectBooleanExpressionType in OpenDD whose objectType points to a Qualified type name that does not exist; renaming or deleting the underlying object type without updating boolean expression definitions.

Common situations: Typo in the objectType field, metadata files split across subgraphs where the object type lives in another build, stale references after refactors, or copy-pasting boolean expression definitions between projects.

Related errors


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