MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
Public 成员函数 | |
RC | init (const char *base_dir) |
void | destroy () |
RC | create_db (const char *dbname) |
RC | drop_db (const char *dbname) |
RC | open_db (const char *dbname) |
RC | close_db (const char *dbname) |
RC | execute (const char *sql) |
RC | create_table (const char *dbname, const char *relation_name, int attribute_count, const AttrInfoSqlNode *attributes) |
RC | drop_table (const char *dbname, const char *relation_name) |
Db * | find_db (const char *dbname) const |
Table * | find_table (const char *dbname, const char *table_name) const |
RC | sync () |
静态 Public 成员函数 | |
static void | set_default (DefaultHandler *handler) |
static DefaultHandler & | get_default () |
Private 属性 | |
std::string | base_dir_ |
std::string | db_dir_ |
std::map< std::string, Db * > | opened_dbs_ |
RC DefaultHandler::close_db | ( | const char * | dbname | ) |
关闭当前数据库。 该操作将关闭当前数据库中打开的所有文件,关闭文件操作将自动使所有相关的缓冲区页面更新到磁盘
RC DefaultHandler::create_db | ( | const char * | dbname | ) |
在路径dbPath下创建一个名为dbName的空库,生成相应的系统文件。 接口要求:一个数据库对应一个文件夹, dbName即为文件夹名, 文件夹中创建两个系统文件SYSTABLES和SYSCOLUMNS,文件名不能带后缀。 dbPath为创建数据库的路径名,该路径名的最后不要含“\”
dbname |
RC DefaultHandler::create_table | ( | const char * | dbname, |
const char * | relation_name, | ||
int | attribute_count, | ||
const AttrInfoSqlNode * | attributes | ||
) |
创建一个名为relName的表。 参数attrCount表示关系中属性的数量(取值为1到MAXATTRS之间)。 参数attributes是一个长度为attrCount的数组。 对于新关系中第i个属性,attributes数组中的第i个元素包含名称、 类型和属性的长度(见AttrInfo结构定义)
relName | |
attrCount | |
attributes |
RC DefaultHandler::drop_db | ( | const char * | dbname | ) |
删除一个数据库,dbName为要删除的数据库对应文件夹的路径名。 接口要求:参数dbName等于CreateDB函数中两个参数的拼接,即dbPath+”\”+dbName
dbname |
RC DefaultHandler::drop_table | ( | const char * | dbname, |
const char * | relation_name | ||
) |
销毁名为relName的表以及在该表上建立的所有索引
relName |
RC DefaultHandler::execute | ( | const char * | sql | ) |
执行一条除SELECT之外的SQL语句,如果执行成功,返回SUCCESS,否则返回错误码。 注意:此函数是提供给测试程序专用的接口
sql |
RC DefaultHandler::open_db | ( | const char * | dbname | ) |
改变系统的当前数据库为dbName对应的文件夹中的数据库。接口要求同dropDB
dbname |