module Arel::FactoryMethods

def coalesce(*exprs)

def coalesce(*exprs)
  Nodes::NamedFunction.new "COALESCE", exprs
end

def create_and(clauses)

def create_and(clauses)
  Nodes::And.new clauses
end

def create_false

def create_false
  Arel::Nodes::False.new
end

def create_join(to, constraint = nil, klass = Nodes::InnerJoin)

def create_join(to, constraint = nil, klass = Nodes::InnerJoin)
  klass.new(to, constraint)
end

def create_on(expr)

def create_on(expr)
  Nodes::On.new expr
end

def create_string_join(to)

def create_string_join(to)
  create_join to, nil, Nodes::StringJoin
end

def create_table_alias(relation, name)

def create_table_alias(relation, name)
  Nodes::TableAlias.new(relation, name)
end

def create_true

def create_true
  Arel::Nodes::True.new
end

def grouping(expr)

def grouping(expr)
  Nodes::Grouping.new expr
end

def lower(column)

Create a LOWER() function
##
def lower(column)
  Nodes::NamedFunction.new "LOWER", [Nodes.build_quoted(column)]
end