PostgreSQL面对多线程如何处理temp table ON COMMIT DROP?

How does PostgreSQL handle temp table ON COMMIT DROP in the face of multiple threads?

根据 the documentation:

ON COMMIT DROP: The temporary table will be dropped at the end of the current transaction block.

但是,临时 table 是唯一的 每个会话 ,而不是 每个线程 see here

我的问题:

如果临时 table 被标记为 WITH ON COMMIT DROP,PG 将如何处理多个线程访问 table 关于任何线程都可以提交的事实,但 table 不能不会被删除,因为它正在被其他线程使用。

编辑: 据我所知,多个事务可以在一个会话中 运行。如果是这种情况,不止一个事务可以访问具有临时 table 的函数,因此我的问题。

Postgres(服务器)对客户端线程一无所知。它将会话视为在事务中分组的一系列连续命令。从服务器的角度来看,会话内的并发是不可能的。

客户端应用程序可以是多线程的,线程可以使用同一个连接。应用程序开发人员负责确保线程不会相互竞争以访问服务器资源。 From the documentation:

One thread restriction is that no two threads attempt to manipulate the same PGconn object at the same time. In particular, you cannot issue concurrent commands from different threads through the same connection object. (If you need to run concurrent commands, use multiple connections.)