{"record":{"id":"adeb83381eb3fee4","repo":"hasura/graphql-engine","slug":"unsupported-type-type-name-used-in-object-bool","errorCode":null,"errorMessage":"unsupported type '{type_name}' used in object boolean expression. '{boolean_expression_type_name}'; only object types are supported","messagePattern":"unsupported type '(.+?)' used in object boolean expression\\. '(.+?)'; only object types are supported","errorType":"validation","errorClass":"BooleanExpressionError::UnsupportedTypeInObjectBooleanExpressionType","httpStatus":null,"severity":"error","filePath":"v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs","lineNumber":25,"sourceCode":"use 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>,\n        object_boolean_expression_type: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"unknown data connector object type {data_connector_object_type:} (in data connector {data_connector:}) referenced in object boolean expression type {object_boolean_expression_type:}\"\n    )]\n    UnknownDataConnectorTypeInObjectBooleanExpressionType {\n        data_connector: Qualified<DataConnectorName>,","sourceCodeStart":7,"sourceCodeEnd":43,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs#L7-L43","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Point objectType at an actual object type (one with fields) in your metadata","If you meant to filter on a scalar, use the scalar boolean expression / filter configuration on the model instead","Check for kind changes after upgrades and update boolean expression definitions","Rebuild metadata"],"exampleFix":"# before\nobjectType: my_sub.UserStatus   # an enum\n# after\nobjectType: my_sub.User        # an object type","handlingStrategy":"validation","validationCode":"// Ensure the backing type exists AND is an object kind\nmatch types.get(&be.object_type) {\n    Some(t) if t.is_object_type() => {}\n    Some(_) => return Err(\"backing type is not an object type\"),\n    None => return Err(\"backing type not found\"),\n}","typeGuard":"fn is_object_type(t: &ResolvedType) -> bool { matches!(t, ResolvedType::ObjectType(_)) }","tryCatchPattern":"match resolve(metadata) {\n    Err(BooleanExpressionError::UnsupportedTypeInObjectBooleanExpressionType { type_name, .. }) => {\n        // tell user to point objectType at an object type or use scalar filter config\n    }\n    other => other,\n}","preventionTips":["Never reuse scalar/enum/other filter types as objectType","After metadata upgrades, review boolean expression definitions for kind changes"],"tags":["hasura","ddn","metadata","boolean-expressions","type-kind","rust"],"backgroundTag":"unsupported-type-in-metadata","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}