hasura/graphql-engine · error · ObjectTypesIssue

Multiple {function_name} extraction functions found for type

Error message

Multiple {function_name} extraction functions found for type {scalar_type} in data connector {data_connector_name}

What it means

More than one extraction function with the same function_name is declared for the same scalar type in one data connector. Like operators and aggregates, extraction function names must be unique per scalar type per connector.

Source

Thrown at v3/crates/metadata-resolve/src/stages/object_types/types.rs:458

#[derive(Debug, thiserror::Error)]
pub enum ObjectTypesIssue {
    #[error(
        "Multiple {operator_name} operators found for type {scalar_type} in data connector {data_connector_name}"
    )]
    DuplicateOperatorsDefined {
        scalar_type: ndc_models::ScalarTypeName,
        operator_name: String,
        data_connector_name: Qualified<DataConnectorName>,
    },
    #[error(
        "Multiple {function_name} aggregate functions found for type {scalar_type} in data connector {data_connector_name}"
    )]
    DuplicateAggregateFunctionsDefined {
        scalar_type: ndc_models::ScalarTypeName,
        function_name: String,
        data_connector_name: Qualified<DataConnectorName>,
    },
    #[error(
        "Multiple {function_name} extraction functions found for type {scalar_type} in data connector {data_connector_name}"
    )]
    DuplicateExtractionFunctionsDefined {
        scalar_type: ndc_models::ScalarTypeName,
        function_name: String,
        data_connector_name: Qualified<DataConnectorName>,
    },
    #[error(
        "the field {field_name:} in {type_name:} should have the type {expected:} for data connector {data_connector:} but the field has type {provided:}"
    )]
    FieldTypeMismatch {
        field_name: FieldName,
        type_name: Qualified<CustomTypeName>,
        data_connector: Qualified<DataConnectorName>,
        expected: QualifiedTypeName,
        provided: QualifiedTypeName,
    },
    #[error(

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Find the duplicate extraction function entries for the scalar type in the connector's collection and remove one
  2. Rename the custom extraction function so it does not collide
  3. Update the connector if it is the source of the duplication
Defensive patterns

Strategy: validation

Validate before calling

const seen = new Set();
for (const fn of extractionFunctions) {
  const key = `${fn.scalar_type}/${fn.function_name}`;
  if (seen.has(key)) throw new Error(`Duplicate extraction function ${key}`);
  seen.add(key);
}

Prevention

When it happens

Trigger: Metadata or connector schema defines two date/time (or similar) extraction functions with the same name for one scalar type in the same connector.

Common situations: Custom extraction functions added manually that clash with connector defaults; metadata copy-paste; connector schema change introducing duplicates.

Related errors


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