Thread: Syntax conflicts in frame clause
Rewriting my frame support types patch to allow any expression in PRECEDING/FOLLOWING clause, I found the syntax below in PG conflicts: frame_extent: frame_bound { ... } | BETWEEN frame_bound AND frame_bound { ... } ; frame_bound: UNBOUNDED PRECEDING { ... } | UNBOUNDED FOLLOWING { ... } | CURRENT_P ROW { ... } | a_expr PRECEDING {... } | a_expr FOLLOWING { .... } ; because a_expr (and of course b_expr) contains BETWEEN as type_func_name_keyword, which means the starting BETWEEN in frame_extend is completely ambiguous. When I tried to move BETWEEN to reserved_keyword, it was solved as expected. In my poor mind there's no way to avoid this situation as long as you keep BETWEEN as type_func_name_keyword, but could anyone have a solution for this? Regards, -- Hitoshi Harada
Hitoshi Harada <umi.tanuki@gmail.com> writes: > Rewriting my frame support types patch to allow any expression in > PRECEDING/FOLLOWING clause, I found the syntax below in PG conflicts: Yeah, we ran into that in the original WINDOW patch IIRC, and found some solution to it that got taken out again when the functionality was cut down for 8.4. You might want to look back to see what that looked like; I think we avoided reserving BETWEEN at the cost of making the productions a bit more redundant. regards, tom lane
2009/11/25 Tom Lane <tgl@sss.pgh.pa.us>: > Hitoshi Harada <umi.tanuki@gmail.com> writes: >> Rewriting my frame support types patch to allow any expression in >> PRECEDING/FOLLOWING clause, I found the syntax below in PG conflicts: > > Yeah, we ran into that in the original WINDOW patch IIRC, and found some > solution to it that got taken out again when the functionality was cut > down for 8.4. You might want to look back to see what that looked like; > I think we avoided reserving BETWEEN at the cost of making the > productions a bit more redundant. Oops, I've forgot that :( http://archives.postgresql.org/message-id/6363.1229890896@sss.pgh.pa.us At the time you put BETWEEN as reserved_keyword, but my trial showed col_name_keyword can also be a candidate. Regards, -- Hitoshi Harada