Class/Module Index [+]

Quicksearch

Sequel::Postgres::PGArray::DatabaseMethods

Public Class Methods

extended(db) click to toggle source

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

Public Instance Methods

bound_variable_arg(arg, conn) click to toggle source

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_array_type(db_type, opts={}, &block) click to toggle source

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
schema_type_class(type) click to toggle source

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.