当前位置: 首页 > news >正文

租用服务器一般是谁帮助维护网站安全深圳宝安网站建设公司

租用服务器一般是谁帮助维护网站安全,深圳宝安网站建设公司,wordpress 增加导航栏,iis做的网站如何添加播放器MySQL 作为最流行的关系型数据库之一#xff0c;其内部实现机制一直是开发者探索的热点。本文将以一条简单的 SQL 查询 SELECT MOD(MONTH(NOW()), 2) 为例#xff0c;深入分析 MySQL 8 源码中内置函数 MOD、MONTH 和 NOW 的执行过程#xff0c;揭示其底层实现逻辑。 一、SQL…MySQL 作为最流行的关系型数据库之一其内部实现机制一直是开发者探索的热点。本文将以一条简单的 SQL 查询 SELECT MOD(MONTH(NOW()), 2) 为例深入分析 MySQL 8 源码中内置函数 MOD、MONTH 和 NOW 的执行过程揭示其底层实现逻辑。 一、SQL 语句的解析与表达式树构建 当 MySQL 接收到 SQL 查询时首先会通过 解析器 将文本转化为内部的表达式树结构。对于 MOD(MONTH(NOW()), 2)解析过程如下 NOW() 被解析为 Item_func_now 类的实例负责返回当前时间datetime 类型。 MONTH(NOW()) 被解析为 Item_func_month 类的实例接受 NOW() 的结果作为输入提取月份值整数类型。 MOD(month_value, 2) 被解析为 Item_func_mod 类的实例对 MONTH() 的结果和常量 2 进行取模运算。 最终这三个函数会形成一个嵌套的表达式树 Item_func_mod(Item_func_month(Item_func_now()), 2)。 二、关键源码文件与类定义 1. NOW() 函数的实现 声明文件sql/item_timefunc.h 类名Item_func_now或其派生类 Item_func_now_local/Item_func_now_utc。实现文件sql/item_timefunc.cc 核心方法 Item_func_now::val_datetime() 负责获取当前时间。 2. MONTH() 函数的实现 声明文件sql/item_timefunc.h 类名Item_func_month。实现文件sql/item_timefunc.cc 核心方法 Item_func_month::val_int() 从日期中提取月份 longlong Item_func_month::val_int() {MYSQL_TIME ltime;if (get_arg0_date(ltime, TIME_FUZZY_DATE)) return 0;return ltime.month; // 返回月份1-12 } 3. MOD() 函数的实现 声明文件sql/item_func.h 类名Item_func_mod。实现文件sql/item_func.cc 核心方法 Item_func_mod::int_op() 处理整数取模运算 longlong Item_func_mod::int_op() {longlong val1 args[0]-val_int(); // 计算 MONTH(NOW())longlong val2 args[1]-val_int(); // 常量 2if (val2 0) return 0; // 避免除零错误return val1 % val2; } 三、执行流程详解 1. 解析阶段 语法解析器sql/sql_yacc.yy将 SQL 字符串转换为表达式树。优化器确定表达式类型例如 Item::INT_RESULT。 2. 执行阶段 调用 NOW() Item_func_now::val_datetime() 获取当前时间例如 2023-10-05 12:34:56。 调用 MONTH() Item_func_month::val_int() 从 NOW() 的结果中提取月份值例如 10。 调用 MOD() Item_func_mod::int_op() 对月份值 10 和 2 取模最终结果为 0。 四、源码定位技巧 由于代码行号可能随版本变化建议通过以下方式快速定位关键代码 GitHub 搜索 访问 MySQL 8.0 源码仓库搜索 Item_func_mod 或 Item_func_month。 本地代码搜索 # 在 MySQL 源码根目录执行 grep -rn Item_func_mod sql/ grep -rn Item_func_month sql/ 五、关键设计思想 表达式树模型 MySQL 通过嵌套的 Item 类对象如 Item_func_mod表示复杂表达式支持递归求值。 类型推导与优化 优化器在预处理阶段确定表达式的结果类型如整数、浮点数避免运行时类型转换开销。 错误处理 内置函数需处理边界条件如 MOD 的除零错误返回合理默认值而非抛出异常确保查询稳定性。 六、总结 通过分析 SELECT MOD(MONTH(NOW()), 2) 的执行过程我们可以深入理解 MySQL 的以下机制 内置函数的实现通过 Item_func_* 类封装逻辑。表达式求值递归调用 val_int() 或 val_datetime() 方法。源码结构时间函数在 item_timefunc.*数学函数在 item_func.*。 掌握这些底层细节不仅能帮助开发者调试复杂 SQL还能为贡献 MySQL 源码或定制内置函数奠定基础。 ##MOD函数 gdb调试堆栈 #0 Item_func_mod::int_op (this0x746cd800e280) at /home/yym/mysql8/mysql-8.1.0/sql/item_func.cc:2616 #1 0x00005591538eda46 in Item_func_numhybrid::val_int (this0x746cd800e280) at /home/yym/mysql8/mysql-8.1.0/sql/item_func.cc:1740 #2 0x00005591538600cb in Item::send (this0x746cd800e280, protocol0x746cd80052c0, buffer0x746de10f5e20) at /home/yym/mysql8/mysql-8.1.0/sql/item.cc:7483 #3 0x00005591532bf8a0 in THD::send_result_set_row (this0x746cd8001050, row_items...) at /home/yym/mysql8/mysql-8.1.0/sql/sql_class.cc:2881 #4 0x0000559153b1ce85 in Query_result_send::send_data (this0x746cd8010498, thd0x746cd8001050, items...) at /home/yym/mysql8/mysql-8.1.0/sql/query_result.cc:102 #5 0x0000559153513ef0 in Query_expression::ExecuteIteratorQuery (this0x746cd800db40, thd0x746cd8001050) at /home/yym/mysql8/mysql-8.1.0/sql/sql_union.cc:1785 #6 0x0000559153514181 in Query_expression::execute (this0x746cd800db40, thd0x746cd8001050) at /home/yym/mysql8/mysql-8.1.0/sql/sql_union.cc:1823 #7 0x0000559153454cf6 in Sql_cmd_dml::execute_inner (this0x746cd8010460, thd0x746cd8001050) at /home/yym/mysql8/mysql-8.1.0/sql/sql_select.cc:1022 #8 0x0000559153454067 in Sql_cmd_dml::execute (this0x746cd8010460, thd0x746cd8001050) at /home/yym/mysql8/mysql-8.1.0/sql/sql_select.cc:793 #9 0x00005591533c6841 in mysql_execute_command (thd0x746cd8001050, first_leveltrue) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:4797 #10 0x00005591533c8cb3 in dispatch_sql_command (thd0x746cd8001050, parser_state0x746de10f79f0) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:5447 #11 0x00005591533be0d7 in dispatch_command (thd0x746cd8001050, com_data0x746de10f8340, commandCOM_QUERY) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:2112 #12 0x00005591533bbf77 in do_command (thd0x746cd8001050) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:1459 #13 0x0000559153613835 in handle_connection (arg0x559198b65f80) at /home/yym/mysql8/mysql-8.1.0/sql/conn_handler/connection_handler_per_thread.cc:303 #14 0x0000559155552bdc in pfs_spawn_thread (arg0x559198b3ec30) at /home/yym/mysql8/mysql-8.1.0/storage/perfschema/pfs.cc:3043 #15 0x0000746df0e94ac3 in start_thread (argoptimized out) at ./nptl/pthread_create.c:442 #16 0x0000746df0f26850 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 ##MONTH函数 gdb调试堆栈 #0 Item_func_now::get_date (this0x746cec01b6d0, res0x746de13fbbd0) at /home/yym/mysql8/mysql-8.1.0/sql/item_timefunc.cc:2108 #1 0x00005591539bcb6d in Item_func::get_arg0_date (this0x746cec01b7c8, ltime0x746de13fbbd0, fuzzy_date1) at /home/yym/mysql8/mysql-8.1.0/sql/item_func.h:510 #2 0x00005591539b1ea2 in Item_func_month::val_int (this0x746cec01b7c8) at /home/yym/mysql8/mysql-8.1.0/sql/item_timefunc.cc:1268 #3 0x00005591538f1fe0 in Item_func_mod::int_op (this0x746cec01b990) at /home/yym/mysql8/mysql-8.1.0/sql/item_func.cc:2585 #4 0x00005591538eda46 in Item_func_numhybrid::val_int (this0x746cec01b990) at /home/yym/mysql8/mysql-8.1.0/sql/item_func.cc:1740 #5 0x00005591538600cb in Item::send (this0x746cec01b990, protocol0x746cec012d80, buffer0x746de13fbe20) at /home/yym/mysql8/mysql-8.1.0/sql/item.cc:7483 #6 0x00005591532bf8a0 in THD::send_result_set_row (this0x746cec000b90, row_items...) at /home/yym/mysql8/mysql-8.1.0/sql/sql_class.cc:2881 #7 0x0000559153b1ce85 in Query_result_send::send_data (this0x746cec01dba8, thd0x746cec000b90, items...) at /home/yym/mysql8/mysql-8.1.0/sql/query_result.cc:102 #8 0x0000559153513ef0 in Query_expression::ExecuteIteratorQuery (this0x746cec01b250, thd0x746cec000b90) at /home/yym/mysql8/mysql-8.1.0/sql/sql_union.cc:1785 #9 0x0000559153514181 in Query_expression::execute (this0x746cec01b250, thd0x746cec000b90) at /home/yym/mysql8/mysql-8.1.0/sql/sql_union.cc:1823 #10 0x0000559153454cf6 in Sql_cmd_dml::execute_inner (this0x746cec01db70, thd0x746cec000b90) at /home/yym/mysql8/mysql-8.1.0/sql/sql_select.cc:1022 #11 0x0000559153454067 in Sql_cmd_dml::execute (this0x746cec01db70, thd0x746cec000b90) at /home/yym/mysql8/mysql-8.1.0/sql/sql_select.cc:793 #12 0x00005591533c6841 in mysql_execute_command (thd0x746cec000b90, first_leveltrue) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:4797 #13 0x00005591533c8cb3 in dispatch_sql_command (thd0x746cec000b90, parser_state0x746de13fd9f0) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:5447 #14 0x00005591533be0d7 in dispatch_command (thd0x746cec000b90, com_data0x746de13fe340, commandCOM_QUERY) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:2112 #15 0x00005591533bbf77 in do_command (thd0x746cec000b90) at /home/yym/mysql8/mysql-8.1.0/sql/sql_parse.cc:1459 #16 0x0000559153613835 in handle_connection (arg0x559198b68010) at /home/yym/mysql8/mysql-8.1.0/sql/conn_handler/connection_handler_per_thread.cc:303 #17 0x0000559155552bdc in pfs_spawn_thread (arg0x559198b689e0) at /home/yym/mysql8/mysql-8.1.0/storage/perfschema/pfs.cc:3043 #18 0x0000746df0e94ac3 in start_thread (argoptimized out) at ./nptl/pthread_create.c:442 #19 0x0000746df0f26850 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
http://www.hkea.cn/news/14475909/

