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的更多相关文章

  1. Mysql命令show global status求根溯源

    近来,发现好多公司对mysql的性能监控是通过show global status实现的,因此对于这个命令想要探究一番,看他是否是实时更新的. 在此之前,我们必须搞明白mysql对于这个命令的执行过程 ...

  2. mycat服务启动{管理模块启动过程}

    mycat启动的时候启动了三个模块 1:NIOConnector(负责链接mysql数据库,连接池以数据库为准不以链接字符串为准), 1:NIOAcceptor,ManagerConnectionFa ...

  3. 测试mysql的sql语句预编译效果

    玩Oracle的都比较关注shared pool,特别是library cache,在使用了绑定变量(预编译sql)之后确实能得到很大的性能提升.现在在转Mysql之后特别是innodb很多东西都还能 ...

  4. Mysql-proxy中的lua脚本编程(一)

    在为mysql-proxy编写lua脚步的时候,需要知道一下几个入口函数,通过这几个入口函数我们可以控制mysql-proxy的一些行为. connect_server()          当代理服 ...

  5. Go prepare statment超过mysql最大数

    mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (cur ...

  6. mysql show processlist命令 详解

    SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到所有线程.否则,您只能看到您自己的线程( ...

  7. 分布式数据库中间件–(3) Cobar对简单select命令的处理过程

    友情提示:非原文链接可能会影响您的阅读体验,欢迎查看原文.(http://blog.geekcome.com) 原文地址:http://blog.geekcome.com/archives/284 在 ...

  8. MySQL协议分析

    MySQL协议分析 标签: mysql 2015-02-27 10:22 1807人阅读 评论(1) 收藏 举报  分类: 数据库(19)    目录(?)[+]   1 交互过程 MySQL客户端与 ...

  9. Show Global Status 整理

    原文来源:MySQL 5.5 Reference Manual 部分翻译取自:<MySQL_5.1中文参考手册> 转载请注明原文链接http://www.cnblogs.com/lenag ...

随机推荐

  1. java书籍推荐转

    http://blog.csdn.net/chaozhi_guo/article/details/51274634 一.<深入理解Java虚拟机:JVM高级特性与最佳实践> 如果你不满足于 ...

  2. Python3之切片及内置切片函数slice

       切片   取一个list或tuple的部分元素是非常常见的操作.比如,一个list L=[0,1,2,3,4,5,6,7,8,9] 取前3个元素,应该怎么做 笨方法,一个个列出来 >> ...

  3. 第十五章 单点登录——《跟我学Shiro》

    目录贴:跟我学Shiro目录贴 Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个 ...

  4. Mac下用apache搭建一个局域网服务器

    一:由于MacOX系统下自带Apache环境,所以我们在Mac系统下用Apache配置. Mac系统:10.14.4 二:启动Apache 启动 在终端输入:sudo apachectl start验 ...

  5. matlab截取图像

    声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 对于Matlab的使用情况常常是这样子的,很多零碎的函数名字很难记忆,经常用过后过一段时间就又忘记了,又得去网 ...

  6. opencv入门笔记

    一.图片基本操作 1.1 显示图片 #include <opencv2/opencv.hpp> //头文件 using namespace cv; //包含cv命名空间 void main ...

  7. 彻底理解js中this的指向,不必硬背(转)

    转自: http://www.h5cn.com/js/jishu/2016/0226/18248.html 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定th ...

  8. Java面试 - 重载(Overload)和重写(Override)的区别?

    1.重载是在同一个类中,可声明多个同名方法,但参数列表不同(参数顺序,个数,类型).而重写是在子类中,对从父类中继承的方法进行重新编写,但方法名,参数列表(参数顺序,个数,类型),返回值类型必须保持一 ...

  9. S03_CH13_ZYNQ A9 TCP UART双核AMP例程

    S03_CH13_ZYNQ A9 TCP UART双核AMP例程 13.1概述 ZYNQ中存在两个独立的ARM核,在很多应用场景中往往只需使用其中的1个核心即可.然而,对于复杂的设计,例如多任务,并行 ...

  10. Idea中一个服务按多个端口同时启动

    1.勾选并行启动 2.-Dserver.port=9018