lincoln lee created CALCITE-6060:
------------------------------------

             Summary: The named parameter OFFSET in window functions should not 
conflicts with reserved keywords
                 Key: CALCITE-6060
                 URL: https://issues.apache.org/jira/browse/CALCITE-6060
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.35.0, 1.26.0
            Reporter: lincoln lee


CALCITE-4171 adds support for named params in window function, but the new 
param name OFFSET conflicts with the reserved keyword, so it can't be used 
directly, users must use it with double quotes(`OFFSET`),
which is inconvenient (especially for the built-in window functions, which I 
think shouldn't occur, actually I tend to think this is a 'bug').

For example, a case like this:
{code}
  @Test void testTableFunctionTumbleWithParamNames() {
    final String sql = "select *\n"
        + "from table(\n"
        + "tumble(\n"
        + "  DATA => table Shipments,\n"
        + "  TIMECOL => descriptor(rowtime),\n"
        + "  SIZE => INTERVAL '1' MINUTE,\n"
        + "  OFFSET => INTERVAL '-1' MINUTE))";
    sql(sql).ok();
  }
{code}
will cause SqlParseException:
{code}
org.apache.calcite.sql.parser.SqlParseException: Incorrect syntax near the 
keyword 'OFFSET' at line 8, column 3.
Was expecting one of:
    "ABS" ...
    "ARRAY" ...
    "AVG" ...
    ...
{code}
Only `OFFSET` works.
If we agree to rename it, I suggest replacing it with OFFSETSIZE, with the 
following considerations:
1. similar to window size name SIZE, the current name actually omits SIZE, so 
calling it OFFSETSIZE would be easier for users to understand
2. be consistent with TIMECOL without underscores
3. btw, we found that Azure Streaming Analytics [1] also uses the name 
OFFSETSIZE

1. 
https://learn.microsoft.com/en-us/stream-analytics-query/hopping-window-azure-stream-analytics#arguments



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to