{"record":{"id":"44c2cda427b337c0","repo":"hasura/graphql-engine","slug":"model-model-has-source-data-connector-model-da","errorCode":null,"errorMessage":"Model {model:} has source data connector {model_data_connector:} but its filter expression type {filter_expression_type:} is backed by data connector {filter_expression_data_connector:}","messagePattern":"Model (.+?) has source data connector (.+?) but its filter expression type (.+?) is backed by data connector (.+?)","errorType":"validation","errorClass":"BooleanExpressionError::DifferentDataConnectorInFilterExpression","httpStatus":null,"severity":"error","filePath":"v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs","lineNumber":171,"sourceCode":"    FieldLevelComparisonOperatorConfigurationNotSupported,\n\n    #[error(\n        \"Field level comparison operator configuration is not fully supported yet. Please add all fields in filterable_fields.\"\n    )]\n    FieldLevelComparisonOperatorNeedsAllFields,\n\n    #[error(\"a source must be defined for model {model:} in order to use filter expressions\")]\n    CannotUseFilterExpressionsWithoutSource { model: Qualified<ModelName> },\n\n    #[error(\n        \"Target model {model_name:} not found, referenced in relationship {relationship_name:}\"\n    )]\n    TargetModelNotFound {\n        relationship_name: RelationshipName,\n        model_name: Qualified<ModelName>,\n    },\n\n    #[error(\n        \"Model {model:} has source data connector {model_data_connector:} but its filter expression type {filter_expression_type:} is backed by data connector {filter_expression_data_connector:}\"\n    )]\n    DifferentDataConnectorInFilterExpression {\n        model: Qualified<ModelName>,\n        model_data_connector: Qualified<DataConnectorName>,\n        filter_expression_type: Qualified<CustomTypeName>,\n        filter_expression_data_connector: Qualified<DataConnectorName>,\n    },\n    #[error(\n        \"Model {model:} has source data connector object type {model_data_connector_object_type:} but its filter expression type {filter_expression_type:} is backed by data connector {filter_expression_data_connector_object_type:}\"\n    )]\n    DifferentDataConnectorObjectTypeInFilterExpression {\n        model: Qualified<ModelName>,\n        model_data_connector_object_type: DataConnectorObjectType,\n        filter_expression_type: Qualified<CustomTypeName>,\n        filter_expression_data_connector_object_type: DataConnectorObjectType,\n    },\n","sourceCodeStart":153,"sourceCodeEnd":189,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/stages/boolean_expressions/error.rs#L153-L189","documentation":"A model's filter expression type is resolved against a different data connector than the model's own source connector. Boolean expression types are connector-specific; the filter type of a model must be backed by the same data connector as the model's source.","triggerScenarios":"Assigning a booleanExpressionType to a model whose source uses connector A while the boolean expression type's underlying object type was created for connector B (e.g. mixing a Postgres model with a filter type generated for a ClickHouse connector).","commonSituations":"Copying a boolean expression type from another connector's metadata; changing a model's source connector without regenerating its boolean expression types; multi-connector projects with similarly named filter types.","solutions":["Point the model at a boolean expression type generated for the model's actual data connector","Or change the model's source to the connector the boolean expression type is backed by"],"exampleFix":"// before\nAlbum:\n  source: { dataConnectorName: postgres, table: albums }\n  booleanExpressionType: music.ClickHouse_Album_bool_exp\n// after\nAlbum:\n  source: { dataConnectorName: postgres, table: albums }\n  booleanExpressionType: music.Postgres_Album_bool_exp","handlingStrategy":"validation","validationCode":"const modelConnector = model.source.dataConnectorName;\nif (connectorOf(boolExpType) !== modelConnector) {\n  fail(`boolean expression type connector ${connectorOf(boolExpType)} != model connector ${modelConnector}`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Generate boolean expression types from the same connector build as the model","Never copy filter types between connector projects","When changing a model's connector, regenerate its boolean expression types"],"tags":["hasura","data-connector","boolean-expression","connector-mismatch"],"backgroundTag":"connector-configuration-mismatch","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}