Thread
-
Re: Should IGNORE NULLS cache nullness for volatile arguments?
Tatsuo Ishii <ishii@postgresql.org> — 2026-05-14T12:56:22Z
Hi Chao, >> The attached patch makes a small change in that direction. It only uses the IGNORE NULLS nullness cache when the argument is safe to reuse. For non-cacheable arguments, the nullness is treated as unknown and the argument is evaluated again. >> >> See the attached patch for details. > > I will look into the patches. @@ -3454,7 +3455,10 @@ ignorenulls_getfuncarginframe(WindowObject winobj, int argno, if (isout) *isout = false; - v = get_notnull_info(winobj, abs_pos, argno); + if (winobj->notnull_info_cacheable[argno]) What about moving this if statement inside get_notnull_info() so that the caller does not care about this argno is cacheable or not? + /* record the row status if it is safe to reuse */ + if (winobj->notnull_info_cacheable[argno]) + put_notnull_info(winobj, abs_pos, argno, *isnull); Similary, we can move "if (winobj->notnull_info_cacheable[argno])" inside put_notnull_info(). Regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp