Hi, > I would like to clarify, what the correct way is to determine that a given > relation is using local buffers. Local buffers, as far as I know, are used > for temporary tables in backends. There are two functions/macros (bufmgr.c): > SmgrIsTemp, RelationUsesLocalBuffers. The first function verifies that the > current process is a regular session backend, while the other macro verifies > the relation persistence characteristic. It seems, the use of each function > independently is not correct. I think, these functions should be applied in > pair to check for local buffers use, but, it seems, these functions are used > independently. It works until temporary tables are allowed only in session > backends.
Could you please provide a specific example when the current code will do something wrong/unintended? > I'm concerned, how to determine the use of local buffers in some other > theoretical cases? For example, if we decide to replicate temporary tables? > Are there the other cases, when local buffers can be used with relations in > the Vanilla? Do we allow the use of relations with RELPERSISTENCE_TEMP not > only in session backends? Temporary tables, by definition, are visible only within one session. I can't imagine how and why they would be replicated. -- Best regards, Aleksander Alekseev