Continuation
This commit is contained in:
parent
e72ce51fdd
commit
8956442679
34
README.md
34
README.md
@ -14,10 +14,36 @@ Maybe having a file per table instead of per database is easier to set up, but i
|
||||
|
||||
### Format
|
||||
|
||||
| Offset | Description |
|
||||
|---------|-------------|
|
||||
| 0 | Something |
|
||||
| todo!() | todo!() |
|
||||
#### Header
|
||||
|
||||
| Offset | Length | Description | Example |
|
||||
|---------|---------|-----------------------------------|----------------------------------------------------|
|
||||
| 0 | 16 | Engine Version | MyDB-0.0.1 |
|
||||
| 16 | 14 | Db Version | YYYYMMDDhhmmss |
|
||||
| 30 | 64 | Table of Tables offset | Default: 512 |
|
||||
| 94 | 64 | Table of Users offset | |
|
||||
| 158 | 64 | Table of user to table | |
|
||||
| 222 | 1 | Page Size as power of 2 | Default: 14 == 16,384 bytes<br>max 2<sup>255</sup> |
|
||||
| 223 | 289 | Nothing | |
|
||||
| 512 | 16284 | Default offset of table of tables | |
|
||||
|
||||
The table of tables contains the names and offsets in the file of all tables, or rather the first page of all tables.
|
||||
Each table name can have a length of 32 bytes, the offset is a 64 byte integer and there is a 32 byte id so each row in this table is 128 bytes long.
|
||||
|
||||
The table of users contain the username and encrypted password of a user. Each username and password can have a max length of 32 and 60 bytes and there is a 32 byte id so 124 bytes per row.
|
||||
|
||||
The user to table table contains the read and write access of each user for each table. It uses the table of tables id, the table of users id and a byte for read access and a byte for write access. So 66 bytes per row.
|
||||
|
||||
Each table takes up at least one default page worth of space. Default page means that page sizes can vary depending on the table. A table with columns using up a ton of space might need more space per row than the default page size, there it wouldn't make much sense (I think) to have a static page size
|
||||
|
||||
#### Page
|
||||
|
||||
| Offset | Length | Description | Example |
|
||||
| (from page offset) | | | |
|
||||
|--------------------|--------|---------------------------------------|----------------------------------------------------|
|
||||
| 0 | 64 | Number of pages | Default: 1 |
|
||||
| 64 | 1024 | max 32 columns * 32 bytes per name | |
|
||||
| 1088 | 64 | 1 byte per column to set as indexed | |
|
||||
|
||||
## SQL Interpreter
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user