第十章 文本数据库 / 10.2 数据结构

       数据结构在crypto/txt_db/txt_db.h中定义,如下:

       typedef struct txt_db_st

       {

              int num_fields;

              STACK *data;

              LHASH **index;

              int (**qual)(char **);

              long error;

              long arg1;

              long arg2;

              char **arg_row;

       } TXT_DB;

       意义如下:

       num_fields:表明文本数据库的列数。

data:用来存放数据,每一行数据组织成为一个字符串数组(每个数组值对应该行的一列)  并将此数组地址push到堆栈中。

index:哈希表数组,每一列对应一个哈希表。每一列都可以建哈希表,如果不建哈希表将不能查找该列数据。

qual:一个函数地址数组,数组的每个元素对应一列,进行插入该列哈希表前的过滤。这些函数用于判断一行数据的一列或者多列是否满足某种条件,如果满足将不能插入到哈希表中去(但是能存入堆栈)。每一列都可以设置一个这样的函数。这些函数由用户实现。比如,一个文本数据库中,有名字列和年龄列,并且要求名字长度不能小于2,年龄不能小于0和大于200。用户为名字列实现了一个qual函数,只用来检查名字长度,对于年龄列实现一个qual函数,只用来检查年龄。当用户要插入一条记录,名字长度为1,但是年龄合法,那么该记录能插入到年龄列对应的哈希表中,而不能插入名字列对应的哈希表。

errorarg1arg2arg_row用于存放错误信息。