From 788f33fb59af40e8cb29a233a8d6be9941b52ea7 Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Mon, 16 Aug 2010 23:33:41 -0400 Subject: TreeManager classes deep-copy their statements. --- lib/arel/tree_manager.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/arel') diff --git a/lib/arel/tree_manager.rb b/lib/arel/tree_manager.rb index d2027bedfa..24df5e0c09 100644 --- a/lib/arel/tree_manager.rb +++ b/lib/arel/tree_manager.rb @@ -15,5 +15,10 @@ module Arel viz = Visitors::ToSql.new @engine viz.accept @head end + + def initialize_copy other + super + @head = @head.clone + end end end -- cgit v1.2.3 From 02ab2b37d7fdd823cf3aaac66052437dde36daa3 Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Mon, 16 Aug 2010 23:59:18 -0400 Subject: Statement nodes deep-copy AST nodes --- lib/arel/nodes/insert_statement.rb | 6 ++++++ lib/arel/nodes/select_statement.rb | 5 +++++ lib/arel/nodes/update_statement.rb | 6 ++++++ 3 files changed, 17 insertions(+) (limited to 'lib/arel') diff --git a/lib/arel/nodes/insert_statement.rb b/lib/arel/nodes/insert_statement.rb index ed601aa841..8c6e1234d0 100644 --- a/lib/arel/nodes/insert_statement.rb +++ b/lib/arel/nodes/insert_statement.rb @@ -8,6 +8,12 @@ module Arel @columns = [] @values = [] end + + def initialize_copy other + super + @columns = @columns.map { |o| o.clone } + @values = @values.map { |o| o.clone } + end end end end diff --git a/lib/arel/nodes/select_statement.rb b/lib/arel/nodes/select_statement.rb index 122f6275fe..50fef776f6 100644 --- a/lib/arel/nodes/select_statement.rb +++ b/lib/arel/nodes/select_statement.rb @@ -8,6 +8,11 @@ module Arel @cores = cores @limit = nil end + + def initialize_copy other + super + @cores = @cores.map { |o| o.clone } + end end end end diff --git a/lib/arel/nodes/update_statement.rb b/lib/arel/nodes/update_statement.rb index 9f069cddb3..27e3e4e6ac 100644 --- a/lib/arel/nodes/update_statement.rb +++ b/lib/arel/nodes/update_statement.rb @@ -8,6 +8,12 @@ module Arel @wheres = [] @values = [] end + + def initialize_copy other + super + @wheres = @wheres.map { |o| o.clone } + @values = @values.map { |o| o.clone } + end end end end -- cgit v1.2.3 From 6b056ef108526de90f9537e2a5f663a9a2b33409 Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Thu, 19 Aug 2010 01:30:36 -0400 Subject: SelectCore deep copies attributes --- lib/arel/nodes/select_core.rb | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lib/arel') diff --git a/lib/arel/nodes/select_core.rb b/lib/arel/nodes/select_core.rb index 39145de697..7ebdab315d 100644 --- a/lib/arel/nodes/select_core.rb +++ b/lib/arel/nodes/select_core.rb @@ -8,6 +8,13 @@ module Arel @projections = [] @wheres = [] end + + def initialize_copy other + super + @froms = @froms.map { |o| o.clone } + @projections = @projections.map { |o| o.clone } + @wheres = @wheres.map { |o| o.clone } + end end end end -- cgit v1.2.3 From 06c92a8557f5171704a121d0f4412e4c1e9a9c2b Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Thu, 19 Aug 2010 02:00:28 -0400 Subject: DeleteStatement deep copy --- lib/arel/nodes/delete_statement.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/arel') diff --git a/lib/arel/nodes/delete_statement.rb b/lib/arel/nodes/delete_statement.rb index 54bf513c2b..b65177af05 100644 --- a/lib/arel/nodes/delete_statement.rb +++ b/lib/arel/nodes/delete_statement.rb @@ -7,6 +7,11 @@ module Arel @from = nil @wheres = [] end + + def initialize_copy other + super + @wheres = @wheres.map { |o| o.clone } + end end end end -- cgit v1.2.3