![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mycat源码阅读
本专栏主要以mycat源码阅读顺序为线,简要讲述jdbc是如何和mycat创建连接,协议握手,mycat是如何读取字节,提取sql,如何执行(只研究了oracle)sql,并讲结果集返回jdbc的。其中会涉及存储过程是如何修改的,对于兼容oracle存储过程的想法,以及个别问题的阐述。
AI读书
分享AI读书笔记
展开
-
Mycat源码阅读(六)如何将Oracle结果集封装为packet
对于oracle的所有sql都会经过JDBCConnection,executeSQL方法来执行。至于jdbc执行sql后如何把结果集封装为mysql协议的packet,可参考ouputResultSet方法,ResultSetUtil有封装好的一套方法。 private void ouputResultSet(ServerConnection sc, String sql) throws SQLException { ResultSet rs = null;原创 2020-11-18 11:26:26 · 129 阅读 · 0 评论 -
Mycat源码阅读(五)执行sql及存储过程
在FrontendAuthenticator类的handle方法中,定义了对jdbc握手回应消息的处理和验证。当验证成功,将handler赋值为FrontendCommandHandler,用于对sql语句的分发处理。@Overridepublic void handle(byte[] data){ if(source.getLoadDataInfileHandler()!=null&&source.getLoadDataInfileHandler().isStartLoad原创 2020-11-18 11:22:15 · 330 阅读 · 0 评论 -
Mycat源码阅读(四)套接字读写数据
第三篇中与JDBC握手,new了HandshakePacket对象,调用write方法,将报文发送给jdbc。所谓write方法就是最终调用AbstractConnection的write方法,将需要发送的数据写入writeQueue,再通过NIOSocketWR写出去。@Overridepublic final void write(ByteBuffer buffer) { if (isSupportCompress()) { ByteBuffer newBuffer = Compre原创 2020-11-18 11:12:20 · 120 阅读 · 0 评论 -
Mycat源码阅读(三)JDBC和mycat的握手
Connection建立连接,就是tcp的三次握手了,mysql协议中,当连接建立后,mysql数据库则发送HandshakePacket报文,向jdbc提供数据库版本号等信息,jdbc向mysql提供url用户名密码等进行身份认证。NIOAcceptor创建一个FrontendConnection后,会将FrontendConnection注册到NIOReactor中,/*** [简要描述]:</br> * [详细描述]:当连接建立完毕后,从reactorPool 中获得一个 NIOR原创 2020-11-18 11:05:52 · 145 阅读 · 0 评论 -
Mycat源码阅读(二)connection(socket连接)的分类
^ (接口) NIOConnection ^ (抽象类) AbstractConnection ^ (抽象类) BackendAIOConnection ^ (类) MySQLConnection ^ (类) PostgreSQLBackendConnection ^ (抽象类) FrontendConnection ^ (类) ManagerConncetion ^ (类) ServerConnectionNIOConnection定义了接口,我们可以忽原创 2020-11-18 10:59:50 · 245 阅读 · 1 评论 -
Mycat源码阅读(一)jdbc是如何和mycat创建连接,如何通信数据的
本文主要以mycat源码阅读顺序为线,简要讲述jdbc是如何和mycat创建连接,协议握手,mycat是如何读取字节,提取sql,如何执行(只研究了oracle)sql,并讲结果集返回jdbc的。其中会涉及存储过程是如何修改的,对于兼容oracle存储过程的想法,以及个别问题的阐述。jdbc是如何和mycat创建连接,如何通信数据的源码部分阅读,可从MycatStartup类开始读起。public final class MycatStartup { private static final原创 2020-11-18 10:40:31 · 548 阅读 · 0 评论