1. 24 8月, 2023 1 次提交
    • 羽飞's avatar
      add static_stdlib option as there is no static gcc library on rockylinux (#248) · 2fedf8b4
      羽飞 提交于
      ### What problem were solved in this pull request?
      
      Issue Number: close #247 
      
      Problem:
      Compile miniob with static gcc and g++ failed while there is no static
      gcc library on rockylinux.
      
      ### What is changed and how it works?
      Add cmake option static_stdlib with default value off.
      In normal case, we compile miniob and run/debug it on the same machine,
      so dynamic linking works fun. If we want to move observer binary to
      other machine and test, we can recompile miniob with static_stdlib ON.
      2fedf8b4
  2. 16 8月, 2023 1 次提交
    • 羽飞's avatar
      Expression 四则运算 (#233) · 3cd3c2f9
      羽飞 提交于
      ### What problem were solved in this pull request?
      
      Problem: close #229 
      当前的词法分析语法分析非常简单,那当遇到比较复杂的词法分析语法分析题目,比如表达式,有些同学就难以入手
      
      ### What is changed and how it works?
      增加一个支持四则运算的功能,关键字是calc,虽然与标准的SQL不同,但是可以作为学习表达式入门使用。
      使用示例:
      ```
      (base) build_debug $ ./bin/observer -f ../etc/observer.ini -P cli
      Successfully load ../etc/observer.ini
      miniob > calc 2*(2*(2+3));
      2*(2*(2+3))
      20
      
      miniob > calc (1+2) * (2 * (20+ -(5*1)))
      (1+2) * (2 * (20+ -(5*1)))
      90
      
      miniob > calc 1, 2, 3;
      1 | 2 | 3
      1 | 2 | 3
      
      miniob > calc 1 + 2 - 3+4;
      1 + 2 - 3+4
      4
      
      miniob > calc 2* 4;
      2* 4
      8
      
      miniob > calc 1, 2, 3;
      1 | 2 | 3
      1 | 2 | 3
      
      miniob > calc 1 + 2 - 3+4;
      1 + 2 - 3+4
      4
      
      miniob > calc 2* 4;
      2* 4
      8
      ```
      3cd3c2f9
  3. 09 8月, 2023 1 次提交
    • 羽飞's avatar
      Static gcc (#228) · f7b7c932
      羽飞 提交于
      ### What problem were solved in this pull request?
      
      Issue Number: close #222 
      
      Problem:
      gcc使用动态链接库,在复制observer到其它机器后,无法启动。
      
      ### What is changed and how it works?
      使用gcc静态链接库
      f7b7c932
  4. 17 7月, 2023 1 次提交
    • 羽飞's avatar
      Remove stages (#208) · 564e9432
      羽飞 提交于
      ### What problem were solved in this pull request?
      ref #138 
      
      Problem:
      
      SEDA的线程池模式是每个处理环节分开,可能会放到不同的线程上,也可以调整不同stage对应的处理线程个数。但是会增加复杂性,比如session会切换线程、代码逻辑复杂。
      
      ### What is changed and how it works?
      去掉了parse、resolve等stage,仅保留了session stage。代码中的名字依然叫stage,后续再调整。
      在session
      stage的处理逻辑中,直接调用其它流程处理,这样也使SQL处理流程变得更清晰。后续还可以考虑移除observer.ini,所有参数均通过命令行传递。
      
      ### Other information
      564e9432
  5. 26 6月, 2023 1 次提交
    • 羽飞's avatar
      observer可以直接在控制台输入命令 (#199) · 380fea38
      羽飞 提交于
      ### What problem were solved in this pull request?
      
      Issue Number: close #162 
      
      Problem:
      当前的observer启动流程和调试方法比较繁琐,必须使用客户端服务端的方式,先启动服务端程序,再使用客户端启动调试
      
      ### What is changed and how it works?
      observer可以直接启动,不监听tcp或unix socket,直接通过终端/控制台输入命令并执行,极大的方便了调试
      
      ### Other information
      新的启动方法:
      ./bin/observer -P cli -f ../etc/observer.ini
      380fea38
  6. 13 6月, 2023 1 次提交
    • 羽飞's avatar
      合并之前的持久化代码到mvcc (#194) · aea25b25
      羽飞 提交于
      ### What problem were solved in this pull request?
      
      close issue: #186 
      
      Problem:
      实现MVCC代码后没有将持久化代码合并进来
      
      ### What is changed and how it works?
      支持并发模式下落日志,并在异常停机后回复。
      
      持久化是事务模块中最复杂的功能(没有之一),当前miniob实现的持久化简化了非常多,因此不能依赖持久化能力,仅仅作为一个学习测试的工具,在实际测试时也有一些限制。
      
      ### Other information
      aea25b25
  7. 24 5月, 2023 1 次提交
    • 羽飞's avatar
      编译选项增加 Werror (#182) · c3bd02e3
      羽飞 提交于
      ### What problem were solved in this pull request?
      
      Issue Number: close #91 close #1 
      
      Problem:
      编译时编译器抛出的一些告警信息可以帮我们避免很多问题,但是现在并没有利用这个特性
      
      ### What is changed and how it works?
      CMake中增加-Werror编译选项
      
      ### Other information
      c3bd02e3
  8. 15 5月, 2023 1 次提交
    • 羽飞's avatar
      fix unittest (#9) (#177) · 5017ced9
      羽飞 提交于
      fix unittest;
      add unittest to github action
      
      ### What problem were solved in this pull request?
      
      Issue Number: close #176 close #163 
      
      Problem:
      单元测试执行失败;
      github action 没有单元测试检查
      5017ced9
  9. 09 5月, 2023 1 次提交
    • 羽飞's avatar
      mvcc trx (#156) · 871c9b32
      羽飞 提交于
      ### What problem were solved in this pull request?
      
      Issue Number: close #155 close #135 
      
      Problem:
      实现了简单的事务处理。
      当前支持并发事务数据.
      
      ### What is changed and how it works?
      - 支持两种事务模式:Vacuous和MVCC。
        Vacuous 事务模式算是没有事务,它的事务接口什么都不做。
      MVCC 是多版本并发控制(Multi-Version Concurrency
      Control),使用多个版本保留记录数据。启动miniob时增加运行时选项 -t mvcc可以选择mvcc。
      
      - MVCC:简单模式的多版本并发控制。
        当前miniob仅包含insert和delete操作,因此数据最多包含两个版本,并且不需要在record中保留版本链表信息;
        不支持持久化;
        没有做垃圾回收;
        遗留一个BUG:在提交时没有保证提交的数据一次性对外可见;
        使用简单的写写冲突策略:检测到要修改的数据当前有人在修改,就回退
      
      - 编译MINIOB时使用 -DCONCURRENCY=ON 才会支持并发
      支持各个模块并发处理,包括buffer pool、bplus、record
      manager。如果编译时没有使用CONCURRENCY选项,则保持原样,不支持并发,保持系统的简单性。
      
      - 编译时增加 -DDEBUG=ON 还会增加并发调试日志与严格的运行时检测(ASSERT语句)
      - 当前版本代码中包含了bplus tree和record manager的并发测试,参考benchmark目录下的代码。
      
      ### Other information
      871c9b32
  10. 29 3月, 2023 1 次提交
    • 羽飞's avatar
      thread-safe buffer pool and btree supported (#145) · 31fa2558
      羽飞 提交于
      Fix problem:
      1. the buffer pool and b tree is not thread safe;
      2. github/workflow/build does not work
      
      ### What is changed and how it works?
      1. thread-safe buffer pool
      - I use a mutex in buffer pool and take a lock in buffer pool operations
      such as allocate frame, dispose frame;
      - The frame is locked while updating/reading the content of frame;
      - Frame manager take a lock when allocate/free pages.
      
      2. thread-safe b+tree
      - Crabing protocol is used to support concurrent
      
      3. github/workflow/build
      - update the submodules;
      - create a build script and run build.sh in build.yaml
      31fa2558
  11. 06 3月, 2023 1 次提交
  12. 05 12月, 2022 1 次提交
    • 羽飞's avatar
      mysql communicator (#124) · e279dc7a
      羽飞 提交于
      tested by mariadb ( Ver 15.1 Distrib 5.5.65-MariaDB, for Linux (x86_64) using readline 5.1)
      but failed with obclient
      e279dc7a
  13. 23 9月, 2022 1 次提交
  14. 23 5月, 2022 1 次提交
  15. 18 2月, 2022 1 次提交
  16. 15 10月, 2021 1 次提交