https://github.com/cappe987/dbms-hs
A small DBMS written in Haskell. Abandoned and incomplete project.
https://github.com/cappe987/dbms-hs
Last synced: 30 days ago
JSON representation
A small DBMS written in Haskell. Abandoned and incomplete project.
- Host: GitHub
- URL: https://github.com/cappe987/dbms-hs
- Owner: cappe987
- License: mit
- Created: 2020-07-29T12:01:48.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-08-13T16:09:06.000Z (almost 5 years ago)
- Last Synced: 2025-03-21T16:57:54.457Z (about 1 year ago)
- Language: Haskell
- Homepage:
- Size: 95.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
# DBMS
**This is an abandoned project, possibly forever.**
A small DBMS written in Haskell as a hobby project.
There are no plans to use this in any other real-world project.
# To-do
## Short term
- [X] Reorganize insert data to match schema
- [X] Implement schema checking and filling in NULL/default values.
- [X] Implement hash table
- [ ] Implement main db file for storing schemas.
- [X] Check if PK exists when inserting row.
- [X] Handle NULL values
- [ ] Maybe use a shared type (schema vs row) for the name/type of columns.
- [ ] Complete type refactoring.
## Long term
- [ ] Add rehashing to hashtables
- [ ] Escape characters
- [ ] Remove the limit of `INT32_MAX` on block amount
- [ ] Handle schemas with size larger than one block
- [ ] Rewrite DBMS.Storage modules to directly manipulate bytestrings. https://wiki.haskell.org/Performance/Strings
- [ ] Handle UTF-8. Use `Data.ByteString.Conversion`. Right now it only handles ASCII strings.
- [ ] Make hashtable schema independent of the schema encoder/decoders.
- [ ] Make EDSL for query language. Use a monad to accumulate the query
requirements and then execute it.
- [ ] Replace Maybe's with Either for displaying error messages.