{"record":{"id":"e5370a7228b930bc","repo":"hasura/graphql-engine","slug":"the-relationship-relationship-name-on-object-typ","errorCode":null,"errorMessage":"The relationship {relationship_name} on object type {object_type_name} could not be found","messagePattern":"The relationship (.+?) on object type (.+?) could not be found","errorType":"validation","errorClass":"OrderByExpressionError","httpStatus":null,"severity":"error","filePath":"v3/crates/metadata-resolve/src/stages/order_by_expressions/error.rs","lineNumber":32,"sourceCode":"    pub order_by_expression_name: Qualified<OrderByExpressionName>,\n    pub error: OrderByExpressionError,\n}\n\nimpl ContextualError for NamedOrderByExpressionError {\n    fn create_error_context(&self) -> Option<error_context::Context> {\n        None\n    }\n}\n\n#[derive(Debug, thiserror::Error)]\npub enum OrderByExpressionError {\n    #[error(\"unknown field {field_name} in orderable fields\")]\n    UnknownFieldInOrderByExpression { field_name: FieldName },\n    #[error(\"The data type {data_type} has not been defined\")]\n    UnknownOrderableType {\n        data_type: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"The relationship {relationship_name} on object type {object_type_name} could not be found\"\n    )]\n    UnknownRelationship {\n        relationship_name: RelationshipName,\n        object_type_name: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"Invalid orderable field {field_name}. Exactly one of `enable_order_by_directions` or `order_by_expression_name` must be specified.\"\n    )]\n    InvalidOrderByExpressionOrderableField { field_name: FieldName },\n    #[error(\n        \"The order by expression {order_by_expression_name} referenced in field {field_name} has not been defined\"\n    )]\n    UnknownOrderByExpressionNameInOrderableField {\n        order_by_expression_name: OrderByExpressionName,\n        field_name: FieldName,\n    },\n    #[error(","sourceCodeStart":14,"sourceCodeEnd":50,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/stages/order_by_expressions/error.rs#L14-L50","documentation":"An order-by expression traverses a relationship that does not exist on the given object type. Order-by expressions can follow relationships (order by a related object's field), and the relationship name must resolve against the type's declared relationships.","triggerScenarios":"Expression contains a relationship segment naming a relationship not defined on the object type — misspelled, renamed, or defined on a different type.","commonSituations":"Renaming relationships without updating expressions; referencing a relationship that exists in the database but was not declared in metadata; expressions copied between types.","solutions":["Check the relationship name against the relationships declared on that object type","Define the missing relationship in metadata or fix the name in the expression","Update expressions after relationship renames"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"const rels = new Set(objectType.relationships?.map(r => r.name) ?? []);\nfor (const r of referencedRelationships(expression)) if (!rels.has(r)) throw new Error(`Unknown relationship ${r} in order-by expression`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep relationship names stable or script renames across all expressions","Validate expression paths against declared relationships in CI"],"tags":["hasura","metadata","order-by","relationships","unknown-relationship"],"backgroundTag":"unknown-relationship-reference","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}