Releases: chotchki/feophant
v0.9.0 - Indexes and Primary Keys
This release has some major changes under the hood which enabled the headline features!
- FileManager was re-written to FileManager2. This allowed the streaming of the code base while also eliminating the lost write problem.
-
- FileManager2 has the added benefit of integrated caching and locking. All in less code thanks to the Moka library!
- Indexes were integrated into the codebase (these are not crash safe yet!)
- A free space manager was integrated that enables the marking of full/not full pages. More changes will be coming to improve this.
v0.8.0 - Persistent storage
This release is a grab bag of support technologies to enable the underlying goal of enforced unique indexes.
- Switched from IOManager to FileManager which means all storage is persisted now. This is not crash safe. File interactions are designed to scale to a fixed maximum file handle count.
- Decided the primary key for storage is a Uuid, this will be the basic differentiator to route storage requests. At this time I'm not planning on supporting real tablespaces. If I change my mind, I'll have to plumb it in to this infrastructure.
- Have real integration tests using a non-feophant Postgres driver.
- Have the ability to profile the code and already found two places that were unneeded hot spots. "vec![]" is a code smell! You should be able to make a moderate guess on how big it will get.
Implemented but unintegrated code (which means I'll change it like crazy as I integrate):
- A lock manager based on weak refs
- BTree indexes
v0.7.1 - Refactoring of types
This release marks the major enhancement of the internal type system.
- The structs were moved into a better place that aligns with the rest of the code.
- The serialization process now uses a unified buffer instead of concatenating many small buffers.
- I can support complex AND array types.
- There is now a split between table and type which will make transformations easier in queries.
- I have a strong definition of what each layer should be doing.
Known design issues.
- I still have not addressed the lack of well done locking.
- The state of the client is not tracked in regards to in progress transactions.
v0.7.0 - psql support
You can now connect to the running database using psql and run single queries and commands.
v0.6.0 - Support Null
FeOphant now supports the concept of nullable columns.
I'll note this was mainly ensuring the parser could support it, the underlying infrastructure was built with null in mind from the beginning.
v0.5.0 - Simple Selects
FeOphant now supports a simple SQL select of a single table in the engine.
v0.4.0 - SQL Inserts
FeOphant now supports a simple SQL insert of values.
A basic pipeline for query execution has been built based on the Postgres model.
- Query String -> sql_parser -> ParseTree
- ParseTree -> analyzer -> QueryTree
- QueryTree -> rewriter -> QueryTree
- QueryTree -> planner -> PlannedStatement
- PlannedStatement -> executer -> do stuff