为什么 CTE 和临时表并行扫描受到限制?

Why are scans of CTEs and temporary tablest parallel restricted?

来自PostgreSQL manual

The following operations are always parallel restricted:

  • Scans of common table expressions (CTEs).

  • Scans of temporary tables.

为什么 CTE 和临时表的并行扫描受到限制?

并行限制

CTE 和临时表扫描:

原因是 CTE 和临时表对于创建它们的后端进程都是私有的,而并行工作进程是不同的进程,它们无权访问领导进程的私有资源。

为了使 CTE 扫描并行安全,CTE 必须在共享内存中具体化。

请注意,如果 CTE 扫描在计划后仍然存在,那么它们只是一个障碍。如果 CTE 语法在规划期间被“内联”,则它不是并行的障碍。我想知道是否应该更改文档以澄清这一点?