transformCreateStmt 函数源码分析
函数
功能
在执行器阶段对 create table 命令做一些处理:
- 列属性处理
- 条件限制处理
- likeClause 处理
- 如果需要,给表名加上当前 schema 的名字
- 等等。。。
函数签名
List* transformCreateStmt(CreateStmt *stmt, const char *queryString)
输入参数
CreateStmt* stmt
create table的语法树const char* queryString
用户输入的 sql 语句
返回值
List*
一组按序要执行的 sql 命令,包括:- 在执行
create table之前要执行的 sql 命令,如:create sequence create table命令- 在执行
create table之后要执行的 sql 命令,如:create index
- 在执行
比如,下面这条 sql 语句就会导致 postgresql 生成上面所有的 sql 命令:
create table foo(id serial primary key);
代码流程
为简化 transformCreateStmt 函数执行逻辑,此文针对上面的 sql 语句分析 transformCreateStmt 的主要流程。

其中,transformColumnDefinition 负责对列定义 id serial primary key 的处理,transformIndexConstraints 负责对索引列的处理。
transformColumnDefinition

transformIndexConstraints

posted on 2023-06-26 19:21 winter-loo 阅读(30) 评论(0) 收藏 举报
浙公网安备 33010602011771号