1. 确定 utility commond 只读程度
本文是【0304】psql 执行“VACUUM FULL”命令的背后实现过程 的补充,说明Postgres内核确定 utility 命令的只读程度。 该过程7依然是在函数standard_ProcessUtility()中完成。
该函数主要做了以下几件事:
- 调用check_stack_depth()函数, 检查是否存在过度递归(这可以递归)
- ClassifyUtilityCommandAsReadOnly() 确定 utility command 的只读程度
- 根据pstmt->utilityStmt = T_VacuumStmt,调用ExecVacuum(),执行 VACUUM FULL命令的清理操作
本文主要是内容是讲解Postgres内核中与 特定命令只读程度相关常量, 以及Postgres内核是如何检测utility命令只读程度的过程。
1.1 utility 命令只读程度常量
Postgres内核中与 utility 命令只读程度相关的常量有三个,分别如下:<