>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. Regards, Highgo Software (Canada/China/Pakistan) URL : www.highgo.ca EMAIL: mailto:movead(dot)li(at)highgo(dot)ca