Skip to content
This repository has been archived by the owner on Apr 15, 2023. It is now read-only.

Releases: chotchki/feophant

v0.9.0 - Indexes and Primary Keys

10 Oct 22:27
Compare
Choose a tag to compare
Pre-release

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

15 Aug 16:13
Compare
Choose a tag to compare
Pre-release

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

01 Aug 14:56
Compare
Choose a tag to compare
Pre-release

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

19 Jul 02:31
Compare
Choose a tag to compare
v0.7.0 - psql support Pre-release
Pre-release

You can now connect to the running database using psql and run single queries and commands.

v0.6.0 - Support Null

14 Jul 04:34
Compare
Choose a tag to compare
v0.6.0 - Support Null Pre-release
Pre-release

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

14 Jul 00:06
Compare
Choose a tag to compare
Pre-release

FeOphant now supports a simple SQL select of a single table in the engine.

v0.4.0 - SQL Inserts

10 Jul 19:45
Compare
Choose a tag to compare
v0.4.0 - SQL Inserts Pre-release
Pre-release

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