Re: [Proposal] Global temporary tables
曾文旌 (义从) <wenjing.zwj@alibaba-inc.com>
From: 曾文旌(义从) <wenjing.zwj@alibaba-inc.com>
To: tushar <tushar.ahuja@enterprisedb.com>
Cc: "Prabhat Sahu" <prabhat.sahu@enterprisedb.com>, "Pavel Stehule" <pavel.stehule@gmail.com>, "Robert Haas" <robertmhaas@gmail.com>, "Tomas Vondra" <tomas.vondra@2ndquadrant.com>, "Konstantin Knizhnik" <k.knizhnik@postgrespro.ru>, "PostgreSQL Hackers" <pgsql-hackers@postgresql.org>, 蔡松露(子嘉) <zijia@taobao.com>, Cai, Le <le.cai@alibaba-inc.com>, 萧少聪(铁庵) <shaocong.xsc@alibaba-inc.com>
Date: 2020-03-03T08:40:55Z
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
> 2020年3月2日 下午10:47,tushar <tushar.ahuja@enterprisedb.com> 写道: > > On 2/27/20 9:43 AM, 曾文旌(义从) wrote: >>> -- Scenario 2: >>> Here I am getting the same error message in both the below cases. >>> We may add a "global" keyword with GTT related error message. >>> >>> postgres=# create global temporary table gtt1 (c1 int unique); >>> CREATE TABLE >>> postgres=# create temporary table tmp1 (c1 int unique); >>> CREATE TABLE >>> >>> postgres=# create temporary table tmp2 (c1 int references gtt1(c1) ); >>> ERROR: constraints on temporary tables may reference only temporary tables >>> >>> postgres=# create global temporary table gtt2 (c1 int references tmp1(c1) ); >>> ERROR: constraints on temporary tables may reference only temporary tables >> Fixed in global_temporary_table_v15-pg13.patch >> >> > Thanks Wenjing. > > This below scenario is not working i.e even 'on_commit_delete_rows' is true then after commit - rows are NOT removing > > postgres=# create global temp table foo1(n int) with (on_commit_delete_rows='true'); > CREATE TABLE > postgres=# > postgres=# begin; > BEGIN > postgres=*# insert into foo1 values (9); > INSERT 0 1 > postgres=*# insert into foo1 values (9); > INSERT 0 1 > postgres=*# select * from foo1; > n > --- > 9 > 9 > (2 rows) > > postgres=*# commit; > COMMIT > postgres=# select * from foo1; -- after commit -there should be 0 row as on_commit_delete_rows is 'true' > n > --- > 9 > 9 > (2 rows) > > postgres=# \d+ foo1 > Table "public.foo1" > Column | Type | Collation | Nullable | Default | Storage | Stats target | Description > --------+---------+-----------+----------+---------+---------+--------------+------------- > n | integer | | | | plain | | > Access method: heap > Options: on_commit_delete_rows=true > > postgres=# > > but if user - create table this way then it is working as expected > > postgres=# create global temp table foo2(n int) on commit delete rows; > CREATE TABLE > postgres=# begin; insert into foo2 values (9); insert into foo2 values (9); commit; select * from foo2; > BEGIN > INSERT 0 1 > INSERT 0 1 > COMMIT > n > --- > (0 rows) > > postgres=# > > i guess , problem is something with this syntax - create global temp table foo1(n int) with (on_commit_delete_rows='true'); > Thanks for review. I fixed in global_temporary_table_v16-pg13.patch. Wenjing > -- > regards,tushar > EnterpriseDB https://www.enterprisedb.com/ <https://www.enterprisedb.com/> > The Enterprise PostgreSQL Company