diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-14 09:43:19 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-14 09:43:19 -0800 |
commit | 9653da3c7963834eb9ed93bf24837147fa9b0461 (patch) | |
tree | 08015f4d72cfc5ac615e600de87a953514a59411 /lib/arel/nodes | |
parent | 87c022bc98c57027f534d5e667cfc0344b5b40f0 (diff) | |
download | rails-9653da3c7963834eb9ed93bf24837147fa9b0461.tar.gz rails-9653da3c7963834eb9ed93bf24837147fa9b0461.tar.bz2 rails-9653da3c7963834eb9ed93bf24837147fa9b0461.zip |
adding a join source node
Diffstat (limited to 'lib/arel/nodes')
-rw-r--r-- | lib/arel/nodes/join.rb | 12 | ||||
-rw-r--r-- | lib/arel/nodes/join_source.rb | 20 | ||||
-rw-r--r-- | lib/arel/nodes/select_core.rb | 22 | ||||
-rw-r--r-- | lib/arel/nodes/string_join.rb | 5 |
4 files changed, 41 insertions, 18 deletions
diff --git a/lib/arel/nodes/join.rb b/lib/arel/nodes/join.rb index 07f8c98e85..d3307fe0e0 100644 --- a/lib/arel/nodes/join.rb +++ b/lib/arel/nodes/join.rb @@ -1,12 +1,12 @@ module Arel module Nodes - class Join < Arel::Nodes::Node - attr_accessor :left, :right, :constraint + class Join < Arel::Nodes::Binary - def initialize left, right, constraint - @left = left - @right = right - @constraint = constraint + alias :single_source :left + alias :constraint :right + + def initialize single_source, constraint + super end end end diff --git a/lib/arel/nodes/join_source.rb b/lib/arel/nodes/join_source.rb new file mode 100644 index 0000000000..7b739c19ad --- /dev/null +++ b/lib/arel/nodes/join_source.rb @@ -0,0 +1,20 @@ +module Arel + module Nodes + ### + # Class that represents a join source + # + # http://www.sqlite.org/syntaxdiagrams.html#join-source + + class JoinSource < Arel::Nodes::Binary + def initialize single_source, joinop = [] + super + end + + def initialize_copy other + super + @left = @left.clone if @left + @right = @right.clone if @right + end + end + end +end diff --git a/lib/arel/nodes/select_core.rb b/lib/arel/nodes/select_core.rb index e2293f68a2..bd1930364d 100644 --- a/lib/arel/nodes/select_core.rb +++ b/lib/arel/nodes/select_core.rb @@ -1,23 +1,31 @@ module Arel module Nodes class SelectCore < Arel::Nodes::Node - attr_accessor :from, :projections, :wheres, :groups - attr_accessor :having - - alias :froms= :from= - alias :froms :from + attr_accessor :projections, :wheres, :groups + attr_accessor :having, :source def initialize - @from = nil + @source = JoinSource.new nil @projections = [] @wheres = [] @groups = [] @having = nil end + def from + @source.left + end + + def from= value + @source.left = value + end + + alias :froms= :from= + alias :froms :from + def initialize_copy other super - @from = @from.clone if @from + @source = @source.clone if @source @projections = @projections.clone @wheres = @wheres.clone @group = @groups.clone diff --git a/lib/arel/nodes/string_join.rb b/lib/arel/nodes/string_join.rb index b24e91b6b8..b5420e2dfc 100644 --- a/lib/arel/nodes/string_join.rb +++ b/lib/arel/nodes/string_join.rb @@ -1,11 +1,6 @@ module Arel module Nodes class StringJoin < Arel::Nodes::Join - undef :constraint - - def initialize left, right, on = nil - super - end end end end |