Merging new XtraDB releases
Background
Percona used to maintains XtraDB as a patch series against the InnoDB plugin. This affected how we started merging XtraDB in.
Now Percona maintains a normal source repository on launchpad (lp:percona-server
). But we continue to merge the old way to preserve the history of our changes.
Merging
There used to be a lp:percona-xtradb
tree, that we were merging from as:
bzr merge lp:percona-xtradb
Now we have to maintain our own XtraDB-only repository to merge from. It is lp:~maria-captains/maria/xtradb-mergetree-5.5
. To merge new XtraDB version into MariaDB proceed as follows:
- branch
lp:~maria-captains/maria/xtradb-mergetree-5.5
- download the latest Percona-Server release source tarball from http://www.percona.com/downloads/
- delete all files in your branched
xtradb-mergetree-5.5
directory - put there the contents of the
storage/innobase
directory inside the Percona-Server sources - add new files with
bzr add
, commit (use the Percona-Server source tarball name as a changeset comment), push. Do not change XtraDB sources in any way! - Now, in MariaDB-5.5 repository you can merge from
lp:~maria-captains/maria/xtradb-mergetree-5.5
Due to the way that various files have been replaced or moved about between XtraDB and MariaDB, this will often result in a number of conflicts that need to be resolved manually.
While the number of conflicts that bzr gives when merging is annoying, it is important that we actually get these conflicts. This prevents important changes from getting lost accidentally. So resist the temptation to leave unused files hanging about to avoid future conflicts; it will cause more problems than it solves. Of course, conflicts that can be arranged to be handled automatically without manual intervention is good, and eg. renaming new files into the proper place to achieve this is appropriate.
With respect to the test suite, XtraDB is updated with result files etc. to match a given release of MySQL. So it is often very beneficial (in terms of time saved debugging test failures) to coordinate merge of XtraDB with the merge of the associated MySQL version.
Update XtraDB version
When merging, the XtraDB version should be set correctly in the file
storage/xtradb/include/univ.i
— Percona developers very often forget to update it.
#ifndef PERCONA_INNODB_VERSION #define PERCONA_INNODB_VERSION 31.1 #endif