Module Sequel::Postgres::PGArray::DatabaseMethods
In: lib/sequel/extensions/pg_array.rb

Methods

Constants

APOS = "'".freeze
DOUBLE_APOS = "''".freeze
ESCAPE_RE = /("|\\)/.freeze
ESCAPE_REPLACEMENT = '\\\\\1'.freeze
BLOB_RANGE = 1...-1

Public Class methods

Create the local hash of database type strings to schema type symbols, used for array types local to this database.

[Source]

     # File lib/sequel/extensions/pg_array.rb, line 200
200:         def self.extended(db)
201:           db.instance_eval do
202:             @pg_array_schema_types ||= {}
203:             procs = conversion_procs
204:             procs[1115] = Creator.new("timestamp without time zone", procs[1114])
205:             procs[1185] = Creator.new("timestamp with time zone", procs[1184])
206:             copy_conversion_procs([143, 791, 1000, 1001, 1003, 1005, 1006, 1007, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1021, 1022, 1028, 1182, 1183, 1231, 1270, 1561, 1563, 2951])
207:             [:string_array, :integer_array, :decimal_array, :float_array, :boolean_array, :blob_array, :date_array, :time_array, :datetime_array].each do |v|
208:               @schema_type_classes[v] = PGArray
209:             end
210:           end
211:         end

Public Instance methods

Handle arrays in bound variables

[Source]

     # File lib/sequel/extensions/pg_array.rb, line 214
214:         def bound_variable_arg(arg, conn)
215:           case arg
216:           when PGArray
217:             bound_variable_array(arg.to_a)
218:           when Array
219:             bound_variable_array(arg)
220:           else
221:             super
222:           end
223:         end

Register a database specific array type. This can be used to support different array types per Database. Use of this method does not affect global state, unlike PGArray.register. See PGArray.register for possible options.

[Source]

     # File lib/sequel/extensions/pg_array.rb, line 229
229:         def register_array_type(db_type, opts=OPTS, &block)
230:           opts = {:type_procs=>conversion_procs, :typecast_method_map=>@pg_array_schema_types, :typecast_methods_module=>(class << self; self; end)}.merge(opts)
231:           unless (opts.has_key?(:scalar_oid) || block) && opts.has_key?(:oid)
232:             array_oid, scalar_oid = from(:pg_type).where(:typname=>db_type.to_s).get([:typarray, :oid])
233:             opts[:scalar_oid] = scalar_oid unless opts.has_key?(:scalar_oid) || block
234:             opts[:oid] = array_oid unless opts.has_key?(:oid)
235:           end
236:           PGArray.register(db_type, opts, &block)
237:           @schema_type_classes["#{opts[:type_symbol] || db_type}_array""#{opts[:type_symbol] || db_type}_array"] = PGArray
238:           conversion_procs_updated
239:         end

Return PGArray if this type matches any supported array type.

[Source]

     # File lib/sequel/extensions/pg_array.rb, line 242
242:         def schema_type_class(type)
243:           super || (ARRAY_TYPES.each_value{|v| return PGArray if type == v}; nil)
244:         end

[Validate]