Class: Sequel::Postgres::ArrayOp

Inherits:
SQL::Wrapper show all
Defined in:
lib/sequel/extensions/pg_array_ops.rb

Overview

The ArrayOp class is a simple container for a single object that defines methods that yield Sequel expression objects representing PostgreSQL array operators and functions.

In the method documentation examples, assume that:

array_op = :array.pg_array

Constant Summary collapse

CONCAT =
["(".freeze, " || ".freeze, ")".freeze].freeze
CONTAINS =
["(".freeze, " @> ".freeze, ")".freeze].freeze
CONTAINED_BY =
["(".freeze, " <@ ".freeze, ")".freeze].freeze
OVERLAPS =
["(".freeze, " && ".freeze, ")".freeze].freeze

Instance Attribute Summary

Attributes inherited from SQL::Wrapper

#value

Instance Method Summary collapse

Methods inherited from SQL::Wrapper

#initialize

Methods included from HStoreOpMethods

#hstore

Methods included from RangeOpMethods

#pg_range

Methods included from SQL::SubscriptMethods

#sql_subscript

Methods included from SQL::StringMethods

#ilike, #like

Methods included from SQL::OrderMethods

#asc, #desc

Methods included from SQL::NumericMethods

#+

Methods included from SQL::ComplexExpressionMethods

#extract, #sql_boolean, #sql_number, #sql_string

Methods included from SQL::CastMethods

#cast, #cast_numeric, #cast_string

Methods included from SQL::BooleanMethods

#~

Methods included from SQL::AliasMethods

#as

Methods inherited from SQL::Expression

#==, attr_reader, comparison_attrs, #eql?, #hash, #inspect, #lit, #sql_literal

Constructor Details

This class inherits a constructor from Sequel::SQL::Wrapper

Instance Method Details

#[](key) ⇒ Object

Access a member of the array, returns an SQL::Subscript instance:

array_op[1] # array[1]


63
64
65
# File 'lib/sequel/extensions/pg_array_ops.rb', line 63

def [](key)
  Sequel::SQL::Subscript.new(self, [key])
end

#allObject

Call the ALL function:

array_op.all # ALL(array)

Usually used like:

dataset.where(1=>array_op.all)
# WHERE (1 = ALL(array))


75
76
77
# File 'lib/sequel/extensions/pg_array_ops.rb', line 75

def all
  function(:ALL)
end

#anyObject

Call the ANY function:

array_op.all # ANY(array)

Usually used like:

dataset.where(1=>array_op.any)
# WHERE (1 = ANY(array))


87
88
89
# File 'lib/sequel/extensions/pg_array_ops.rb', line 87

def any
  function(:ANY)
end

#contained_by(other) ⇒ Object

Use the contained by (<@) operator:

array_op.contained_by(:a) # (array <@ a)


101
102
103
# File 'lib/sequel/extensions/pg_array_ops.rb', line 101

def contained_by(other)
  bool_op(CONTAINED_BY, other)
end

#contains(other) ⇒ Object

Use the contains (@>) operator:

array_op.contains(:a) # (array @> a)


94
95
96
# File 'lib/sequel/extensions/pg_array_ops.rb', line 94

def contains(other)
  bool_op(CONTAINS, other)
end

#dimsObject

Call the array_dims method:

array_op.dims # array_dims(array)


108
109
110
# File 'lib/sequel/extensions/pg_array_ops.rb', line 108

def dims
  function(:array_dims)
end

#length(dimension = 1) ⇒ Object

Call the array_length method:

array_op.length    # array_length(array, 1)
array_op.length(2) # array_length(array, 2)


116
117
118
# File 'lib/sequel/extensions/pg_array_ops.rb', line 116

def length(dimension = 1)
  function(:array_length, dimension)
end

#lower(dimension = 1) ⇒ Object

Call the array_lower method:

array_op.lower    # array_lower(array, 1)
array_op.lower(2) # array_lower(array, 2)


124
125
126
# File 'lib/sequel/extensions/pg_array_ops.rb', line 124

def lower(dimension = 1)
  function(:array_lower, dimension)
end

#overlaps(other) ⇒ Object

Use the overlaps (&&) operator:

array_op.overlaps(:a) # (array && a)


131
132
133
# File 'lib/sequel/extensions/pg_array_ops.rb', line 131

def overlaps(other)
  bool_op(OVERLAPS, other)
end

#pg_arrayObject

Return the receiver.



145
146
147
# File 'lib/sequel/extensions/pg_array_ops.rb', line 145

def pg_array
  self
end

#push(other) ⇒ Object Also known as: concat

Use the concatentation (||) operator:

array_op.push(:a) # (array || a)
array_op.concat(:a) # (array || a)


139
140
141
# File 'lib/sequel/extensions/pg_array_ops.rb', line 139

def push(other)
  array_op(CONCAT, [self, other])
end

#to_string(joiner = "", null = nil) ⇒ Object Also known as: join

Call the array_to_string method:

array_op.join           # array_to_string(array, '', NULL)
array_op.to_string      # array_to_string(array, '', NULL)
array_op.join(":")      # array_to_string(array, ':', NULL)
array_op.join(":", "*") # array_to_string(array, ':', '*')


155
156
157
# File 'lib/sequel/extensions/pg_array_ops.rb', line 155

def to_string(joiner="", null=nil)
  function(:array_to_string, joiner, null)
end

#unnestObject

Call the unnest method:

array_op.unnest # unnest(array)


163
164
165
# File 'lib/sequel/extensions/pg_array_ops.rb', line 163

def unnest
  function(:unnest)
end

#unshift(other) ⇒ Object

Use the concatentation (||) operator, reversing the order:

array_op.unshift(:a) # (a || array)


170
171
172
# File 'lib/sequel/extensions/pg_array_ops.rb', line 170

def unshift(other)
  array_op(CONCAT, [other, self])
end