Re: [Proposal] Global temporary tables

From: 曾文旌 <wenjing(dot)zwj(at)alibaba-inc(dot)com>
To: movead(dot)li(at)highgo(dot)ca
Cc: tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>, Prabhat Sahu <prabhat(dot)sahu(at)enterprisedb(dot)com>, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, robertmhaas <robertmhaas(at)gmail(dot)com>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, Konstantin Knizhnik <k(dot)knizhnik(at)postgrespro(dot)ru>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, "蔡松露(子嘉)" <zijia(at)taobao(dot)com>, "Cai, Le" <le(dot)cai(at)alibaba-inc(dot)com>, wenjing <wenjing(at)gmail(dot)com>, "ahsan(dot)hadi" <ahsan(dot)hadi(at)highgo(dot)ca>
Subject: Re: [Proposal] Global temporary tables
Date: 2020-08-12 09:51:41
Message-ID: 5470B366-8011-4746-AE15-40FB447F79EC@alibaba-inc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> 2020年8月7日 下午5:30,movead(dot)li(at)highgo(dot)ca 写道:
>
>>
>> >I find this is the most latest mail with an attachment, so I test and reply on
>> >this thread, several points as below:
>>
>> >1. I notice it produces new relfilenode when new session login and some
>> >data insert. But the relfilenode column in pg_class still the one when create
>> >the global temp table. I think you can try to show 0 in this area as what nail
>> >relation does.
> >I think getting the GTT to have a default relfilenode looks closer to the existing implementation, and setting it to 0 requires extra work and has no clear benefit.
> >What do you think?
> >I'd like to know the reasons for your suggestion.
> The 'relfilenode' mean the file no on disk which different from oid of a relation,
> the default one is a wrong for gtt, so I think it's not so good to show it in
> pg_class.
>>
>> >2. The nail relations handle their relfilenodes by RelMapFile struct, and this
>> >patch use hash entry and relfilenode_list, maybe RelMapFile approach more
>> >understandable in my opinion. Sorry if I miss the real design for that.
> >We can see the STORAGE and statistics info for the GTT, including relfilenode, through view pg_gtt_relstats
>
> postgres=# \d gtt
> Table "public.gtt"
> Column | Type | Collation | Nullable | Default
> --------+---------+-----------+----------+---------
> a | integer | | |
> b | integer | | |
>
> postgres=# insert into gtt values(1,1);
> INSERT 0 1
> postgres=# select * from pg_gtt_relstats ;
> schemaname | tablename | relfilenode | relpages | reltuples | relallvisible | relfrozenxid | relminmxid
> ------------+-----------+-------------+----------+-----------+---------------+--------------+------------
> public | gtt | 16384 | 0 | 0 | 0 | 532 | 1
> (1 row)
>
> postgres=# truncate gtt;
> TRUNCATE TABLE
> postgres=# select * from pg_gtt_relstats ;
> schemaname | tablename | relfilenode | relpages | reltuples | relallvisible | relfrozenxid | relminmxid
> ------------+-----------+-------------+----------+-----------+---------------+--------------+------------
> public | gtt | 16387 | 0 | 0 | 0 | 533 | 1
> (1 row)
>
>>
>> I just suggest a way which maybe most naturely to the exist code struct, and it's
>> uo to you.
>>
>>
>> >3. I get a wrong result of pg_relation_filepath() function for global temp table,
>> >I think it's necessaryto keep this an correct output.
>
> postgres=# select pg_relation_filepath(oid) from pg_class where relname = 'gtt';
> pg_relation_filepath
> ----------------------
> base/13835/t3_16384
> (1 row)
>
> I didn't find anything wrong. Could you please give me a demo.
>
>> In my opinoin it should show 'base/13835/t3_16387', other than 'base/13835/t3_16384',
>> because the relfilenode change to 16387 when you truncate it in step 2.
>>
>> >4. In gtt_search_by_relid() function, it has not handle the missing_ok argument
>> >if gtt_storage_local_hash is null. There should be some comments if it's the right
>> >code.
> >This is a problem that has been fixed in global_temporary_table_v34-pg13.patch.
> Sorry about it, I can not find it in mail thread and maybe I miss something. The mail thread
> is so long, it's better to create a new mail thread I think.

The latest status is tracked here
https://commitfest.postgresql.org/28/2349/ <https://commitfest.postgresql.org/28/2349/>

The latest patch is V35. I don't know why the patches in some of my emails are indexed, but some of them are not.

Wenjing

>
> Regards,
> Highgo Software (Canada/China/Pakistan)
> URL : www.highgo.ca <http://www.highgo.ca/>
> EMAIL: mailto:movead(dot)li(at)highgo(dot)ca

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Dave Cramer 2020-08-12 09:54:31 Re: Allows Extend Protocol support CURSOR_OPT_HOLD with prepared stmt.
Previous Message Wilm Hoyer 2020-08-12 09:35:04 AW: posgres 12 bug (partitioned table)