Database Schema Changes


Database Schema Changes

Quick notes on making database schema changes.

 


 

These notes are about making changes to the core Revive Adserver database schema. If you are planning on making changes to the core schema to support a pull request for Revive Adserver, it is strongly recommended that you discuss the changes with the core development team first; core database schema changes are unlikely to be accepted without prior agreement.

 

  • Check out Revive Adserver from GitHub
  • Install Revive Adserver from the checkout
  • Ensure that the following directories and all files within can be written to by the web server:
    • revive-adserver/etc/
    • revive-adserver/lib/max/Dal/DataObjects/
  • Use a browser to go to Revive Adserver's /www/devel directory
  • Click on Schemas > Schema Editor
  • Ensure that the "tables_core.xml" schema is being used
  • Copy the current final schema to transitional
  • Edit the schema
  • Review the changes & make final; ensure a proper comment for the reason for the schema change is used
  • Check all generated files are present and correct:
    • revive-adserver/etc/tables_core.xml changed as expected
    • New revive-adserver/etc/changes/changes_tables_core_XXX.xml created and contains constructive/destructive changes as expected
    • New revive-adserver/etc/changes/schema_tables_core_XXX.xml created and identical to revive-adserver/etc/tables_core.xml
    • New revive-adserver/etc/changes/migration_tables_core_XXX.php created
    • New revive_adserver/etc/changes/schema_tables_core_XXX.xml differs from previous version as expected, and matching changes seen in revive-adserver/etc/tables_core.xml
    • Appropriate table file(s) created/updated/removed in revive-adserver/lib/max/Dal/DataObjects
    • Appropriate table definition(s) created/updated/removed in revive-adserver/lib/max/Dal/DataObjects/db_schema.ini
  • Manually update the revive-adserver/etc/changes/migration_tables_core_XXX.php file if required to manage data migrations required for the schema change(s)
  • Create upgrade package:
    • Manually create an upgrade file in revive-adserver/etc/changes/openads_upgrade_X.X.X-rcX.xml with an appropriate version number for the next release
    • Edit the file to include the required details of the database schema change to be applied for the upgrade
    • Use a browser to go to Revive Adserver's /www/devel directory
    • Click on Upgrade Packages Array > OpenX Core
  • Check that the revive-adserver/etc/changes/openads_upgrade_array.txt has been updated to include the new upgrade package
  • Perform an upgrade and check the database changes are applied
  • Perform an install and check the database is created as expected
  • Run the test suit (ignore test failures for tests relating to the binary caches for the various XML files for the schema) 
  • Commit

 

The post-commit hooks should automatically re-generate all required binary caches for the various XML files for the schema.

If this doesn't happen, the ant task to re-generate the cache files is:

ant generate-xml-cache