{"record":{"id":"f7810d6a248d3c75","repo":"hasura/graphql-engine","slug":"the-data-connector-data-connector-name-does-no-f7810d","errorCode":null,"errorMessage":"The data connector '{data_connector_name}' does not support filtering by nested object arrays. The comparable field '{field_name}' within {boolean_expression_type_name}' is of an object array type: {field_type}","messagePattern":"The data connector '(.+?)' does not support filtering by nested object arrays\\. The comparable field '(.+?)' within (.+?)' is of an object array type: (.+?)","errorType":"validation","errorClass":"BooleanExpressionIssue::DataConnectorDoesNotSupportNestedObjectArrayFiltering","httpStatus":null,"severity":"warning","filePath":"v3/crates/metadata-resolve/src/stages/boolean_expressions/types.rs","lineNumber":26,"sourceCode":"    types::error::ContextualError,\n};\nuse graphql_types as ast;\nuse open_dds::models::ModelName;\nuse open_dds::{\n    data_connector::{DataConnectorName, DataConnectorObjectType, DataConnectorOperatorName},\n    relationships::RelationshipName,\n    types::{CustomTypeName, FieldName, OperatorName},\n};\nuse ref_cast::RefCast;\nuse serde::{Deserialize, Serialize};\nuse serde_with::serde_as;\nuse std::collections::{BTreeMap, BTreeSet};\nuse std::fmt::Display;\nuse std::sync::Arc;\n\n#[derive(Debug, thiserror::Error, Clone, PartialEq, Eq)]\npub enum BooleanExpressionIssue {\n    #[error(\n        \"The data connector '{data_connector_name}' does not support filtering by nested object arrays. The comparable field '{field_name}' within {boolean_expression_type_name}' is of an object array type: {field_type}\"\n    )]\n    DataConnectorDoesNotSupportNestedObjectArrayFiltering {\n        data_connector_name: Qualified<DataConnectorName>,\n        boolean_expression_type_name: Qualified<CustomTypeName>,\n        field_name: FieldName,\n        field_type: QualifiedTypeReference,\n    },\n    #[error(\n        \"The data connector '{data_connector_name}' does not support filtering by nested scalar arrays. The comparable field '{field_name}' within '{boolean_expression_type_name}' is of a scalar array type: {field_type}\"\n    )]\n    DataConnectorDoesNotSupportNestedScalarArrayFiltering {\n        data_connector_name: Qualified<DataConnectorName>,\n        boolean_expression_type_name: Qualified<CustomTypeName>,\n        field_name: FieldName,\n        field_type: QualifiedTypeReference,\n    },\n    #[error(","sourceCodeStart":8,"sourceCodeEnd":44,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/stages/boolean_expressions/types.rs#L8-L44","documentation":"Emitted when a comparable field inside a boolean expression type is an object array (array of objects) and the data connector backing the type does not support filtering by nested object arrays.","triggerScenarios":"Declaring a boolean expression type where a comparable field's QualifiedTypeReference resolves to an object array, while the resolved data connector lacks nested object array filter support.","commonSituations":"Marking a list-of-objects field as comparable (e.g. via `comparable: true` in Hasura ND HML); connectors like postgres-native that cannot push down nested array comparisons.","solutions":["Remove the object-array field from the boolean expression's comparable fields","Change the field's type to a scalar array or single object if filtering on it is not required","Use a data connector that supports nested object array filtering, if one exists for your source"],"exampleFix":"// before (HML)\ntypes:\n  Author:\n    boolean_expression_type: AuthorFilter\n    fields:\n      articles: [Article]\n        comparable: true      # object array -> error\n// after\ntypes:\n  Author:\n    boolean_expression_type: AuthorFilter\n    fields:\n      articles: [Article]\n        comparable: false","handlingStrategy":"validation","validationCode":"// Reject object-array comparable fields before resolve\nfor f in &be_type.comparable_fields {\n    if let QualifiedType::Array(inner) = &f.field_type.underlying {\n        if matches!(**inner, QualifiedType::Object(_)) {\n            return Err(format!(\"{} is an object array; not filterable\", f.name));\n        }\n    }\n}","typeGuard":"fn is_object_array(t: &QualifiedTypeReference) -> bool {\n    matches!(t.underlying(), QualifiedType::Array(inner) if matches!(**inner, QualifiedType::Object(_)))\n}","tryCatchPattern":"if let BooleanExpressionIssue::DataConnectorDoesNotSupportNestedObjectArrayFiltering { field_name, .. } = &issue {\n    log::warn!(\"skipping unfilterable field {field_name}\");\n}","preventionTips":["Only mark scalar/relationship fields as comparable","Check connector capability docs before adding array filters"],"tags":["rust","hasura","metadata","boolean-expressions","data-connector","arrays"],"backgroundTag":"unsupported-filter-type","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}