pgsql: Prevent duplicate RTEPermissionInfo for plain-inheritance parent

Started by Amit Langoteover 2 years ago4 messagescomitters
Jump to latest
#1Amit Langote
Langote_Amit_f8@lab.ntt.co.jp

Prevent duplicate RTEPermissionInfo for plain-inheritance parents

Currently, expand_single_inheritance_child() doesn't reset
perminfoindex in a plain-inheritance parent's child RTE, because
prior to 387f9ed0a0, the executor would use the first child RTE to
locate the parent's RTEPermissionInfo. That in turn causes
add_rte_to_flat_rtable() to create an extra RTEPermissionInfo
belonging to the parent's child RTE with the same content as the one
belonging to the parent's original ("root") RTE.

In 387f9ed0a0, we changed things so that the executor can now use the
parent's "root" RTE for locating its RTEPermissionInfo instead of the
child RTE, so the latter's perminfoindex need not be set anymore, so
make it so.

Reported-by: Tom Lane
Discussion: /messages/by-id/839708.1698174464@sss.pgh.pa.us
Backpatch-through: 16

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/01575ad788e3d3e67b641d43802c8b7bf126a1a3

Modified Files
--------------
src/backend/optimizer/util/inherit.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)

#2David Rowley
dgrowleyml@gmail.com
In reply to: Amit Langote (#1)
Re: pgsql: Prevent duplicate RTEPermissionInfo for plain-inheritance parent

On Thu, 26 Oct 2023 at 15:59, Amit Langote <amitlan@postgresql.org> wrote:

src/backend/optimizer/util/inherit.c | 9 ++-------

Hi Amit,

I'm getting an unused variable warning from this with non-assert builds:

[697/1908] Compiling C object
src/backend/postgres_lib.a.p/optimizer_util_inherit.c.o
../src/backend/optimizer/util/inherit.c: In function
‘expand_single_inheritance_child’:
../src/backend/optimizer/util/inherit.c:460:33: warning: unused
variable ‘parentOID’ [-Wunused-variable]
460 | Oid parentOID = RelationGetRelid(parentrel);
| ^~~~~~~~~

Maybe parentOID needs a PG_USED_FOR_ASSERTS_ONLY?

David

#3Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: David Rowley (#2)
Re: pgsql: Prevent duplicate RTEPermissionInfo for plain-inheritance parent

On Thu, Oct 26, 2023 at 3:08 PM David Rowley <dgrowleyml@gmail.com> wrote:

On Thu, 26 Oct 2023 at 15:59, Amit Langote <amitlan@postgresql.org> wrote:

src/backend/optimizer/util/inherit.c | 9 ++-------

Hi Amit,

I'm getting an unused variable warning from this with non-assert builds:

[697/1908] Compiling C object
src/backend/postgres_lib.a.p/optimizer_util_inherit.c.o
../src/backend/optimizer/util/inherit.c: In function
‘expand_single_inheritance_child’:
../src/backend/optimizer/util/inherit.c:460:33: warning: unused
variable ‘parentOID’ [-Wunused-variable]
460 | Oid parentOID = RelationGetRelid(parentrel);
| ^~~~~~~~~

Thanks for the heads up?

Maybe parentOID needs a PG_USED_FOR_ASSERTS_ONLY?

Hmm, how about simply removing the variable?

--
Thanks, Amit Langote
EDB: http://www.enterprisedb.com

#4Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#3)
Re: pgsql: Prevent duplicate RTEPermissionInfo for plain-inheritance parent

On Thu, Oct 26, 2023 at 4:59 PM Amit Langote <amitlangote09@gmail.com> wrote:

On Thu, Oct 26, 2023 at 3:08 PM David Rowley <dgrowleyml@gmail.com> wrote:

On Thu, 26 Oct 2023 at 15:59, Amit Langote <amitlan@postgresql.org> wrote:

src/backend/optimizer/util/inherit.c | 9 ++-------

Hi Amit,

I'm getting an unused variable warning from this with non-assert builds:

[697/1908] Compiling C object
src/backend/postgres_lib.a.p/optimizer_util_inherit.c.o
../src/backend/optimizer/util/inherit.c: In function
‘expand_single_inheritance_child’:
../src/backend/optimizer/util/inherit.c:460:33: warning: unused
variable ‘parentOID’ [-Wunused-variable]
460 | Oid parentOID = RelationGetRelid(parentrel);
| ^~~~~~~~~

Thanks for the heads up?

Oops, wasn't a question. :)

Maybe parentOID needs a PG_USED_FOR_ASSERTS_ONLY?

Hmm, how about simply removing the variable?

Actually, using PG_USED_FOR_ASSERTS_ONLY seems fine. I will push a fix shortly.

--
Thanks, Amit Langote
EDB: http://www.enterprisedb.com