2. Actually I do not propose some completely new approach. I try to provide behavior with is compatible with regular tables. If you create index for regular table, then it can be used in all sessions, right?
I don't understand to this point. Regular tables shares data, shares files. You cannot to separate it. More - you have to uses relatively aggressive locks to be this operation safe.
Nothing from these points are valid for GTT.
Regards
Pavel
And all "various backend-local data structures in the relcache, the planner, and the executor that remember information about indexes" have to be properly updated. It is done using invalidation mechanism. The same mechanism is used in case of DDL operations with GTT, because we change system catalog.
So my point here is that creation index of GTT is almost the same as creation of index for regular tables and the same mechanism will be used to provide correctness of this operation.