odoo/enterprise#67925
Created by Framework (ORM), Chong Wang (cwg)
Statuses:
- legal/cla: Contributor License Agreement check
- ci/runbot: Odoo Test Suite
- ci/upgrade_enterprise: Test upgrades for enterprise master
- ci/style: Optional style check. Ignore it only if strictly necessary.
- ci/security: Required security check. Can only be ignored by security team.
- ci/l10n: (runtime 1s)
- label
- odoo-dev:master-core-jsonb-company-dependent-cwg
- head
- 733c4ba1fd5558891ffdbc67066c3a3a5938e2f0
- merged
- 1 year ago by Framework (ORM), Chong Wang (cwg)
| odoo/odoo | odoo/enterprise | odoo/upgrade | odoo/upgrade-util | |
|---|---|---|---|---|
| master | #175627 | #67925 | #6366 | #124 |
[IMP] core: jsonb company dependent fields
[IMP] core: jsonb company dependent fields
use jsonb for company dependent fields
1. field type
before: company dependent fields were non-stored and computed
now: company dependent fields are stored fields whose column type is
jsonb with the format like '{"1": val1}'::jsonb
-
fallback
before: fallbacks of company dependent fields were stored in
ir_property.value_xxxWHERE res_id IS NULL
now: fallbacks are stored in ir_default.json_value in the format of
jsonfied write format -
many2one
a. field.ondelete
before: only field.ondelete='set null'
now: support field.ondelete='set null' and field.ondelete='restrict'
b. field.index
before: no index
now: default 'btree_not_null' which index (col IS NOT NULL) for all
NOT NULL rows
c. reference exists
before: checked when get data from ir_property
now: cleaned when ormunlink. As a side effect, if a model is
referenced by a many2one company dependent field, this model
cannot have any field.ondelete='cascade' field. The developer
must override theunlinkmethod to do the logical on delete
cascade in the ORM -
_field_to_sql
before: not supported for company dependent fields
now: can be used by company dependent fields like normal fields to
generate reports