【0236】聊一聊PG内核中的命令标签(Command Tags、CommandTag、tag_behavior)

1. 什么是命令标签(Command Tags)

当客户端向PG服务下发一个请求时,postgres进程在读取到用户的请求缓冲区之后,需要对从中解析出用户的具体请求,比如:CREATE TABLE、CREATE DATABASE、DROP TABLE、SELECT等具体操作,这里除了会用到后面即将讲的词法分析解析器flex之外,还会用到一个很重要的模块(tcop, 完整路径如下:src/include/tcop),该路径下的头文件定义了PG数据库内核所能够识别到的所有SQL关键词。

1.1 命令标签列表

相关头/源文件:

  • 头文件:
    • cmdtag.h src\include\tcop
      命令标签名称和枚举的声明。【重点】
    • cmdtaglist.h src\include\tcop
      (1)命令标记列表保存在它自己的源文件中,以供自动工具可能使用。
      (2)命令标签的确切表示由PG_CMDTAG宏决定,该宏在此文件中没有定义;它可以由调用者定义用于特殊目的。【注意,PG_CMDTAG宏在cmdtag.hcmdtag.c文件中各有一个定义,而功能却大不相同,需特别注意】
      (3) 命令标签列表。条目必须按照其文本名称

你可能感兴趣的:(#,▲,初阶篇,▶,#,▲,进阶篇,数据库,Command,Tags,命令标签,flex,taglist)