Re: [Proposal] Global temporary tables

From: 曾文旌(义从) <wenjing(dot)zwj(at)alibaba-inc(dot)com>
To: tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>
Cc: "Prabhat Sahu" <prabhat(dot)sahu(at)enterprisedb(dot)com>, "Pavel Stehule" <pavel(dot)stehule(at)gmail(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-27 04:12:35
Message-ID: 209679C2-4D4A-4BA4-9819-33FCC1B00296@alibaba-inc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> 2020年2月25日 下午9:56,tushar <tushar(dot)ahuja(at)enterprisedb(dot)com> 写道:
>
> Hi ,
>
> pg_upgrade scenario is failing if database is containing global temporary table
>
> =============================
> centos(at)tushar-ldap-docker bin]$ ./psql postgres
> psql (13devel)
> Type "help" for help.
>
> postgres=# create global temporary table t(n int);
> CREATE TABLE
> postgres=# \q
> ===============================
>
> run pg_upgrade -
>
> [centos(at)tushar-ldap-docker bin]$ ./pg_upgrade -d /tmp/t1/ -D /tmp/t2 -b . -B .
> Performing Consistency Checks
> -----------------------------
> Checking cluster versions ok
> Checking database user is the install user ok
> Checking database connection settings ok
> Checking for prepared transactions ok
> Checking for reg* data types in user tables ok
> --
> --
> If pg_upgrade fails after this point, you must re-initdb the
> new cluster before continuing.
>
> Performing Upgrade
> ------------------
> Analyzing all rows in the new cluster ok
> Freezing all rows in the new cluster ok
> Deleting files from new pg_xact ok
> --
> --
> Restoring database schemas in the new cluster
> ok
> Copying user relation files
> /tmp/t1/base/13585/16384
> error while copying relation "public.t": could not open file "/tmp/t1/base/13585/16384": No such file or directory
> Failure, exiting
I fixed some bug in global_temporary_table_v14-pg13.patch

Please check global_temporary_table_v15-pg13.patch

Wenjing

>
> regards,
>
> On 2/25/20 7:06 PM, Prabhat Sahu wrote:
>> 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 ?
>>
>> 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 曾文旌 (义从) 2020-02-27 04:13:07 Re: [Proposal] Global temporary tables
Previous Message Vladimir Sitnikov 2020-02-27 04:11:26 Re: Error on failed COMMIT