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_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 TABLE or
ALTER TABLE ... DROP COLUMN event occurs (at ddl_command_start).
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 AS or
SELECT INTO will only fire a trigger if it has been enabled for the schema.