Class: PG::BasicTypeMapForQueries

Inherits:
TypeMapByMriType show all
Includes:
BasicTypeRegistry
Defined in:
lib/pg/basic_type_mapping.rb

Overview

Simple set of rules for type casting common Ruby types to PostgreSQL.

OIDs of supported type casts are not hard-coded in the sources, but are retrieved from the PostgreSQL's pg_type table in PG::BasicTypeMapForQueries.new .

Query params are type casted based on the MRI internal type of the given value.

Higher level libraries will most likely not make use of this class, but use their own set of rules to choose suitable encoders and decoders.

Example:

conn = PG::Connection.new
# Assign a default ruleset for type casts of input and output values.
conn.type_mapping_for_queries = PG::BasicTypeMapForQueries.new(conn)
# Execute a query. The Integer param value is typecasted internally by PG::BinaryEncoder::Int8.
# The format of the parameter is set to 1 (binary) and the OID of this parameter is set to 20 (int8).
res = conn.exec_params( "SELECT $1", [5] )

Instance Method Summary collapse

Methods inherited from TypeMapByMriType

#[], #[]=, #coders

Methods inherited from TypeMap

#fit_to_query, #fit_to_result

Constructor Details

#initialize(connection) ⇒ BasicTypeMapForQueries

Returns a new instance of BasicTypeMapForQueries



310
311
312
313
314
315
316
# File 'lib/pg/basic_type_mapping.rb', line 310

def initialize(connection)
	@coder_maps = build_coder_maps(connection)

	populate_encoder_list
	@array_encoders_by_klass = array_encoders_by_klass
	@anyarray_encoder = coder_by_name(0, :encoder, '_any')
end