From f852b608d140addcbdc7ecb85d42eef0bbd512c5 Mon Sep 17 00:00:00 2001 From: Yasuo Honda Date: Mon, 2 May 2016 13:31:06 +0000 Subject: Raise ArgumentError if limit and lock are used for Oracle12 visitor it would generates `SELECT ... FETCH FIRST n ROWS ONLY FOR UPDATE` which causes Oracle 12c database returns this error : ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc. --- test/visitors/test_oracle12.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/visitors/test_oracle12.rb b/test/visitors/test_oracle12.rb index df0f01b30b..3263007ddb 100644 --- a/test/visitors/test_oracle12.rb +++ b/test/visitors/test_oracle12.rb @@ -29,12 +29,13 @@ module Arel end describe 'locking' do - it 'removes limit when locking' do + it 'generates ArgumentError if limit and lock are used' do stmt = Nodes::SelectStatement.new stmt.limit = Nodes::Limit.new(10) stmt.lock = Nodes::Lock.new(Arel.sql('FOR UPDATE')) - sql = compile(stmt) - sql.must_be_like "SELECT FOR UPDATE" + assert_raises ArgumentError do + sql = compile(stmt) + end end it 'defaults to FOR UPDATE when locking' do -- cgit v1.2.3