22-2.sharding-jdbc源码之DELETE解析

阿飞Javaer,转载请注明原创出处,谢谢!!DELETE语法分析delete解析之前,首先看一下mysql官方对delete语法的定义: - Single-Table SyntaxDELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [PARTITION (partition_name [, partiti...
摘要由CSDN通过智能技术生成

阿飞Javaer,转载请注明原创出处,谢谢!!

DELETE语法

分析delete解析之前,首先看一下mysql官方对delete语法的定义:
- Single-Table Syntax

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
  • Multi-table Syntax
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    tbl_name[.*] [, tbl_name[.*]] ...
    FROM table_references
    [WHERE where_condition]

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    FROM tbl_name[.*] [, tbl_name[.*]] ...
    USING table_references
    [WHERE where_condition]

摘自https://dev.mysql.com/doc/refman/8.0/en/delete.html

DELETE解析

接下来分析sharding-jdbc是如何解析delete类型的SQL语句的,SQLStatement result = sqlParser.parse()得到SQL解析器后,执行AbstractDeleteParserparse()方法,核心源码如下:

@Override
public DMLStatement parse() {
    lexerEngine.nextToken();
    lexerEngine.skipAll(getSkippedKeywordsBetweenDeleteAndTable());
    lexerEngine.unsupportedIfEqual(getUnsupportedKeywordsBetweenDeleteAndTable());
    DMLStatement result = new DMLStatement();
    deleteClauseParserFacade.getTableReferencesClauseParser().parse(result, true);
    lexerEngine.skipUntil(DefaultKeyword.WHERE);
    deleteClauseParserFacade.getWhereClauseParser().parse(shardingRule, result, Collections.<SelectItem>emptyList());
    return result;
}

对应的泳道图如下所示:
DELETE解析泳道图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值