Sharding-JDBC源码解析(二)SQL解析

Sharding-JDBC源码解析(一)整体流程-CSDN博客

Sharding-JDBC源码解析(二)SQL解析-CSDN博客

Sharding-JDBC源码解析(三)SQL路由-CSDN博客

Sharding-JDBC源码解析(四)SQL改写-CSDN博客

Sharding-JDBC源码解析(五)SQL执行-CSDN博客

Sharding-JDBC源码解析(六)结果归并-CSDN博客

目录

一、概述

二、详细流程

一、概述

SQL解析的流程直接引用官网的描述,不再额外进行深入解析。

解析过程分为词法解析和语法解析。 词法解析器用于将 SQL 拆解为不可再分的原子符号,称为 Token。并根据不同数据库方言所提供的字典,将其归类为关键字,表达式,字面量和操作符。 再使用语法解析器将词法解析器的输出转换为抽象语法树。

二、详细流程

例如,以下 SQL,会被解析成如下的语法树。

SELECT id, name FROM t_user WHERE status = 'ACTIVE' AND age > 18

代码位于ShardingSpherePreparedStatement#ShardingSpherePreparedStatement 

    private ShardingSpherePreparedStatement(...) {
        //  在这个构造函数中会去对sql进行解析,以及获取一些元数据配置
        // ...略
        ShardingSphereSQLParserEngine sqlParserEngine = new ShardingSphereSQLParserEngine(
                DatabaseTypeRegistry.getTrunkDatabaseTypeName(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType()), metaDataContexts.getProps());
        sqlStatement = sqlParserEngine.parse(sql, true);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值