MySQL源码初探2

CREATE TABLE 与 INSERT 的执行流程

前面一篇文章中,简要介绍了MySQL的源码结构,并以一个简单的SELECT语句为例子,使用GDB调试MySQL的源码了解SQL语句的执行过程。这篇文章尝试通过一个创建TABLE并向其中插入记录的例子了解MySQL的写流程。

与前一篇文章中的过程类似,首先在mysql-test/t目录下编写测试例,内容如下:
在这里插入图片描述
之后运行mysql-test-run GDB调试源码。在前一篇文章中,Understanding MySQL Internals 这本书的一个表格中给出了一些重要的函数入口,不过并没有CREATE的。根据之前调试的经验,CREATE执行的入口应该是在源码的sql目录下。在该目录下可以看到以sql_ 开头命名的源码文件,应该就是对应SQL命令的代码实现。目录下并没有sql_create.cc 文件,不过猜测CREATE TABLE 的实现应该在sql_table.cc里面。
在这里插入图片描述
查看sql_table.cc可以在开始的位置看到一个函数mysql_prepare_create_table,应该会在创建表的时候被执行到。所以接下来调试的时候,首先在这个函数位置以及mysql_insert 处设置断点。
在这里插入图片描述
接下来开始调试,首先在两个函数位置处设置断点,continue运行。
在这里插入图片描述
首先,设置在函数mysql_prepare_create_table处的断点触发,打印堆栈,以下是其中的函数名:

mysql_prepare_create_table() @ sql_table.cc:3419
create_table_impl() @ sql_table.cc:4857
mysql_create_no_lock() @ sql_table.cc:5131
mysql_create_table() @ sql_table.cc:5180
----------------------------------------------
mysql_execute_command() @ sql_parse.cc:3142
mysql_parse() @ sql_parse.cc:6538
dispatch_command() @ sql_parse.cc:1405
do_command
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值