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
- Read the wrapped '{0}' message — it names the actual failing field or mapping
- Fix the underlying field name/mapping issue it identifies (usually a rename or missing mapping)
- Regenerate field mappings from the current connector schema if names drifted
- 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
- Log and surface the inner message — it pinpoints the offending field
- Keep field name transforms (case, prefixes) centralized and tested
- Re-run field mapping generation whenever the connector schema changes
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
- no data connector field mapping found for field '{field_name
- Model source not found for model '{model_name}'
- Model permissions for model {model_name} not found for role
- command {command_name} does not have a source defined
- type mapping not found for object {object_type_name}
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/08327e16f4bc2c4e.
Report an issue: GitHub.