View Source

Unreleased

[0.6.0] - 2022-10-12

New migration patches: 5

Added

  • Optional tracking of previous data in changes. Set the store_changed_from trigger option.

Changed

  • Added @schema_prefix "carbonite_default" on all schemas. This will enable the manual usage of Repo.insert/2 & friends on transactions without specifying a prefix, when using the default carbonite prefix.

[0.5.0] - 2022-02-25

New migration patches: 4

Switch to normal identity column on transactions

  • The id column on transactions has been replaced with an ordinary autoincrementing integer PK, filled from a sequence. Next to it a new xact_id column continues to store the transaction id (from pg_current_xact_id). Both values used together ensure that, first the id is monotonically increasing and survives a backup restore (see issue #45), and second the changes records can still only be inserted within the same transaction.

Added

[0.4.0] - 2021-11-07

New migration patches: 2, 3

Switch to top-level API with repo param

Big outbox overhaul

  • Split into query / processing
  • Simplify processing
  • No more transaction
  • New capabilities: memo, halting, chunking

Migration versioning

  • Explicit for now with Carbonite.Migrations.up(non_neg_integer())
  • Carbonite.Migrations.install_schema/1 is now Carbonite.Migrations.up/2
  • Carbonite.Migrations.put_trigger_option/4 to ensure old migrations continue to work
  • At the same time removed long configuration statement from Carbonite.Migrations.install_trigger/1, so this does not need to be versioned and continues to work
  • Mix task for generating the "initial" migration

Other Changes

[0.3.1] - 2021-10-23

Added

  • table_prefix option to Query.changes/2 allows to override schema prefix of given record
  • Query.transactions/1 query selects all transactions

[0.3.0] - 2021-10-22

Added

  • Carbonite.Migrations.drop_tables/1 allows to drop the carbonite audit trail without removing the schema

Changed

  • Renamed the option that can be passed to Carbonite.Migrations.drop_schema/1 from prefix to carbonite_prefix
  • Changed Carbonite.Migrations.drop_schema/1 to also drop the tables
  • Made Carbonite.Multi.insert_transaction/3 ignore conflicting INSERTs within the same transaction
  • Also, changed Carbonite.Multi.insert_transaction/3 to always reloads all fields from the database after insertion, immediately returning the JSONinified meta payload

Fixed

  • Fixed ignore mode when override_transaction_id is NULL

[0.2.1] - 2021-10-10

Fixed

  • Fixed broken documentation

[0.2.0] - 2021-10-10

Added

  • Store primary key(s) on changes table and index them
  • Add Carbonite.Query module
    • current_transaction/2 allows to fetch the ongoing transaction (for sandbox tests)
    • changes/2 allows to fetch the changes of an invidual source record
  • Update Postgrex to 0.15.11 and drop local Xid8 type
  • Add mode field to trigger (capture or ignore)
  • Add "override mode" reversing the mode option for the current transaction to enable/disable capturing on demand (e.g. in tests)
  • Add filtered columns

Changed

  • Moved top-level functions to nested modules Transaction and Multi
  • Made table_pk be NULL when primary_key_columns is an empty array
  • Default primary_key_columns to ["id"]
  • Renamed prefix option to carbonite_prefix on install_schema/2 for consistency

[0.1.0] - 2021-09-01

  • Initial release.