相关文章:

  • 汉口制作网站哈密网站建设公司哪家专业
  • 字体网站零基础学做网站难吗
  • 自己注册了个域名想做一个网站吗免费网络咨询免费建站
  • 网站开发的知识友谊路街道网站建设
  • 戒赌网站怎么做班级网站怎样做
  • ps网站首页效果图实例网站建设寻找可以途径
  • 做旅行的网站龙泉市住房和城乡建设局网站
  • 广州我网站制作中国制造交易网登录
  • 链家网站开发手机app应用开发公司
  • 个人简历网站开发WordPress审核评论插件
  • 青岛 机械 中企动力提供网站建设专业做app下载网站
  • 如何在电商平台做好企业网站推广一般门户网站
  • 做网站苏州上海袜网站建设
  • 成都做网站设计哪家便宜做仪表行业推广有哪些网站
  • 网站权重怎么做的做一个游戏小程序需要多少钱
  • 类似于众人帮的做任务赚佣金网站泗县口碑营销互联网营销推荐咨询
  • 网页设计个人网站设计wordpress 媒体库不显示图片
  • 专做品牌的网站wordpress自定义不了
  • 男女直接做的视频网站免费观看wordpress输出外部文章
  • 做网站买空间韶关住房和城乡建设局网站
  • 网站php源码顺德大良网站建设
  • 国家电网公司交流建设分公司网站郑州网站制作公司汉狮
  • 网站免费正能量直接进入老狼信息泰安网络推广联系昔年下拉
  • 哪些网站做机票酒店有优势企业邮箱免费版开通
  • fizz wordpress优化营商环境存在问题及整改措施
  • 四川城乡住房建设厅官方网站牛杂网这类网站怎么做的
  • wordpress 多站点 主题重庆勘察设计协会网站
  • 专门教做衣服的网站如何建设网站安全
  • 做点小本意 哪个网站拿货便宜点简约风ppt模板免费
  • 企业网站建设及推广erp系统免费版下载