Create the local hash of database type strings to schema type symbols, used for array types local to this database.
# File lib/sequel/extensions/pg_array.rb, line 221 def self.extended(db) db.instance_eval do @pg_array_schema_types ||= {} copy_conversion_procs([1009, 1007, 1016, 1231, 1022, 1000, 1001, 1182, 1183, 1270, 1005, 1028, 1021, 1014, 1015]) [:string_array, :integer_array, :decimal_array, :float_array, :boolean_array, :blob_array, :date_array, :time_array, :datetime_array].each do |v| @schema_type_classes[v] = PGArray end end procs = db.conversion_procs procs[1115] = Creator.new("timestamp without time zone", procs[1114]) procs[1185] = Creator.new("timestamp with time zone", procs[1184]) end
Handle arrays in bound variables
# File lib/sequel/extensions/pg_array.rb, line 236 def bound_variable_arg(arg, conn) case arg when PGArray bound_variable_array(arg.to_a) when Array bound_variable_array(arg) else super end 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.
# File lib/sequel/extensions/pg_array.rb, line 251 def register_array_type(db_type, opts={}, &block) opts = {:type_procs=>conversion_procs, :typecast_method_map=>@pg_array_schema_types, :typecast_methods_module=>(class << self; self; end)}.merge(opts) unless (opts.has_key?(:scalar_oid) || block) && opts.has_key?(:oid) array_oid, scalar_oid = from(:pg_type).where(:typname=>db_type.to_s).get([:typarray, :oid]) opts[:scalar_oid] = scalar_oid unless opts.has_key?(:scalar_oid) || block opts[:oid] = array_oid unless opts.has_key?(:oid) end PGArray.register(db_type, opts, &block) @schema_type_classes[:"#{opts[:typecast_method] || opts[:type_symbol] || db_type}_array"] = PGArray end
Return PGArray if this type matches any supported array type.
# File lib/sequel/extensions/pg_array.rb, line 263 def schema_type_class(type) super || (ARRAY_TYPES.each_value{|v| return PGArray if type == v}; nil) end
Generated with the Darkfish Rdoc Generator 2.