Make replace_relid() leave argument unmodified
authorAlexander Korotkov <akorotkov@postgresql.org>
Wed, 27 Dec 2023 01:34:29 +0000 (03:34 +0200)
committerAlexander Korotkov <akorotkov@postgresql.org>
Wed, 27 Dec 2023 01:57:57 +0000 (03:57 +0200)
commite0477837ce49d73c9f21a5e00143b741ce6e1f89
treee1029bfebccd8160cdfe381d292ba2dfbbc0aae0
parent7d58f2342bd3d2f0474207b63a3a548c29e20a9e
Make replace_relid() leave argument unmodified

There are a lot of situations when we share the same pointer to a Bitmapset
structure across different places.  In order to evade undesirable side effects
replace_relid() function should always return a copy.

Reported-by: Richard Guo
Discussion: https://postgr.es/m/CAMbWs4_wJthNtYBL%2BSsebpgF-5L2r5zFFk6xYbS0A78GKOTFHw%40mail.gmail.com
Reviewed-by: Richard Guo, Andres Freund, Ashutosh Bapat, Andrei Lepikhov
src/backend/optimizer/plan/analyzejoins.c
src/test/regress/expected/join.out
src/test/regress/sql/join.sql