aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/arel/algebra/relations/relation.rb9
-rw-r--r--lib/arel/engines/sql/christener.rb2
-rw-r--r--lib/arel/engines/sql/relations/table.rb5
3 files changed, 12 insertions, 4 deletions
diff --git a/lib/arel/algebra/relations/relation.rb b/lib/arel/algebra/relations/relation.rb
index b3dccaf8be..af97aa8344 100644
--- a/lib/arel/algebra/relations/relation.rb
+++ b/lib/arel/algebra/relations/relation.rb
@@ -71,7 +71,14 @@ module Arel
end
def where_clauses
- wheres.collect { |w| w.to_sql(Sql::WhereClause.new(self)) }
+ wheres.collect { |w|
+ case w
+ when Value
+ w.value
+ else # FIXME: why do we have to pass in a whereclause?
+ w.to_sql(Sql::WhereClause.new(self))
+ end
+ }
end
def group_clauses
diff --git a/lib/arel/engines/sql/christener.rb b/lib/arel/engines/sql/christener.rb
index 2c96020554..6160f244f7 100644
--- a/lib/arel/engines/sql/christener.rb
+++ b/lib/arel/engines/sql/christener.rb
@@ -5,7 +5,7 @@ module Arel
# FIXME: this exists because all objects hash the same. :'(
@used_names = Hash.new(0)
@relation_names = Hash.new do |hash, relation|
- name = relation.table_alias ? relation.table_alias : relation.name
+ name = relation.table_alias || relation.name
@used_names[name] += 1
hash[relation] = name + (@used_names[name] > 1 ? "_#{@used_names[name]}" : '')
end
diff --git a/lib/arel/engines/sql/relations/table.rb b/lib/arel/engines/sql/relations/table.rb
index 236a36c7a7..9e64e8e590 100644
--- a/lib/arel/engines/sql/relations/table.rb
+++ b/lib/arel/engines/sql/relations/table.rb
@@ -94,8 +94,9 @@ module Arel
end
def ==(other)
- Table === other and
- name == other.name and
+ super ||
+ Table === other &&
+ name == other.name &&
table_alias == other.table_alias
end
end