Re: [Proposal] Global temporary tables
Pavel Stehule <pavel.stehule@gmail.com>
From: Pavel Stehule <pavel.stehule@gmail.com>
To: Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
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:10:35Z
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
čt 30. 1. 2020 v 11:02 odesílatel Konstantin Knizhnik < k.knizhnik@postgrespro.ru> napsal: > > > On 30.01.2020 12:52, Pavel Stehule wrote: > > > > čt 30. 1. 2020 v 10:44 odesílatel Konstantin Knizhnik < > 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 like > literary criticism rather than code review;) > The design is subjective. I am sure, so your solution can work, like mine, or any other. But I am not sure, so your solution is good for practical usage. > Yes, I agree that it is unnatural to call btindex from _bt_getbuf. But > what can go wrong here? > creating index as side effect of table reading. Just the side effect too much big. > -- > Konstantin Knizhnik > Postgres Professional: http://www.postgrespro.com > The Russian Postgres Company > >