一,主函数功能:

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. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  2. Flume + HDFS + Hive日志收集系统

    最近一段时间,负责公司的产品日志埋点与收集工作,搭建了基于Flume+HDFS+Hive日志搜集系统. 一.日志搜集系统架构: 简单画了一下日志搜集系统的架构图,可以看出,flume承担了agent与 ...

  3. Remove “System Program Problem Detected” Messages From Ubuntu

    One of my Ubuntu systems would pop up the following message multiple times after logging in: System ...

  4. PowerShell中的数学计算

    Double类型和float都属于浮点类型,精度不高.而Decimal属于高精度

  5. 【Android 应用开发】Activity 状态保存 OnSaveInstanceState參数解析

    作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38297083 一. 相关方法简单介绍 1. 状态保存方法演示 ...

  6. 01---HTML整理

    1.前端: 不同设备的适配           显示-->性能优化           某些计算任务           html5   2.xml:   传输数据 保存配置文件   3.乱码是 ...

  7. 学习笔记之Python

    http://baike.baidu.com/view/21087.htm?fr=aladdin#reference-[12]-21087-wrap Python 基础教程(http://www.w3 ...

  8. PAT 1016

    1016. Phone Bills (25) A long-distance telephone company charges its customers by the following rule ...

  9. Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

    对所有用户有效在/etc/profile增加以下内容.只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加下面的内容:(注意:等号前面不要加空格,否则可能出现 comma ...

  10. iOS app 上架的流程与注意点

    这里整理了两个关于苹果应用商店上架方面的资料: 一个是app上架的流程,里面包含各个环节的截图,比较详细. 流程介绍链接   (提取码:52a4) 第二个是app上架的一些注意点,这里面主要说的是上架 ...