aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/arel/nodes.rb41
-rw-r--r--lib/arel/nodes/casted.rb40
-rw-r--r--lib/arel/select_manager.rb6
-rw-r--r--lib/arel/visitors/mysql.rb2
-rw-r--r--lib/arel/visitors/oracle.rb2
5 files changed, 46 insertions, 45 deletions
diff --git a/lib/arel/nodes.rb b/lib/arel/nodes.rb
index 7d900fe710..8d61bb320f 100644
--- a/lib/arel/nodes.rb
+++ b/lib/arel/nodes.rb
@@ -55,43 +55,4 @@ require 'arel/nodes/string_join'
require 'arel/nodes/sql_literal'
-module Arel
- module Nodes
- class Casted < Arel::Nodes::Node # :nodoc:
- attr_reader :val, :attribute
- def initialize val, attribute
- @val = val
- @attribute = attribute
- super()
- end
-
- def nil?; @val.nil?; end
-
- def eql? other
- self.class == other.class &&
- self.val == other.val &&
- self.attribute == other.attribute
- end
- alias :== :eql?
- end
-
- class Quoted < Arel::Nodes::Unary # :nodoc:
- alias :val :value
- def nil?; val.nil?; end
- end
-
- def self.build_quoted other, attribute = nil
- case other
- when Arel::Nodes::Node, Arel::Attributes::Attribute, Arel::Table, Arel::Nodes::BindParam, Arel::SelectManager, Arel::Nodes::Quoted
- other
- else
- case attribute
- when Arel::Attributes::Attribute
- Casted.new other, attribute
- else
- Quoted.new other
- end
- end
- end
- end
-end
+require 'arel/nodes/casted'
diff --git a/lib/arel/nodes/casted.rb b/lib/arel/nodes/casted.rb
new file mode 100644
index 0000000000..9fa02955ef
--- /dev/null
+++ b/lib/arel/nodes/casted.rb
@@ -0,0 +1,40 @@
+module Arel
+ module Nodes
+ class Casted < Arel::Nodes::Node # :nodoc:
+ attr_reader :val, :attribute
+ def initialize val, attribute
+ @val = val
+ @attribute = attribute
+ super()
+ end
+
+ def nil?; @val.nil?; end
+
+ def eql? other
+ self.class == other.class &&
+ self.val == other.val &&
+ self.attribute == other.attribute
+ end
+ alias :== :eql?
+ end
+
+ class Quoted < Arel::Nodes::Unary # :nodoc:
+ alias :val :value
+ def nil?; val.nil?; end
+ end
+
+ def self.build_quoted other, attribute = nil
+ case other
+ when Arel::Nodes::Node, Arel::Attributes::Attribute, Arel::Table, Arel::Nodes::BindParam, Arel::SelectManager, Arel::Nodes::Quoted
+ other
+ else
+ case attribute
+ when Arel::Attributes::Attribute
+ Casted.new other, attribute
+ else
+ Quoted.new other
+ end
+ end
+ end
+ end
+end
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb
index e5fdbc887c..f7dec87ca3 100644
--- a/lib/arel/select_manager.rb
+++ b/lib/arel/select_manager.rb
@@ -19,7 +19,7 @@ module Arel
end
def limit
- @ast.limit && @ast.limit.expr.expr
+ @ast.limit && @ast.limit.expr
end
alias :taken :limit
@@ -216,8 +216,8 @@ module Arel
def take limit
if limit
- @ast.limit = Nodes::Limit.new(Nodes.build_quoted(limit))
- @ctx.top = Nodes::Top.new(Nodes.build_quoted(limit))
+ @ast.limit = Nodes::Limit.new(limit)
+ @ctx.top = Nodes::Top.new(limit)
else
@ast.limit = nil
@ctx.top = nil
diff --git a/lib/arel/visitors/mysql.rb b/lib/arel/visitors/mysql.rb
index f989b8ddef..724e0fc43e 100644
--- a/lib/arel/visitors/mysql.rb
+++ b/lib/arel/visitors/mysql.rb
@@ -40,7 +40,7 @@ module Arel
# http://dev.mysql.com/doc/refman/5.0/en/select.html#id3482214
def visit_Arel_Nodes_SelectStatement o, collector
if o.offset && !o.limit
- o.limit = Arel::Nodes::Limit.new(Nodes.build_quoted(18446744073709551615))
+ o.limit = Arel::Nodes::Limit.new(18446744073709551615)
end
super
end
diff --git a/lib/arel/visitors/oracle.rb b/lib/arel/visitors/oracle.rb
index ff9e38d050..875b0e5b6a 100644
--- a/lib/arel/visitors/oracle.rb
+++ b/lib/arel/visitors/oracle.rb
@@ -17,7 +17,7 @@ module Arel
if o.limit && o.offset
o = o.dup
- limit = o.limit.expr.expr
+ limit = o.limit.expr
offset = o.offset
o.offset = nil
collector << "