Class: Pgoutput::Decoder::RowBuilder
- Inherits:
-
Object
- Object
- Pgoutput::Decoder::RowBuilder
- Defined in:
- lib/pgoutput/decoder/row_builder.rb
Overview
Builds decoded row hashes from Relation metadata and TupleValue arrays.
Instance Method Summary collapse
-
#build(relation, tuple) ⇒ Hash<String, Object>
Build a decoded row hash.
-
#build_key(relation, tuple) ⇒ Hash<String, Object>
Build a decoded replica-key hash.
- #initialize(type_registry: TypeRegistry.default) ⇒ void constructor
Constructor Details
#initialize(type_registry: TypeRegistry.default) ⇒ void
11 12 13 14 |
# File 'lib/pgoutput/decoder/row_builder.rb', line 11 def initialize(type_registry: TypeRegistry.default) @value_decoder = ValueDecoder.new(type_registry: type_registry) freeze end |
Instance Method Details
#build(relation, tuple) ⇒ Hash<String, Object>
Build a decoded row hash.
21 22 23 |
# File 'lib/pgoutput/decoder/row_builder.rb', line 21 def build(relation, tuple) build_columns(relation.columns, tuple) end |
#build_key(relation, tuple) ⇒ Hash<String, Object>
Build a decoded replica-key hash.
PostgreSQL may encode an old-key tuple at full relation width with placeholders for non-key columns, while compact protocol fixtures may contain only key values. Relation flags determine the exact key columns in both representations.
35 36 37 38 39 |
# File 'lib/pgoutput/decoder/row_builder.rb', line 35 def build_key(relation, tuple) key_columns = relation.columns.select { |column| key_column?(column) } columns = tuple.length == relation.columns.length ? relation.columns : key_columns build_columns(columns, tuple, key_only: true) end |