Module: Sequel::Postgres

Module | Sequel::Postgres
In: | lib/sequel_core/adapters/postgres.rb lib/sequel_core/adapters/shared/postgres.rb

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.

### Classes and Modules

Module Sequel::Postgres::AdapterMethods
Class Sequel::Postgres::Adapter
Class Sequel::Postgres::Database
Class Sequel::Postgres::Dataset

### Constants

PG_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 } |  | Hash with integer keys and proc values for converting PostgreSQL types.
CONVERTED_EXCEPTIONS | = | [] |  | Array of exceptions that need to be converted. JDBC uses NativeExceptions, the native adapter uses PGError.
SELECT_PK | = | proc do |schema, table| <<-end_sql SELECT pg_attribute.attname FROM pg_class, pg_attribute, pg_index, pg_namespace WHERE pg_class.oid = pg_attribute.attrelid AND pg_class.relnamespace = pg_namespace.oid AND pg_class.oid = pg_index.indrelid AND pg_index.indkey[0] = pg_attribute.attnum AND pg_index.indisprimary = 't' #{"AND pg_namespace.nspname = '#{schema}'" if schema} AND pg_class.relname = '#{table}' end_sql

[Validate]