COM_STMT_PREPARE 1
mysqld_stmt_prepare void mysqld_stmt_prepare(THD* thd,
const char * query,
uint length,
Prepared_statement * stmt
)
功能:
COM_STMT_PREPARE handler.
给定带有参数标志的查询字符串,从中创建预处理语句并将PS发送给客户端。
如果在查询中找到参数标志,使用Item_param保存信息以及在lex->param_array中维护列表,以便可以在不遍历所有字段项的情况下进行快速直接的检索。
如果成功,一个新的statement id和元数据发送给客户端,否则在THD中设置错误信息。
参数:
thd : 线程句柄
query: 要预处理的查询
length:查询字符串的长度,包括忽略末尾的NULL或者引用字符。
stmt: 用于预处理的prepared_statement
注意:
此函数解析查询并将参数和结果集元数据信息的总数发送回客户端(如果有),而不执行查询,即没有任何日志/磁盘写入。 这允许在执行期间重新执行查询而无需重新解析。
mysql_stmt_precheck()
bool mysql_stmt_precheck(THD * thd,
const COM_DATA* com_data,
enum enum_server_command cmd,
Prepared_statement **stmt
)
功能:
搜索具有指定id的语句并对其进行验证。
参数:
thd:[in]线程句柄
com_data:[in]命令数据
cmd:[in]要执行的命令类型
stmt:[out]指向Prepared_statement的指针,以便在找到时存储它
mysql_stmt_prepare() in STDCALL mysql_stmt_prepare(MYSQL_STMT * stmt,
const char *query
ulong length
)
mysql_stmt_init() MYSQL_STMT * STDCALL mysql_stmt_init(MYSQL * mysql)
Prepared_statement类
Prepared_statement: 一个可以包含占位符的语句。
#include <sql_prepare.h>
Prepared_statement继承图:

公共的成员函数
| Prepared_statement (THD *thd_arg) | |
| virtual | ~Prepared_statement () |
| Destroy this prepared statement, cleaning up all used memory and resources. More... | |
| virtual void | cleanup_stmt () |
| bool | set_name (const LEX_CSTRING &name) |
| const LEX_CSTRING & | name () const |
| void | close_cursor () |
| bool | is_in_use () const |
| bool | is_sql_prepare () const |
| void | set_sql_prepare () |
| bool | prepare (const char *packet, size_t packet_length, bool force_primary_storage_engine) |
| Parse statement text, validate the statement, and prepare it for execution. More... | |
| bool | execute_loop (String *expanded_query, bool open_cursor) |
| Execute a prepared statement. More... | |
| bool | execute_server_runnable (Server_runnable *server_runnable) |
| PSI_prepared_stmt * | get_PS_prepared_stmt () |
| void | deallocate () |
| Common part of DEALLOCATE PREPARE and mysqld_stmt_close. More... | |
| bool | set_parameters (String *expanded_query, bool has_new_types, PS_PARAM *parameters) |
| Assign parameter values either from variables, in case of SQL PS or from the execute packet. More... | |
| bool | set_parameters (String *expanded_query) |
COM_STMT_PREPARE 1的更多相关文章
- Mysql命令show global status求根溯源
近来,发现好多公司对mysql的性能监控是通过show global status实现的,因此对于这个命令想要探究一番,看他是否是实时更新的. 在此之前,我们必须搞明白mysql对于这个命令的执行过程 ...
- mycat服务启动{管理模块启动过程}
mycat启动的时候启动了三个模块 1:NIOConnector(负责链接mysql数据库,连接池以数据库为准不以链接字符串为准), 1:NIOAcceptor,ManagerConnectionFa ...
- 测试mysql的sql语句预编译效果
玩Oracle的都比较关注shared pool,特别是library cache,在使用了绑定变量(预编译sql)之后确实能得到很大的性能提升.现在在转Mysql之后特别是innodb很多东西都还能 ...
- Mysql-proxy中的lua脚本编程(一)
在为mysql-proxy编写lua脚步的时候,需要知道一下几个入口函数,通过这几个入口函数我们可以控制mysql-proxy的一些行为. connect_server() 当代理服 ...
- Go prepare statment超过mysql最大数
mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (cur ...
- mysql show processlist命令 详解
SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到所有线程.否则,您只能看到您自己的线程( ...
- 分布式数据库中间件–(3) Cobar对简单select命令的处理过程
友情提示:非原文链接可能会影响您的阅读体验,欢迎查看原文.(http://blog.geekcome.com) 原文地址:http://blog.geekcome.com/archives/284 在 ...
- MySQL协议分析
MySQL协议分析 标签: mysql 2015-02-27 10:22 1807人阅读 评论(1) 收藏 举报 分类: 数据库(19) 目录(?)[+] 1 交互过程 MySQL客户端与 ...
- Show Global Status 整理
原文来源:MySQL 5.5 Reference Manual 部分翻译取自:<MySQL_5.1中文参考手册> 转载请注明原文链接http://www.cnblogs.com/lenag ...
随机推荐
- 图像Resize中0.5像素中心对齐的问题
目录 0.5像素对齐的问题 0.5像素对齐的问题 1. 问题提出 在进行图像缩放时,偶尔会看到一些比较奇怪的代码,其中有一个就是0.5像素中心对齐的问题,例如在OpenCV线性插值的代码中有类似如下操 ...
- SQL语句 常用记录
1,求平均,保留2位小数: ,)) as avg from {$table}; // amount为数据库某个字段 2,条件累加 , p1, )) AS cnt1 ; // 如果符合 cnt > ...
- OpenCV Python 4.0安装
1.安装OpenCV-Python 如果你是第一次使用OpenCV Python开发包,想要安装OpenCV Python4.0只要执行如下命令行即可: pip install opencv-pyth ...
- Linux利器之perf(火焰图)
1 Ubuntu下安装perf 在Ubuntu18上默认没有安装perf,可以通过如下命令尝试:sudo apt-get install linux-tools 结果出来以下内容: Reading p ...
- python+unittest框架第三天unittest之分离测试固件和公共代码,跳过案例的执行
我们在时间工作中,会将整个项目的代码分别放置多个模块中去编写.方便后期项目维护,比如,我们的web项目可能有多个IP地址,每个IP地址代表不同的测试环境.测试环境与Bat环境或者验收环境等.这就需要我 ...
- 乐字节Java编程语言发展,面向对象和类
大家好,上次我们讲过了乐字节Java编程之方法.调用.重载.递归,接下来我们将会进入到Java封装的内容.Java编程语言发展,面向对象和类. 一.编程语言的发展 机器语言——直接由计算机的指令组成, ...
- [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!
可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...
- 【转帖】iPhone 11 Pro Max皇帝版物料成本不足3500元 卖一赚二
iPhone 11 Pro Max皇帝版物料成本不足3500元 卖一赚二 https://www.cnbeta.com/articles/tech/894449.htm 供应链的掌控力很重要 苹果今年 ...
- 《Mysql - 我的Mysql为什么会抖一下?》
一: 抖一下? - 平时的工作中,不知道有没有遇到过这样的场景. - 一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢. - 并且这样的场景很难复现,它不只随机,而 ...
- Spring Boot系列教程十三:Spring boot集成Sentinel Redis
前言 上一篇文章介绍了spring boot集成单点的redis,然而实际生产环境使用单点的redis风险很高,一旦宕机整个服务将无法使用,这篇文章介绍如何使用基于sentinel的redis高可用方 ...