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:
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.
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 |