Contents

Since v0.3 pgMemento supports DDL logging to capture schema changes. This is important for restoring former table or database states (see restore chapter). The two tables audit_table_log and audit_column_log in the pgMemento schema provide information in which range of transactions the audited tables and their columns exist. After a table is altered or dropped an event trigger is fired to compare the recent state (at ddl_command_end) with the logs. pgMemento also saves data of all rows before a DROP SCHEMA, DROP TABLE or ALTER TABLE ... DROP COLUMN event occurs (at ddl_command_start).

For ALTER TABLE ... ALTER COLUMN events data is only logged either if the data type is changed using an explicit transformation between data types with the signal word USING or if the collation is changed. Logs are not needed if altering the type worked without an explicit cast definition because it means that the current state of the data could be used along with a former version of the table schema. If tables or columns are renamed it is reflected in the audit tables but data is not logged.

The same applies to ADD COLUMN events if logging new values is disabled. If it's enabled then for each row a new log entry will be inserted into the row_log. If a DEFAULT value is defined the new_data column will have this value.

As noted in Initialize auditing chapter, a DDL command with CREATE TABLE, CREATE TABLE AS or SELECT INTO will only fire a trigger if it has been enabled for the schema.