{"record":{"id":"d6e01d3fd455e504","repo":"hasura/graphql-engine","slug":"unknown-type-type-name-used-in-object-boolean","errorCode":null,"errorMessage":"unknown type '{type_name}' used in object boolean expression '{boolean_expression_type_name}'","messagePattern":"unknown type '(.+?)' used in object boolean expression '(.+?)'","errorType":"validation","errorClass":"BooleanExpressionError::UnknownTypeInObjectBooleanExpressionType","httpStatus":null,"severity":"error","filePath":"v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs","lineNumber":18,"sourceCode":"use super::BooleanExpressionTypeIdentifier;\nuse crate::QualifiedTypeReference;\nuse crate::helpers::type_mappings::TypeMappingCollectionError;\nuse crate::stages::{\n    boolean_expressions, data_connectors, graphql_config, relationships, scalar_boolean_expressions,\n};\nuse crate::types::error::{ContextualError, TypePredicateError};\nuse crate::types::subgraph::{Qualified, QualifiedTypeName};\nuse open_dds::{\n    data_connector::{DataConnectorName, DataConnectorObjectType},\n    models::ModelName,\n    relationships::RelationshipName,\n    types::{CustomTypeName, FieldName},\n};\n\n#[derive(Debug, thiserror::Error)]\npub enum BooleanExpressionError {\n    #[error(\n        \"unknown type '{type_name}' used in object boolean expression '{boolean_expression_type_name}'\"\n    )]\n    UnknownTypeInObjectBooleanExpressionType {\n        boolean_expression_type_name: Qualified<CustomTypeName>,\n        type_name: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"unsupported type '{type_name}' used in object boolean expression. '{boolean_expression_type_name}'; only object types are supported\"\n    )]\n    UnsupportedTypeInObjectBooleanExpressionType {\n        boolean_expression_type_name: Qualified<CustomTypeName>,\n        type_name: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"unknown data connector {data_connector:} referenced in object boolean expression type {object_boolean_expression_type:}\"\n    )]\n    UnknownDataConnectorInObjectBooleanExpressionType {\n        data_connector: Qualified<DataConnectorName>,","sourceCodeStart":1,"sourceCodeEnd":36,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs#L1-L36","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Correct the objectType reference in the boolean expression type definition to point at an existing object type","Verify the object type is defined in the same namespace and included in the current metadata build","If the type was renamed/deleted, update or remove the boolean expression type accordingly","Rebuild to confirm resolution passes"],"exampleFix":"# before\n- name: my_sub\n  objectType: my_sub.Missing_Type\n# after\n- name: my_sub\n  objectType: my_sub.ExistingType","handlingStrategy":"validation","validationCode":"// Pre-check: every boolean expression's objectType must be a declared object type\nfor be in &metadata.object_boolean_expression_types {\n    let q = be.object_type.to_qualified_string();\n    if !object_types.contains(&q) {\n        return Err(format!(\"boolean expression {} references unknown object type {q}\", be.name));\n    }\n}","typeGuard":null,"tryCatchPattern":"match resolve(metadata) {\n    Err(BooleanExpressionError::UnknownTypeInObjectBooleanExpressionType { boolean_expression_type_name, type_name }) => {\n        // point user at the boolean expression definition to fix objectType\n    }\n    other => other,\n}","preventionTips":["Codemod objectType references when renaming object types","Generate boolean expression scaffolding from existing object types instead of hand-writing names"],"tags":["hasura","ddn","metadata","boolean-expressions","type-resolution","rust"],"backgroundTag":"metadata-type-not-found","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}