# 创建表的stack

frame #0: 0x000000011d11f58a ha_spartan.so`Spartan_data::create_table(this=0x00007f9fc1311c40, path="./test/testarc.sde") + 74 at spartan_data.cc:32
frame #1: 0x000000011d11dded ha_spartan.so`ha_spartan::create(this=0x00007f9fc1314b70, name="./test/testarc", table_arg=0x000070000fd97778, create_info=0x000070000fd9b2f8) + 269 at ha_spartan.cc:923
frame #2: 0x000000010fe6e416 mysqld`handler::ha_create(this=0x00007f9fc1314b70, name="./test/testarc", form=0x000070000fd97778, info=0x000070000fd9b2f8) + 118 at handler.cc:4526
frame #3: 0x000000010fe6ed6f mysqld`ha_create_table(thd=0x00007f9fc0060a00, path="./test/testarc", db="test", table_name="testarc", create_info=0x000070000fd9b2f8, update_create_info=false, is_temp_table=false) + 831 at handler.cc:4770
frame #4: 0x000000011025a877 mysqld`rea_create_table(thd=0x00007f9fc0060a00, path="./test/testarc", db="test", table_name="testarc", create_info=0x000070000fd9b2f8, create_fields=0x000070000fd9b2b0, keys=0, key_info=0x00007f9fbf09d520, file=0x00007f9fbf09d2d0, no_ha_table=false) + 551 at unireg.cc:546
frame #5: 0x00000001101cd650 mysqld`create_table_impl(thd=0x00007f9fc0060a00, db="test", table_name="testarc", error_table_name="testarc", path="./test/testarc", create_info=0x000070000fd9b2f8, alter_info=0x000070000fd9b268, internal_tmp_table=false, select_field_count=0, no_ha_table=false, is_trans=0x000070000fd9a25e, key_info=0x000070000fd99f88, key_count=0x000070000fd99f84) + 5232 at sql_table.cc:5009
frame #6: 0x00000001101cc13a mysqld`mysql_create_table_no_lock(thd=0x00007f9fc0060a00, db="test", table_name="testarc", create_info=0x000070000fd9b2f8, alter_info=0x000070000fd9b268, select_field_count=0, is_trans=0x000070000fd9a25e) + 506 at sql_table.cc:5125
frame #7: 0x00000001101cdb60 mysqld`mysql_create_table(thd=0x00007f9fc0060a00, create_table=0x00007f9fbf09c748, create_info=0x000070000fd9b2f8, alter_info=0x000070000fd9b268) + 272 at sql_table.cc:5174
frame #8: 0x000000011011bc59 mysqld`mysql_execute_command(thd=0x00007f9fc0060a00) + 9673 at sql_parse.cc:3136
frame #9: 0x0000000110117ba0 mysqld`mysql_parse(thd=0x00007f9fc0060a00, rawbuf="CREATE TABLE testarc (a int, b varchar(20), c int) ENGINE=SPARTAN", length=65, parser_state=0x000070000fd9d380) + 1376 at sql_parse.cc:6422
frame #10: 0x00000001101144cf mysqld`dispatch_command(command=COM_QUERY, thd=0x00007f9fc0060a00, packet="CREATE TABLE testarc (a int, b varchar(20), c int) ENGINE=SPARTAN", packet_length=65) + 4367 at sql_parse.cc:1399
frame #11: 0x00000001101170bb mysqld`do_command(thd=0x00007f9fc0060a00) + 875 at sql_parse.cc:1064
frame #12: 0x000000011009a562 mysqld`do_handle_one_connection(thd_arg=0x00007f9fc0060a00) + 498 at sql_connect.cc:982
frame #13: 0x000000011009a30d mysqld`::handle_one_connection(arg=0x00007f9fc0060a00) + 45 at sql_connect.cc:899
frame #14: 0x0000000110773bdd mysqld`::pfs_spawn_thread(arg=0x00007f9fc17736e0) + 333 at pfs.cc:1861
frame #15: 0x00007fff9458993b libsystem_pthread.dylib`_pthread_body + 180
frame #16: 0x00007fff94589887 libsystem_pthread.dylib`_pthread_start + 286
frame #17: 0x00007fff9458908d libsystem_pthread.dylib`thread_start + 13

#  创建表

(lldb) bt

