Re: [Proposal] Global temporary tables - Mailing list pgsql-hackers
From | Pavel Stehule |
---|---|
Subject | Re: [Proposal] Global temporary tables |
Date | |
Msg-id | CAFj8pRCA4W1bOJ82nkO4ne7KA+WNo5GuS3=MPbMO0shf+2oGuA@mail.gmail.com Whole thread Raw |
In response to | Re: [Proposal] Global temporary tables ("曾文旌(义从)" <wenjing.zwj@alibaba-inc.com>) |
List | pgsql-hackers |
čt 23. 1. 2020 v 17:28 odesílatel 曾文旌(义从) <wenjing.zwj@alibaba-inc.com> napsal:
I'm trying to improve this part of the implementation in global_temporary_table_v7-pg13.patch2020年1月22日 下午1:29,曾文旌(义从) <wenjing.zwj@alibaba-inc.com> 写道:I'll make some improvements to optimize this part of the code.2020年1月21日 下午1:43,Pavel Stehule <pavel.stehule@gmail.com> 写道:HiI have a free time this evening, so I will check this patchI have a one question+ /* global temp table get relstats from localhash */
+ if (RELATION_IS_GLOBAL_TEMP(rel))
+ {
+ get_gtt_relstats(RelationGetRelid(rel),
+ &relpages, &reltuples, &relallvisible,
+ NULL, NULL);
+ }
+ else
+ {
+ /* coerce values in pg_class to more desirable types */
+ relpages = (BlockNumber) rel->rd_rel->relpages;
+ reltuples = (double) rel->rd_rel->reltuples;
+ relallvisible = (BlockNumber) rel->rd_rel->relallvisible;
+ }Isbn't possible to fill the rd_rel structure too, so this branching can be reduced?Please check my patch and give me feedback.
It is looking better, still there are some strange things (I didn't tested functionality yet)
elog(ERROR, "invalid relpersistence: %c",
relation->rd_rel->relpersistence);
@@ -3313,6 +3336,10 @@ RelationBuildLocalRelation(const char *relname,
rel->rd_backend = BackendIdForTempRelations();
rel->rd_islocaltemp = true;
break;
+ case RELPERSISTENCE_GLOBAL_TEMP:
+ rel->rd_backend = BackendIdForTempRelations();
+ rel->rd_islocaltemp = true;
+ break;
default:
relation->rd_rel->relpersistence);
@@ -3313,6 +3336,10 @@ RelationBuildLocalRelation(const char *relname,
rel->rd_backend = BackendIdForTempRelations();
rel->rd_islocaltemp = true;
break;
+ case RELPERSISTENCE_GLOBAL_TEMP:
+ rel->rd_backend = BackendIdForTempRelations();
+ rel->rd_islocaltemp = true;
+ break;
default:
+ rel->rd_islocaltemp = true; <<<<<<< if this is valid, then the name of field "rd_islocaltemp" is not probably best
Pavel
ThanksWenjingRegardsPavelpo 20. 1. 2020 v 17:27 odesílatel 曾文旌(义从) <wenjing.zwj@alibaba-inc.com> napsal:
> 2020年1月20日 上午1:32,Erik Rijkers <er@xs4all.nl> 写道:
>
> On 2020-01-19 18:04, 曾文旌(义从) wrote:
>>> 2020年1月14日 下午9:20,Pavel Stehule <pavel.stehule@gmail.com> 写道:
>>> út 14. 1. 2020 v 14:09 odesílatel 曾文旌(义从) <wenjing.zwj@alibaba-inc.com <mailto:wenjing.zwj@alibaba-inc.com>> napsal:
>
>>> [global_temporary_table_v4-pg13.patch ]
>
> Hi,
>
> This patch doesn't quiet apply for me:
>
> patching file src/backend/access/common/reloptions.c
> patching file src/backend/access/gist/gistutil.c
> patching file src/backend/access/hash/hash.c
> Hunk #1 succeeded at 149 (offset 3 lines).
> patching file src/backend/access/heap/heapam_handler.c
> patching file src/backend/access/heap/vacuumlazy.c
> patching file src/backend/access/nbtree/nbtpage.c
> patching file src/backend/access/table/tableam.c
> patching file src/backend/access/transam/xlog.c
> patching file src/backend/catalog/Makefile
> Hunk #1 FAILED at 44.
> 1 out of 1 hunk FAILED -- saving rejects to file src/backend/catalog/Makefile.rej
> [...]
> (The rest applies without errors)
>
> src/backend/catalog/Makefile.rej contains:
>
> ------------------------
> --- src/backend/catalog/Makefile
> +++ src/backend/catalog/Makefile
> @@ -44,6 +44,8 @@ OBJS = \
> storage.o \
> toasting.o
>
> +OBJS += storage_gtt.o
> +
> BKIFILES = postgres.bki postgres.description postgres.shdescription
>
> include $(top_srcdir)/src/backend/common.mk
> ------------------------
>
> Can you have a look?
I updated the code and remade the patch.
Please give me feedback if you have any more questions.
>
>
> thanks,
>
> Erik Rijkers
>
>
>
>
>
pgsql-hackers by date: