aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-11-24 12:01:05 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2010-11-24 12:01:05 -0800
commitf092ae544f58255508242a5308c456d9b8a13b0c (patch)
treea41093079fc4333bd5126e4158495452be24ba28
parent6667cfb995a49bffe66231a7ffc5a78ca7f5140f (diff)
downloadrails-f092ae544f58255508242a5308c456d9b8a13b0c.tar.gz
rails-f092ae544f58255508242a5308c456d9b8a13b0c.tar.bz2
rails-f092ae544f58255508242a5308c456d9b8a13b0c.zip
make table aliases cheaper to allocate
-rw-r--r--lib/arel/nodes/table_alias.rb8
-rw-r--r--lib/arel/table.rb4
2 files changed, 4 insertions, 8 deletions
diff --git a/lib/arel/nodes/table_alias.rb b/lib/arel/nodes/table_alias.rb
index 7ec1fad272..60da7b19f3 100644
--- a/lib/arel/nodes/table_alias.rb
+++ b/lib/arel/nodes/table_alias.rb
@@ -1,20 +1,16 @@
module Arel
module Nodes
class TableAlias
- attr_reader :name, :relation, :columns
+ attr_reader :name, :relation
alias :table_alias :name
def initialize name, relation
@name = name
@relation = relation
- @columns = relation.columns.map { |column|
- column.dup.tap { |col| col.relation = self }
- }
end
def [] name
- name = name.to_sym
- columns.find { |column| column.name == name }
+ Attribute.new self, name
end
end
end
diff --git a/lib/arel/table.rb b/lib/arel/table.rb
index fe12427d1b..6f29a02e56 100644
--- a/lib/arel/table.rb
+++ b/lib/arel/table.rb
@@ -34,8 +34,8 @@ module Arel
end
end
- def alias
- Nodes::TableAlias.new("#{name}_2", self).tap do |node|
+ def alias name = "#{self.name}_2"
+ Nodes::TableAlias.new(name, self).tap do |node|
@aliases << node
end
end