(lldb) bt
* thread #22: tid = 0xcfa54, 0x000000011d11ef2b ha_spartan.so`spartan_create_handler(hton=0x00007f9fc1416490, table=0x0000000000000000, mem_root=0x00007f9fc0063af0) + 27 at ha_spartan.cc:102, stop reason = step in
* frame #0: 0x000000011d11ef2b ha_spartan.so`spartan_create_handler(hton=0x00007f9fc1416490, table=0x0000000000000000, mem_root=0x00007f9fc0063af0) + 27 at ha_spartan.cc:102
frame #1: 0x000000010fe6296b mysqld`get_new_handler(share=0x0000000000000000, alloc=0x00007f9fc0063af0, db_type=0x00007f9fc1416490) + 203 at handler.cc:442
frame #2: 0x00000001101cc47f mysqld`create_table_impl(thd=0x00007f9fc0060a00, db="test", table_name="testarc1", error_table_name="testarc1", path="./test/testarc1", create_info=0x000070000fd9b2f8, alter_info=0x000070000fd9b268, internal_tmp_table=false, select_field_count=0, no_ha_table=false, is_trans=0x000070000fd9a25e, key_info=0x000070000fd99f88, key_count=0x000070000fd99f84) + 671 at sql_table.cc:4640
frame #3: 0x00000001101cc13a mysqld`mysql_create_table_no_lock(thd=0x00007f9fc0060a00, db="test", table_name="testarc1", create_info=0x000070000fd9b2f8, alter_info=0x000070000fd9b268, select_field_count=0, is_trans=0x000070000fd9a25e) + 506 at sql_table.cc:5125
frame #4: 0x00000001101cdb60 mysqld`mysql_create_table(thd=0x00007f9fc0060a00, create_table=0x00007f9fbf09c758, create_info=0x000070000fd9b2f8, alter_info=0x000070000fd9b268) + 272 at sql_table.cc:5174
frame #5: 0x000000011011bc59 mysqld`mysql_execute_command(thd=0x00007f9fc0060a00) + 9673 at sql_parse.cc:3136
frame #6: 0x0000000110117ba0 mysqld`mysql_parse(thd=0x00007f9fc0060a00, rawbuf="CREATE TABLE testarc1 (a int, b varchar(20), c int) ENGINE=SPARTAN", length=66, parser_state=0x000070000fd9d380) + 1376 at sql_parse.cc:6422
frame #7: 0x00000001101144cf mysqld`dispatch_command(command=COM_QUERY, thd=0x00007f9fc0060a00, packet="CREATE TABLE testarc1 (a int, b varchar(20), c int) ENGINE=SPARTAN", packet_length=66) + 4367 at sql_parse.cc:1399
frame #8: 0x00000001101170bb mysqld`do_command(thd=0x00007f9fc0060a00) + 875 at sql_parse.cc:1064
frame #9: 0x000000011009a562 mysqld`do_handle_one_connection(thd_arg=0x00007f9fc0060a00) + 498 at sql_connect.cc:982
frame #10: 0x000000011009a30d mysqld`::handle_one_connection(arg=0x00007f9fc0060a00) + 45 at sql_connect.cc:899
frame #11: 0x0000000110773bdd mysqld`::pfs_spawn_thread(arg=0x00007f9fc17736e0) + 333 at pfs.cc:1861
frame #12: 0x00007fff9458993b libsystem_pthread.dylib`_pthread_body + 180
frame #13: 0x00007fff94589887 libsystem_pthread.dylib`_pthread_start + 286
frame #14: 0x00007fff9458908d libsystem_pthread.dylib`thread_start + 13

获取handler

static int spartan_init_func(void *p)
{DBUG_ENTER("spartan_init_func");#ifdef HAVE_PSI_INTERFACEinit_spartan_psi_keys();
#endifspartan_hton= (handlerton *)p;spartan_hton->state=                     SHOW_OPTION_YES;spartan_hton->create=                    spartan_create_handler;spartan_hton->flags=                     HTON_CAN_RECREATE;spartan_hton->system_database=   spartan_system_database;spartan_hton->is_supported_system_table= spartan_is_supported_system_table;DBUG_RETURN(0);
}mysql_declare_plugin(spartan)
{MYSQL_STORAGE_ENGINE_PLUGIN,&spartan_storage_engine,"SPARTAN","jishu","demo storage engine",PLUGIN_LICENSE_GPL,spartan_init_func,                            /* Plugin Init */NULL,                                         /* Plugin Deinit */0x0001 /* 0.1 */,func_status,                                  /* status variables */spartan_system_variables,                     /* system variables */NULL,                                         /* config options */0,                                            /* flags */
}
mysql_declare_plugin_end;

