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

3.8 KiB
Raw Permalink Blame History

Оставащи бъгове — 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.nimcloneForConnection()


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 TABLESSHOW COLUMNS FROM вместо information_schema

Файлове:

  • src/barabadb/query/ast.nim — добавен nkShowTables node
  • src/barabadb/query/parser.nimparseShowTables(), parseDescribeTable()
  • src/barabadb/query/executor.nimnkShowTables 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 бъга са поправени. 🎉