Re: Pathify RHS unique-ification for semijoin planning
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Álvaro Herrera <alvherre@kurilemu.de>, Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-08-13T03:17:00Z
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 Wed, Aug 13, 2025 at 11:27 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > Richard Guo <guofenglinux@gmail.com> writes: > > In this patch, the only instance that doesn't follow the "unique-ify" > > form is the macro IS_UNIQUEIFIED_REL, as dashes are not allowed in C > > identifiers. Maybe a better alternative is IS_RELATION_UNIQUE? Any > > suggestions? > Hm ... to my ear, "unique-ified" implies that we took some positive > action to make the path's output unique, such as running it through > a hashagg or Unique node. IS_RELATION_UNIQUE only implies that the > output is unique, so for example a scan of a primary key should > satisfy such a predicate. Not having read the patch (I do hope > to get to that), I'm not sure which connotation you have in mind. > If it's the latter, IS_RELATION_UNIQUE seems like a fine name. > If it's the former, maybe something like "RELATION_WAS_MADE_UNIQUE"? > That's not very pretty though ... It's the former: this macro is to signal that we've explicitly taken steps to make the output of the relation unique. IMO, "unique-ified" best describes this, but we cannot use it directly in the macro name because of the dash. Hmm, I think "RELATION_WAS_MADE_UNIQUE" works well because it clearly conveys that the relation has been explicitly unique-ified. It's a bit verbose, but I found that we have similar names in our codebase, such as VAC_BLK_WAS_EAGER_SCANNED. Thanks Richard