handler *get_new_handler(TABLE_SHARE *share, MEM_ROOT *alloc,handlerton *db_type)
{handler *file;DBUG_ENTER("get_new_handler");DBUG_PRINT("enter", ("alloc: 0x%lx", (long) alloc));if (db_type && db_type->state == SHOW_OPTION_YES && db_type->create){if ((file= db_type->create(db_type, share, alloc)))file->init();DBUG_RETURN(file);}/*Try the default table typeHere the call to current_thd() is ok as we call this function a lot oftimes but we enter this branch very seldom.*/DBUG_RETURN(get_new_handler(share, alloc, ha_default_handlerton(current_thd)));
}

  

# db 类型

create_table_option:ENGINE_SYM opt_equal storage_engines{    Lex->create_info.db_type= $3;    Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;}

storage_engines:ident_or_text{THD *thd= YYTHD;plugin_ref plugin=ha_resolve_by_name(thd, &$1,thd->lex->create_info.options & HA_LEX_CREATE_TMP_TABLE);if (plugin)$$= plugin_data(plugin, handlerton*);else{if (thd->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION){my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str);MYSQL_YYABORT;}$$= 0;push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,ER_UNKNOWN_STORAGE_ENGINE,ER(ER_UNKNOWN_STORAGE_ENGINE),$1.str);}};

# 新增的断点

1: name = 'ha_spartan::create', locations = 0 (pending)2: name = 'create', locations = 0 (pending)3: file = 'ha_spartan.cc', line = 914, exact_match = 0, locations = 1, resolved = 1, hit count = 13.1: where = ha_spartan.so`ha_spartan::create(char const*, TABLE*, st_ha_create_information*) + 111 at ha_spartan.cc:916, address = 0x000000011d11dd4f, resolved, hit count = 14: file = 'ha_spartan.cc', line = 914, exact_match = 0, locations = 1, resolved = 1, hit count = 14.1: where = ha_spartan.so`ha_spartan::create(char const*, TABLE*, st_ha_create_information*) + 111 at ha_spartan.cc:916, address = 0x000000011d11dd4f, resolved, hit count = 15: file = 'ha_spartan.cc', line = 914, exact_match = 0, locations = 1, resolved = 1, hit count = 15.1: where = ha_spartan.so`ha_spartan::create(char const*, TABLE*, st_ha_create_information*) + 111 at ha_spartan.cc:916, address = 0x000000011d11dd4f, resolved, hit count = 16: file = 'ha_spartan.cc', line = 914, exact_match = 0, locations = 1, resolved = 1, hit count = 16.1: where = ha_spartan.so`ha_spartan::create(char const*, TABLE*, st_ha_create_information*) + 111 at ha_spartan.cc:916, address = 0x000000011d11dd4f, resolved, hit count = 17: name = 'ha_spartan::get_share', locations = 1, resolved = 1, hit count = 17.1: where = ha_spartan.so`ha_spartan::get_share() + 39 at ha_spartan.cc:81, address = 0x000000011d11c7a7, resolved, hit count = 18: name = 'create_table_impl', locations = 1, resolved = 1, hit count = 18.1: where = mysqld`create_table_impl(THD*, char const*, char const*, char const*, char const*, st_ha_create_information*, Alter_info*, bool, unsigned int, bool, bool*, st_key**, unsigned int*) + 226 at sql_table.cc:4618, address = 0x00000001101cc2c2, resolved, hit count = 19: name = 'ha_create_table', locations = 1, resolved = 1, hit count = 09.1: where = mysqld`ha_create_table(THD*, char const*, char const*, char const*, st_ha_create_information*, bool, bool) + 94 at handler.cc:4732, address = 0x000000010fe6ea8e, resolved, hit count = 010: name = 'open_table_from_share', locations = 1, resolved = 1, hit count = 010.1: where = mysqld`open_table_from_share(THD*, TABLE_SHARE*, char const*, unsigned int, unsigned int, unsigned int, TABLE*, bool) + 82 at table.cc:2107, address = 0x000000011023d652, resolved, hit count = 011: name = 'get_new_handler', locations = 2, resolved = 2, hit count = 111.1: where = mysqld`get_new_handler(TABLE_SHARE*, st_mem_root*, handlerton*) + 44 at handler.cc:437, address = 0x000000010fe628cc, resolved, hit count = 111.2: where = libc++abi.dylib`std::get_new_handler(), address = 0x00007fff92f25de3, resolved, hit count = 012: name = 'spartan_create_handler', locations = 1, resolved = 1, hit count = 012.1: where = ha_spartan.so`spartan_create_handler(handlerton*, TABLE_SHARE*, st_mem_root*) + 27 at ha_spartan.cc:102, address = 0x000000011d11ef2b, resolved, hit count = 013: name = 'ha_resolve_by_name', locations = 1, resolved = 1, hit count = 013.1: where = mysqld`ha_resolve_by_name(THD*, st_mysql_lex_string const*, bool) + 23 at handler.cc:331, address = 0x000000010fe62387, resolved, hit count = 0

