On 18/11/2025 06:03, Chao Li wrote:
1 - 0001 - kwlist.h
```
+PG_KEYWORD("define", DEFINE, RESERVED_KEYWORD, BARE_LABEL)
```

Why do we add “define” as a reserved keyword? From the SQL example you put in 
0006:
```
<programlisting>
SELECT company, tdate, price,
  first_value(price) OVER w,
  max(price) OVER w,
  count(price) OVER w
FROM stock
  WINDOW w AS (
  PARTITION BY company
  ORDER BY tdate
  ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
  AFTER MATCH SKIP PAST LAST ROW
  INITIAL
  PATTERN (LOWPRICE UP+ DOWN+)
  DEFINE
   LOWPRICE AS price &lt;= 100,
   UP AS price &gt; PREV(price),
   DOWN AS price &lt; PREV(price)
);
</programlisting>
```

PARTITION is at the same level as DEFINE, but it’s not defined as a reserved 
keyword:
```
PG_KEYWORD("partition", PARTITION, UNRESERVED_KEYWORD, BARE_LABEL)
```

Even in this patch,”initial”,”past”, “pattern” and “seek” are defined as 
unreserved, why?

So I just want to clarify.


Because of position. Without making DEFINE a reserved keyword, how do you know that it isn't another variable in the PATTERN clause?

--

Vik Fearing



Reply via email to