Here you can see the full list of changes between each PostgreSQL-Audit release.
- Fix package name to be in lowercase in
pyproject.toml
.
- Use the
pyproject.toml
standard to specify project metadata, dependencies and tool configuration. Use Hatch to build the project. - Make the documentation buildable again.
- Fix some grammar and formatting issues in the documentation
- Refactor
VersioningManager.audit_table()
method and extract the query building logic into a new methodVersioningManager.build_audit_table_query()
. - Fix a deprecation warning about
sqlalchemy.orm.mapper()
symbol usage on SQLAlchemy 2.0.
- BREAKING CHANGE: Drop support for PostgreSQL 9.5, 9.6 and 10, which have reached end of their lives.
- Add support for SQLAlchemy 2.0
- Remove unused
VersioningManager.cached_ddls
attribute - Removed redundant statement caching from
VersioningManager.audit_table
- BREAKING CHANGE:
flask.activity_values
doesn't require request context (#75, courtesy of tvuotila) - BREAKING CHANGE: Drop support for Python 3.7
- Fix some SQLAlchemy 2.0 deprecation warnings (#76, courtesy of tchapi)
- Remove unnecessary checks for Flask request context
- Remove unnecessary
__future__
import
- Fix compatibility with Flask-SQLAlchemy<3.0
- BREAKING CHANGE: Drop support for Python 3.6, which reached the end of its life on December 23rd, 2021.
- BREAKING CHANGE: Drop support for SQLAlchemy 1.1, 1.2 and 1.3, which are no longer maintained.
- Fix
SAWarning
from SQLAlchemy 1.4 about missinginherit_cache
attribute - Fix deprecation warnings from Flask 2.2 about
_app_ctx_stack.top
and_request_ctx_stack.top
usage. - Add support for Flask-SQLAlchemy 3.0
- Add support for Python 3.10 and 3.11
- Add SQLAlchemy 1.4 support
- Add Python 3.9 support
- BREAKING CHANGE: Drop Python 2.7 and 3.5 support. Python 2.7 reached the end of its life on January 1st, 2020 and Python 3.5 on September 13th, 2020.
- Specify the column names when inserting new audit rows (#49, courtesy of quantus)
- Added nesting of activity values (#48, courtesy of tvuotila)
- Made disable context manager use a finally block (#42, courtesy of ElPicador)
- Added commits missing from 0.12.0
- Create only single transaction per database transaction (#37)
- Fixed
postgresql_audit.enable_versioning
parameter to work in situations where the transaction is rolled back and this parameter is set by the rollback operation as an empty string.
- Changed the use of
session_replication_role
topostgresql_audit.enable_versioning
parameter. This change was made in order to allow temporarly disable versioning in environments such as Heroku where changingsession_replication_role
configuration setting even on transaction level is impossible. (#31) - Drop and create
jsonb_substract
function instead of replacing it (#29, courtesy of AdamSelene)
- Added support for PostgreSQL 10 statement level trigger transition tables. Huge performance boost for heavy inserts.
- Force timestamps to use UTC as timezone (#30, courtesy of quantus)
- Dropped Python 3.3 support
- Added PostgreSQL 10 support
- Fixed
jsonb_subtract
(jsonb - jsonb) support for arrays as values
- Added different PostgreSQL versions (9.4, 9.5 and 9.6) to test matrix
- Defined activity
old_data
andchanged_data
defaults as empty JSONBs - Made
Activity.data
use new 9.6 JSONBconcat
operator. On PostgreSQL 9.5 and 9.4 this still uses fallback function.
- Allowed passing
transaction_cls
parameter toactivity_base
function (#23, pull request courtesy jmagnusson)
- Fixed Flask ExtDeprecationWarnings (#17, courtesy of jpvanhal)
- Added a workaround for SQLAlchemy issue #3778
- Fixed
modified_columns
method to work with synonym properties
- Added
transaction
table - Moved
actor_id
andclient_addr
columns totransaction
table
- Added support for PostgreSQL 9.5. Certain JSONB subtraction operators are only created if used PostgreSQL version is below 9.5.
- Added
rename_table
migration function
- Added support for activity schema configuration (#4, courtesy of jmagnusson)
- Avoid empty string INET value with Flask
VersioningManager
(#10, courtesy of asfaltboy)
- Fixed migration helpers to work with alembic operations object
- Added
alter_column
migration helper function - Added
change_column_name
migration helper function - Added flake8 checks
- Added isort checks
- Added
jsonb_change_key_name
function expression - Added
jsonb
substraction operator to support text data type - Added
remove_column
migration helper
- Added
data
hybrid_property
forActivity
model. This property makes it easy to find all changes made in given record.
- Made
client_addr
overridable - Removed
client_port
column fromactivity
table (doesn't make sense in web environment)
- Added default value for
audit_table
exclude parameter - Changed
row_data
andchanged_fields
types from HSTORE to JSONB - Removed
object_id
column fromactivity
table - Renamed
row_data
toold_data
andchanged_fields
tochanged_data
- Added Flask extension
- Rewrote activity values setting. Now values are set after the flush phase occurs.
- Added explicit committing of
audit_table
ddl statements
- Made
actor_id
andactor
properties ofActivity
model configured during mapper configuration phase
- Added
audit_table
function
- Added
__versioned__
configuration parameter for models - Added customizable column exclusion support for versioned models
- Removed foreign key from
actor_id
inActivity
model
- Added support for callables as activity values
- Changed composite primary key separator from ',' to '|'
- Fixed pypi setup
- Made
actor
class andactor_id
column customizable
- Made all file reads use absolute paths
- Removed all default indexes from activity table
- Added
__repr__
for activity classes - Removed session user name column from activity table
- Removed application name column from activity table
- Initial public release