id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 32252 Using __isnull=True on a KeyTransform should not match JSON null on SQLite and Oracle Sage Abdullah Sage Abdullah "The `KeyTransformIsNull` lookup borrows the logic from `HasKey` for `isnull=False`, which is correct. If `isnull=True`, the query should only match objects that do not have the key. The query is correct for MariaDB, MySQL, and PostgreSQL. However, on SQLite and Oracle, the query also matches objects that have the key with the value `null`, which is incorrect. To confirm, edit `tests.model_fields.test_jsonfield.TestQuerying.test_isnull_key`. For the first assertion, change {{{ self.assertSequenceEqual( NullableJSONModel.objects.filter(value__a__isnull=True), self.objs[:3] + self.objs[5:], ) }}} to {{{ self.assertSequenceEqual( NullableJSONModel.objects.filter(value__j__isnull=True), self.objs[:4] + self.objs[5:], ) }}} The test previously only checks with `value__a` which could not catch this behavior because the value is not JSON `null`." Bug closed Database layer (models, ORM) 3.1 Release blocker fixed Ready for checkin 1 0 0 0 0 0