The `pgmemento.audit_column_log` table stores information about audited columns, which is important when restoring previous versions of tuples and tables. It contains the following columns: * `id SERIAL`: Primary Key * `audit_table_id INTEGER NOT NULL`: Foreign Key to `pgmemento.audit_table_log` * `column_name TEXT NOT NULL`: The name of the column * `ordinal_position INTEGER`: The ordinal position within the table * `data_type TEXT`: The column's data type (incl typemods) * `column_default TEXT`: The column's default expression * `not_null BOOLEAN`: A flag to tell, if the column is a NOT NULL column or not * `txid_range numrange`: Stores the transaction IDs when the column has been created and dropped The `txid_range` column behaves in the same way like in the [audit_table_log](https://github.com/pgMemento/pgMemento/wiki/Audit_table_log) table. Lower boundary exclusive, upper boundary inclusive. When a column is ranamed or altered the range for the old version is closed and a new row is inserted. If the table is renamed there will also be new entries for all its columns in the `audit_column_log` because they need to reference to a new ID in `audit_table_log`. To trace different versions of the same column check the `ordinal_position` value. ## Get historic column lists When restoring historic records it's important to know the column name and data type for the requested time / transaction. You can use range operators like `@>` or `&&` to filter for historic columns. pgMemento provides two functions that return a list of column names, data types and ordinal positions. ```sql SELECT column_name, data_type, ordinal_position FROM pgmemento.get_column_list_by_txid(10, 'table_A', 'public'); ``` When querying by a range of transaction IDs you have to use the table's `log_id` as input, as the name could have changed. You can retrieve if from the `audit_table_log` or by using the [audit_table_check](https://github.com/pgMemento/pgMemento/wiki/Audit_table_log#get-a-tables-log_id) function. If some columns have changed by name or data type all the different versions will appear in the result set. To avoid name abiguity a counter is included into the result. The `txid_range` column is returned as well to allow for further filtering. ```sql SELECT column_name, column_count, data_type, ordinal_position, txid_range FROM pgmemento.get_column_list_by_txid_range(1, 10, 1); ```