3.8 KiB
Оставащи бъгове — nim-allographer (BaraDB клиент) + BaraDB сървър
Дата: 2026-05-21 Поправени в тази сесия: компилационни грешки,
toJson(), агрегати,whereIn/whereBetweenplaceholder-и,paginate, transaction cleanup,insertSqlstate. Допълнително поправени: reserved words parser, cloneForConnection nil fields, SQL injection (prepared statements),getRowPlain()semantics, BaraDB-nativeSHOW 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— добавенnkShowTablesnodesrc/barabadb/query/parser.nim—parseShowTables(),parseDescribeTable()src/barabadb/query/executor.nim—nkShowTableshandlerclients/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
Приоритет (след поправките)
| Приоритет | # | Проблем | Статус |
|---|---|---|---|
| ✅ Fixed | |||
| ✅ Fixed | |||
| ✅ Fixed | |||
information_schema |
✅ Fixed | ||
getRowPlain() semantics |
✅ Fixed |
Всички 5 бъга са поправени. 🎉