Skip to content

Commit ebd3fe2

Browse files
authored
Update TODO.md
1 parent c867aa7 commit ebd3fe2

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

functions/db_validation/TODO.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
1. Добавить проверку уникальных индексов, чтобы все колонки из индекса были с ограничением `NOT NULL`. Иначе ограничение уникальности не работает и нужно делать [по другому](https://github.com/rin-nas/postgresql-patterns-library/tree/master#%D0%BA%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BD%D0%BE%D0%B9-%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81-%D0%B3%D0%B4%D0%B5-%D0%BE%D0%B4%D0%BD%D0%BE-%D0%B8%D0%B7-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9-%D0%BC%D0%BE%D0%B6%D0%B5%D1%82-%D0%B1%D1%8B%D1%82%D1%8C-null).
3030
1. Добавить параметр для игнорирования индексов `indexes_ignore_regexp`. Пример: `^pgcompact_index_\d+$`.
3131
1. При обнаружении избыточных индексов рекомендовать удалять индексы с названием по маске `(_ccnew$|^pgcompact_index_\d+$)`, а не индексы с другими названиями
32-
1. B-деревья подходят для индексирования только скалярных данных. В массивах должен быть GIN индекс вместо btree.
32+
1. B-деревья подходят для индексирования только скалярных данных. Для массивов должен быть GIN индекс вместо btree.
3333
1. Добавить проверку на вероятно избыточный индекс, если для `field` есть `lower(field)`, `upper(field)`, `date(field)`. Рекомендовать удалить индекс на `field`!
3434
1. Обнаруживать (и рекомендовать удалять, а не выдавать ошибку) такие избыточные индексы:
3535
1. `CREATE UNIQUE INDEX ON paid_services.snapshot_package_limit USING btree (order_item_id, service_id, sort(uniq(zone_ids)))`
@@ -39,6 +39,12 @@
3939
1. CASCADE использовать в миграциях опасно. 
4040
Удаление может рекурсивно пойти по FK и удалить существующие объекты БД и записи в таблицах.
4141
Рекомендовать выстроить цепочку удаления объектов в правильной последовательности.
42+
1. Валидатор даёт неправильную рекомендацию по удалению избыточного индекса. Нужно смотреть на связанные ограничения?
43+
```sql
44+
ERROR: Таблица public.preset__currency уже имеет индекс CREATE UNIQUE INDEX preset__currency_id_uindex ON public.preset__currency USING btree (id)
45+
Удалите избыточный индекс CREATE UNIQUE INDEX preset__currency_pk ON public.preset__currency USING btree (id)
46+
CONTEXT: PL/pgSQL function db_validation.schema_validate() line 109 at RAISE
47+
```
4248
1. Типы колонок
4349
1. 🚨 Вместо устаревшего `CHAR(n) / VARCHAR(n)` нужно использовать `TEXT` с ограничением, например: `check(length(col) between 0 and 100)`
4450
1. 🚨 Для текстовых колонок `TEXT` и `VARCHAR` без ограничения длины и с отсутствием ограничения `check(...)` необходимо делать ограничение с валидацией `check(length(col) between X and Y)`

0 commit comments

Comments
 (0)