1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

generate correct select if only offset is present (in Oracle)

This commit is contained in:
Raimonds Simanovskis 2010-10-21 11:22:48 +03:00
parent c66f025a8e
commit ec6ac6654e
2 changed files with 30 additions and 0 deletions

View file

@ -40,6 +40,20 @@ module Arel
return "SELECT * FROM (#{super(o)}) WHERE ROWNUM <= #{limit}"
end
if o.offset
o = o.dup
offset = o.offset
o.offset = nil
sql = super(o)
return <<-eosql
SELECT * FROM (
SELECT raw_sql_.*, rownum raw_rnum_
FROM (#{sql}) raw_sql_
)
WHERE #{visit offset}
eosql
end
super
end

View file

@ -105,6 +105,22 @@ module Arel
sql.must_equal sql2
end
end
describe 'only offset' do
it 'creates a select from subquery with rownum condition' do
stmt = Nodes::SelectStatement.new
stmt.offset = Nodes::Offset.new(10)
sql = @visitor.accept stmt
sql.must_be_like %{
SELECT * FROM (
SELECT raw_sql_.*, rownum raw_rnum_
FROM (SELECT ) raw_sql_
)
WHERE raw_rnum_ > 10
}
end
end
end
end
end