User Tools

Site Tools


devel:update-database-schema

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
devel:update-database-schema [2012/09/14 13:07]
miconda
devel:update-database-schema [2012/09/14 13:17]
miconda
Line 9: Line 9:
 </code> </code>
  
-Each table is defined in the file tablename.xml.+Each table is defined in the file tablename.xml. For example, the definition of table domain is in file: 
 + 
 +<code> 
 +lib/srdb1/schema/domain.xml 
 +</code>
  
 Changing the database schema (adding new tables, adding/removing/updating columns) must be done creating or updating the XML files. Changing the database schema (adding new tables, adding/removing/updating columns) must be done creating or updating the XML files.
Line 24: Line 28:
   * adding the table to be part of a specific group of tables. If the table is used by a module that uses other tables, all of them have to be in the same group. Tables group definitions are stored in the files kamailio-groupname.xml . It is common to use the module name as the group name.   * adding the table to be part of a specific group of tables. If the table is used by a module that uses other tables, all of them have to be in the same group. Tables group definitions are stored in the files kamailio-groupname.xml . It is common to use the module name as the group name.
   * adding the table to kamctl and kamdbctl tools for creation   * adding the table to kamctl and kamdbctl tools for creation
 +
 +For example, the group of the tables used by module domain is specified in file:
 +
 +<code>
 +lib/srdb1/schema/kamailio-domain.xml
 +</code>
 +
 +It includes references to two tables: domain and domain_attrs.
  
 If you add a new table, you must add the new files related to it to GIT repository, before committing the changes. If you add a new table, you must add the new files related to it to GIT repository, before committing the changes.
Line 30: Line 42:
   * one for the XML files (they are part of internal library srdb1)   * one for the XML files (they are part of internal library srdb1)
   * one for DB creation scripts (they are part of kamctl tool)   * one for DB creation scripts (they are part of kamctl tool)
 +
 +This brings the benefit of easy backporting, because the commit to xml file is unlikely to create conflicts, changing one file in a group of lines related to same column, so it can be cherry-picked alone. Commits to database creation scripts affects many files and can result in conflicts if new columns were added meanwhile to the development version to that table.
 +
 +If there is a fix that has to be backported, always do it to master branch and then cherry-pick it in the stable branches. With split commits, the typical backport procedure is:
 +  * cherry-pick only the commit to xml files
 +  * regenerated the schema for the stable branch and commit the updates
  
  
devel/update-database-schema.txt · Last modified: 2015/12/04 09:18 by smititelu