Data Types¶
DecentDb supports the following SQL data types.
Supported Types¶
INTEGER / INT / INT64¶
64-bit signed integer.
Range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
TEXT¶
Variable-length UTF-8 string.
Stored with overflow pages for large values (> 512 bytes inline).
VARCHAR / CHARACTER VARYING¶
Variable-length UTF-8 string (alias for TEXT).
DecentDB treats VARCHAR and CHARACTER VARYING as equivalent to TEXT, ignoring any specified length constraints.
CREATE TABLE example (
name VARCHAR(255), -- Same as TEXT
description VARCHAR, -- Same as TEXT
title CHARACTER VARYING(100) -- Same as TEXT
);
BLOB¶
Binary large object.
Stored with overflow pages for large values.
BOOLEAN / BOOL¶
True/false value.
FLOAT / FLOAT64 / REAL¶
64-bit IEEE 754 floating point number.
NULL¶
Represents missing or unknown values.
All columns can contain NULL unless marked NOT NULL.
Type Aliases¶
| Alias | Maps To |
|---|---|
| INTEGER | INT64 |
| INT | INT64 |
| TEXT | TEXT |
| VARCHAR | TEXT |
| CHARACTER VARYING | TEXT |
| BLOB | BLOB |
| BOOLEAN | BOOL |
| BOOL | BOOL |
| FLOAT | FLOAT64 |
| REAL | FLOAT64 |
| DOUBLE | FLOAT64 |
Type Conversion¶
Implicit conversions happen automatically when safe: - INT → FLOAT (for comparisons) - Any type can become NULL
Explicit conversion requires CAST (not yet implemented).
Storage Details¶
| Type | Inline Size | Overflow |
|---|---|---|
| INT64 | 8 bytes | Never |
| BOOL | 1 byte | Never |
| FLOAT64 | 8 bytes | Never |
| TEXT | Variable, up to 512 bytes | > 512 bytes |
| BLOB | Variable, up to 512 bytes | > 512 bytes |
| NULL | 0 bytes | Never |
Best Practices¶
- Use INT for primary keys and counters
- Use TEXT for names, descriptions, JSON
- Use BLOB for binary data, images
- Use BOOL for flags and states
- Use FLOAT for measurements and prices
- Avoid storing large BLOBs if possible (consider file storage with path in DB)