> 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