Среды и production guards
Каждое подключение помечено средой: local, dev, stage, prod. От среды зависит цвет индикатора и набор предохранителей, которые ide99 включает автоматически.
Цвет индикатора
| Среда |
Цвет |
Где видно |
| local |
зелёный |
Кружок рядом с именем подключения, верхняя полоска редактора |
| dev |
синий |
То же |
| stage |
жёлтый |
То же |
| prod |
красный |
То же + красная плашка PROD в шапке окна |
Цвет — главный визуальный сигнал. Перед DROP TABLE ваш глаз должен увидеть красное.
Что меняется в зависимости от среды
| Поведение |
local |
dev |
stage |
prod |
| Цвет в шапке |
зелёный |
синий |
жёлтый |
красный |
| Read-only по умолчанию |
— |
— |
— |
✓ |
Подтверждение DROP/DELETE без WHERE |
— |
— |
опционально |
обязательно |
| Предупреждение о медленных запросах |
— |
— |
мягкое |
жёсткое |
| Исключение из истории |
— |
— |
— |
опционально |
Параметры можно переопределить вручную в форме подключения — поля Read-only, Подтверждение опасных команд, Предупреждение о медленных запросах, Исключить из истории.
Read-only режим
Если включён, ide99 заблокирует выполнение запросов, которые модифицируют данные или схему: INSERT, UPDATE, DELETE, TRUNCATE, CREATE, ALTER, DROP, GRANT, REVOKE, любые DDL. Запрос подсвечивается красным, кнопка Run отключается.
Если нужно выполнить запись на prod-подключении — снимите Read-only в форме подключения. Это явное действие, которое нельзя сделать «случайно». ide99 покажет подтверждение.
Подтверждение опасных команд
Включает вторую защиту: при попытке выполнить DROP TABLE x, DELETE FROM x без WHERE или TRUNCATE x появится модальное окно:
Подтвердить удаление таблицы «x»
Введите имя таблицы для подтверждения:
[ ]
Запрос не запустится, пока имя не введено в точности. Хорошая привычка — никогда не отключать эту опцию для prod.
Предупреждение о медленных запросах
ide99 запускает EXPLAIN (без ANALYZE) до фактического выполнения. Если оценочный cost > 100 000 или есть Seq Scan по большой таблице — покажет диалог:
«Запрос может быть тяжёлым: оценочный cost 280 000, Seq Scan на orders (5М строк). Запустить?»
Это спасает от случайного SELECT * FROM events WHERE … без индекса на prod.
Исключение из истории
Если включить — запросы по этому подключению не пишутся в History-таб. Полезно для prod-баз с чувствительными данными: пароли, токены, PII не остаются в локальной истории.
Override per-query
Иногда защита мешает (например, нужно почистить тестовую таблицу на dev-сервере, помеченном как prod). Кнопка Run anyway в диалоге подтверждения снимает блокировку для одного запуска, не меняя настройки подключения. Это лучше, чем отключать guards насовсем.
Что дальше