函数
功能
在执行器阶段对 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 负责对索引列的处理。