Recognises nulls left to chance in a check predicate
A predicate that evaluates to UNKNOWN for nulls, where nobody decided whether a null passes. A CHECK passes UNKNOWN; a DQ row predicate fails it; a violation query written as WHERE NOT (expr) silently drops it. And NOT IN against a subquery that returns a null matches nothing.
Can AI do this?
People still lead Few or none of the tested AI models showed they master this. 0 of 4 models in the current benchmark master it.
| Model | Tier | Probability of mastery | Status |
|---|---|---|---|
| gemini-4-argon | Flagship | 36% | Not shown |
| gemini-3.1-pro-preview* | Flagship | 100% | Mastered |
| gpt-6-astra* | Flagship | 100% | Mastered |
| claude-fable-5-1* | Flagship | 100% | Mastered |
| gemini-3.8-flash* | Mid tier | 100% | Mastered |
| gpt-6.1-sol* | Mid tier | 99% | Mastered |
| claude-sonnet-5-5* | Mid tier | 100% | Mastered |
| gemini-3.5-flash-lite | Low cost | 43% | Not shown |
| gpt-6-luna | Low cost | 45% | Not shown |
| claude-haiku-5-5 | Low cost | 81% | Not shown |
* From the earlier benchmark of 2026-10: 10 data-modelling test tasks, 3 runs per task, graded by claude-opus-5-5. These models have not taken the current 123 tasks yet; the two methods differ, so compare their figures with care. They are left out of the “most models” counts and the best-model picks.
Mastered means a probability of at least 90% that the model has this knobit, estimated from its graded answers. “Not shown” means the answers do not settle it either way. How the models are tested.
What it looks like in practice
Expected result: The predicate and the explicit null decision
How it is assessed: Flags the deficient case and passes the acceptable one. Deficient: Copied from the CHECK: interest_rate_type_code IN ('FIX','VAR') on an optional column — every current account with no rate type fails. Or WHERE account_currency_code NOT IN (SELECT currency_code FROM ref_currency) with one null code in the reference table: no violation ever found Acceptable: interest_rate_type_code IS NULL OR interest_rate_type_code IN (...) where null is allowed, and a separate completeness check where it is not; NOT EXISTS instead of NOT IN
Also known as: Nulls treated by accident (data quality rule)
Related knobits
Builds on
All 30 knobits of Derive data quality rules.
Source: Review checklist 03-dq-rules (data-quality), row 14; ISO 9075; Codd 1979; formerly data-modelling K-714