-- 195_tradein_osm_roads_view.sql -- Улицы ЕКБ на витрину сделок МЕРЫ: сторона gendesign (PR 1 из 2). -- -- Карточка игры на лэндинге показывала ПОЛИГОН РАЙОНА — единственную геометрию, -- которая у tradein была. Улицы живут здесь, в `osm_noise_sources_ekb`, а у -- tradein нет ни foreign table, ни гранта. Эта миграция открывает вьюху ровно -- по образцу соседей (`v_tradein_cad_buildings`, `v_tradein_osm_poi_ekb`, -- 185_tradein_osm_poi_view.sql): плоский срез нужных колонок + GRANT SELECT -- уже существующей роли `tradein_fdw_reader` (100_tradein_fdw_role.sql). -- Новых ролей и user mapping здесь нет. -- -- ГРАНТ СТОИТ РЯДОМ С CREATE, В ЭТОМ ЖЕ ФАЙЛЕ — И ЭТО НЕ СТИЛЬ. 2026-08-29 -- (#3227) объект пересоздали, а GRANT жил отдельной миграцией и потерялся: -- пересоздание снимает права молча, и чтение с той стороны падает на -- `permission denied`. То же было с `ekb_districts_geom` (194) и -- `mv_quarter_price_index` (188). Кто будет менять эту вьюху — меняйте файл -- целиком, вместе с грантом. -- -- ЧТО В СРЕЗЕ И ЧЕГО В НЁМ НЕТ (замер на проде 2026-08-29): -- * 10 025 линий, 1377 различных названий улиц. Выгрузка собиралась как -- «источники шума», поэтому именованные улицы покрыты хорошо, а дворовые -- проезды и служебные ОТСУТСТВУЮТ. Потребитель обязан это знать: схема из -- этих данных — улицы района, а не полная уличная сеть. -- * `source_type IN ('highway','water')` — только то, что рисуется на схеме. -- Железные дороги, ЛЭП, трубопроводы, подстанции и промзона (ещё ~4 400 -- строк) сюда НЕ едут: на карточке 320 px они дают шум, а не смысл. -- * ЗДАНИЙ ЗДЕСЬ НЕТ И НЕ БУДЕТ. `cad_buildings` — 18 307 контуров на весь -- город; в плотном центре это 51 здание на радиус 450 м, где их в разы -- больше. Нарисованная застройка заявляла бы полноту, которой в данных -- нет, и показывала бы пустые кварталы там, где стоят дома. -- -- Идемпотентна: CREATE OR REPLACE VIEW + повторяемый GRANT. BEGIN; -- Конвенция проекта (#2752). CREATE OR REPLACE VIEW и GRANT берут лок на объект; -- ждать его выдачи за чужой сессией — значит собрать очередь перед приложением. SET LOCAL lock_timeout = '5s'; CREATE OR REPLACE VIEW v_tradein_osm_roads_ekb AS SELECT name, road_class, geom FROM osm_noise_sources_ekb WHERE source_type IN ('highway', 'water'); GRANT SELECT ON v_tradein_osm_roads_ekb TO tradein_fdw_reader; COMMENT ON VIEW v_tradein_osm_roads_ekb IS 'FDW-источник для tradein-mvp: улицы и вода ЕКБ для схемы улицы на витрине ' 'сделок лэндинга МЕРЫ. Срез osm_noise_sources_ekb по source_type ' 'IN (highway, water) — 10 025 линий, 1377 названий. Выгрузка фильтрованная ' '(«источники шума»): дворовых и служебных проездов в ней нет. Зданий нет ' 'намеренно, см. шапку 195_tradein_osm_roads_view.sql. GRANT живёт в том же ' 'файле — пересоздание вьюхи снимает права молча (#3227).'; COMMIT;