创建表的逻辑
1.ExecuteStage::handle_request函数处理一个request请求,通过sql解析,发现这是一个创建表的sql语句,进入do_create_table函数
2.do_create_table函数
定义一个CreateTable变量,通过输入的sql语句得到创建表的名字、字段数量、字段类型数据。
获取sql语句的SessionEvent变量
获取当前的数据库类型(Db)
进入db->create_table函数,传入创建表的名字、字段数量、字段类型
3.db->create_table函数
参数检查,判断数据表名字是否重复
获取当前数据库存放的位置,构造出新创建表的元数据存储路径
建立一个新的table变量
调用table->create函数,传入元数据存储路径,数据表名字,数据库的路径,字段数和字段类型
函数结束之后,将当前表名加入到记录已打开数据表的映射中
4.table->create函数
(1)再次进行参数检查,检查数据表名字,检查字段数,字段类型
(2)调用
int fd = ::open(path, O_WRONLY | O_CREAT | O_EXCL | O_CLOEXEC, 0600);
打开元数据存储路径,
O_WRONLY 只写模式
O_CREAT 如果指定文件不存在,则创建这个文件
O_EXCL 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
O_CLOEXEC,当调用exec成功后,文件会自动关闭
0600表示创建的文件可读可写。
所以实际的意思是,根据传入的元数据存储位置,

本文详细介绍了数据库中创建表的具体步骤,从解析SQL语句开始,经过多个函数调用,完成表元数据的创建与存储,最终形成可读写的表格。
最低0.47元/天 解锁文章
3131





