|
MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
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 enum_field_types |
Column types for MySQL
枚举值类型是从MySQL的协议中抄过来的
| enum ResultSetMetaData |
Resultset metadata
这些枚举值都是从MySQL的协议中抄过来的
| RC create_version_comment_sql_result | ( | SqlResult * | sql_result | ) |
MySQL客户端连接时会发起一个"select @@version_comment"的查询,这里对这个查询进行特殊处理
| [out] | sql_result | 生成的结果 |
|
overridevirtual |
连接刚开始建立时,进行一些初始化
MySQL链接做初始化,需要进行握手和一些预处理
参考MySQL或MariaDB的手册,服务端要首先向客户端发送一个握手包,等客户端回复后, 再回复一个OkPacket或ErrPacket
| fd | 连接描述符 |
| session | 当前的会话 |
| addr | 对端地址 |
重载 Communicator .