Re: Pathify RHS unique-ification for semijoin planning
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Alexandra Wang <alexandra.wang.oss@gmail.com>
Cc: Álvaro Herrera <alvherre@kurilemu.de>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Tom Lane <tgl@sss.pgh.pa.us>, Andy Fan <zhihuifan1213@163.com>, wenhui qiu <qiuwenhuifx@gmail.com>
Date: 2025-08-04T01:55:48Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Simplify relation_has_unique_index_for()
- bf9ee294e567 19 (unreleased) landed
-
Pathify RHS unique-ification for semijoin planning
- 24225ad9aafc 19 (unreleased) landed
-
Convert varatt.h access macros to static inline functions.
- e035863c9a04 19 (unreleased) cited
-
Re-export a few of createplan.c's make_xxx() functions.
- 570be1f73f38 9.6.0 cited
On Fri, Aug 1, 2025 at 11:58 PM Alexandra Wang <alexandra.wang.oss@gmail.com> wrote: > While reviewing the code, the following diff concerns me: > if (joinrel->consider_parallel && > - save_jointype != JOIN_UNIQUE_OUTER && > - save_jointype != JOIN_FULL && > - save_jointype != JOIN_RIGHT && > - save_jointype != JOIN_RIGHT_ANTI && > + jointype != JOIN_FULL && > + jointype != JOIN_RIGHT && > + jointype != JOIN_RIGHT_ANTI && > outerrel->partial_pathlist != NIL && > bms_is_empty(joinrel->lateral_relids)) > > What has changed that enabled JOIN_UNIQUE_OUTER to handle partial > paths? Or is it no longer possible for the outer path to be partial? It's the latter, as indicated by the Assert in create_unique_paths(): + /* + * There shouldn't be any partial paths for the unique relation; + * otherwise, we won't be able to properly guarantee uniqueness. + */ + Assert(unique_rel->partial_pathlist == NIL); Thanks Richard