看SQLite源码时,遇到的问题

前端之家收集整理的这篇文章主要介绍了看SQLite源码时,遇到的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

开始看sqlite3.7的代码了,但是感觉到好像先天不足似的:

第一,就是注释问题,注释全部是英语,借助金山词霸或者灵格斯词霸单词的问题解决了,翻译好像也不太困难,但是要记录下来,花费的时间就是很大的了,所以在考虑要不要不放弃翻译?写出来的难度大。现在想了想,还是不翻译了,自己能看懂就行了,以后将重要的部分标注出来。

第二,就是对于C/C++掌握的还不是很清晰,当时数据结构学的不是很透彻,所以在看的过程中,会有很多语法不懂,不过因为是第一遍看,倒是发现了这些代码写的很整齐,像个搞艺术的人写出来的,严谨、细致。

第三,对于source insight的使用,一般的用法解决,这个应该来说不会困难。

第四,也是迫切需要解决的问题,我需要一个相对来说安静的环境。当然,心不静是一方面,最近有点犯迷糊。但是,这个学习,还是很需要安静的环境的。尤其是在需要细细思考的时候,是需要安静的。还要学会控制情绪,源码很多,大概包含注释的话15万行左右吧,还需要做好打大战役的准备,尤其是对我这样基础比较薄弱的人,还需要回忆先前的知识,比如C++、数据结构、编译原理等等。

暂时想到这么多。

以下内容转载自:MrDB.http://www.cnblogs.com/hustcat/archive/2009/02/26/1398896.html

Version 3.3.6代码文件结构

——整理:hustcat2009-2-19

文件名称

大小byte

备注

API部分

main.c

35414

sqlite Library的大部分接口

legacy.c

3734

sqlite3_exec的实现

table.c

5464

the sqlite3_get_table() and sqlite3_free_table()的实现,它们是sqlite3_exec的包装

preprare.c

17983

主要实现sqlite3_prepare()

分词器部分(Tokenizer)

tokenize.c

14495

分词器的实现

语法分析器部分(Parser)

parser.c

116917

分析器的实现,由Lemon实现

parser.h

6847

分析器内部定义的关键字

代码生成器部分(Code Generator)

update.c

23878

处理UPDATTE语句

delete.c

21978

处理DELETE语句

insert.c

62026

处理INSERT语句

trigger.c

29065

处理TRIGGER语句

attach.c

15941

处理ATTACHT DEATTACH语句

select.c

112084

处理SELECT语句

where.c

75826

处理WHERE语句

vacuum.c

11005

处理VACUUM语句

pragma.c

34289

处理PRAGMA命令

expr.c

73963

处理sql语句中的表达式

auth.c

7496

主要实现sqlite3_set_authorizer()

analyze.c

13149

实现ANALYZE命令

alter.c

18414

实现ALTER TABLE功能

build.c

104052

处理以下语法:

CREATE TABLE

DROP TABLE

CREATE INDEX

DROP INDEX

creating ID lists

BEGIN TRANSACTION

COMMIT

ROLLBACK

func.c

34335

实现sql语句的函数语句

date.c

24031

与日期和时间转换有关的函数

虚拟机部分(Virtual Machine)

vdbeapi.c

23300

虚拟机提供上层模块调用API实现部分

vdbe.c

143552

虚拟机的主要实现部分

vdbe.h

5309

定义了VDBE的接口,VdbeOp结构体(代表一条指令)

vdbeaux.c

58741

Vdbe.h的接口的实现

vdbeInt.h

17595

Vdbe.c的私有头文件,定义了VDBE常用的数据结构:

Cursor——虚拟机中使用的游标

Mem——vdbe在内部把所有的sql值当作一个Mem数据结构来处理

Vdbe——虚拟机数据结构

vdbemem.c

26375

操作”Mem”数据结构的函数

vdbefifo.c

2927

B-Tree部分

btree.h

5260

文件,定义了B-tree提供的操作接口

btree.c

215570

B-Tree部分的主要实现,并定义了以下数据结构:

Btree——Btree handler

BtCursor——使用的游标

BtLock——锁

BtShared——包含了一个打开的数据库的所有信息

MemPage——文件在内存存放在该数据结构中

CellInfo

Pager部分

pager.h

4161

定义sqlite page cache子系统提供的接口

pager.c

127490

Pager模块的主要实现,并定义了以下数据结构:

PgHdr——每一个内存中的页面页面

Pager——该模块中最重要的数据结构

PgHistory

OS Interface部分

os.h

18355

定义了为上层模块提供的操作函数,并定义了以下数据结构:

OsFile——描述一个文件

IoMethod——OsFile支持的操作函数(对所有架构都适用的OS Interface

os.c

2866

IoMethod中的函数的包装

os_win.c

42975

Windows平台下的OS Interface

os_unix.c

60831

Unix平台下的OS Interface

os_os2.c

28451

OS2平台下的OS Interface

其它部分

utf.c

20891

UTF编码有关的函数

util.c

43575

一些实用函数,比如:

sqlite3Malloc()sqlite3FreeX()

sqlite3.h

63873

sqlite的头文件,定义了提供给应用使用的API和数据结构。

sqliteInt.h

78886

定义了sqlite内部使用的接口和数据结构

printf.c

29556

主要实现与printf有关的函数

random.c

3078

随机生成

hash.c

11896

sqlite使用的hash

hash.h

4033

Hash 表头文件

猜你在找的Sqlite相关文章