6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb', line 6
def arel(frame_options, start_offset, end_offset)
frame_option_names = calculate_frame_option_names(frame_options)
return unless frame_option_names.include?('FRAMEOPTION_NONDEFAULT')
range_klass = if frame_option_names.include?('FRAMEOPTION_RANGE')
Arel::Nodes::Range
else
Arel::Nodes::Rows
end
start_node = calculate_frame_node(
'FRAMEOPTION_START_',
frame_option_names,
start_offset,
)
end_node = calculate_frame_node(
'FRAMEOPTION_END_',
frame_option_names,
end_offset,
)
if frame_option_names.include?('FRAMEOPTION_BETWEEN')
Arel::Nodes::Between.new(
range_klass.new,
Arel::Nodes::And.new([start_node, end_node]),
)
else
range_klass.new start_node
end
end
|