hasura/graphql-engine · error · InternalDeveloperError

Type mapping not found for the type name {type_name:}

Error message

Type mapping not found for the type name {type_name:}

What it means

The plan crate (e.g. applying argument presets in query/arguments.rs or collecting relationship field mappings) could not find the type mapping for a Qualified<CustomTypeName> in the subgraph's type mappings. The metadata's type name has no corresponding mapping entry, so planning cannot proceed.

Source

Thrown at v3/crates/plan/src/error.rs:69

        found: String,
    },

    #[error(
        "Typecasting session variable {session_variable} to an array is not supported. Update your compatibility date to enable JSON session variables"
    )]
    VariableArrayTypeCastNotSupported {
        session_variable: SessionVariableName,
    },

    #[error(
        "Expected session variable {session_variable} to be a valid JSON value, but encountered a JSON parsing error: {parse_error}"
    )]
    VariableExpectedJson {
        session_variable: SessionVariableName,
        parse_error: serde_json::Error,
    },

    #[error("Type mapping not found for the type name {type_name:}")]
    TypeMappingNotFound {
        type_name: Qualified<CustomTypeName>,
    },

    #[error("Field mapping not found for the field {field_name:} of type {type_name:}")]
    FieldMappingNotFound {
        type_name: Qualified<CustomTypeName>,
        field_name: FieldName,
    },

    #[error("{0}")]
    RelationshipFieldMappingError(#[from] crate::query::RelationshipFieldMappingError),

    #[error("{0}")]
    MapFieldNamesError(#[from] MapFieldNamesError),

    #[error(
        "The relationship '{relationship_name}' is from a nested object and cannot be used in a predicate"

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Regenerate/rebuild metadata and plan from the same source so type names and mappings stay in sync
  2. Check the type name in the message and ensure it exists in this subgraph's resolved type mappings
  3. If the type is remote, use the relationship/remote join path that expects remote types instead of a local mapping
Defensive patterns

Strategy: validation

Validate before calling

// Before planning, verify each referenced type has a mapping
for name in metadata.referenced_type_names() {
    if !subgraph.type_mappings.contains_key(&name) {
        return Err(format!("no type mapping for {name}"));
    }
}

Try / catch

match err {
    InternalDeveloperError::TypeMappingNotFound { type_name } => {
        // rebuild metadata+plan together; check the type exists in this subgraph
    }
    _ => {}
}

Prevention

When it happens

Trigger: Executing apply_input_field_presets_to_value or relationship field mapping collection where the type referenced by an argument preset or relationship field has no entry in the resolved type mappings — typically because the type was removed/renamed in the connector metadata after the plan/metadata was built, or the type is defined in a different subgraph.

Common situations: Deploying metadata and plan artifacts from different builds; renaming a model/object type in the connector without updating dependent presets or relationships; types sourced from another subgraph used where a local mapping is required.

Related errors


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