开始看sqlite3.7的代码了,但是感觉到好像先天不足似的:
第一,就是注释问题,注释全部是英语,借助金山词霸或者灵格斯词霸单词的问题解决了,翻译好像也不太困难,但是要记录下来,花费的时间就是很大的了,所以在考虑要不要不放弃翻译?写出来的难度大。现在想了想,还是不翻译了,自己能看懂就行了,以后将重要的部分标注出来。
第二,就是对于C/C++掌握的还不是很清晰,当时数据结构学的不是很透彻,所以在看的过程中,会有很多语法不懂,不过因为是第一遍看,倒是发现了这些代码写的很整齐,像个搞艺术的人写出来的,严谨、细致。
第三,对于source insight的使用,一般的用法得解决,这个应该来说不会困难。
第四,也是迫切需要解决的问题,我需要一个相对来说安静的环境。当然,心不静是一方面,最近有点犯迷糊。但是,这个学习,还是很需要安静的环境的。尤其是在需要细细思考的时候,是需要安静的。还要学会控制情绪,源码很多,大概包含注释的话15万行左右吧,还需要做好打大战役的准备,尤其是对我这样基础比较薄弱的人,还需要回忆先前的知识,比如C++、数据结构、编译原理等等。
暂时想到这么多。
以下内容转载自:MrDB.http://www.cnblogs.com/hustcat/archive/2009/02/26/1398896.html
——整理:hustcat2009-2-19 |
||
@H_403_42@大小byte |
@H_403_42@备注 |
|
API部分 |
||
main.c |
35414 |
|
legacy.c |
3734 |
|
table.c |
5464 |
the sqlite3_get_table() and sqlite3_free_table()@H_403_42@的实现,它们是sqlite3_exec@H_403_42@的包装 |
preprare.c |
17983 |
|
分词器部分(Tokenizer) |
||
tokenize.c |
14495 |
@H_403_42@分词器的实现 |
语法分析器部分(Parser) |
||
parser.c |
116917 |
|
parser.h |
6847 |
@H_403_42@分析器内部定义的关键字 |
|
||
update.c |
23878 |
|
delete.c |
21978 |
|
insert.c |
62026 |
|
trigger.c |
29065 |
|
attach.c |
15941 |
|
select.c |
112084 |
|
where.c |
75826 |
|
vacuum.c |
11005 |
|
pragma.c |
34289 |
|
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 |
|
date.c |
24031 |
与日期和时间转换有关的函数 |
虚拟机部分(Virtual Machine) |
||
vdbeapi.c |
23300 |
|
vdbe.c |
143552 |
@H_403_42@虚拟机的主要实现部分 |
vdbe.h |
5309 |
@H_403_42@定义了VDBE@H_403_42@的接口,VdbeOp@H_403_42@结构体(@H_403_42@代表一条指令) |
vdbeaux.c |
58741 |
Vdbe.h@H_403_42@的接口的实现 |
vdbeInt.h |
17595 |
Vdbe.c@H_403_42@的私有头文件,定义了VDBE@H_403_42@常用的数据结构: Cursor@H_403_42@——虚拟机中使用的游标 Mem@H_403_42@——vdbe@H_403_42@在内部把所有的sql@H_403_42@值当作一个Mem@H_403_42@数据结构来处理 Vdbe@H_403_42@——虚拟机数据结构 |
vdbemem.c |
26375 |
|
vdbefifo.c |
2927 |
|
B-Tree部分 |
||
btree.h |
5260 |
|
btree.c |
215570 |
B-Tree@H_403_42@部分的主要实现,并定义了以下数据结构: Btree@H_403_42@——Btree handler BtCursor@H_403_42@——使用的游标 BtLock@H_403_42@——锁 BtShared@H_403_42@——包含了一个打开的数据库的所有信息 MemPage@H_403_42@——文件在内存存放在该数据结构中 CellInfo |
Pager部分 |
||
pager.h |
4161 |
|
pager.c |
127490 |
Pager@H_403_42@模块的主要实现,并定义了以下数据结构: PgHdr@H_403_42@——每一个内存中的页面的页面头 Pager@H_403_42@——该模块中最重要的数据结构 PgHistory |
|
||
OS Interface部分 |
||
os.h |
18355 |
@H_403_42@定义了为上层模块提供的操作函数,并定义了以下数据结构: IoMethod@H_403_42@——OsFile@H_403_42@所支持的操作函数(对所有架构都适用的OS Interface@H_403_42@) |
os.c |
2866 |
|
os_win.c |
42975 |
Windows@H_403_42@平台下的OS Interface |
os_unix.c |
60831 |
Unix@H_403_42@平台下的OS Interface |
os_os2.c |
28451 |
OS2@H_403_42@平台下的OS Interface |
|
||
其它部分 |
||
utf.c |
20891 |
|
util.c |
43575 |
|
sqlite3.h |
63873 |
|
sqliteInt.h |
78886 |
|
printf.c |
29556 |
|
random.c |
3078 |
|
hash.c |
11896 |
|
hash.h |
4033 |