一,主函数功能:

1,分析命令行参数,保存在全局变量中;

2,打开文件,加载表定义sql,调用分析函数开始处理;

3,打印导入数据的sql语句;

二,文件处理函数,void process_ibfile(int fn):

1循环读每一页面,调用分析页面函数去去处理,process_ibpage(page);

其中会检测如果只恢复删除记录时,删除记录要有效

三,处理页面的函数,process_ibpage(page_t *page) :

1,打印转储文件中当前页面的信息,包括页面ID,格式,记录表是否有效,预期的记录数;

-- Page id: 8, Format: REDUNDANT, Records list: Valid, Expected records: (21 21)

2,中间过程有点乱,基本原理就是定位每条记录,调用记录分析函数去分析打印每条记录;其中会利用页面是否有效,当前记录是否有效来决定下一记录的位置计算方法;

这其它关系到几个重要的函数,

页面是否有效,表示记录链表可用,

is_page_valid = check_page(page, &expected_records);

记录是否有效,表示当前移位位置是一个正确的记录;

// Check if origin points to a valid record
            if (check_for_a_record(page, origin, table, offsets) && check_constraints(origin, table, offsets))

当链表有效时会根据记录中的下一记录指针来定位下一记录,

当链表无效时,如果当前是有条有效记录,会从下一个可能的位置开始搜索记录,如果当前记录不是有效记录时,偏移地址加1,再检测;

记录检测函数需要表定义参数;

3,打印转储文件当前面提取结果信息,包括,页ID,发现记录数,是否丢失记录,是否叶子页;

-- Page id: 8, Found records: 21, Lost records: NO, Leaf page: YES

四,记录分析打印函数,ulint process_ibrec(page_t *page, rec_t *rec, table_def_t *table, ulint *offsets):

参数:page,好象没用到,页面指针;参数:rec,记录指针;table:表定义;offsets:?

函数表定义,打印每个字段值,

undrop for innodb c_parser 源码分析的更多相关文章

  1. InnoDB源码分析--缓冲池(三)

    转载请附原文链接:http://www.cnblogs.com/wingsless/p/5582063.html 昨天写到了InnoDB缓冲池的预读:<InnoDB源码分析--缓冲池(二)> ...

  2. MySQL源码分析以及目录结构 2

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  3. MySQL源码分析以及目录结构

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  4. Mysqldump源码分析

    版权声明:本文由王珏原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/261 来源:腾云阁 https://www.qclou ...

  5. MyBatis源码分析之环境准备篇

    前言 之前一段时间写了[Spring源码分析]系列的文章,感觉对Spring的原理及使用各方面都掌握了不少,趁热打铁,开始下一个系列的文章[MyBatis源码分析],在[MyBatis源码分析]文章的 ...

  6. 【MyBatis源码分析】环境准备

    前言 之前一段时间写了[Spring源码分析]系列的文章,感觉对Spring的原理及使用各方面都掌握了不少,趁热打铁,开始下一个系列的文章[MyBatis源码分析],在[MyBatis源码分析]文章的 ...

  7. mybatis源码分析(一)------------入门

    在进行源码分析前,先写一个使用mybatis进行开发的demo,方便我们后面进行分析. 一 关于mybatis的demo  pom.xml文件 <project xmlns="http ...

  8. 深度 Mybatis 3 源码分析(一)SqlSessionFactoryBuilder源码分析

    MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java ...

  9. mysql复制那点事(2)-binlog组提交源码分析和实现

    mysql复制那点事(2)-binlog组提交源码分析和实现 [TOC] 0. 参考文献 序号 文献 1 MySQL 5.7 MTS源码分析 2 MySQL 组提交 3 MySQL Redo/Binl ...

随机推荐

  1. cocos2d-x CCSpriteBatchNode

    转自:http://www.cnblogs.com/jiackyan/archive/2013/04/14/3019880.html 1.先说下渲染批次:这是游戏引擎中一个比较重要的优化指标,指的是一 ...

  2. 3、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录

    近期因为项目赶着上线,一直没时间接着写博客,今天最终空出了时间.声名:我不是专业美工,所以界面问题,希望大家不要拍砖.登录界面例如以下: 在ASP.NET MVC中,要新增一个功能,我们首先要加入一个 ...

  3. Android 3D emulation 架构理解

    Android Emulator 给用户提供  GPU on 选项,意思是利用 Host ( 就是执行 Emulator 的PC机) 的 GPU. 当然PC机必须把 OpenGL 的驱动装好 在实现上 ...

  4. yarn 集群部署,遇到的问题小结

    版本号信息: hadoop 2.3.0  hive 0.11.0 1. Application Master 无法訪问     点击application mater 链接,出现 http 500 错 ...

  5. CDOJ 1157 数列(seq) 分块+线段树

    数列(seq) Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1157 Desc ...

  6. materialish-progress

    https://github.com/pnikosis/materialish-progress materialish-progress-master.zip

  7. Android选择系统相册或拍照上传

    PhotoUtils.rar

  8. java nio 抛出NonWritableChannelException异常

    抛出异常的代码在此处: MappedByteBuffer buffer = channel.map(MapMode.READ_WRITE, 0, avalible); 其中channel是一个file ...

  9. careercup-中等难度 17.9

    17.9 设计一个方法,找出任意指定单词在一本书中的出现频率. 解法: 1 单次查询 遍历这本书的每个单词,计算给定单词出现的次数.时间复杂度O(n),我们无法继续优化它,因为书中的每个单次都需要访问 ...

  10. [Effective C++ --017]以独立语句将newed对象置入智能指针

    这一节也比较简单,先假设我们有如下的函数: int foo(); void memFoo(shared_ptr<T> pw, int foo); 现在假设我们要调用memFoo函数: me ...