aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors/mssql.rb
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-02-23 22:16:50 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-02-23 22:16:50 -0300
commitb91dcb23af5917d8a62afc8a5a72780aaf11f64b (patch)
treeb0fd958a2a7cdb947ffb8ce1e933c531941fea3a /lib/arel/visitors/mssql.rb
parentaac9da257f291ad8d2d4f914528881c240848bb2 (diff)
parentd86e20ccbea226bb6e42da508bc040fd03ab473f (diff)
downloadrails-b91dcb23af5917d8a62afc8a5a72780aaf11f64b.tar.gz
rails-b91dcb23af5917d8a62afc8a5a72780aaf11f64b.tar.bz2
rails-b91dcb23af5917d8a62afc8a5a72780aaf11f64b.zip
Merge pull request #356 from tamird/limited-delete
Limited delete
Diffstat (limited to 'lib/arel/visitors/mssql.rb')
-rw-r--r--lib/arel/visitors/mssql.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/arel/visitors/mssql.rb b/lib/arel/visitors/mssql.rb
index 7c65ad33f2..92362a0c5f 100644
--- a/lib/arel/visitors/mssql.rb
+++ b/lib/arel/visitors/mssql.rb
@@ -66,6 +66,23 @@ module Arel
end
end
+ def visit_Arel_Nodes_DeleteStatement o, collector
+ collector << 'DELETE '
+ if o.limit
+ collector << 'TOP ('
+ visit o.limit.expr, collector
+ collector << ') '
+ end
+ collector << 'FROM '
+ collector = visit o.relation, collector
+ if o.wheres.any?
+ collector << ' WHERE '
+ inject_join o.wheres, collector, AND
+ else
+ collector
+ end
+ end
+
def determine_order_by orders, x
if orders.any?
orders