It has always been a best effort until the v13 to have false as default value for boolean field. Until v13: https://github.com/odoo/odoo/blob/12.0/odoo/models.py#L3645 During ORM refactoring in v13 it has been replaced by a default value in sql From v13: https://github.com/odoo/odoo/blob/13.0/odoo/tools/sql.py#L79 But with a typo since columntype for boolean is bool and not boolean. What's mean that in v13 we have a lot of null value for boolean (~=False) In all cases, we try to be aware and check Falsy boolean with 'null or False' (https://github.com/odoo/odoo/blob/13.0/odoo/osv/expression.py#L1230) So we should do the same when we write pure sql in method bypassing the ORM. closes odoo/odoo#53391 closes odoo/odoo#54458 Related: odoo/enterprise#11319 Related: odoo/enterprise#11838 X-original-commit: 118c9f6aafd423f415b2bbfcf8a9cfcd676d9b92 Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>