čt 23. 1. 2020 v 17:28 odesílatel 曾文旌(义从) <wenjing....@alibaba-inc.com> napsal:
> > > 2020年1月22日 下午1:29,曾文旌(义从) <wenjing....@alibaba-inc.com> 写道: > > > > 2020年1月21日 下午1:43,Pavel Stehule <pavel.steh...@gmail.com> 写道: > > Hi > > I have a free time this evening, so I will check this patch > > I 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? > > I'll make some improvements to optimize this part of the code. > > I'm trying to improve this part of the implementation in > global_temporary_table_v7-pg13.patch > 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: + rel->rd_islocaltemp = true; <<<<<<< if this is valid, then the name of field "rd_islocaltemp" is not probably best regards Pavel > > Thanks > > Wenjing > > > > > > Regards > > Pavel > > po 20. 1. 2020 v 17:27 odesílatel 曾文旌(义从) <wenjing....@alibaba-inc.com> > napsal: > >> >> >> > 2020年1月20日 上午1:32,Erik Rijkers <e...@xs4all.nl> 写道: >> > >> > On 2020-01-19 18:04, 曾文旌(义从) wrote: >> >>> 2020年1月14日 下午9:20,Pavel Stehule <pavel.steh...@gmail.com> 写道: >> >>> út 14. 1. 2020 v 14:09 odesílatel 曾文旌(义从) < >> wenjing....@alibaba-inc.com <mailto:wenjing....@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 >> > >> > >> > >> > >> > >> >> > >