Re: [Proposal] Global temporary tables
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
Cc: 曾文旌(义从) <wenjing.zwj@alibaba-inc.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, 蔡松露(子嘉) <zijia@taobao.com>, "Cai, Le" <le.cai@alibaba-inc.com>, 张广舟(明虚) <guangzhou.zgz@alibaba-inc.com>, 赵殿奎 <diankui.zdk@alibaba-inc.com>, 萧少聪(铁庵) <shaocong.xsc@alibaba-inc.com>
Date: 2019-10-28T12:13:46Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
PageAddItemExtended(): Add LP_UNUSED assertion.
- 30aaab26e521 14.0 cited
-
Remove temporary files after backend crash
- cd91de0d1795 14.0 cited
-
Fix comment in indexing.c
- 9fd2952cf492 14.0 cited
-
Fix failure to ignore leftover temp tables after a server crash.
- 6919b7e32947 9.3.0 cited
On Fri, Oct 25, 2019 at 12:22 PM Konstantin Knizhnik <k.knizhnik@postgrespro.ru> wrote: > On 25.10.2019 18:01, Robert Haas wrote: > > On Fri, Oct 11, 2019 at 9:50 AM Konstantin Knizhnik > > <k.knizhnik@postgrespro.ru> wrote: > >> Just to clarify. > >> I have now proposed several different solutions for GTT: > >> > >> Shared vs. private buffers for GTT: > >> 1. Private buffers. This is least invasive patch, requiring no changes in relfilenodes. > >> 2. Shared buffers. Requires changing relfilenode but supports parallel query execution for GTT. > > I vote for #1. I think parallel query for temp objects may be a > > desirable feature, but I don't think it should be the job of a patch > > implementing GTTs to make it happen. In fact, I think it would be an > > actively bad idea, because I suspect that if we do eventually support > > temp relations for parallel query, we're going to want a solution that > > is shared between regular temp tables and global temp tables, not > > separate solutions for each. > > Sorry, may be I do not not understand you. > It seems to me that there is only one thing preventing usage of > temporary tables in parallel plans: private buffers. > If global temporary tables are accessed as normal tables though shared > buffers then them can be used in parallel queries > and no extra support is required for it. > At least I have checked that parallel queries are correctly worked for > my implementation of GTT with shared buffers. > So I do not understand about which "separate solutions" you are talking > about. > > I can agree that private buffers may be good starting point for GTT > implementation, because it is less invasive and GTT access speed is > exactly the same as of normal temp tables. > But I do not understand your argument why it is "actively bad idea". Well, it sounds like you're talking about ending up in a situation where local temporary tables are still in private buffers, but global temporary table data is in shared buffers. I think that would be inconsistent. And it would mean that when somebody wanted to make local temporary tables accessible in parallel query, they'd have to write a patch for that. In other words, I don't support dividing the patches like this: Patch #1: Support global temporary tables + allow global temporary tables to used by parallel query Patch #2: Allow local temporary tables to be used by parallel query I support dividing them like this: Patch #1: Support global temporary tables Patch #2: Allow (all kinds of) temporary tables to be used by parallel query The second division looks a lot cleaner to me, although as always I might be missing something. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company