This is very important to improve the GTT.
I'd like to know the reasons for your suggestion.
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)
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.
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.