Re: [Proposal] Global temporary tables - Mailing list pgsql-hackers
From | movead.li@highgo.ca |
---|---|
Subject | Re: [Proposal] Global temporary tables |
Date | |
Msg-id | 2020080717302110039054@highgo.ca Whole thread Raw |
In response to | [Proposal] Global temporary tables ("曾文旌(义从)" <wenjing.zwj@alibaba-inc.com>) |
Responses |
Re: [Proposal] Global temporary tables
|
List | pgsql-hackers |
>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.>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.>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 inpg_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_relstatspostgres=# \d gttTable "public.gtt"Column | Type | Collation | Nullable | Default--------+---------+-----------+----------+---------a | integer | | |b | integer | | |postgres=# insert into gtt values(1,1);INSERT 0 1postgres=# 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 TABLEpostgres=# 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'suo 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>This is a problem that has been fixed in global_temporary_table_v34-pg13.patch.>code.Sorry about it, I can not find it in mail thread and maybe I miss something. The mail threadis so long, it's better to create a new mail thread I think.
Regards,
Highgo Software (Canada/China/Pakistan)
URL : www.highgo.ca
EMAIL: mailto:movead(dot)li(at)highgo(dot)ca
URL : www.highgo.ca
EMAIL: mailto:movead(dot)li(at)highgo(dot)ca
pgsql-hackers by date: