pgsql: Do not translate dummy SpecialJoinInfos for child joins
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(-)
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.comBranch
------
masterDetails
-------
https://git.postgresql.org/pg/commitdiff/6190d828cd25ae20c0a8548765a0e1b880f1f66dModified 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&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
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&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)