Skip to content
This repository was archived by the owner on Dec 18, 2025. It is now read-only.

Commit 5cd951f

Browse files
committed
Merge remote-tracking branch 'origin/main'
# Conflicts: # .gitignore # .gitmodules # CMakeLists.txt # build.sh # docs/docs/game/miniob-vectordb.md # src/common/log/log.h # src/common/sys/rc.h # src/observer/common/init.cpp # src/observer/common/value.cpp # src/observer/common/value.h # src/observer/net/cli_communicator.cpp # src/observer/net/sql_task_handler.h # src/observer/sql/executor/create_table_executor.cpp # src/observer/sql/executor/load_data_executor.cpp # src/observer/sql/executor/load_data_executor.h # src/observer/sql/executor/set_variable_executor.cpp # src/observer/sql/expr/aggregate_hash_table.h # src/observer/sql/expr/aggregator.h # src/observer/sql/expr/arithmetic_operator.hpp # src/observer/sql/expr/expression.cpp # src/observer/sql/expr/expression.h # src/observer/sql/expr/expression_iterator.h # src/observer/sql/expr/expression_tuple.h # src/observer/sql/expr/tuple.h # src/observer/sql/expr/tuple_cell.h # src/observer/sql/operator/aggregate_vec_physical_operator.cpp # src/observer/sql/operator/calc_physical_operator.h # src/observer/sql/operator/delete_logical_operator.h # src/observer/sql/operator/delete_physical_operator.h # src/observer/sql/operator/explain_physical_operator.cpp # src/observer/sql/operator/group_by_vec_physical_operator.h # src/observer/sql/operator/insert_logical_operator.cpp # src/observer/sql/operator/insert_logical_operator.h # src/observer/sql/operator/insert_physical_operator.h # src/observer/sql/operator/logical_operator.cpp # src/observer/sql/operator/physical_operator.cpp # src/observer/sql/operator/physical_operator.h # src/observer/sql/operator/string_list_physical_operator.h # src/observer/sql/operator/table_get_logical_operator.cpp # src/observer/sql/operator/table_get_logical_operator.h # src/observer/sql/optimizer/conjunction_simplification_rule.cpp # src/observer/sql/optimizer/logical_plan_generator.cpp # src/observer/sql/optimizer/logical_plan_generator.h # src/observer/sql/optimizer/optimize_stage.cpp # src/observer/sql/optimizer/physical_plan_generator.cpp # src/observer/sql/optimizer/physical_plan_generator.h # src/observer/sql/optimizer/predicate_pushdown_rewriter.cpp # src/observer/sql/parser/expression_binder.cpp # src/observer/sql/parser/expression_binder.h # src/observer/sql/parser/gen_parser.sh # src/observer/sql/parser/lex_sql.cpp # src/observer/sql/parser/lex_sql.h # src/observer/sql/parser/lex_sql.l # src/observer/sql/parser/parse_defs.h # src/observer/sql/parser/yacc_sql.cpp # src/observer/sql/parser/yacc_sql.hpp # src/observer/sql/parser/yacc_sql.y # src/observer/sql/stmt/create_index_stmt.h # src/observer/sql/stmt/create_table_stmt.cpp # src/observer/sql/stmt/create_table_stmt.h # src/observer/sql/stmt/delete_stmt.cpp # src/observer/sql/stmt/filter_stmt.cpp # src/observer/sql/stmt/filter_stmt.h # src/observer/sql/stmt/load_data_stmt.h # src/observer/sql/stmt/select_stmt.h # src/observer/sql/stmt/stmt.cpp # src/observer/sql/stmt/stmt.h # src/observer/storage/buffer/frame.cpp # src/observer/storage/buffer/page.h # src/observer/storage/clog/log_file.cpp # src/observer/storage/common/meta_util.h # src/observer/storage/db/db.cpp # src/observer/storage/db/db.h # src/observer/storage/field/field_meta.cpp # src/observer/storage/index/bplus_tree.cpp # src/observer/storage/record/record.h # src/observer/storage/record/record_manager.cpp # src/observer/storage/record/record_manager.h # src/observer/storage/table/table.cpp # src/observer/storage/table/table.h # src/observer/storage/table/table_meta.cpp # src/observer/storage/table/table_meta.h # src/observer/storage/trx/mvcc_trx.cpp # src/observer/storage/trx/mvcc_trx.h # src/observer/storage/trx/trx.h # src/observer/storage/trx/vacuous_trx.h # test/case/miniob_test.py # test/case/result/primary-aggregation-func.result # test/case/result/primary-complex-sub-query.result # test/case/result/primary-drop-table.result # test/case/result/primary-group-by.result # test/case/result/primary-insert.result # test/case/result/primary-null.result # test/case/result/primary-simple-sub-query.result # test/case/result/primary-text.result # test/case/result/primary-unique.result # test/case/result/primary-update.result # test/case/test/primary-insert.test # test/case/test/primary-null.test # test/perf/client_performance_test.cpp # unittest/observer/mvcc_trx_log_test.cpp
2 parents 6389d2a + 1fca6be commit 5cd951f

254 files changed

Lines changed: 18626 additions & 4686 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.vscode/launch.json

Lines changed: 0 additions & 29 deletions
This file was deleted.

.vscode/tasks.json

Lines changed: 0 additions & 32 deletions
This file was deleted.

README.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,70 @@
1+
# 开源声明
2+
3+
## 版权与授权
4+
1. **双源许可声明**
5+
本仓库包含两部分代码:
6+
- OceanBase 团队开发的 MiniOB 基础框架(遵循 [木兰宽松许可证第2版](https://license.coscl.org.cn/MulanPSL2)
7+
- RushDB 团队竞赛开发代码(© 2024 RushDB 实验室,额外适用以下竞赛特别条款)
8+
9+
2. **竞赛使用限制**
10+
依据 OceanBase 大赛官方规则:
11+
> "参赛作品必须为团队原创,参考开源代码需显著声明并保持技术可追溯性"
12+
- 禁止直接提交本仓库代码或关键模块(如存储引擎/优化器实现)作为参赛作品
13+
- 允许参考架构设计文档(需注明出处)
14+
- 允许复用基础工具类代码(需修改代码指纹)
15+
16+
## 防抄袭措施
17+
1. **技术标识**
18+
- 关键算法植入版本水印
19+
- 数据库元数据包含构建机器指纹
20+
- 性能测试模块内嵌隐蔽校验逻辑
21+
22+
2. **追责机制**
23+
大赛技术委员会已备案本仓库:
24+
- 代码相似度检测阈值 ≥30% 将触发人工复核
25+
- 可通过 `strings` 命令提取的开发者签名验证代码来源
26+
27+
## 免责声明
28+
1. **责任边界**
29+
本仓库维护者不承担:
30+
- 因违规参赛导致的学术处分
31+
- 基于旧版本代码的兼容性问题
32+
- 企业级环境下的数据安全风险
33+
34+
2. **赞助商声明**
35+
[RushDB 实验室](https://github.com/RushDB-Lab) 仅提供品牌支持:
36+
- 未参与具体代码开发
37+
- 不担保系统稳定性
38+
- 商业场景使用需另行授权
39+
40+
## 合理使用指引
41+
✅ 允许行为:
42+
- Fork 仓库进行学习研究
43+
- 引用设计文档(需显式标注)
44+
- 二次开发非竞赛用途系统
45+
46+
❌ 禁止行为:
47+
- 删除代码版权注释
48+
- 伪装原创提交竞赛
49+
- 商业用途未授权分发
50+
51+
---
52+
53+
# 作品简介
54+
队伍学校:**成都理工大学 & 沈阳工业大学**
55+
56+
队伍名称:**RushDB**
57+
58+
队伍成员:**明泰****胡鑫****吴奕民**
59+
60+
金牌🥇赞助:[**RushDB 实验室**](https://github.com/RushDB-Lab)
61+
62+
初赛完成度(**100%**
63+
64+
![初赛](https://pic1.imgdb.cn/item/67c1b360d0e0a243d4083540.png)
65+
66+
[![Visitors](https://api.visitorbadge.io/api/visitors?path=https://github.com/RushDB-Lab/miniob&label=visitors&countColor=%23263759)](https://visitorbadge.io/status?path=https://github.com/RushDB-Lab/miniob)
67+
168
# MiniOB 介绍
269

370
<div align="left">

deps/3rd/benchmark

Submodule benchmark updated 116 files

deps/3rd/googletest

Submodule googletest updated 123 files

deps/3rd/libevent

Submodule libevent updated 198 files

deps/3rd/miniob

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 6f7d74063db39b5bab5a6f9378f83536a5009e98

src/common/lang/defer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ class DeferHelper
4040

4141
#define SCOPE_UNIQUE_NAME(B) _SCOPE_UNIQUE_NAME(B, __LINE__)
4242

43-
#define DEFER(...) common::DeferHelper SCOPE_UNIQUE_NAME(defer_helper_)([&]() { __VA_ARGS__; })
43+
#define DEFER(...) common::DeferHelper SCOPE_UNIQUE_NAME(defer_helper_)([&]() { __VA_ARGS__; })

src/common/log/log.h

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ typedef enum
5858
class Log
5959
{
6060
public:
61-
Log(const string &log_name, const LOG_LEVEL log_level = LOG_LEVEL_INFO,
62-
const LOG_LEVEL console_level = LOG_LEVEL_WARN);
61+
Log(const string &log_name, const LOG_LEVEL log_level = LOG_LEVEL_INFO,
62+
const LOG_LEVEL console_level = LOG_LEVEL_WARN);
6363
~Log(void);
6464

6565
static int init(const string &log_file);
@@ -162,7 +162,7 @@ class Log
162162
class LoggerFactory
163163
{
164164
public:
165-
LoggerFactory();
165+
LoggerFactory();
166166
virtual ~LoggerFactory();
167167

168168
static int init(const string &log_file, Log **logger, LOG_LEVEL log_level = LOG_LEVEL_INFO,
@@ -228,7 +228,12 @@ extern Log *g_log;
228228
#define LOG_DEFAULT(fmt, ...) LOG_OUTPUT(common::g_log->get_log_level(), fmt, ##__VA_ARGS__)
229229
#define LOG_PANIC(fmt, ...) LOG_OUTPUT(common::LOG_LEVEL_PANIC, fmt, ##__VA_ARGS__)
230230
#define LOG_ERROR(fmt, ...) LOG_OUTPUT(common::LOG_LEVEL_ERR, fmt, ##__VA_ARGS__)
231-
#define LOG_WARN(fmt, ...) LOG_OUTPUT(common::LOG_LEVEL_WARN, fmt, ##__VA_ARGS__)
231+
#define LOG_WARN(fmt, ...) \
232+
do { \
233+
assert((fmt != nullptr) && "LOG_WARN: format string must not be null"); \
234+
LOG_OUTPUT(common::LOG_LEVEL_WARN, fmt, ##__VA_ARGS__); \
235+
} while (0)
236+
232237
#define LOG_INFO(fmt, ...) LOG_OUTPUT(common::LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
233238
#define LOG_DEBUG(fmt, ...) LOG_OUTPUT(common::LOG_LEVEL_DEBUG, fmt, ##__VA_ARGS__)
234239
#define LOG_TRACE(fmt, ...) LOG_OUTPUT(common::LOG_LEVEL_TRACE, fmt, ##__VA_ARGS__)
@@ -315,13 +320,12 @@ int Log::out(const LOG_LEVEL console_level, const LOG_LEVEL log_level, T &msg)
315320

316321
#ifndef ASSERT
317322
#ifdef DEBUG
318-
#define ASSERT(expression, description, ...) \
319-
do { \
320-
if (!(expression)) { \
321-
LOG_PANIC(description, ##__VA_ARGS__); \
322-
LOG_PANIC("%s", lbt()); \
323-
assert(expression); \
324-
} \
323+
#define ASSERT(expression, description, ...) \
324+
do { \
325+
if (!(expression)) { \
326+
LOG_PANIC(description, ## __VA_ARGS__); \
327+
assert(expression); \
328+
} \
325329
} while (0)
326330

327331
#else // DEBUG
@@ -335,7 +339,7 @@ int Log::out(const LOG_LEVEL console_level, const LOG_LEVEL log_level, T &msg)
335339

336340
#ifndef TRACE
337341
#ifdef DEBUG
338-
#define TRACE(format, ...) LOG_TRACE(format, ##__VA_ARGS__)
342+
#define TRACE(format, ...) LOG_TRACE(format, ## __VA_ARGS__)
339343
#else // DEBUG
340344
#define TRACE(...)
341345
#endif // DEBUG

0 commit comments

Comments
 (0)