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 <= 100,
UP AS price > PREV(price),
DOWN AS price < 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