b25fea4d21
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
72 lines
3.8 KiB
Markdown
72 lines
3.8 KiB
Markdown
# Оставащи бъгове — nim-allographer (BaraDB клиент) + BaraDB сървър
|
||
|
||
> Дата: 2026-05-21
|
||
> Поправени в тази сесия: компилационни грешки, `toJson()`, агрегати, `whereIn`/`whereBetween` placeholder-и, `paginate`, transaction cleanup, `insertSql` state.
|
||
> **Допълнително поправени:** reserved words parser, cloneForConnection nil fields, SQL injection (prepared statements), `getRowPlain()` semantics, BaraDB-native `SHOW TABLES` + schema builder
|
||
|
||
---
|
||
|
||
## 🔴 Критични — блокират функционалност
|
||
|
||
### ✅ 1. [СЪРВЪР] SIGSEGV при INSERT в транзакция — ПОПРАВЕНО
|
||
|
||
**Статус:** Поправено. `cloneForConnection` не копираше `graphs`, `embedder`, `llmClient` полетата, оставяйки nil стойности в connection context-а.
|
||
|
||
**Файл:** `src/barabadb/query/executor.nim` — `cloneForConnection()`
|
||
|
||
---
|
||
|
||
### ✅ 2. [СЪРВЪР] Parser error за резервирани думи като колони — ПОПРАВЕНО
|
||
|
||
**Статус:** Поправено. Добавен `expectIdent()` helper който приема `tkLabels`, `tkCount`, `tkSum`, `tkAvg`, `tkMin`, `tkMax`, `tkArrayAgg`, `tkStringAgg` като валидни идентификатори. Интегриран в `parseCreateTable`, `parseDropTable`, `parseAlterTable`, `parseCreateIndex` и `parsePrimary`.
|
||
|
||
**Файл:** `src/barabadb/query/parser.nim`
|
||
|
||
---
|
||
|
||
## 🟡 Важни — качество и сигурност
|
||
|
||
### ✅ 3. [КЛИЕНТ] SQL injection риск в `formatSql()` — ПОПРАВЕНО
|
||
|
||
**Статус:** Поправено. Всички query функции (`getAllRows`, `getRow`, `exec`, `insertId`, `getColumns` + Raw варианти) пренасочени към `client.query(sql, params)` през `mkQueryParams` wire protocol. Стойностите вече не се интерполират в SQL стринга.
|
||
|
||
**Файл:** `clients/nim-allographer/.../baradb_exec.nim`
|
||
|
||
---
|
||
|
||
### ✅ 4. [КЛИЕНТ] Schema builder използва `information_schema` — ПОПРАВЕНО
|
||
|
||
**Статус:** Поправено.
|
||
- **Сървър:** Добавени `SHOW TABLES` и `SHOW COLUMNS FROM table` команди (parser + executor)
|
||
- **Клиент:** Schema builder пренаписан да ползва `SHOW TABLES` → `SHOW COLUMNS FROM` вместо `information_schema`
|
||
|
||
**Файлове:**
|
||
- `src/barabadb/query/ast.nim` — добавен `nkShowTables` node
|
||
- `src/barabadb/query/parser.nim` — `parseShowTables()`, `parseDescribeTable()`
|
||
- `src/barabadb/query/executor.nim` — `nkShowTables` handler
|
||
- `clients/nim-allographer/.../create_schema.nim` — BaraDB-native introspection
|
||
|
||
---
|
||
|
||
## 🟢 Дреболии
|
||
|
||
### ✅ 5. [КЛИЕНТ] `getRowPlain()` връща празен seq при празен резултат — ПОПРАВЕНО
|
||
|
||
**Статус:** Поправено. `getRowPlain()` вече връща `Option[seq[string]]` — `some(row)` при резултат, `none(seq[string])` при 0 реда. `firstPlain`/`findPlain` запазват backward-compatible `seq[string]` API.
|
||
|
||
**Файл:** `clients/nim-allographer/.../baradb_exec.nim`
|
||
|
||
---
|
||
|
||
## Приоритет (след поправките)
|
||
|
||
| Приоритет | # | Проблем | Статус |
|
||
|-----------|---|---------|--------|
|
||
| ~~P0~~ | ~~1~~ | ~~Сървърен SIGSEGV при INSERT в транзакция~~ | ✅ Fixed |
|
||
| ~~P0~~ | ~~2~~ | ~~Сървърен parser error за резервирани думи~~ | ✅ Fixed |
|
||
| ~~P1~~ | ~~3~~ | ~~SQL injection~~ | ✅ Fixed |
|
||
| ~~P1~~ | ~~4~~ | ~~Schema builder `information_schema`~~ | ✅ Fixed |
|
||
| ~~P2~~ | ~~5~~ | ~~`getRowPlain()` semantics~~ | ✅ Fixed |
|
||
|
||
**Всички 5 бъга са поправени.** 🎉
|