class Arel::Visitors::PostgreSQL

Constants

CUBE
GROUPING_SET
ROLLUP

Private Instance Methods

grouping_array_or_grouping_element(o, collector) click to toggle source

Utilized by GroupingSet, Cube & RollUp visitors to handle grouping aggregation semantics

# File lib/arel/visitors/postgresql.rb, line 73
def grouping_array_or_grouping_element o, collector
  if o.expr.is_a? Array
    collector << "( "
    visit o.expr, collector
    collector << " )"
  else
    visit o.expr, collector
  end
end
visit_Arel_Nodes_BindParam(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 47
def visit_Arel_Nodes_BindParam o, collector
  collector.add_bind(o.value) { |i| "$#{i}" }
end
visit_Arel_Nodes_Cube(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 56
def visit_Arel_Nodes_Cube o, collector
  collector << CUBE
  grouping_array_or_grouping_element o, collector
end
visit_Arel_Nodes_DistinctOn(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 42
def visit_Arel_Nodes_DistinctOn o, collector
  collector << "DISTINCT ON ( "
  visit(o.expr, collector) << " )"
end
visit_Arel_Nodes_DoesNotMatch(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 21
def visit_Arel_Nodes_DoesNotMatch o, collector
  op = o.case_sensitive ? ' NOT LIKE ' : ' NOT ILIKE '
  collector = infix_value o, collector, op
  if o.escape
    collector << ' ESCAPE '
    visit o.escape, collector
  else
    collector
  end
end
visit_Arel_Nodes_GroupingElement(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 51
def visit_Arel_Nodes_GroupingElement o, collector
  collector << "( "
  visit(o.expr, collector) << " )"
end
visit_Arel_Nodes_GroupingSet(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 66
def visit_Arel_Nodes_GroupingSet o, collector
  collector << GROUPING_SET
  grouping_array_or_grouping_element o, collector
end
visit_Arel_Nodes_Matches(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 10
def visit_Arel_Nodes_Matches o, collector
  op = o.case_sensitive ? ' LIKE ' : ' ILIKE '
  collector = infix_value o, collector, op
  if o.escape
    collector << ' ESCAPE '
    visit o.escape, collector
  else
    collector
  end
end
visit_Arel_Nodes_NotRegexp(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 37
def visit_Arel_Nodes_NotRegexp o, collector
  op = o.case_sensitive ? ' !~ ' : ' !~* '
  infix_value o, collector, op
end
visit_Arel_Nodes_Regexp(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 32
def visit_Arel_Nodes_Regexp o, collector
  op = o.case_sensitive ? ' ~ ' : ' ~* '
  infix_value o, collector, op
end
visit_Arel_Nodes_RollUp(o, collector) click to toggle source
# File lib/arel/visitors/postgresql.rb, line 61
def visit_Arel_Nodes_RollUp o, collector
  collector << ROLLUP
  grouping_array_or_grouping_element o, collector
end