hasura/graphql-engine · error · ArgumentPresetExecutionError

{0}

Error message

{0}

What it means

MapFieldNamesError is a transparent wrapper (#[from]) around an error raised while mapping field names between the logical schema and the data connector. The '{0}' message is the inner error's text, so the underlying cause (name mismatch, unresolvable field, etc.) is reported by the mapping subsystem itself.

Source

Thrown at v3/crates/plan/src/query/arguments.rs:421

    FieldMappingNotFound {
        object_type_name: Qualified<CustomTypeName>,
        field_name: FieldName,
    },
    #[error(
        "no field definition found for field '{field_name}' of object type '{object_type_name}'"
    )]
    FieldDefinitionNotFound {
        object_type_name: Qualified<CustomTypeName>,
        field_name: FieldName,
    },
    #[error(
        "no data connector field mapping found for field '{field_name}' of object type '{object_type_name}'"
    )]
    DataConnectorFieldMappingNotFound {
        object_type_name: Qualified<CustomTypeName>,
        field_name: FieldName,
    },
    #[error("{0}")]
    MapFieldNamesError(#[from] MapFieldNamesError),
}

impl TraceableError for ArgumentPresetExecutionError {
    fn visibility(&self) -> ErrorVisibility {
        match self {
            Self::MapFieldNamesError(error) => error.visibility(),
            Self::ModelSourceNotFound { .. }
            | Self::ModelArgumentPresetsNotFound { .. }
            | Self::CommandSourceNotFound { .. }
            | Self::CommandArgumentPresetsNotFound { .. }
            | Self::TypeMappingNotFound { .. }
            | Self::FieldMappingNotFound { .. }
            | Self::FieldDefinitionNotFound { .. }
            | Self::ArgumentMappingNotFound { .. }
            | Self::DataConnectorFieldMappingNotFound { .. } => ErrorVisibility::Internal,
            Self::GotBoolean { .. }
            | Self::GotArray { .. }

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Read the wrapped '{0}' message — it names the actual failing field or mapping
  2. Fix the underlying field name/mapping issue it identifies (usually a rename or missing mapping)
  3. Regenerate field mappings from the current connector schema if names drifted
  4. Run metadata validation to surface related mapping problems at once
Defensive patterns

Strategy: try-catch

Type guard

fn is_map_field_names_error(e: &ArgumentPresetExecutionError) -> bool {
    matches!(e, ArgumentPresetExecutionError::MapFieldNamesError(_))
}

Try / catch

match result {
    Err(PlanError::Arguments(ArgumentPresetExecutionError::MapFieldNamesError(inner))) => {
        log::warn!("field name mapping failed: {inner}");
        bad_request(inner.to_string());
    }
    other => other,
}

Prevention

When it happens

Trigger: Any field-name mapping operation during planning that fails internally — the inner MapFieldNamesError carries the specifics, typically an unrecognized or ambiguous field name during batch field name resolution.

Common situations: Bulk field name mapping after connector schema changes; duplicate or case-colliding field names; partial metadata where some names cannot be resolved. Because this wraps another error, the fix depends on the inner message.

Related errors


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