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.
CAST_JSON | = | '::json'.freeze | ||
PG_NAMED_TYPES | = | {} unless defined?(PG_NAMED_TYPES) | ||
CONVERTED_EXCEPTIONS | = | [] | Array of exceptions that need to be converted. JDBC uses NativeExceptions, the native adapter uses PGError. | |
NAN | = | 0.0/0.0 | ||
PLUS_INFINITY | = | 1.0/0.0 | ||
MINUS_INFINITY | = | -1.0/0.0 | ||
NAN_STR | = | 'NaN'.freeze | ||
PLUS_INFINITY_STR | = | 'Infinity'.freeze | ||
MINUS_INFINITY_STR | = | '-Infinity'.freeze | ||
TRUE_STR | = | 't'.freeze | ||
DASH_STR | = | '-'.freeze | ||
TYPE_TRANSLATOR | = | tt = Class.new do def boolean(s) s == TRUE_STR end |
client_min_messages | [RW] | By default, Sequel sets the minimum level of log messages sent to the client to WARNING, where PostgreSQL uses a default of NOTICE. This is to avoid a lot of mostly useless messages when running migrations, such as a couple of lines for every serial primary key field. |
force_standard_strings | [RW] | By default, Sequel forces the use of standard strings, so that ’\’ is interpreted as \ and not \. While PostgreSQL <9.1 defaults to interpreting plain strings, newer versions use standard strings by default. Sequel assumes that SQL standard strings will be used. Setting this to false means Sequel will use the database‘s default. |
# File lib/sequel/adapters/postgres.rb, line 92 92: def bytea(s) ::Sequel::SQL::Blob.new(Adapter.unescape_bytea(s)) end
# File lib/sequel/adapters/utils/pg_types.rb, line 28 28: def bytea(str) 29: str = if str =~ /\A\\x/ 30: # PostgreSQL 9.0+ bytea hex format 31: str[2..-1].gsub(/(..)/){|s| s.to_i(16).chr} 32: else 33: # Historical PostgreSQL bytea escape format 34: str.gsub(/\\(\\|'|[0-3][0-7][0-7])/) {|s| 35: if s.size == 2 then s[1,1] else s[1,3].oct.chr end 36: } 37: end 38: ::Sequel::SQL::Blob.new(str) 39: end
# File lib/sequel/adapters/utils/pg_types.rb, line 27 27: def date(s) ::Date.new(*s.split(DASH_STR).map{|x| x.to_i}) end
# File lib/sequel/adapters/utils/pg_types.rb, line 15 15: def float(s) 16: case s 17: when NAN_STR 18: NAN 19: when PLUS_INFINITY_STR 20: PLUS_INFINITY 21: when MINUS_INFINITY_STR 22: MINUS_INFINITY 23: else 24: s.to_f 25: end 26: end