Skip to content

feat(driver,rpc): analytical safe mode (Read-Only session settings & AST precheck filter) - #38

Merged
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/20-analytical-safe-mode
Jul 11, 2026
Merged

feat(driver,rpc): analytical safe mode (Read-Only session settings & AST precheck filter)#38
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/20-analytical-safe-mode

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Реализовано для Issue #20 [Stage 5/6]:

  • Настройки сессии на сервере (src/driver/client.rs, src/rpc/handlers/query.rs, src/rpc/handlers/schema.rs):
    • При активном Safe Mode (readonly = true / safe_mode: true) ко всем HTTP-запросам (ping, query, schema introspection) автоматически добавляются параметры сессии: readonly=1, max_execution_time=300 (5 минут) и max_memory_usage=10000000000 (10 ГБ).
    • В структуру ConnectParams добавлены алиасы #[serde(alias = "safe_mode", alias = "safeMode")] для точного маппинга поля формы из SDUI.
  • Пре-фильтр AST и очистка от комментариев (src/rpc/handlers/query.rs):
    • Добавлена функция strip_sql_comments_and_trim, корректно удаляющая однострочные (-- ...) и многострочные (/* ... */) комментарии SQL перед анализом токенов.
    • Усилен enforce_safe_mode_precheck: проверяются первые токены запроса (DROP DATABASE, TRUNCATE TABLE, DROP TABLE, ALTER TABLE ... DROP/DELETE/UPDATE/MODIFY..., INSERT INTO, DELETE FROM, UPDATE, CREATE TABLE, RENAME).
    • При обнаружении опасной DDL/DML операции драйвер немедленно возвращает код -32603 с текстом ошибки: Operation blocked by Safe Mode: write or destructive queries are forbidden in analytical read-only mode.
  • Тесты и качество кода:
    • Добавлены новые unit-тесты: test_from_params_safe_mode_aliases, расширены проверки в test_safe_mode_precheck_rejections (включая комментарии и проверку RPC кода ошибки -32603).
    • Все 57 unit-тестов проходят успешно, 0 предупреждений Clippy (-D warnings).

@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit ea9f9cb into dev Jul 11, 2026
2 checks passed
@ZhuchkaTriplesix
ZhuchkaTriplesix deleted the issue/20-analytical-safe-mode branch July 30, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant