本文主要是介绍【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.h
和cmdtag.c
文件中各有一个定义,而功能却大不相同,需特别注意】
(3) 命令标签列表。条目必须按照其文本名称
- cmdtag.h src\include\tcop
这篇关于【0236】聊一聊PG内核中的命令标签(Command Tags、CommandTag、tag_behavior)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!