Module: Sequel::SQL::OperatorBuilders

Included in:
Sequel, VirtualRow
Defined in:
lib/sequel/sql.rb

Overview

These methods are designed as replacements for the core extension operator methods, so that Sequel is still easy to use if the core extensions are not enabled.

The following methods are defined via metaprogramming: +, -, *, /, &, |. The +, -, *, and / operators return numeric expressions combining all the arguments with the appropriate operator, and the & and | operators return boolean expressions combining all of the arguments with either AND or OR.

Instance Method Summary collapse

Instance Method Details

#**(a, b) ⇒ Object

Return NumericExpression for the exponentiation:

Sequel.**(2, 3) # SQL: power(2, 3)


899
900
901
# File 'lib/sequel/sql.rb', line 899

def **(a, b)
  SQL::NumericExpression.new(:**, a, b)
end

#~(arg) ⇒ Object

Invert the given expression. Returns a Sequel::SQL::BooleanExpression created from this argument, not matching all of the conditions.

Sequel.~(nil) # SQL: NOT NULL
Sequel.~([[:a, true]]) # SQL: a IS NOT TRUE
Sequel.~([[:a, 1], [:b, [2, 3]]]) # SQL: a != 1 OR b NOT IN (2, 3)


909
910
911
912
913
914
915
# File 'lib/sequel/sql.rb', line 909

def ~(arg)
  if condition_specifier?(arg)
    SQL::BooleanExpression.from_value_pairs(arg, :OR, true)
  else
    SQL::BooleanExpression.invert(arg)
  end
end