MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
| 枚举 | 函数
MySQLProtocol

MySQL协议相关实现 更多...

struct  PacketHeader
 每个包都有一个包头 更多...
 
class  BasePacket
 所有的包都继承自BasePacket 更多...
 
struct  HandshakeV10
 握手包 更多...
 
struct  OkPacket
 响应包,在很多场景中都会使用 更多...
 
struct  EofPacket
 EOF包 更多...
 
struct  ErrPacket
 ERR包,出现错误时返回 更多...
 
struct  QueryPacket
 MySQL客户端发过来的请求包 更多...
 

枚举

enum  ResultSetMetaData { RESULTSET_METADATA_NONE = 0 , RESULTSET_METADATA_FULL = 1 }
 Resultset metadata 更多...
 
enum  enum_field_types {
  MYSQL_TYPE_DECIMAL , MYSQL_TYPE_TINY , MYSQL_TYPE_SHORT , MYSQL_TYPE_LONG ,
  MYSQL_TYPE_FLOAT , MYSQL_TYPE_DOUBLE , MYSQL_TYPE_NULL , MYSQL_TYPE_TIMESTAMP ,
  MYSQL_TYPE_LONGLONG , MYSQL_TYPE_INT24 , MYSQL_TYPE_DATE , MYSQL_TYPE_TIME ,
  MYSQL_TYPE_DATETIME , MYSQL_TYPE_YEAR , MYSQL_TYPE_NEWDATE , MYSQL_TYPE_VARCHAR ,
  MYSQL_TYPE_BIT , MYSQL_TYPE_TIMESTAMP2 , MYSQL_TYPE_DATETIME2 , MYSQL_TYPE_TIME2 ,
  MYSQL_TYPE_TYPED_ARRAY , MYSQL_TYPE_INVALID = 243 , MYSQL_TYPE_BOOL = 244 , MYSQL_TYPE_JSON = 245 ,
  MYSQL_TYPE_NEWDECIMAL = 246 , MYSQL_TYPE_ENUM = 247 , MYSQL_TYPE_SET = 248 , MYSQL_TYPE_TINY_BLOB = 249 ,
  MYSQL_TYPE_MEDIUM_BLOB = 250 , MYSQL_TYPE_LONG_BLOB = 251 , MYSQL_TYPE_BLOB = 252 , MYSQL_TYPE_VAR_STRING = 253 ,
  MYSQL_TYPE_STRING = 254 , MYSQL_TYPE_GEOMETRY = 255
}
 Column types for MySQL 更多...
 

函数

RC create_version_comment_sql_result (SqlResult *sql_result)
 MySQL客户端连接时会发起一个"select @@version_comment"的查询,这里对这个查询进行特殊处理 更多...
 
virtual RC MysqlCommunicator::init (int fd, Session *session, const std::string &addr) override
 连接刚开始建立时,进行一些初始化 更多...
 

详细描述

MySQL协议相关实现

枚举类型说明

◆ enum_field_types

Column types for MySQL

枚举值类型是从MySQL的协议中抄过来的

枚举值
MYSQL_TYPE_NEWDATE 

Internal to MySQL. Not used in protocol

MYSQL_TYPE_DATETIME2 

Internal to MySQL. Not used in protocol

MYSQL_TYPE_TIME2 

Internal to MySQL. Not used in protocol

MYSQL_TYPE_TYPED_ARRAY 

Used for replication only

MYSQL_TYPE_BOOL 

Currently just a placeholder

◆ ResultSetMetaData

Resultset metadata

这些枚举值都是从MySQL的协议中抄过来的

函数说明

◆ create_version_comment_sql_result()

RC create_version_comment_sql_result ( SqlResult sql_result)

MySQL客户端连接时会发起一个"select @@version_comment"的查询,这里对这个查询进行特殊处理

参数
[out]sql_result生成的结果

◆ init()

RC MysqlCommunicator::init ( int  fd,
Session session,
const std::string &  addr 
)
overridevirtual

连接刚开始建立时,进行一些初始化

MySQL链接做初始化,需要进行握手和一些预处理

参考MySQL或MariaDB的手册,服务端要首先向客户端发送一个握手包,等客户端回复后, 再回复一个OkPacket或ErrPacket

参数
fd连接描述符
session当前的会话
addr对端地址

重载 Communicator .