Methods
Public Class
Public Instance
Constants
APOS | = | "'".freeze | ||
BLOB_RANGE | = | 1...-1 | ||
DOUBLE_APOS | = | "''".freeze | ||
ESCAPE_RE | = | /("|\\)/.freeze | ||
ESCAPE_REPLACEMENT | = | '\\\\\1'.freeze |
Public Class methods
extended
(db)
Create the local hash of database type strings to schema type symbols, used for array types local to this database.
[show source]
# File lib/sequel/extensions/pg_array.rb, line 223 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)
Handle arrays in bound variables
[show source]
# File lib/sequel/extensions/pg_array.rb, line 238 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=OPTS, &block)
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 Sequel::Postgres::PGArray.register. See Sequel::Postgres::PGArray.register for possible options.
[show source]
# File lib/sequel/extensions/pg_array.rb, line 253 def register_array_type(db_type, opts=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)
Return PGArray if this type matches any supported array type.
[show source]
# File lib/sequel/extensions/pg_array.rb, line 265 def schema_type_class(type) super || (ARRAY_TYPES.each_value{|v| return PGArray if type == v}; nil) end