123456789_123456789_123456789_123456789_123456789_

Class: PG::BinaryDecoder::CopyRow

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: PG::CopyDecoder
Defined in: ext/pg_copy_coder.c

Overview

This class decodes one row of arbitrary columns received as COPY data in binary format. See the COPY command for description of the format.

It is intended to be used in conjunction with Connection#get_copy_data .

The columns are retrieved as Array of values. The single values are decoded as defined in the assigned #type_map. If no type_map was assigned, all values are converted to strings by String.

Example with default type map ( ::PG::TypeMapAllStrings ):

conn.exec("CREATE TABLE my_table AS VALUES('astring', 7, FALSE), ('string2', 42, TRUE) ")

deco = PG::BinaryDecoder::CopyRow.new
conn.copy_data "COPY my_table TO STDOUT WITH (FORMAT binary)", deco do
  while row=conn.get_copy_data
    p row
  end
end

This prints all rows of my_table in binary format:

["astring", "\x00\x00\x00\a", "\x00"]
["string2", "\x00\x00\x00*", "\x01"]

Example with column based type map:

tm = PG::TypeMapByColumn.new( [
  PG::BinaryDecoder::String.new,
  PG::BinaryDecoder::Integer.new,
  PG::BinaryDecoder::Boolean.new] )
deco = PG::BinaryDecoder::CopyRow.new( type_map: tm )
conn.copy_data "COPY my_table TO STDOUT WITH (FORMAT binary)", deco do
  while row=conn.get_copy_data
    p row
  end
end

This prints the rows with type casted columns:

["astring", 7, false]
["string2", 42, true]

Instead of manually assigning a type decoder for each column, ::PG::BasicTypeMapForResults can be used to assign them based on the table OIDs.

See also ::PG::BinaryEncoder::CopyRow for the encoding direction with Connection#put_copy_data .

Constant Summary

::PG::Coder - Inherited

FORMAT_ERROR_MASK, FORMAT_ERROR_TO_PARTIAL, FORMAT_ERROR_TO_RAISE, FORMAT_ERROR_TO_STRING, TIMESTAMP_APP_LOCAL, TIMESTAMP_APP_UTC, TIMESTAMP_DB_LOCAL, TIMESTAMP_DB_UTC

Class Method Summary

::PG::Coder - Inherited

.new

Create a new coder object based on the attribute Hash.

Instance Attribute Summary

::PG::CopyCoder - Inherited

#delimiter

The character that separates columns within each row (line) of the file.

#delimiter=

Specifies the character that separates columns within each row (line) of the file.

#null_string

The string that represents a null value.

#null_string=

Specifies the string that represents a null value.

#type_map

The ::PG::TypeMap that will be used for encoding and decoding of columns.

#type_map=

Defines how single columns are encoded or decoded.

::PG::Coder - Inherited

#flags

Get current bitwise OR-ed coder flags.

#flags=

Set coder specific bitwise OR-ed flags.

#format

The format code that is sent alongside with an encoded query parameter value.

#format=

Specifies the format code that is sent alongside with an encoded query parameter value.

#name

Name of the coder or the corresponding data type.

#oid

The type OID that is sent alongside with an encoded query parameter value.

#oid=

Specifies the type OID that is sent alongside with an encoded query parameter value.

Instance Method Summary

::PG::CopyCoder - Inherited

::PG::Coder - Inherited

#==, #dup, #inspect, #inspect_short, #marshal_dump, #marshal_load,
#to_h

Returns coder attributes as Hash.

Constructor Details

This class inherits a constructor from PG::Coder