Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: ImmutableSchema storage engine #18

Merged
merged 257 commits into from
Dec 22, 2020
Merged

Conversation

laysakura
Copy link
Contributor

@laysakura laysakura commented Jul 17, 2020

機能が限定的ではあるが、QueryProcessorから叩ける程度のストレージエンジンを作った。

ImmutableSchema のコンセプトに則り、VersionやらRevisionやらを積み重ねていくエンジン。


TODO, FIXMEコメントも残っているし、ストレージエンジン自体のドキュメントも整備したいが、QueryProcessorの実装に取り掛かるためにこの段階でmasterにマージする。

laysakura and others added 12 commits October 9, 2020 15:24
* trait *Iter -> trait *Iterator

* wip

* bump up rustc version

* 不要な制約をとった

* AbstractTypes -> ImmutableSchemaAbstractTypes

* interface層の AbstractTypes は全て StorageEngine に持たせた

* apllodb-storage-engine-interface passes tests

* wip

* wip

* wip

* TransactionController 消して、全部 SqliteTx に乗せた

* ImmutableSchemaTransaction も別にいらん

* テストも含めてコンパイル通った 👏

* \dao

* \'repo

* 'stmt
* NonPKColumn* , PKColumn* の型は too much だったのでなくした

* Rowは必ずしもPKを含まない

* ImmutableRow が NonPK, PK 分けなくなった
…のとした (#28)

* Version-Revision Resolver の型

* compiles

* compiles

* compiles

* chainはIteratorの関数と被るので名称変更

* VRREntries

* probe_vrr_entries の中身を実装

* 不要コード削除

* VersionRepositoryImpl::insert() を VRR 使って書き直した

* VTableRepositoryImpl から NaviDao への依存をなくした

* VRR を sqlite_tx 配下に

* wip: Navi を VRR 配下に

* VRREntriesInVersion

* from_sqlite_row -> from_sqlite_row_with_apk

* wip: #26 をまずやる

* wip

* type 定義した

* wip: 余計なコンパイルエラーは減らしたが、無用なJOINをしている箇所をやっつける必要がある

* コンパイルエラーは一旦なくした

* to_sql_string の適用範囲を拡げた

* 警告除去

* wip: やりたい処理を書いた。コンパイルは通らない

* コンパイルも通る

* 不要削除

* wip: compiles

* NaviCollection不要になった

* bugfix: push

* get_core -> get_sql_value

* get_sql_value returns owned

* from_table_and_immutable_row 書いた

* bugfix: VRREntriesは、空テーブルをscanするときに0要素になり得る

* Err握りつぶしていたのをなくした

* bugfix: naviからPK取り忘れてた

* PK only のrowを作る箇所、未実装だったので作った

* add order should not matter

* bugfix: テストするものが間違っていた

* fmt

* (auto commit) cargo readme > README.md

* NaviDao のvisibilityを絞った

* (auto commit) cargo readme > README.md

* 嘘コメント消した

* visibility絞り

* VRRのコード、自明なコメントは消したのと、変なところを直した

* PKがどうしても含まれちゃうことを明示した

Co-authored-by: workflow user <workflow@example.com>
* i32::MAX とか使うためにMSRVを 1.43 にした

* (auto commit) cargo readme > README.md

* clippy

* deadlinkのやつは一旦off

* 手元のclippyでは出ないけどCIのclippyで出る警告を修正

* 更に出たclippy

* clippyの誤った警告を無視

* app層

Co-authored-by: workflow user <workflow@example.com>
* fixes #30

* SqliteMaster を VTable だけの知識に収められた
* bugfix: SqlValue -> Expression::Constant の変換、NULLのときにバグってたのを修正。テストも追加

* (auto commit) cargo readme > README.md

* rerun CI

* clippy

Co-authored-by: workflow user <workflow@example.com>
* bugfix: SELECTにCDTを印字していた

* bugfix: void_projection の条件が逆だった

* bugfix: needs to include _navi_rowid in projection

* test_insert() works

* bugfix: void_projection を NULL として取る処理を忘れてた

* bugfix: write back removed value into row if Err

* wip

* projection 系のデータ構造を作った

* wip: Projection* を使い始めた。updateは未実装

* wip

* pretty-print

* easier to see SQL log

* updateのうち、insertしようとしているコードはうまく動いている。DELETEしてないからPK重複でエラー

* 流石に紛らわしいので NaviTableName 型をつくった

* test_update 通った 👏

* fmt

* 未使用関数削除
@laysakura laysakura changed the title WIP: Immutable schema engine ImmutableSchemaストレージエンジン Dec 22, 2020
@laysakura laysakura merged commit 0b9987e into master Dec 22, 2020
@laysakura laysakura deleted the immutable-schema-engine branch December 22, 2020 07:32
@laysakura laysakura changed the title ImmutableSchemaストレージエンジン feat: ImmutableSchema storage engine May 16, 2021
laysakura added a commit that referenced this pull request May 16, 2021
Co-authored-by: workflow user <workflow@example.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant