diff --git a/tradein-mvp/backend/data/sql/134_listings_geom_geography_gist.sql b/tradein-mvp/backend/data/sql/134_listings_geom_geography_gist.sql index 5da8c9ec..a7b2e09c 100644 --- a/tradein-mvp/backend/data/sql/134_listings_geom_geography_gist.sql +++ b/tradein-mvp/backend/data/sql/134_listings_geom_geography_gist.sql @@ -22,9 +22,11 @@ -- - НЕ деструктивно: только добавление индекса, данные не трогаются. -- - IF NOT EXISTS → идемпотентно при повторном прогоне (no-op). -- - Сборка GIST по ~54.5k non-null geom строк — быстро (~1-2с), кратковременный --- ACCESS EXCLUSIVE lock на время сборки. CONCURRENTLY не используем: раннер --- миграций оборачивает файл в транзакцию (CREATE INDEX CONCURRENTLY в txn нельзя), --- а на таком объёме обычная сборка дёшева. +-- ACCESS EXCLUSIVE lock на время сборки. CONCURRENTLY не используем: файл обёрнут +-- в BEGIN/COMMIT (CREATE INDEX CONCURRENTLY в транзакции нельзя), а на таком +-- объёме обычная сборка дёшева. NB: раннер деплоя (deploy.yml) гонит файл через +-- psql -v ON_ERROR_STOP=on БЕЗ --single-transaction, т.е. транзакцию открывает +-- сам файл — как 133/104 и house-rule (Schema_Migrations_vs_Alembic.md #4). -- - listings_geom_idx (gist(geom)) ОСТАВЛЯЕМ — он нужен другим geometry-путям. -- -- DEPENDENCIES: @@ -32,5 +34,9 @@ -- -- Deploy order: after 133_listings_uq_source_source_id.sql. +BEGIN; + CREATE INDEX IF NOT EXISTS listings_geom_geog_idx ON listings USING gist ((geom::geography)); + +COMMIT;