/** B-tree cursor */
typedef struct btr_cur_struct        btr_cur_t;

/** The tree cursor: the definition appears here only for the compiler
to know struct size! */
struct btr_cur_struct {
    dict_index_t*    index;        /*!< index where positioned */
    page_cur_t    page_cur;    /*!< page cursor */
    purge_node_t*    purge_node;    /*!< purge node, for BTR_DELETE */
    buf_block_t*    left_block;    /*!< this field is used to store
                    a pointer to the left neighbor
                    page, in the cases
                    BTR_SEARCH_PREV and
                    BTR_MODIFY_PREV */
    /*------------------------------*/
    que_thr_t*    thr;        /*!< this field is only used
                    when btr_cur_search_to_nth_level
                    is called for an index entry
                    insertion: the calling query
                    thread is passed here to be
                    used in the insert buffer */
    /*------------------------------*/
    /** The following fields are used in
    btr_cur_search_to_nth_level to pass information: */
    /* @{ */
    enum btr_cur_method    flag;    /*!< Search method used */
    ulint        tree_height;    /*!< Tree height if the search is done
                    for a pessimistic insert or update
                    operation */
    ulint        up_match;    /*!< If the search mode was PAGE_CUR_LE,
                    the number of matched fields to the
                    the first user record to the right of
                    the cursor record after
                    btr_cur_search_to_nth_level;
                    for the mode PAGE_CUR_GE, the matched
                    fields to the first user record AT THE
                    CURSOR or to the right of it;
                    NOTE that the up_match and low_match
                    values may exceed the correct values
                    for comparison to the adjacent user
                    record if that record is on a
                    different leaf page! (See the note in
                    row_ins_duplicate_key.) */
    ulint        up_bytes;    /*!< number of matched bytes to the
                    right at the time cursor positioned;
                    only used internally in searches: not
                    defined after the search */
    ulint        low_match;    /*!< if search mode was PAGE_CUR_LE,
                    the number of matched fields to the
                    first user record AT THE CURSOR or
                    to the left of it after
                    btr_cur_search_to_nth_level;
                    NOT defined for PAGE_CUR_GE or any
                    other search modes; see also the NOTE
                    in up_match! */
    ulint        low_bytes;    /*!< number of matched bytes to the
                    right at the time cursor positioned;
                    only used internally in searches: not
                    defined after the search */
    ulint        n_fields;    /*!< prefix length used in a hash
                    search if hash_node != NULL */
    ulint        n_bytes;    /*!< hash prefix bytes if hash_node !=
                    NULL */
    ulint        fold;        /*!< fold value used in the search if
                    flag is BTR_CUR_HASH */
    /* @} */
    btr_path_t*    path_arr;    /*!< in estimating the number of
                    rows in range, we store in this array
                    information of the path through
                    the tree */
};

btr_cur_t;的更多相关文章

  1. MySQL AHI 实现解析

    版权声明:本文由musazhang原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/904925001482373849 来源 ...

  2. 宏btr_pcur_open_on_user_rec

    参考http://wqtn22.iteye.com/blog/1820436 http://blog.jcole.us/2013/01/10/btree-index-structures-in-inn ...

  3. btr_pcur_t

    /** Persistent cursor */ typedef struct btr_pcur_struct btr_pcur_t; /* The persistent B-tree cursor ...

  4. 腾讯云数据库团队:MySQL AHI 实现解析

    MySQL 定位用户记录的过程可以描述为:打开索引 -> 根据索引键值逐层查找 B+ 树 branch 结点 -> 定位到叶子结点,将 cursor 定位到满足条件的 rec 上:如果树高 ...

  5. ubuntu 18.04下载mysql8.0.13源码并编译安装(暂时没有成功)

    执行如下命令下载解压MySQL8的源码文件压缩包到本地文件: wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.13.ta ...

  6. 源码浅析:MySQL一条insert操作,会写哪些文件?包括UNDO相关的文件吗?

    DML操作的大致流程 在解答上述疑惑之前,我们来梳理一下DML操作的大致流程: 1.语法解析.语义解析 2.生成执行计划 3.事务修改阶段 1) 激活事务,事务状态由not_active变为activ ...

  7. 源码浅析:InnoDB聚集索引如何定位到数据的物理位置,并从磁盘读取

    索引结构概述: MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址.这与Oracle的索引结构相似,比较好理解.那么,常用的Innodb聚集索引结构是怎样的呢? InnoDB的数据文 ...

随机推荐

  1. Perceptron Learning Algorithm (PLA)

    Perceptron - 感知机,是一种二元线性分类器,它通过对特征向量的加权求和,并把这个”和”与事先设定的门槛值(threshold)做比较,高于门槛值的输出1,低于门槛值的输出-1.其中sign ...

  2. Opencv图像与矩阵的操作

    #include "stdafx.h" #include <cv.h> #include <cxcore.h> #include <highgui.h ...

  3. PythonChallenge 2:爬虫和正则表达式

    题目: 解题思路:题目里已经说的很清楚了,字符可能在网页的源代码里.右键查看网页源代码,发现其中有一段:find rare characters in the mess below.有些人是直接把下面 ...

  4. [resource]Github上维护的一个机器学习相关的框架,库和工具列表

    https://github.com/josephmisiti/awesome-machine-learning  A curated list of awesome Machine Learning ...

  5. diahosting的低配vps弱爆了

    以下仅为一个用户的心声 上年年中的时候买了dia的128M vps,算是我第一个vps.工作以来,我弄了一个wp博客,所以我在上面搭了apache的服务器,但是由于内存低,挂得也快.后来我换了Ngin ...

  6. ts 使用Visual Studio2012和TFS网站管理源代码

        所需工具 Visual Studio 2012 http://tfs.visualstudio.com/ 微软网站 微软账号  hotmail 或live都行 达到目的 适合于个人项目,多用户 ...

  7. 【BZOJ】【1085】【SCOI2005】骑士精神

    IDA*算法 Orz HZWER A*+迭代加深搜索=IDA* 这题的估价相当于一个可行性剪枝,即如果当前走的步数s+未归位的点数>搜索深度k,则剪枝 /******************** ...

  8. Codeforces Round #363 (Div. 2)->A. Launch of Collider

    A. Launch of Collider time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  9. hadoop+hbase

    hadoop的配置见下面这篇文章 http://www.powerxing.com/install-hadoop-2-4-1-single-node/ Hadoop安装教程_单机/伪分布式配置_Had ...

  10. 趣味Python入门(一):初识Python

    [编者按]本文作者是 Abhishek Jaiswal ,擅长 .NET.C#.Python 等多种语言的技术控.本文中,作者通过活泼有趣的口吻向大家介绍了 Python 语言的基础知识,后期多学习历 ...