aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Dalessio <mike@csa.net>2010-08-30 18:35:13 -0400
committerMike Dalessio <mike@csa.net>2010-08-30 18:35:13 -0400
commit4e1dd7eeabde2bd785d47db895e45c11f1693c05 (patch)
tree4fe7931adea5681a15ac5feee3c504cce1ca021a
parentdc750bef5cf5b577399c84f97b821af26c9554a2 (diff)
downloadrails-4e1dd7eeabde2bd785d47db895e45c11f1693c05.tar.gz
rails-4e1dd7eeabde2bd785d47db895e45c11f1693c05.tar.bz2
rails-4e1dd7eeabde2bd785d47db895e45c11f1693c05.zip
deep copies of statements aren't necessary. shallow copy the top-level arrays.
-rw-r--r--lib/arel/nodes/delete_statement.rb2
-rw-r--r--lib/arel/nodes/insert_statement.rb4
-rw-r--r--lib/arel/nodes/select_core.rb6
-rw-r--r--lib/arel/nodes/select_statement.rb2
-rw-r--r--lib/arel/nodes/update_statement.rb4
-rw-r--r--spec/arel/nodes/delete_statement_spec.rb6
-rw-r--r--spec/arel/nodes/insert_statement_spec.rb12
-rw-r--r--spec/arel/nodes/select_core_spec.rb10
-rw-r--r--spec/arel/nodes/select_statement_spec.rb6
-rw-r--r--spec/arel/nodes/update_statement_spec.rb12
10 files changed, 25 insertions, 39 deletions
diff --git a/lib/arel/nodes/delete_statement.rb b/lib/arel/nodes/delete_statement.rb
index b65177af05..610d69e460 100644
--- a/lib/arel/nodes/delete_statement.rb
+++ b/lib/arel/nodes/delete_statement.rb
@@ -10,7 +10,7 @@ module Arel
def initialize_copy other
super
- @wheres = @wheres.map { |o| o.clone }
+ @wheres = @wheres.clone
end
end
end
diff --git a/lib/arel/nodes/insert_statement.rb b/lib/arel/nodes/insert_statement.rb
index 8c6e1234d0..629e7a8513 100644
--- a/lib/arel/nodes/insert_statement.rb
+++ b/lib/arel/nodes/insert_statement.rb
@@ -11,8 +11,8 @@ module Arel
def initialize_copy other
super
- @columns = @columns.map { |o| o.clone }
- @values = @values.map { |o| o.clone }
+ @columns = @columns.clone
+ @values = @values.clone
end
end
end
diff --git a/lib/arel/nodes/select_core.rb b/lib/arel/nodes/select_core.rb
index 7ebdab315d..5e27c7c414 100644
--- a/lib/arel/nodes/select_core.rb
+++ b/lib/arel/nodes/select_core.rb
@@ -11,9 +11,9 @@ module Arel
def initialize_copy other
super
- @froms = @froms.map { |o| o.clone }
- @projections = @projections.map { |o| o.clone }
- @wheres = @wheres.map { |o| o.clone }
+ @froms = @froms.clone
+ @projections = @projections.clone
+ @wheres = @wheres.clone
end
end
end
diff --git a/lib/arel/nodes/select_statement.rb b/lib/arel/nodes/select_statement.rb
index d00a079dc3..b7c59da275 100644
--- a/lib/arel/nodes/select_statement.rb
+++ b/lib/arel/nodes/select_statement.rb
@@ -12,7 +12,7 @@ module Arel
def initialize_copy other
super
- @cores = @cores.map { |o| o.clone }
+ @cores = @cores.clone
end
end
end
diff --git a/lib/arel/nodes/update_statement.rb b/lib/arel/nodes/update_statement.rb
index 27e3e4e6ac..7a1ce9a7b1 100644
--- a/lib/arel/nodes/update_statement.rb
+++ b/lib/arel/nodes/update_statement.rb
@@ -11,8 +11,8 @@ module Arel
def initialize_copy other
super
- @wheres = @wheres.map { |o| o.clone }
- @values = @values.map { |o| o.clone }
+ @wheres = @wheres.clone
+ @values = @values.clone
end
end
end
diff --git a/spec/arel/nodes/delete_statement_spec.rb b/spec/arel/nodes/delete_statement_spec.rb
index 03fa41799a..4d12d184fb 100644
--- a/spec/arel/nodes/delete_statement_spec.rb
+++ b/spec/arel/nodes/delete_statement_spec.rb
@@ -6,12 +6,10 @@ describe Arel::Nodes::DeleteStatement do
statement = Arel::Nodes::DeleteStatement.new
statement.wheres = %w[a b c]
- statement.wheres.each_with_index do |o, j|
- o.should_receive(:clone).and_return("#{o}#{j}")
- end
+ statement.wheres.should_receive(:clone).and_return([:wheres])
dolly = statement.clone
- dolly.wheres.should == %w[a0 b1 c2]
+ dolly.wheres.should == [:wheres]
end
end
end
diff --git a/spec/arel/nodes/insert_statement_spec.rb b/spec/arel/nodes/insert_statement_spec.rb
index 286a44130c..0e2432c021 100644
--- a/spec/arel/nodes/insert_statement_spec.rb
+++ b/spec/arel/nodes/insert_statement_spec.rb
@@ -7,16 +7,12 @@ describe Arel::Nodes::InsertStatement do
statement.columns = %w[a b c]
statement.values = %w[x y z]
- statement.columns.each_with_index do |o, j|
- o.should_receive(:clone).and_return("#{o}#{j}")
- end
- statement.values.each_with_index do |o, j|
- o.should_receive(:clone).and_return("#{o}#{j}")
- end
+ statement.columns.should_receive(:clone).and_return([:columns])
+ statement.values.should_receive(:clone).and_return([:values])
dolly = statement.clone
- check dolly.columns.should == %w[a0 b1 c2]
- check dolly.values.should == %w[x0 y1 z2]
+ check dolly.columns.should == [:columns]
+ check dolly.values.should == [:values]
end
end
end
diff --git a/spec/arel/nodes/select_core_spec.rb b/spec/arel/nodes/select_core_spec.rb
index 30927abea6..d2e87c2c23 100644
--- a/spec/arel/nodes/select_core_spec.rb
+++ b/spec/arel/nodes/select_core_spec.rb
@@ -9,15 +9,13 @@ describe Arel::Nodes::SelectCore do
core.instance_variable_set "@wheres", %w[g h i]
[:froms, :projections, :wheres].each do |array_attr|
- core.send(array_attr).each_with_index do |o, j|
- o.should_receive(:clone).and_return("#{o}#{j}")
- end
+ core.send(array_attr).should_receive(:clone).and_return([array_attr])
end
dolly = core.clone
- check dolly.froms.should == %w[a0 b1 c2]
- check dolly.projections.should == %w[d0 e1 f2]
- check dolly.wheres.should == %w[g0 h1 i2]
+ check dolly.froms.should == [:froms]
+ check dolly.projections.should == [:projections]
+ check dolly.wheres.should == [:wheres]
end
end
end
diff --git a/spec/arel/nodes/select_statement_spec.rb b/spec/arel/nodes/select_statement_spec.rb
index a024710c78..75463f1d95 100644
--- a/spec/arel/nodes/select_statement_spec.rb
+++ b/spec/arel/nodes/select_statement_spec.rb
@@ -5,12 +5,10 @@ describe Arel::Nodes::SelectStatement do
it "clones cores" do
statement = Arel::Nodes::SelectStatement.new %w[a b c]
- statement.cores.each_with_index do |o, j|
- o.should_receive(:clone).and_return("#{o}#{j}")
- end
+ statement.cores.should_receive(:clone).and_return([:cores])
dolly = statement.clone
- dolly.cores.should == %w[a0 b1 c2]
+ dolly.cores.should == [:cores]
end
end
end
diff --git a/spec/arel/nodes/update_statement_spec.rb b/spec/arel/nodes/update_statement_spec.rb
index 3d425e2843..860d1c448a 100644
--- a/spec/arel/nodes/update_statement_spec.rb
+++ b/spec/arel/nodes/update_statement_spec.rb
@@ -7,16 +7,12 @@ describe Arel::Nodes::UpdateStatement do
statement.wheres = %w[a b c]
statement.values = %w[x y z]
- statement.wheres.each_with_index do |o, j|
- o.should_receive(:clone).and_return("#{o}#{j}")
- end
- statement.values.each_with_index do |o, j|
- o.should_receive(:clone).and_return("#{o}#{j}")
- end
+ statement.wheres.should_receive(:clone).and_return([:wheres])
+ statement.values.should_receive(:clone).and_return([:values])
dolly = statement.clone
- check dolly.wheres.should == %w[a0 b1 c2]
- check dolly.values.should == %w[x0 y1 z2]
+ check dolly.wheres.should == [:wheres]
+ check dolly.values.should == [:values]
end
end
end