{"record":{"id":"929c184fc03735cc","repo":"hasura/graphql-engine","slug":"a-graphql-section-is-defined-in-boolean-expression-929c18","errorCode":null,"errorMessage":"a graphql section is defined in boolean expression type '{type_name}' but it will not appear in the GraphQL API unless the is_null operator field name is also configured in the GraphqlConfig in query.filterInputConfig","messagePattern":"a graphql section is defined in boolean expression type '(.+?)' but it will not appear in the GraphQL API unless the is_null operator field name is also configured in the GraphqlConfig in query\\.filterInputConfig","errorType":"validation","errorClass":"ScalarBooleanExpressionTypeIssue","httpStatus":null,"severity":"warning","filePath":"v3/crates/metadata-resolve/src/stages/scalar_boolean_expressions/error.rs","lineNumber":74,"sourceCode":"        None\n    }\n}\n\n#[derive(Debug, thiserror::Error)]\npub enum ScalarBooleanExpressionTypeIssue {\n    // Because the GraphqlConfig's filterInputConfig requires all properties to be set, the effective meaning of not\n    // having the is_null operator set is that the entire boolean expression cannot be rendered in GraphQL and so we\n    // communicate that effect here, even though this issue is only about logical operators specifically.\n    #[error(\n        \"a graphql section is defined in boolean expression type '{type_name}' but it will not appear in the GraphQL API unless logical operator field names are also configured in the GraphqlConfig in query.filterInputConfig\"\n    )]\n    MissingLogicalOperatorNamesInGraphqlConfig {\n        type_name: Qualified<CustomTypeName>,\n    },\n    // Because the GraphqlConfig's filterInputConfig requires all properties to be set, the effective meaning of not\n    // having the is_null operator set is that the entire boolean expression cannot be rendered in GraphQL and so we\n    // communicate that effect here, even though this issue is only about the is null operator specifically.\n    #[error(\n        \"a graphql section is defined in boolean expression type '{type_name}' but it will not appear in the GraphQL API unless the is_null operator field name is also configured in the GraphqlConfig in query.filterInputConfig\"\n    )]\n    MissingIsNullOperatorNameInGraphqlConfig {\n        type_name: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"the boolean expression '{type_name}' has enabled logical operators, but they will not appear in the GraphQL API unless you update your CompatibilityConfig date to at least 2024-11-26\"\n    )]\n    LogicalOperatorsUnavailable {\n        type_name: Qualified<CustomTypeName>,\n    },\n    #[error(\n        \"the boolean expression '{type_name}' has a GraphQL field name conflict between the '{name}' {name_source_1} and the '{name}' {name_source_2}. One of these will need to be renamed.\"\n    )]\n    GraphqlFieldNameConflict {\n        type_name: Qualified<CustomTypeName>,\n        name: String,\n        name_source_1: FieldNameSource,","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/v3/crates/metadata-resolve/src/stages/scalar_boolean_expressions/error.rs#L56-L92","documentation":"A warning-level issue: the boolean expression type has a graphql section, but the is_null operator field name is missing from GraphqlConfig's query.filterInputConfig, and since all properties must be set, the boolean expression will not appear in the GraphQL API.","triggerScenarios":"Declaring a boolean expression type with a graphql block while GraphqlConfig query.filterInputConfig sets logical operators but omits is_null.","commonSituations":"Configuring only logical operator names and forgetting the is_null field name in filterInputConfig.","solutions":["Add the is_null operator field name to GraphqlConfig query.filterInputConfig","Ensure all filterInputConfig properties are set consistently"],"exampleFix":"// before\nquery:\n  filterInputConfig:\n    logical_operator_names:\n      and: \"_and\"\n      or: \"_or\"\n      not: \"_not\"\n// after\nquery:\n  filterInputConfig:\n    is_null: \"is_null\"\n    logical_operator_names:\n      and: \"_and\"\n      or: \"_or\"\n      not: \"_not\"","handlingStrategy":"validation","validationCode":"if graphql_config.filter_input_config.is_null.is_none() {\n    return Err(\"filterInputConfig missing is_null name\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat filterInputConfig as all-or-nothing; set every field in one commit"],"tags":["graphql","config","boolean-expression","metadata"],"backgroundTag":"incomplete-config-warning","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}