Files
Baradb/BARADB_CLIENT_BUGS.md
dimgigov 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
fix: all 5 bugs — reserved words, cloneForConnection, SQL injection, SHOW TABLES, getRowPlain
2026-05-21 22:51:04 +03:00

72 lines
3.8 KiB
Markdown
Raw Permalink 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.
# Оставащи бъгове — 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 бъга са поправени.** 🎉