mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Support locking by default and disable it only for SQLite.
This commit is contained in:
parent
2aac990e4d
commit
481ccefedd
7 changed files with 12 additions and 14 deletions
|
@ -28,10 +28,6 @@ module Arel
|
|||
"BINARY #{visit o.expr}"
|
||||
end
|
||||
|
||||
def visit_Arel_Nodes_Lock o
|
||||
visit o.expr
|
||||
end
|
||||
|
||||
###
|
||||
# :'(
|
||||
# http://dev.mysql.com/doc/refman/5.0/en/select.html#id3482214
|
||||
|
|
|
@ -3,10 +3,6 @@ module Arel
|
|||
class Oracle < Arel::Visitors::ToSql
|
||||
private
|
||||
|
||||
def visit_Arel_Nodes_Lock o
|
||||
visit o.expr
|
||||
end
|
||||
|
||||
def visit_Arel_Nodes_SelectStatement o
|
||||
o = order_hacks(o)
|
||||
|
||||
|
|
|
@ -2,9 +2,6 @@ module Arel
|
|||
module Visitors
|
||||
class PostgreSQL < Arel::Visitors::ToSql
|
||||
private
|
||||
def visit_Arel_Nodes_Lock o
|
||||
visit o.expr
|
||||
end
|
||||
|
||||
def visit_Arel_Nodes_Matches o
|
||||
"#{visit o.left} ILIKE #{visit o.right}"
|
||||
|
|
|
@ -2,6 +2,11 @@ module Arel
|
|||
module Visitors
|
||||
class SQLite < Arel::Visitors::ToSql
|
||||
private
|
||||
|
||||
# Locks are not supported in SQLite
|
||||
def visit_Arel_Nodes_Lock o
|
||||
end
|
||||
|
||||
def visit_Arel_Nodes_SelectStatement o
|
||||
o.limit = Arel::Nodes::Limit.new(-1) if o.offset && !o.limit
|
||||
super
|
||||
|
|
|
@ -200,9 +200,8 @@ key on UpdateManager using UpdateManager#key=
|
|||
""
|
||||
end
|
||||
|
||||
# FIXME: this does nothing on SQLLite3, but should do things on other
|
||||
# databases.
|
||||
def visit_Arel_Nodes_Lock o
|
||||
visit o.expr
|
||||
end
|
||||
|
||||
def visit_Arel_Nodes_Grouping o
|
||||
|
|
|
@ -454,7 +454,7 @@ module Arel
|
|||
it 'adds a lock node' do
|
||||
table = Table.new :users
|
||||
mgr = table.from table
|
||||
mgr.lock.to_sql.must_be_like %{ SELECT FROM "users" }
|
||||
mgr.lock.to_sql.must_be_like %{ SELECT FROM "users" FOR UPDATE }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -13,6 +13,11 @@ module Arel
|
|||
sql = @visitor.accept(stmt)
|
||||
sql.must_be_like "SELECT LIMIT -1 OFFSET 1"
|
||||
end
|
||||
|
||||
it 'does not support locking' do
|
||||
node = Nodes::Lock.new(Arel.sql('FOR UPDATE'))
|
||||
@visitor.accept(node).must_be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue