Class: Arel::Visitors::DB2

Inherits:
ToSql
  • Object
show all
Defined in:
lib/arel/visitors/db2.rb

Instance Method Summary collapse

Instance Method Details

#visit_Arel_Nodes_InsertStatement(o, a = nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/arel/visitors/db2.rb', line 13

def visit_Arel_Nodes_InsertStatement o, a = nil
  sql = "INSERT INTO "
  sql << visit(o.relation, a)

  values = o.values

  if o.columns.any?
    cols = o.columns.map { |x| quote_column_name x.name }
    sql << ' (' << cols.join(', ') << ') '
  # should depend the other way around but who cares it's AR
  elsif o.values.eql? ArJdbc::DB2::VALUES_DEFAULT
    cols = o.relation.engine.columns.map { |c| c.name }
    sql << ' (' << cols.join(', ') << ')'
    sql << ' VALUES '
    sql << ' (' << cols.map { 'DEFAULT' }.join(', ') << ')'
    values = nil
  end

  sql << visit(values, a) if values

  sql
end

#visit_Arel_Nodes_SelectStatement(o, a = nil) ⇒ Object



7
8
9
10
11
# File 'lib/arel/visitors/db2.rb', line 7

def visit_Arel_Nodes_SelectStatement o, a = nil
  sql = o.cores.map { |x| do_visit_select_core x, a }.join
  sql << " ORDER BY #{o.orders.map { |x| do_visit x, a }.join(', ')}" unless o.orders.empty?
  add_limit_offset(sql, o)
end