-
Notifications
You must be signed in to change notification settings - Fork 2
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
MVP Memo Table (DO NOT MERGE) #49
base: clean-slate
Are you sure you want to change the base?
Conversation
2cbdae0
to
f0e4b45
Compare
This commit adds the boilerplate files and fixes the CI workflows.
4d60811
to
8610184
Compare
This commit adds a first draft of a memo table trait and a persistent memo table implementation backed by SeaORM entities.
b3467f3
to
24df49f
Compare
This commit adds the `src/expression` module which contains a very simple representation of Cascades expressions. The `Memo` trait interface and implemenation has also changed, where it now correctly detects exact match duplicates, and it does not track fingerprints for physical expressions (only logical). TODO: Add more tests. TODO: Figure out how to test in CI.
a74f03c
to
aaba197
Compare
This commit completely refactors the memo table, removing the `Memo` trait and instead placing all methods directly on the `PersistentMemo` structure itself. This also cleans up some code in other places.
4b06b81
to
9d9db84
Compare
1fe79ad
to
c4462fb
Compare
To run tests, use: cargo t -- --test-threads 1 --ignored They are ignored because tests don't work in CI. I need to figure out how to run migrations in CI before those will work. Also, each of the tests assumes they are isolated. I need to convert all of the implementation methods to use transaction instead in order to make this thread safe, which won't be hard but will be a bit tedious. |
You can create a sqlite in memory database and run the migrate function on it for every test case? |
Yes itll be easy I just haven't had time to do it yet and it's not that important |
c09012e
to
09b868f
Compare
This commit replaces the specific expression types with traits that define the behavior the in-memory represenations of both logical and physical expressions need to have. Right now, the `PhysicalExpression` trait does not do that much, but the `LogicalExpression` trait is super important to how the persistent memo table works.
This commit adds the rank by size optimization into the embedded union-find data structure of the group sets. It also bumps the version number of `sea-orm-cli` to `1.1.2`.
Very incompleteLess incomplete
TODO:
Result<Result<_, _>>
which can be unclear, but I have no idea how to make this better.GroupId
and aRootGroupId
, whereimpl From<RootGroupId> for GroupId
is implemented but not the other way around...group
table records, but if we separate it out into a separate table we will have a level of abstraction that allows us to change the implementation when we need to.tracing
andlog
support