Обсуждение: pgsql: Do not translate dummy SpecialJoinInfos for child joins

Поиск
Список
Период
Сортировка

pgsql: Do not translate dummy SpecialJoinInfos for child joins

От
Amit Langote
Дата:
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: https://postgr.es/m/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(-)


Re: pgsql: Do not translate dummy SpecialJoinInfos for child joins

От
Amit Langote
Дата:
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: https://postgr.es/m/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&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



Re: pgsql: Do not translate dummy SpecialJoinInfos for child joins

От
Alvaro Herrera
Дата:
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)