Re: [Proposal] Global temporary tables
Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
From: Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
To: Pavel Stehule <pavel.stehule@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, 曾文旌(义从) <wenjing.zwj@alibaba-inc.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, 蔡松露(子嘉) <zijia@taobao.com>, "Cai, Le" <le.cai@alibaba-inc.com>, 萧少聪(铁庵) <shaocong.xsc@alibaba-inc.com>
Date: 2020-01-30T10:02:18Z
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 30.01.2020 12:52, Pavel Stehule wrote: > > > čt 30. 1. 2020 v 10:44 odesílatel Konstantin Knizhnik > <k.knizhnik@postgrespro.ru <mailto:k.knizhnik@postgrespro.ru>> napsal: > > > > On 30.01.2020 12:23, Pavel Stehule wrote: >> >> Building regular index requires two kinds of lock: >> 1. You have to lock pg_class to make changes in system catalog. >> 2. You need to lock heap relation to pervent concurrent >> updates while building index. >> >> GTT requires 1) but not 2). >> Once backend inserts information about new index in system >> catalog, all other sessions may use it. pg_class lock >> prevents any race condition here. >> And building index itself doesn't affect any other backends. >> >> >> It is true. The difference for GTT, so any other sessions have to >> build index (in your proposal) as extra operation against >> original plan. >> > What is "index"? > For most parts of Postgres it is just an entry in system catalog. > And only executor deals with its particular implementation and > content. > > My point is that if we process GTT index metadata in the same way > as regular index metadata, > then there will be no differences for the postgres between GTT and > regular indexes. > And we can provide the same behavior. > > > There should be a difference - index on regular table is created by > one process. Same thing is not possible on GTT. So there should be a > difference every time. Metadata of GTT index is also created by one process. And actual content of the index is not interesting for most parts of Postgres. > > You can reduce some differences, but minimally me and Robert don't > feel it well. Starting a building index from routine, that is used for > reading from buffer doesn't look well. I can accept some stranges, but > I need to have feeling so it is necessary. I don't think so it is > necessary in this case. Sorry, but "don't feel it well", "doesn't look well" looks more likeliterary criticism rather than code review;) Yes, I agree that it is unnatural to call btindex from _bt_getbuf. But what can go wrong here? -- Konstantin Knizhnik Postgres Professional: http://www.postgrespro.com The Russian Postgres Company