提交 ec6ac665 编写于 作者: R Raimonds Simanovskis

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

上级 c66f025a
......@@ -40,6 +40,20 @@ def visit_Arel_Nodes_SelectStatement o
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
......
......@@ -105,6 +105,22 @@ module Visitors
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册