E-Maj is a PostgreSQL extension that tracks updates on tables sets with rollback capabilities
PLpgSQL Other
Latest commit 6c3c947 Jan 15, 2018 @beaud76 beaud76 In emaj_gen_sql_group() and emaj_gen_sql_groups() functions, process …
…the tables or sequences that have been removed from their group in the requested mark range. They were initialy excluded.
Failed to load latest commit information.
docs Adjust the emaj_snap_log_group() behaviour so that it also processes … Jan 14, 2018
php In the _rlbk_end() function, use the rlbk_is_alter_group_allowed colu… Nov 6, 2017
sql In emaj_gen_sql_group() and emaj_gen_sql_groups() functions, process … Jan 15, 2018
test In emaj_gen_sql_group() and emaj_gen_sql_groups() functions, process … Jan 15, 2018
AUTHORS.md Format the AUTHORS file into markdown and adjust its content. Dec 17, 2017
CHANGES.md In emaj_gen_sql_group() and emaj_gen_sql_groups() functions, process … Jan 15, 2018
LICENSE Upgrade the licence from GPL2 and later to GPL3 and later. Dec 17, 2017
META.json Report the licence change from GPL-2 to GPL-3 into the META.json file. Dec 20, 2017
Makefile Improve the installation procedure when pgxn is used. Create a Makefi… Jul 30, 2017
README.md In the README file, improve the links to the documentation. They now … Dec 9, 2017
emaj.control Register into the emaj.control file that the btree_gist extension is … Oct 3, 2017
tar.index Reference the coming upgrade script into the documentation and the ta… Dec 26, 2017



E-Maj: logs and rollbacks table updates



This software is distributed under the GNU General Public License.


The main goals of E-Maj are:

  • log updates performed on one or several sets of tables.
  • cancel these updates if needed, and reset a tables set to a predefined stable state.

In development environments, it brings a good help in testing application, providing an easy way to rollback all updates generated by programs execution, and replay these processings as many times as needed.

In production environments, it brings a good solution to:

  • keep an history of updates performed on tables to examine them in case of problem
  • set inter-batch savepoints on group of tables,
  • easily "restore" this group of tables at a stable state, without being obliged to stop the cluster,
  • handle several savepoints during batch windows, each of them been usable at any time as "restore point".

It brings a good alternative to the management of several database disk images.

In both environments, being able to examine the history of updates performed on tables can be very helpful in debugging work or for any other purposes.


A detailed documentation can be found here, in English and in French.

How to install and use E-Maj

E-Maj can be installed using the usual method for postgres extensions (ie. CREATE EXTENSION emaj;).

The documentation contains all the detailled information needed to install and use E-Maj.

E-Maj web GUI

Two web GUI tools are available to bring a user friendly E-Maj administration:

  • a plug-in for phpPgAdmin that takes benefit from the plugin architecture brought by phpPgAdmin 5.1+,
  • a stand alone php application, named Emaj_web.

Both tools share the same functionalities regarding the E-Maj usage.

The phpPgAdmin plugin is available on github.

Emaj_web is also available on github.

Their installation and usage are also described in the documentation.


For additional support or bug report, please contact Philippe BEAUDOIN (phb emaj free fr).

Any feedback is welcome, even to just notice you use and appreciate E-Maj ;-)

E-Maj is also available on github (https://github.com/beaud76/emaj)