aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/visitors')
-rw-r--r--lib/arel/visitors/mysql.rb4
-rw-r--r--lib/arel/visitors/to_sql.rb40
2 files changed, 29 insertions, 15 deletions
diff --git a/lib/arel/visitors/mysql.rb b/lib/arel/visitors/mysql.rb
index 4db5a94019..ec9d91f8ce 100644
--- a/lib/arel/visitors/mysql.rb
+++ b/lib/arel/visitors/mysql.rb
@@ -32,7 +32,9 @@ module Arel
# :'(
# http://dev.mysql.com/doc/refman/5.0/en/select.html#id3482214
def visit_Arel_Nodes_SelectStatement o, a
- o.limit = Arel::Nodes::Limit.new(18446744073709551615) if o.offset && !o.limit
+ if o.offset && !o.limit
+ o.limit = Arel::Nodes::Limit.new(Nodes.build_quoted(18446744073709551615))
+ end
super
end
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb
index 236f0354b1..69c82e792a 100644
--- a/lib/arel/visitors/to_sql.rb
+++ b/lib/arel/visitors/to_sql.rb
@@ -116,6 +116,14 @@ module Arel
o.alias ? " AS #{visit o.alias, a}" : ''}"
end
+ def visit_Arel_Nodes_Casted o, a
+ quoted o.val, o.attribute
+ end
+
+ def visit_Arel_Nodes_Quoted o, a
+ quoted o.expr, nil
+ end
+
def visit_Arel_Nodes_True o, a
"TRUE"
end
@@ -562,20 +570,24 @@ module Arel
quote(o, column_for(a))
end
- alias :visit_ActiveSupport_Multibyte_Chars :quoted
- alias :visit_ActiveSupport_StringInquirer :quoted
- alias :visit_BigDecimal :quoted
- alias :visit_Class :quoted
- alias :visit_Date :quoted
- alias :visit_DateTime :quoted
- alias :visit_FalseClass :quoted
- alias :visit_Float :quoted
- alias :visit_Hash :quoted
- alias :visit_NilClass :quoted
- alias :visit_String :quoted
- alias :visit_Symbol :quoted
- alias :visit_Time :quoted
- alias :visit_TrueClass :quoted
+ def unsupported o, a
+ raise "unsupported: #{o.class.name}"
+ end
+
+ alias :visit_ActiveSupport_Multibyte_Chars :unsupported
+ alias :visit_ActiveSupport_StringInquirer :unsupported
+ alias :visit_BigDecimal :unsupported
+ alias :visit_Class :unsupported
+ alias :visit_Date :unsupported
+ alias :visit_DateTime :unsupported
+ alias :visit_FalseClass :unsupported
+ alias :visit_Float :unsupported
+ alias :visit_Hash :unsupported
+ alias :visit_NilClass :unsupported
+ alias :visit_String :unsupported
+ alias :visit_Symbol :unsupported
+ alias :visit_Time :unsupported
+ alias :visit_TrueClass :unsupported
def visit_Arel_Nodes_InfixOperation o, a
"#{visit o.left, a} #{o.operator} #{visit o.right, a}"