转载于:https://www.cnblogs.com/kisstherain/p/10397598.html

mysql 自定义插件调试相关推荐

  1. Cordova应用的JavaScript代码和自定义插件代码的调试

    我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果 ...

  2. 使用zabbix-agent2自定义插件获取https证书过期时间

    需求 对经常维护网站的人来说,要经常跟https的证书打交道.一般https证书的有效期是一年,证书一旦过期,公司的损失会非常大.去年网易邮箱因为https证书忘记续期,导致大量用户无法正常使用邮箱就 ...

  3. cordova自定义android插件,Cordova 自定义插件(Android版本)

    Cordova 自定义插件(android) 特别注意 android 项目的包名 必须为 com.example.hello,否则编译不会通过. 1.安装命令工具 $ npm i plugman - ...

  4. mysql自定义函数的分号_mysql自定义function问题解决

    最近公司生产环境的系统有个需求,需要往mysql数据库的一张表里批量添加数据,业务部门给的数据大致如下: 中心 3.5L箱子(条码) 8L箱子(条码) 15L箱子(条码) 20L箱子(条码) 浙江物流 ...

  5. 超详细手把手教你cordova开发使用指南+自定义插件,jsbridge

    Cordova是什么 使用前端技术 开发跨平台web App的工具 底层原理:HTML+CSS搭建页面, JS和原生交互 交互原理:Cordova插件 环境配置 安卓开发基础环境搭建的文章可以参考一下 ...

  6. vue里面_Vue中如何使用自定义插件(plugin)

    Vue中如何使用自定义插件(plugin) 1.在根目录src下创建一个libs文件夹,在libs文件夹下面创建一个myPlugins文件夹,用来存放我们的自定义插件,在myPlugins文件夹下面再 ...

  7. openstack页面自定义插件使用详解(django、ajax、post)(zTree为例)

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Be ...

  8. JQuery自定义插件详解之Banner图滚动插件

      前  言 JRedu JQuery是什么相信已经不需要详细介绍了.作为时下最火的JS库之一,JQuery将其"Write Less,Do More!"的口号发挥的极致.而帮助J ...

  9. 安装MYSQL自定义安装路径

    安装MYSQL自定义安装路径 MYSQL8.0版本,使用开发者默认安装的话,会自动安装到C盘,有点小介意,所以又卸载重新安装了,卸载过程中遇到了一些小问题,MySQL Connector NET无法卸 ...

  10. idea mybatis generator插件_Mybatis使用自定义插件去掉POJO的Getter和Setter方法

    Mybatis使用自定义插件去掉POJO的Getter和Setter方法

最新文章

  1. 阿里云 flask uwsgi SSl 证书 http 转 https
  2. 脑洞大开,如何生成 2018 年度代码报告
  3. Verilog | HDL 音乐盒设计(代码类)
  4. 第四范式荣获“工业和信息化系统抗击新冠肺炎疫情先进集体”称号
  5. sublime text使用正则表达式批量给KV加
  6. 如何在 Linux 上使用 Vundle 管理 Vim 插件
  7. Spring源码 --Idea module 相互引用
  8. Java中的状态设计模式
  9. 3.CM3内核架构-寄存器
  10. 网络编程之 keepalive(zz)
  11. 10G整数文件中寻找中位数或者第K大数
  12. 基于django的视频点播网站开发-step12-后台订阅功能...
  13. 动态创建和移除HTML标签
  14. c语言设计一个自动阅卷功能,基于WEB的C语言编程题自动阅卷系统的设计与实现...
  15. 视频编码中CBR编码和VBR编码
  16. Word打字很卡顿 Office打字时反应慢 延迟 Excel输入迟钝 PPT卡死的终极解决办法大全(24种方法)
  17. opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)
  18. 数据结构面试题(含答案)
  19. 中国最快的云计算机,中国最快的超级计算机 第一名是神威太湖之光
  20. 平面设计10大手法,设计师必看

热门文章

  1. 人物连连看 python课程设计 pygame学习
  2. tushare 获取复权数据
  3. UE/蓝图 VR高级框架(AdvancedFrameworkVR4.1) 使用前的简单设置
  4. 一套键鼠控制多台不同平台电脑——synergy使用详解
  5. javaScript中什么时候用分号;
  6. 计算机学科导论-2013级教学材料
  7. 前端性能优化方案(图片)
  8. 美国和欧洲5G最新进展—全球5G发展洞察2022(下)
  9. Chrome浏览器升级80以后导致重定向自动登录失效问题记录和解决方案
  10. kappa系数简介---一致性与分类准确度指标