Module: Sequel::Postgres

Defined in:
lib/sequel_core/adapters/shared/postgres.rb,
lib/sequel_core/adapters/postgres.rb

Overview

Top level module for holding all PostgreSQL-related modules and classes for Sequel. There are a few module level accessors that are added via metaprogramming. These are:

  • client_min_messages (only available when using the native adapter) - Change the minimum level of messages that PostgreSQL will send to the the client. The PostgreSQL default is NOTICE, the Sequel default is WARNING. Set to nil to not change the server default.

  • force_standard_strings - Set to false to not force the use of standard strings

  • use_iso_date_format (only available when using the native adapter) - Set to false to not change the date format to ISO. This disables one of Sequel’s optimizations.

Changes in these settings only affect future connections. To make sure that they are applied, they should generally be called right after the Database object is instantiated and before a connection is actually made. For example, to use whatever the server defaults are:

DB = Sequel.postgres(...)
Sequel::Postgres.client_min_messages = nil
Sequel::Postgres.force_standard_strings = false
Sequel::Postgres.use_iso_date_format = false
# A connection to the server is not made until here
DB[:t].all

The reason they can’t be done earlier is that the Sequel::Postgres module is not loaded until a Database object which uses PostgreSQL is created.

Defined Under Namespace

Modules: AdapterMethods, DatabaseMethods, DatasetMethods Classes: Adapter, Database, Dataset

Constant Summary collapse

PG_TYPES =

Hash with integer keys and proc values for converting PostgreSQL types.

{
  16 => lambda{ |s| s == 't' }, # boolean
  17 => lambda{ |s| Adapter.unescape_bytea(s).to_blob }, # bytea
  20 => lambda{ |s| s.to_i }, # int8
  21 => lambda{ |s| s.to_i }, # int2
  22 => lambda{ |s| s.to_i }, # int2vector
  23 => lambda{ |s| s.to_i }, # int4
  26 => lambda{ |s| s.to_i }, # oid
  700 => lambda{ |s| s.to_f }, # float4
  701 => lambda{ |s| s.to_f }, # float8
  790 => lambda{ |s| s.to_d }, # money
  1082 => lambda{ |s| @use_iso_date_format ? Date.new(*s.split("-").map{|x| x.to_i}) : s.to_date }, # date
  1083 => lambda{ |s| s.to_time }, # time without time zone
  1114 => lambda{ |s| s.to_sequel_time }, # timestamp without time zone
  1184 => lambda{ |s| s.to_sequel_time }, # timestamp with time zone
  1266 => lambda{ |s| s.to_time }, # time with time zone
  1700 => lambda{ |s| s.to_d }, # numeric
}
CONVERTED_EXCEPTIONS =

Array of exceptions that need to be converted. JDBC uses NativeExceptions, the native adapter uses PGError.

[]