class Sequel::Postgres::PGArray
Represents a PostgreSQL array column value.
Attributes
array_type[RW]
The type of this array. May be nil if no type was given. If a type is provided, the array is automatically casted to this type when literalizing. This type is the underlying type, not the array type itself, so for an int4[] database type, it should be :int4 or 'int4'
Public Class Methods
new(array, type=nil)
click to toggle source
Set the array to delegate to, and a database type.
Calls superclass method
# File lib/sequel/extensions/pg_array.rb, line 430 def initialize(array, type=nil) super(array) @array_type = type end
Public Instance Methods
op()
click to toggle source
sql_literal_append(ds, sql)
click to toggle source
Append the array SQL to the given sql string. If the receiver has a type, add a cast to the database array type.
# File lib/sequel/extensions/pg_array.rb, line 438 def sql_literal_append(ds, sql) at = array_type if empty? && at sql << "'{}'" else sql << "ARRAY" _literal_append(sql, ds, to_a) end if at sql << '::' << at.to_s << '[]' end end
Private Instance Methods
_literal_append(sql, ds, array)
click to toggle source
Recursive method that handles multi-dimensional arrays, surrounding each with [] and interspersing entries with ,.
# File lib/sequel/extensions/pg_array.rb, line 456 def _literal_append(sql, ds, array) sql << '[' comma = false commas = ',' array.each do |i| sql << commas if comma if i.is_a?(Array) _literal_append(sql, ds, i) else ds.literal_append(sql, i) end comma = true end sql << ']' end