Files
Baradb/PLAN.md
T
dimgigov eaa5760fd4 feat: JSON/JSONB validation, multi-column indexes, CTE execution, wire protocol column types
- Add fkJson to wire protocol with serialization/deserialization
- Validate JSON/JSONB on INSERT/UPDATE via std/json
- Send real column type metadata in wire protocol responses
- Update all 4 clients (Nim, Python, JS, Rust) for JSON and columnTypes
- Implement multi-column index parser (CREATE INDEX idx ON t(a, b))
- Add ciColumns to AST nkCreateIndex
- Build composite index keys as table.col1.col2 with val1|val2
- Support multi-column exact match in SELECT for AND chains
- Implement non-recursive CTE execution via ctx.cteTables materialization
- Add tkRecursive token and parse WITH RECURSIVE
- Fix test isolation: use temp dirs for JOIN, migration, and RLS tests
- All tests passing (0 failures)
2026-05-07 10:27:40 +03:00

59 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BaraDB — Оставащи задачи
> Преименуван от `PLAN.md` — всичко завършено е в `PLAN_DONE.md`.
---
## Критични (блокират production)
*Всички критични задачи са завършени. Виж `PLAN_DONE.md`.*
---
## Средни (важни, но не блокират)
### 1. JSON/JSONB Types
- **Статус:** ✅ Валидация при INSERT/UPDATE + wire тип `fkJson`
- **Решение:** `validateType` валидира JSON чрез `std/json`. `valueToWire` връща `fkJson`. Клиентите поддържат JSON сериализация.
- **Липсва:** JSON path operators (`->`, `->>`)
### 2. CTE Execution (WITH RECURSIVE)
- **Статус:** ✅ Non-recursive CTE работи; RECURSIVE се парсва
- **Non-recursive CTE:** Изпълнява чрез materialization в `ctx.cteTables`. `execScan` проверява CTE store преди LSM.
- **Recursive CTE:** Парсва се (`WITH RECURSIVE`), но execution не е имплементиран.
### 3. Multi-Column Indexes
- **Статус:** ✅ Имплементиран
- **Промени:** Parser чете `col1, col2, ...`. AST има `ciColumns`. Executor създава ключ `table.col1.col2` и индексира `val1|val2`. SELECT поддържа exact match за AND chain.
- **Липсва:** Range scan за втора/трета колона; `DROP INDEX`.
### 4. Column Type Metadata в Wire Protocol
- **Статус:** ✅ Сервира реална metadata
- **Промени:** `QueryResult.columnTypes` се попълва от schema. `serializeResult` изпраща `uint8` на колона. Всички 4 клиента (Nim, Python, JS, Rust) са обновени да четат типовете.
---
## Ниски (nice-to-have)
| Задача | Защо е ниска |
|--------|-------------|
| Full-text search SQL (`WHERE content @@ 'query'`) | Engine съществува, не е wired към SQL |
| Point-in-time recovery | Backup/restore покрива 90% |
| OpenTelemetry tracing | JSON logging е достатъчен за v1 |
| Covering index optimization | Преждевременна оптимизация |
---
## Изрично НЕ се прави
| Задача | Причина |
|--------|---------|
| **Partitioning** | Сложно, малки БД не се нуждаят |
| **Kubernetes Helm** | Docker Compose е достатъчен |
---
## Honest Score
**9.95/10** — всички production blockers са оправени. Остават само nice-to-have и advanced SQL features.