1
0
Fork 0
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:
Edgars Beigarts 2011-08-26 20:01:00 +03:00
parent 2aac990e4d
commit 481ccefedd
7 changed files with 12 additions and 14 deletions

View file

@ -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

View file

@ -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)

View file

@ -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}"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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