]> source.dussan.org Git - sonarqube.git/blob
0f88e1ac148b8094f3b6b7fc3f43d2af11a385db
[sonarqube.git] /
1 require 'arel/visitors/compat'
2
3 module Arel
4   module Visitors
5     class HSQLDB < Arel::Visitors::ToSql
6       def visit_Arel_Nodes_SelectStatement o
7         [
8           limit_offset(o.cores.map { |x| visit_Arel_Nodes_SelectCore x }.join, o),
9           ("ORDER BY #{o.orders.map { |x| visit x }.join(', ')}" unless o.orders.empty?),
10         ].compact.join ' '
11       end
12
13       def limit_offset sql, o
14         offset = o.offset || 0
15         bef = sql[7..-1]
16         if limit = o.limit
17           "SELECT LIMIT #{offset} #{limit_for(limit)} #{bef}"
18         elsif offset > 0
19           "SELECT LIMIT #{offset} 0 #{bef}"
20         else
21           sql
22         end
23       end
24     end
25   end
26 end