hizhisong / MiniDB

本仓库作为参加2021 OceanBase 数据库大赛时所用仓库存档。 This repository is used for archiving when I participated in 2021 oceanbase database competition.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MiniOB

本仓库主要实现了2021 OceanBase 数据库大赛中赛题需求的必做题项目

名称 描述 测试用例示例
优化buffer pool 必做。实现LRU淘汰算法或其它淘汰算法
drop table 必做。删除表。清除表相关的资源。 create table t(id int, age int);
create table t(id int, name char);
drop table t;
create table t(id int, name char);
实现update功能 必做。update单个字段即可。 update t set age =100 where id=2;
update set age=20 where id>100;
增加date字段 必做。date测试不会超过2038年2月。注意处理非法的date输入。 create table t(id int, birthday date);
insert into t values(1, '2020-09-10');
insert into t values(2, '2021-1-2');
select * from t;
查询元数据校验 必做。查询语句中存在不存在的列名、表名等,需要返回失败。需要检查代码,判断是否需要返回错误的地方都返回错误了。 create table t(id int, age int);
select * from t where name='a';
select address from t where id=1;
select * from t_1000;
多表查询 必做。支持多张表的笛卡尔积关联查询。需要实现select * from t1,t2; select t1.,t2. from t1,t2;以及select t1.id,t2.id from t1,t2;查询可能会带条件。查询结果展示格式参考单表查询。每一列必须带有表信息,比如:
t1.id | t2.id
1 | 1
select * from t1,t2;
select * from t1,t2 where t1.id=t2.id and t1.age > 10;
select * from t1,t2,t3;
聚合运算 需要实现max/min/count/avg.
包含聚合字段时,只会出现聚合字段。聚合函数中的参数不会是表达式,比如age +1
select max(age) from t1; select count(*) from t1; select count(1) from t1; select count(id) from t1;

Build & Run

Based on Ubuntu 20.04.2

sudo apt install libevent-dev
sudo apt install googletest
sudo apt install libjsoncpp-dev
mkdir build
cd build
cmake ..
make -j4

About

本仓库作为参加2021 OceanBase 数据库大赛时所用仓库存档。 This repository is used for archiving when I participated in 2021 oceanbase database competition.

License:Other


Languages

Language:C++ 60.6%Language:C 33.4%Language:Yacc 3.6%Language:CMake 1.7%Language:Lex 0.7%Language:Shell 0.0%