Uninstalling an E-Maj extension from a database
To uninstall E-Maj from a database, the user must log on this database with psql, as a superuser.
If the drop of the emaj_adm and emaj_viewer roles is desirable, rights on them given to other roles must be previously deleted, using REVOKE SQL verbs.
REVOKE emaj_adm FROM <role.or.roles.list>;
REVOKE emaj_viewer FROM <role.or.roles.list>;
If these emaj_adm and emaj_viewer roles own access rights on other application objects, these rights must be suppressed too, before starting the uninstall operation.
Allthough E-Maj is usualy installed with a CREATE EXTENSION statement, it cannot be uninstalled with a simple DROP EXTENSION statement. An event trigger blocks such a statement.
To uninstall E-Maj, just execute the emaj_uninstall.sql delivered script.
This script performs the following steps:
it executes the cleaning functions created by demo or test scripts, if they exist,
it stops the tables groups in LOGGING state, if any,
it drops the tables groups, removing in particular the triggers on application tables,
it drops the extension and the main emaj schema,
it drops roles emaj_adm and emaj_viewer if they are not linked to any objects in the current database or in other databases of the instance.
The uninstallation script execution displays:
$ psql ... -f sql/emaj_uninstall.sql
>>> Starting E-Maj uninstallation procedure...
psql:sql/emaj_uninstall.sql:203: WARNING: emaj_uninstall: emaj_adm and emaj_viewer roles have been dropped.
>>> E-maj successfully uninstalled from this database