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 ...
随机推荐
- FastCGI模式编译安装LAMP+Xcache
PHP的工作模式:php在lamp环境下共有三种工作模式:CGI模式.apache模块.FastCGI模式.CGI模式下运行PHP,性能不是很好.(已淘汰)FastCGI的方式和apache模块的不同 ...
- (三)UML之类图关系
泛化(generalization):表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节.直接使用语言中的继承表达.在类图中使用带三角箭头的实线表示,箭头从子类指向父类.如下图 ...
- 比较SSO协议: WS-Fed, SAML, and OAuth
真实比喻 在我们获得技术之前,让我们用完全非技术性的东西来解决这个问题.作为工程师,我们非常注重将事情分解为组件和流程.这有助于我们了解事情,以便我们可以排除故障或构建复杂的系统.当你去机场登机时,你 ...
- Python扫描器-HTTP协议
1.HTTP协议 1.1.HTTP协议简介 #1.HTTP协议,全称Hyper Text Transfer Protocol(超文本传输协议) HTTP协议是用于从(WWW:World Wide We ...
- Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)
第八篇(书中 2.0~2.6节 内容) 好!开始把前三章的内容录入进来. 但是!由于第一章说的内容都是在介绍白鹭引擎的背景信息,我就不在日记中写了. 直接开始从第二章写起. 2.0节 中提到了IDE( ...
- 使用jquery操作iframe中的元素
使用jquery操作iframe中的元素<iframe src="/test/demo.htm" width="99%" height="300 ...
- 为什么Java中只有值传递
原文链接:https://www.cnblogs.com/wchxj/p/8729503.html 在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了.如果你有以下想法,那么你有必要好好阅读本 ...
- 学习笔记:yaml语言教程
目录 1.YAML基本概念 1.1 简介 1.2 基本语法 1.3 支持的数据结构: 1.4 注意点 2.数据结构 2.1 字典 2.2 数组 2.3 纯量 2.4 强制类型转换,双! 2.5 字符串 ...
- 给出一个javascript的Helloworld例子
1.基础知识:Helloworld:例 1.1<html><head> <!-- 如果你用notepad建立一个txt之后你再改为html,一定在存时,要存成ut ...
- hadoop WordCount例子详解。
[学习笔记] 下载hadoop-2.7.4-src.tar.gz,拷贝hadoop-2.7.4-src.tar.gz中hadoop-mapreduce-project\hadoop-mapreduce ...