summaryrefslogtreecommitdiff
path: root/odoo/tools/sql.py
AgeCommit message (Collapse)Author
2018-08-16[RFR] Hide implementation of constraint definition storage, courtesy of ↵Stefan Rijnhart
Raphael Collet
2018-08-16[IMP] Store the original constraint definition as a comment on the constraintStefan Rijnhart
and use it to determine if the constraint definition was changed. This prevents endless readding of constraints that are reformatted by postgresql in an unrecognizable way (in which e.g. "CHECK (credit*debit=0)" becomes "CHECK ((credit * debit) = 0::numeric)")
2017-09-12[MERGE] forward port branch saas-17 up to d08b4407be3Christophe Simonis
2017-09-11[FIX] core: only check table existance in public schemaChristophe Simonis
This allow the use of tables defined in other schemas, like `domains`, already defined in `information_schema`. See #16651
2017-09-06[MERGE] forward port branch saas-17 up to b8dd34fcbb8Christophe Simonis
2017-09-06[MERGE] forward port branch saas-16 up to 64d56995e04Christophe Simonis
2017-09-04[MERGE] forward port branch saas-15 up to 4d4d75709dcChristophe Simonis
2017-09-04[FIX] core: also consider materialized views as existingChristophe Simonis
At the end of registry loading, a check is made on every model to verify its table exists in the database. Materialized views weren't considered during this check. Note that we can't use `information_schema` views in this case because it does include materialized views on purpose [1]. Forward-port of 4ca6945256f9353ab7f9633552872fd1fa7fdaca [1] http://www.postgresql-archive.org/Materialized-views-don-t-show-up-in-information-schema-tp5822643p5822644.html
2017-08-07[IMP] sql: harvest less information from pg's information_schema (Fixes #18490)Fabien Meghazi
Avoid `SELECT *` on `information_schema.columns` because specific access right restrictions in the context of shared hosting (Heroku, OVH, ...) might prevent a postgres user to read this field.
2017-07-10[IMP] registry: check existence of tables with a single SQL queryRaphael Collet
2017-07-05[FIX] sql: Do no consider a table exists if this is a schema table/viewDenis Ledoux
Before this revision, this is not possible to create a model with a `_table` set to `domains`, for instance.
2017-05-03[REF] registry: always perform registry/cache signaling at the end of requestRaphael Collet
Problem: the update of custom models/fields is not fully transactional, and may potentially lead to an inconsistent database. An other problem is creating two custom fields by writing on a model: if the second one fails, the first one has been committed without notice. Retrying the request will give an unexpected error (duplicate field name). Solution: never commit in the middle of a request. If the changes have an impact on the registry, then mark it as invalid (with a new flag), and signal registry invalidation after everything has been committed. If the request fails, reset the registry. Both registry and cache invalidation are handled the same way.
2017-04-28[FIX] tools.sql: correct queries used to rename fieldChristophe Simonis
2017-03-14[FIX] tools/sql: column name in `fix_foreign_key`Raphael Collet
2017-02-22[IMP] tools: use `information_schema` instead of pg-specific tablesRaphael Collet
2017-02-22[REF] models: refactoring of foreign keysRaphael Collet
2017-02-22[REF] tools: add functions for SQL schema manipulationRaphael Collet
This helps factoring out a certain number of similar queries, and removing a few methods from `BaseModel`.
2016-09-16[IMP] models: change API of `_group_by_full`Raphael Collet
The dictionary `_group_by_full` is replaced by a field parameter `group_expand` that is assigned to the method name. The API of the method has been simplified as well: @api.multi def _read_group_stage_ids(self, domain, read_group_order=None, access_rights_uid=None): # the stages are given by self.ids (wrong model); # read_group_order is the order given to read_group() on self; # return stages.name_get(), {stage.id: stage.fold) _group_by_full = {'stage_id': _read_group_stage_ids} is now written: stage_id = fields.Many2one(..., group_expand='_read_group_stage_ids') @api.model def _read_group_stage_ids(self, stages, domain, order): # stages is a recordset; # order is the order to use on stages' model; # return a recordset which is a superset of stages
2016-09-02[REF] openerp: move `openerp` to `odoo`Raphael Collet