Module: Pgoutput::Messages

Defined in:
lib/pgoutput/messages.rb

Overview

Immutable message model classes for the PostgreSQL pgoutput protocol.

Every value returned by the parser is deeply shareable via Ractor.make_shareable. These classes are protocol-level structures only; they preserve tuple bytes and metadata but do not convert PostgreSQL values into application-specific Ruby types.

Defined Under Namespace

Classes: Begin, Column, Commit, Delete, Insert, Relation, TupleValue, Update

Instance Attribute Summary collapse

Instance Attribute Details

#columnsArray<Column> (readonly)

Returns immutable column metadata.

Returns:

  • (Array<Column>)

    immutable column metadata.



47
# File 'lib/pgoutput/messages.rb', line 47

Relation = Data.define(:relation_id, :schema, :table, :replica_identity, :columns)

#commit_lsnInteger (readonly)

Returns commit LSN.

Returns:

  • (Integer)

    commit LSN.



104
# File 'lib/pgoutput/messages.rb', line 104

Commit = Data.define(:flags, :commit_lsn, :transaction_end_lsn, :commit_timestamp)

#commit_timestampInteger (readonly)

Returns microseconds since PostgreSQL epoch.

Returns:

  • (Integer)

    microseconds since PostgreSQL epoch.



21
# File 'lib/pgoutput/messages.rb', line 21

Begin = Data.define(:final_lsn, :commit_timestamp, :xid)

#final_lsnInteger (readonly)

Returns final transaction LSN.

Returns:

  • (Integer)

    final transaction LSN.



21
# File 'lib/pgoutput/messages.rb', line 21

Begin = Data.define(:final_lsn, :commit_timestamp, :xid)

#flagsInteger (readonly)

Returns commit flags; currently unused by PostgreSQL.

Returns:

  • (Integer)

    commit flags; currently unused by PostgreSQL.



33
# File 'lib/pgoutput/messages.rb', line 33

Column = Data.define(:flags, :name, :oid, :type_modifier)

#format:null, ... (readonly)

Returns protocol value format.

Returns:

  • (:null, :unchanged_toast, :text, :binary)

    protocol value format.



57
# File 'lib/pgoutput/messages.rb', line 57

TupleValue = Data.define(:format, :raw, :oid)

#nameString (readonly)

Returns column name.

Returns:

  • (String)

    column name.



33
# File 'lib/pgoutput/messages.rb', line 33

Column = Data.define(:flags, :name, :oid, :type_modifier)

#new_tupleArray<TupleValue> (readonly)

Returns new tuple data.

Returns:



80
# File 'lib/pgoutput/messages.rb', line 80

Update = Data.define(:relation_id, :old_key_tuple, :old_tuple, :new_tuple)

#oidInteger? (readonly)

Returns PostgreSQL type OID when relation metadata is known.

Returns:

  • (Integer, nil)

    PostgreSQL type OID when relation metadata is known.



33
# File 'lib/pgoutput/messages.rb', line 33

Column = Data.define(:flags, :name, :oid, :type_modifier)

#old_key_tupleArray<TupleValue>? (readonly)

Returns replica identity key tuple.

Returns:

  • (Array<TupleValue>, nil)

    replica identity key tuple.



80
# File 'lib/pgoutput/messages.rb', line 80

Update = Data.define(:relation_id, :old_key_tuple, :old_tuple, :new_tuple)

#old_tupleArray<TupleValue>? (readonly)

Returns full old tuple when replica identity is FULL.

Returns:

  • (Array<TupleValue>, nil)

    full old tuple when replica identity is FULL.



80
# File 'lib/pgoutput/messages.rb', line 80

Update = Data.define(:relation_id, :old_key_tuple, :old_tuple, :new_tuple)

#rawString? (readonly)

Returns immutable raw payload, or nil for NULL/TOAST markers.

Returns:

  • (String, nil)

    immutable raw payload, or nil for NULL/TOAST markers.



57
# File 'lib/pgoutput/messages.rb', line 57

TupleValue = Data.define(:format, :raw, :oid)

#relation_idInteger (readonly)

Returns relation OID.

Returns:

  • (Integer)

    relation OID.



47
# File 'lib/pgoutput/messages.rb', line 47

Relation = Data.define(:relation_id, :schema, :table, :replica_identity, :columns)

#replica_identityInteger (readonly)

Returns relation replica identity setting.

Returns:

  • (Integer)

    relation replica identity setting.



47
# File 'lib/pgoutput/messages.rb', line 47

Relation = Data.define(:relation_id, :schema, :table, :replica_identity, :columns)

#schemaString (readonly)

Returns namespace name.

Returns:

  • (String)

    namespace name.



47
# File 'lib/pgoutput/messages.rb', line 47

Relation = Data.define(:relation_id, :schema, :table, :replica_identity, :columns)

#tableString (readonly)

Returns relation name.

Returns:

  • (String)

    relation name.



47
# File 'lib/pgoutput/messages.rb', line 47

Relation = Data.define(:relation_id, :schema, :table, :replica_identity, :columns)

#transaction_end_lsnInteger (readonly)

Returns transaction end LSN.

Returns:

  • (Integer)

    transaction end LSN.



104
# File 'lib/pgoutput/messages.rb', line 104

Commit = Data.define(:flags, :commit_lsn, :transaction_end_lsn, :commit_timestamp)

#tupleArray<TupleValue> (readonly)

Returns new tuple data.

Returns:



65
# File 'lib/pgoutput/messages.rb', line 65

Insert = Data.define(:relation_id, :tuple)

#type_modifierInteger (readonly)

Returns PostgreSQL type modifier.

Returns:

  • (Integer)

    PostgreSQL type modifier.



33
# File 'lib/pgoutput/messages.rb', line 33

Column = Data.define(:flags, :name, :oid, :type_modifier)

#xidInteger (readonly)

Returns transaction id.

Returns:

  • (Integer)

    transaction id.



21
# File 'lib/pgoutput/messages.rb', line 21

Begin = Data.define(:final_lsn, :commit_timestamp, :xid)