【MySQL·8.0·源码】MySQL 语法树结构

引文

  • Query_block(查询块)
    查询块也称为查询范式
    即一个由 SELECT 关键词开头,紧跟表列表,可选由 WHERE 子句、GROUP BY 子句等组成的一个基本查询块
  • Query_expression(查询表达式)
    一个查询表达式可能由一个或者多个查询块组成
    多于一个查询块表示查询表达式中包含一个或者多个 UNION、INTERSET 或者 EXCEPT 操作
    如果有子查询,那么也可能含有多个查询块
  • LEX
    LEX 是一条 SQL 语句相关的解析语法树结构对象
    即 MySQL 使用 LEX 对象来保存解析语法树

Query_block(查询块)

一个查询块对应着一条基本的 SELECT 语句的语法结构

  • master
    指向查询块的上层表达式(外部查询表达式)
  • slave
    执行属于该查询块的第一个查询表达式(子查询)
  • neighbors
    link_next、link_prev 分别指向同层同级别的邻居查询块,查询块列表
class Query_block : public Query_term {
   
   
  /**
    Intrusive linked list of all query blocks within the same
    query expression.
  */
  Query_block *next{
   
   nullptr};

  /// The query expression containing this query block.
  Query_expression *master{
   
   nullptr};
  /// The first query expression contained within this query block.
  Query_expression *slave{
   
   nullptr};

  /// Intrusive double-linked global list of query blocks.
  Query_block *link_next{
   
   nullptr};
  Query_block **link_prev{
   
   nullptr};
  
  Query_expression *master_query_expression() const {
   
    return master; }
  Query_expression *first_inner_query_expression() const {
   
    return slave; }
  Query_block *outer_query_block() const {
   
    return master->outer_query_block(); }
  Query_block *next_query_block() const {
   
    return next; }
  Query_block *next_select_in_list() const {
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抡着鼠标扛大旗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值