Module: Alf::Predicate::In

Defined in:
lib/alf/predicate/nodes/in.rb

Instance Method Summary collapse

Instance Method Details

#subqueryObject



9
10
11
# File 'lib/alf/predicate/nodes/in.rb', line 9

def subquery
  subquery? ? last : nil
end

#subquery?Boolean

Returns:

  • (Boolean)


5
6
7
# File 'lib/alf/predicate/nodes/in.rb', line 5

def subquery?
  Sql::Expr === last
end

#to_sql(buffer = "") ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/alf/predicate/nodes/in.rb', line 13

def to_sql(buffer = "")
  identifier.to_sql(buffer)
  buffer << Sql::Expr::SPACE << Sql::Expr::IN << Sql::Expr::SPACE
  if subquery?
    values.to_sql(buffer)
  else
    buffer << Sql::Expr::LEFT_PARENTHESE
    values.each_with_index do |val,index|
      buffer << Sql::Expr::COMMA << Sql::Expr::SPACE unless index==0
      to_sql_literal(buffer, val)
    end
    buffer << Sql::Expr::RIGHT_PARENTHESE
  end
  buffer
end