Re: Some optimizations for COALESCE expressions during constant folding
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-12-03T06:39:04Z
Lists: pgsql-hackers
Attachments
- v4-0001-Simplify-COALESCE-expressions-using-non-nullable-.patch (application/octet-stream)
- v4-0002-Optimize-ROW-.-IS-NOT-NULL-using-non-nullable-fie.patch (application/octet-stream)
- v4-0003-Teach-expr_is_nonnullable-to-handle-more-expressi.patch (application/octet-stream)
On Mon, Dec 1, 2025 at 5:11 PM Richard Guo <guofenglinux@gmail.com> wrote: > Attached is the patch set rebased on current master. I have split the > patch into two parts: 0001 teaches eval_const_expressions to simplify > COALESCE arguments using NOT NULL constraints, and 0002 teaches > expr_is_nonnullable to handle COALESCE expressions. > > In addition, 0003 is a WIP patch that extends expr_is_nonnullable to > handle more expression types. I suspect there are additional cases > beyond those covered in this patch that can be proven non-nullable. Here is an updated patchset. I have reorganized the code changes as: 0001 simplifies COALESCE expressions based on non-nullable arguments. 0002 simplifies NullTest expressions for RowExprs based on non-nullable component fields. It also replaces the existing use of var_is_nonnullable() with expr_is_nonnullable() for NullTests. 0003 teaches expr_is_nonnullable() to handle more expression types. - Richard