Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options
От | Tatsuo Ishii |
---|---|
Тема | Re: Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options |
Дата | |
Msg-id | 20250123.132502.1946260197628893279.ishii@postgresql.org обсуждение исходный текст |
Ответ на | Add RESPECT/IGNORE NULLS and FROM FIRST/LAST options (Oliver Ford <ojford@gmail.com>) |
Список | pgsql-hackers |
> Hello, > I also played with the v4 patch and it produces correct result: > test=# SELECT x,y,lead(y) IGNORE NULLS OVER (ORDER BY x) FROM > (VALUES(1,NULL),(2,2),(3,NULL)) AS v(x,y); > x | y | lead > ---+---+------ > 1 | | 2 > 2 | 2 | > 3 | | > (3 rows) > > test=# > It is from today's git, clean compile and install with only v4 patch > applied, make check also passes without errors. I guess you are just lucky. In my case I enabled --enable-cassert to build PostgreSQL and it automatically turn on CLOBBER_FREED_MEMORY and freed memory area is scrambled. If I look the patch closer, I found a problem: +void +WinCheckAndInitializeNullTreatment(WindowObject winobj, : : + winobj->win_nonnulls = palloc_array(int64, 16); WinCheckAndInitializeNullTreatment is called in each built-in window function. Window functions are called in the per tuple memory context, which means win_nonnulls disappears when next tuple is supplied to the window function. If my understanding is correct, winobj->win_nonnulls needs to survive across processing tuples. Best reagards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp
В списке pgsql-hackers по дате отправления: