Re: [Proposal] Global temporary tables

From: 曾文旌(义从) <wenjing(dot)zwj(at)alibaba-inc(dot)com>
To: tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>
Cc: "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>, "Prabhat Sahu" <prabhat(dot)sahu(at)enterprisedb(dot)com>, "Robert Haas" <robertmhaas(at)gmail(dot)com>, "Tomas Vondra" <tomas(dot)vondra(at)2ndquadrant(dot)com>, "Konstantin Knizhnik" <k(dot)knizhnik(at)postgrespro(dot)ru>, "PostgreSQL Hackers" <pgsql-hackers(at)postgresql(dot)org>, 蔡松露(子嘉) <zijia(at)taobao(dot)com>, Cai, Le <le(dot)cai(at)alibaba-inc(dot)com>, 萧少聪(铁庵) <shaocong(dot)xsc(at)alibaba-inc(dot)com>
Subject: Re: [Proposal] Global temporary tables
Date: 2020-02-26 15:54:22
Message-ID: 1B2CF30A-57EB-4BA3-801C-278022A4DC45@alibaba-inc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> 2020年2月25日 下午11:31,tushar <tushar(dot)ahuja(at)enterprisedb(dot)com> 写道:
>
> Hi,
>
> I have created two global temporary tables like this -
>
> Case 1-
> postgres=# create global temp table foo(n int) with (on_commit_delete_rows='true');
> CREATE TABLE
>
> Case 2-
> postgres=# create global temp table bar1(n int) on commit delete rows;
> CREATE TABLE
>
>
> but if i try to do the same having only 'temp' keyword , Case 2 is working fine but getting this error for case 1 -
>
> postgres=# create temp table foo1(n int) with (on_commit_delete_rows='true');
> ERROR: regular table cannot specifie on_commit_delete_rows
> postgres=#
>
> postgres=# create temp table bar1(n int) on commit delete rows;
> CREATE TABLE
>
> i think this error message need to be more clear .
Also fixed in global_temporary_table_v14-pg13.patch

Wenjing

>
> regards,
> tushar
>
> On 2/25/20 7:19 PM, Pavel Stehule wrote/:
>>
>>
>> út 25. 2. 2020 v 14:36 odesílatel Prabhat Sahu <prabhat(dot)sahu(at)enterprisedb(dot)com <mailto:prabhat(dot)sahu(at)enterprisedb(dot)com>> napsal:
>> Hi All,
>>
>> Please check the below findings on GTT.
>> -- Scenario 1:
>> Under "information_schema", We are not allowed to create "temporary table", whereas we can CREATE/DROP "Global Temporary Table", is it expected ?
>>
>> It is ok for me. temporary tables should be created only in proprietary schema. For GTT there is not risk of collision, so it can be created in any schema where are necessary access rights.
>>
>> Pavel
>>
>>
>> postgres=# create temporary table information_schema.temp1(c1 int);
>> ERROR: cannot create temporary relation in non-temporary schema
>> LINE 1: create temporary table information_schema.temp1(c1 int);
>> ^
>>
>> postgres=# create global temporary table information_schema.temp1(c1 int);
>> CREATE TABLE
>>
>> postgres=# drop table information_schema.temp1 ;
>> DROP TABLE
>>
>> -- 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
>>
>> Thanks,
>> Prabhat Sahu
>>
>> On Tue, Feb 25, 2020 at 2:25 PM 曾文旌(义从) <wenjing(dot)zwj(at)alibaba-inc(dot)com <mailto:wenjing(dot)zwj(at)alibaba-inc(dot)com>> wrote:
>>
>>
>>> 2020年2月24日 下午5:44,Prabhat Sahu <prabhat(dot)sahu(at)enterprisedb(dot)com <mailto:prabhat(dot)sahu(at)enterprisedb(dot)com>> 写道:
>>>
>>> On Fri, Feb 21, 2020 at 9:10 PM 曾文旌(义从) <wenjing(dot)zwj(at)alibaba-inc(dot)com <mailto:wenjing(dot)zwj(at)alibaba-inc(dot)com>> wrote:
>>> Hi,
>>> I have started testing the "Global temporary table" feature,
>>> That's great, I see hope.
>>> from "gtt_v11-pg13.patch". Below is my findings:
>>>
>>> -- session 1:
>>> postgres=# create global temporary table gtt1(a int);
>>> CREATE TABLE
>>>
>>> -- seeeion 2:
>>> postgres=# truncate gtt1 ;
>>> ERROR: could not open file "base/13585/t3_16384": No such file or directory
>>>
>>> is it expected?
>>>
>>> Oh ,this is a bug, I fixed it.
>>> Thanks for the patch.
>>> I have verified the same, Now the issue is resolved with v12 patch.
>>>
>>> Kindly confirm the below scenario:
>>>
>>> postgres=# create global temporary table gtt1 (c1 int unique);
>>> CREATE TABLE
>>>
>>> postgres=# create global temporary table gtt2 (c1 int references gtt1(c1) );
>>> ERROR: referenced relation "gtt1" is not a global temp table
>>>
>>> postgres=# create table tab2 (c1 int references gtt1(c1) );
>>> ERROR: referenced relation "gtt1" is not a global temp table
>>>
>>> Thanks,
>>> Prabhat Sahu
>>
>> GTT supports foreign key constraints in global_temporary_table_v13-pg13.patch
>>
>>
>> Wenjing
>>
>>
>>
>>
>>
>> --
>> With Regards,
>> Prabhat Kumar Sahu
>> EnterpriseDB: http://www.enterprisedb.com <http://www.enterprisedb.com/>
>
> --
> regards,tushar
> EnterpriseDB https://www.enterprisedb.com/ <https://www.enterprisedb.com/>
> The Enterprise PostgreSQL Company

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2020-02-26 15:55:25 Re: [PATCH] pg_upgrade: report the reason for failing to open the cluster version file
Previous Message 曾文旌 (义从) 2020-02-26 15:52:38 Re: [Proposal] Global temporary tables