/pgoutput_decoder

Decodes logical replication messages from Postgres pgoutput plugin

Primary LanguageElixirApache License 2.0Apache-2.0

PgoutputDecoder

Parses logical replication messages from Postgres pgoutput plugin

Documentation

Limited documentation can be found here

Installation

The package can be installed by adding pgoutput_decoder to your list of dependencies in mix.exs:

def deps do
  [
    {:pgoutput_decoder, "~> 0.1.0"}
  ]
end

Usage

To decode messages from Postgres, simply pass them to PgoutputDecoder.decode_message like so:

iex(1)> PgoutputDecoder.decode_message(
             <<82, 0, 0, 96, 0, 112, 117, 98, 108, 105, 99, 0, 102, 111, 111, 0, 100, 0, 2, 0, 98,
               97, 114, 0, 0, 0, 0, 25, 255, 255, 255, 255, 1, 105, 100, 0, 0, 0, 0, 23, 255, 255,
               255, 255>>
           )
%PgoutputDecoder.Messages.Relation{
  columns: [
    %PgoutputDecoder.Messages.Relation.Column{
      flags: [],
      name: "bar",
      type: :text,
      type_modifier: 4294967295
    },
    %PgoutputDecoder.Messages.Relation.Column{
      flags: [:key],
      name: "id",
      type: :int4,
      type_modifier: 4294967295
    }
  ],
  id: 24576,
  name: "foo",
  namespace: "public",
  replica_identity: :default
}