Module | Sequel::Postgres::PGArray::DatabaseMethods |
In: |
lib/sequel/extensions/pg_array.rb
|
APOS | = | "'".freeze |
DOUBLE_APOS | = | "''".freeze |
ESCAPE_RE | = | /("|\\)/.freeze |
ESCAPE_REPLACEMENT | = | '\\\\\1'.freeze |
BLOB_RANGE | = | 1...-1 |
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 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
Handle arrays in bound variables
# 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.
# 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