Skip to content

AnarchistHoneybun/rdms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CYPRIOT

An attempt at creating a relational database management system in Rust.
Couple of things to note:

  • I don't know why I'm naming this cypriot.
  • I am referring to 0 books and/or papers for this, just pure delusion that I can do this.
  • This project has already made me cry thrice five seven times.

The State of Things

Currently, what we have is:

  • A table with relevant structs and enums and so on.
  • Three supported data types: Int, String, Float.
  • Functions to:
    • Create a table
    • Assign columns as primary keys (handled during updates, inserts, etc)
    • Insert data
      • Whole record at once
      • Only particular columns
    • Update data
      • Blanket update on a column
      • Update a specific entry, conditional on multiple columns
    • Project from table
      • Entire table at once
      • Specific columns
    • Filter records (can be used with projection)
    • Describe the table
    • Exporting/Importing tables (currently imports only work for the formatting of the export, actively trying to figure out how to standardize them further)

Note: The tests directory is not included in the repo. Please write them yourself while testing or raise an issue if you want me to add them.

The Road Ahead

I'm thinking of getting the delete functionality up and running next, and then move on to building some sort of query language. No solid roadmap yet so I'm not making a checklist, but we'll burn that bridge when we get to it. (please refer to accompanying Github project if needed)

Tinkering around

Contributions are welcome, but it's too early in this project's lifetime and there's a lot of initial scaffolding left. Even so, if you want to play around with it, fork and make your own version or whatever, I'd love to see your work. Working on this is as much about learning how these things operate as it is about building the final product, so any/all help is welcome.

About

Implementing a database system in Rust (I don't know why)

Topics

Resources

License

Stars

Watchers

Forks

Languages