pgsql: Do not translate dummy SpecialJoinInfos for child joins

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

Do not translate dummy SpecialJoinInfos for child joins

This teaches build_child_join_sjinfo() to create the dummy
SpecialJoinInfos (those created for inner joins) directly for a given
child join, skipping the unnecessary overhead of translating the
parent joinrel's SpecialJoinInfo.

To that end, this commit moves the code to initialize the dummy
SpecialJoinInfos to a new function named init_dummy_sjinfo() and
changes the few existing sites that have this code and
build_child_join_sjinfo() to call this new function.

Author: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Richard Guo <guofenglinux@gmail.com>
Reviewed-by: Amit Langote <amitlangote09@gmail.com>
Reviewed-by: Andrey Lepikhov <a.lepikhov@postgrespro.ru>
Reviewed-by: Tomas Vondra <tomas.vondra@enterprisedb.com>
Discussion: /messages/by-id/CAExHW5tHqEf3ASVqvFFcghYGPfpy7o3xnvhHwBGbJFMRH8KjNw@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/6190d828cd25ae20c0a8548765a0e1b880f1f66d

Modified Files
--------------
src/backend/optimizer/path/costsize.c | 37 ++--------------------
src/backend/optimizer/path/joinrels.c | 58 +++++++++++++++++++++++++----------
src/include/optimizer/paths.h | 2 ++
3 files changed, 46 insertions(+), 51 deletions(-)

#2Amit Langote
Langote_Amit_f8@lab.ntt.co.jp
In reply to: Amit Langote (#1)
Re: pgsql: Do not translate dummy SpecialJoinInfos for child joins

On Mon, Mar 25, 2024 at 6:08 PM Amit Langote <amitlan@postgresql.org> wrote:

Do not translate dummy SpecialJoinInfos for child joins

This teaches build_child_join_sjinfo() to create the dummy
SpecialJoinInfos (those created for inner joins) directly for a given
child join, skipping the unnecessary overhead of translating the
parent joinrel's SpecialJoinInfo.

To that end, this commit moves the code to initialize the dummy
SpecialJoinInfos to a new function named init_dummy_sjinfo() and
changes the few existing sites that have this code and
build_child_join_sjinfo() to call this new function.

Author: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Richard Guo <guofenglinux@gmail.com>
Reviewed-by: Amit Langote <amitlangote09@gmail.com>
Reviewed-by: Andrey Lepikhov <a.lepikhov@postgrespro.ru>
Reviewed-by: Tomas Vondra <tomas.vondra@enterprisedb.com>
Discussion: /messages/by-id/CAExHW5tHqEf3ASVqvFFcghYGPfpy7o3xnvhHwBGbJFMRH8KjNw@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/6190d828cd25ae20c0a8548765a0e1b880f1f66d

Modified Files
--------------
src/backend/optimizer/path/costsize.c | 37 ++--------------------
src/backend/optimizer/path/joinrels.c | 58 +++++++++++++++++++++++++----------
src/include/optimizer/paths.h | 2 ++
3 files changed, 46 insertions(+), 51 deletions(-)

I noticed a failure that I don't know what to make of after this and
the other commit (5278d0a2e) reached the buildfarm animal morepork:

https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=morepork&amp;dt=2024-03-25%2009%3A30%3A38

In file included from ginbtree.c:17:
In file included from ../../../../src/include/access/gin_private.h:20:
../../../../src/include/lib/rbtree.h:1:1: error: unknown type name 'ator'
ator</structfield> <type>yes_or_no</type>
^
../../../../src/include/lib/rbtree.h:1:5: error: expected identifier or '('
ator</structfield> <type>yes_or_no</type>
^
In file included from ginbtree.c:17:
In file included from ../../../../src/include/access/gin_private.h:21:
In file included from ../../../../src/include/storage/bufmgr.h:22:
In file included from ../../../../src/include/utils/snapmgr.h:18:
../../../../src/include/utils/resowner.h:33:20: error: unknown type
name 'ResourceOwner'
extern PGDLLIMPORT ResourceOwner CurrentResourceOwner;
^
../../../../src/include/utils/resowner.h:34:20: error: unknown type
name 'ResourceOwner'
extern PGDLLIMPORT ResourceOwner CurTransactionResourceOwner;
^
../../../../src/include/utils/resowner.h:35:20: error: unknown type
name 'ResourceOwner'
extern PGDLLIMPORT ResourceOwner TopTransactionResourceOwner;
^
../../../../src/include/utils/resowner.h:36:20: error: unknown type
name 'ResourceOwner'
extern PGDLLIMPORT ResourceOwner AuxProcessResourceOwner;
^
../../../../src/include/utils/resowner.h:137:8: error: unknown type
name 'ResourceOwner'; did you mean 'ResourceOwnerDesc'?
extern ResourceOwner ResourceOwnerCreate(ResourceOwner parent,
^~~~~~~~~~~~~
ResourceOwnerDesc
../../../../src/include/utils/resowner.h:120:3: note:
'ResourceOwnerDesc' declared here
...

Does anyone know what might be going on here?

--
Thanks, Amit Langote

#3Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Amit Langote (#2)
Re: pgsql: Do not translate dummy SpecialJoinInfos for child joins

On 2024-Mar-25, Amit Langote wrote:

I noticed a failure that I don't know what to make of after this and
the other commit (5278d0a2e) reached the buildfarm animal morepork:

https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=morepork&amp;dt=2024-03-25%2009%3A30%3A38

In file included from ginbtree.c:17:
In file included from ../../../../src/include/access/gin_private.h:20:
../../../../src/include/lib/rbtree.h:1:1: error: unknown type name 'ator'
ator</structfield> <type>yes_or_no</type>
^

Surely this is a kernel bug. This text appears in
doc/src/sgml/information_schema.sgml and nowhere else. The animal is
now green, so I don't think you need to do anything about this.

--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"Digital and video cameras have this adjustment and film cameras don't for the
same reason dogs and cats lick themselves: because they can." (Ken Rockwell)