I don't think this was discussed on the mailing list yet.

The question is how do we upgrade existing database(s) (pre multi-product) to multi-product enabled one and how to migrate existing data to a new schema.

Upgrade that's been implemented as part of the #288 currently does the following:

1. adds 'default' product
This is the product to which all tickets that don't have product set are migrated. As there won't be any global tickets, each ticket needs to be in a product, so this is where all tickets w/o product set will end up after the upgrade. The prefix, name and description are currently set to 'default', 'Default' and 'Default product' respectively. Open question remains what happens if there's a product with the same name already defined in the database. Any suggestions?

2. migrates tickets w/o the product set to the 'default' product

3. copies data from enum, component, milestone, version, permission and wiki (all 'product enabled' tables) to temporary tables

4. drops old tables (listed in step 3) - to be replaced by product enabled schema in step 5

5. creates new, 'product enabled' tables (list from step 3) with added 'product' column

6. populates product enabled tables created in step 5 with data from step 3 for each defined product (including default one added in step 1) This in effect multiplies product enabled resources for each defined product. This is required to keep the consistency across different products as tickets might reference any resource from previously global tables. There is one exception though, for permission table the data from the temporary table is also populated into the global scope (empty product prefix).

7. drops old (temporary) tables

After the process the database ends up with:
- upgraded schema for enum, component, milestone, version, permission and wiki tables
- new 'default' product
- tickets that were not assigned to the product prior to database upgrade are migrated to the new default product - resources from previously global scope are multiplied for each defined product

Any comments/suggestions on this?

Cheers,
Jure


On 2/20/13 11:45 AM, Apache Bloodhound wrote:
#406: Database upgrade to multiproduct
-----------------------------------+------------------
  Reporter:  jure                   |      Owner:  jure
      Type:  defect                 |     Status:  new
  Priority:  major                  |  Milestone:
Component:  multiproduct           |    Version:
  Keywords:  bep-0003 multiproduct  |
-----------------------------------+------------------
  Implement database upgrade from non multiproduct enabled database to
  multiproduct enabled one.


Reply via email to