Miniob开发环境安装指南

注:本文基于阿里云双核4G服务器Ubuntu22.04完成

Get Source Code

git clone https://github.com/oceanbase/miniob.git

How To Build?

参考项目源目录下的miniob/docs/how_to_build.md,需要安装GoogleTest,cmake等依赖,可以通过位于项目顶层目录执行命令一键完成:

sudo bash build.sh init

如果执行命令后出现报错如:”error: RPC failed; curl 16 Error in the HTTP2 framing layer”,考虑执行命令:

git config --global http.version HTTP/1.1

依赖安装成功后,开始编译一个DEBUG版本的miniob,位于项目顶层目录,执行命令:

bash build.sh

How To Run?

参考项目源目录下的miniob/docs/how_to_run.md,进入miniob/build/目录,以监听unix socket的方式启动服务端程序,执行命令:

./bin/observer -f ../etc/observer.ini -s miniob.sock

出现”Successfully load ../etc/observer.ini”后,保存原终端,新建终端,到达相同目录下,以监听unix socket的方式启动服务端程序后,启动客户端程序:

./bin/obclient -s miniob.sock
或
./bin/obclient 

出现”miniob >”即表示启动成功,输入”show tables;”(不要忘了冒号)即可测试

How To Debug?

开发环境搭建(本地调试, 适用 Linux 和 Mac) – MiniOB (oceanbase.github.io)

Miniob2023版代码执行逻辑

从main开始

执行g_server->serve();

到达server.cpp

int Server::serve()

执行 int retval = start();

到达server.cpp

int Server::start()

执行return start_stdin_server();

到达server.cpp

int Server::start_stdin_server()

执行session_stage_->handle_event(event);

到达session_stage.cpp:

void SessionStage::handle_event(StageEvent *event)

执行handle_request(event);

到达session_stage.cpp:

void SessionStage::handle_request(StageEvent *event)

(

执行rc = resolve_stage_.handle_request(sql_event);

到达resolve_stage.cpp

RC ResolveStage::handle_request(SQLStageEvent *sql_event)

执行rc = Stmt::create_stmt(db, *sql_node, stmt);

到达stmt.cpp

RC Stmt::create_stmt(Db *db, ParsedSqlNode &sql_node, Stmt *&stmt)

而后回到void SessionStage::handle_request(StageEvent *event)

)

执行(void)handle_sql(&sql_event);

到达session_stage.cpp:

RC SessionStage::handle_sql(SQLStageEvent *sql_event)

执行rc = execute_stage_.handle_request(sql_event);

到达execute_stage.cpp:

RC ExecuteStage::handle_request(SQLStageEvent *sql_event)

执行rc = command_executor.execute(sql_event);

到达command_executor.cpp:

RC CommandExecutor::execute(SQLStageEvent *sql_event)


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注