hasura/graphql-engine · error · OrderByExpressionError
The data type {data_type} has not been defined
Error message
The data type {data_type} has not been defined What it means
The order-by expression uses or produces a data type that has not been defined in the metadata's type collection. Ordering requires the type to be a defined (typically scalar) type so the resolver can determine valid sort directions.
Source
Thrown at v3/crates/metadata-resolve/src/stages/order_by_expressions/error.rs:28
#[derive(Debug, thiserror::Error)]
#[error("Error in order by expression {order_by_expression_name}: {error}")]
pub struct NamedOrderByExpressionError {
pub order_by_expression_name: Qualified<OrderByExpressionName>,
pub error: OrderByExpressionError,
}
impl ContextualError for NamedOrderByExpressionError {
fn create_error_context(&self) -> Option<error_context::Context> {
None
}
}
#[derive(Debug, thiserror::Error)]
pub enum OrderByExpressionError {
#[error("unknown field {field_name} in orderable fields")]
UnknownFieldInOrderByExpression { field_name: FieldName },
#[error("The data type {data_type} has not been defined")]
UnknownOrderableType {
data_type: Qualified<CustomTypeName>,
},
#[error(
"The relationship {relationship_name} on object type {object_type_name} could not be found"
)]
UnknownRelationship {
relationship_name: RelationshipName,
object_type_name: Qualified<CustomTypeName>,
},
#[error(
"Invalid orderable field {field_name}. Exactly one of `enable_order_by_directions` or `order_by_expression_name` must be specified."
)]
InvalidOrderByExpressionOrderableField { field_name: FieldName },
#[error(
"The order by expression {order_by_expression_name} referenced in field {field_name} has not been defined"
)]
UnknownOrderByExpressionNameInOrderableField {View on GitHub (pinned to 724551b9ae)
Solutions
- Verify the type name in the order-by expression exists in the CustomTypes metadata
- Define the missing type or correct its name in the expression
- Remove orphaned order-by expressions referencing deleted types
Defensive patterns
Strategy: validation
Validate before calling
const definedTypes = new Set(allTypeNames);
if (!definedTypes.has(expression.type_name)) throw new Error(`Undefined type in order-by expression: ${expression.type_name}`); Prevention
- Validate type references when deleting or renaming types
- Keep expressions and type definitions in the same metadata module
When it happens
Trigger: An order-by expression's target type name does not match any defined scalar/object type — typo, or the type was removed/renamed while the expression remained.
Common situations: Deleting a scalar type still referenced by order-by expressions; renaming types; misspelled type names in hand-written metadata.
Related errors
- the argument '{argument_name}' in command '{command_name}' h
- unknown type {custom_type_name}
- Error in order by expression {order_by_expression_name}: {er
- unknown field {field_name} in orderable fields
- The relationship {relationship_name} on object type {object_
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/0224be6684ed2c43.
Report an issue: GitHub.