From e84c613edcf28d0dddf8ae42a41a38fcb5f2d8a5 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Tue, 4 Aug 2026 23:16:08 +0500 Subject: [PATCH] fix(sql): re-grant mv_quarter_price_index to tradein_fdw_reader (C3, #2583) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 179's DROP MATERIALIZED VIEW ... CASCADE recreated mv_quarter_price_index without restoring 99b's GRANT — since 2026-07-05 the tradein estimator's FDW read (quarter_price_index) failed with permission denied. Applied live on prod 2026-08-04 (verified: 1894 rows readable from tradein). 188 codifies the grant idempotently; 179 now re-grants after its CASCADE recreate so a re-run can't lose it again. --- .../179_mv_quarter_price_cadastral_floor.sql | 4 ++++ .../188_regrant_quarter_price_index_fdw.sql | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 data/sql/188_regrant_quarter_price_index_fdw.sql diff --git a/data/sql/179_mv_quarter_price_cadastral_floor.sql b/data/sql/179_mv_quarter_price_cadastral_floor.sql index 12c689da..e68224f4 100644 --- a/data/sql/179_mv_quarter_price_cadastral_floor.sql +++ b/data/sql/179_mv_quarter_price_cadastral_floor.sql @@ -220,4 +220,8 @@ COMMENT ON MATERIALIZED VIEW mv_quarter_price_index IS 'Consumer: estimator service (#647-3) reads O(1) by quarter_cad_number. ' 'Issue: #760.'; +-- C3 (#2583): DROP CASCADE выше уносит грант из 99b — без ре-гранта tradein FDW +-- (quarter_price_index, роль tradein_fdw_reader) ловит permission denied. +GRANT SELECT ON public.mv_quarter_price_index TO tradein_fdw_reader; + COMMIT; diff --git a/data/sql/188_regrant_quarter_price_index_fdw.sql b/data/sql/188_regrant_quarter_price_index_fdw.sql new file mode 100644 index 00000000..b85dcd25 --- /dev/null +++ b/data/sql/188_regrant_quarter_price_index_fdw.sql @@ -0,0 +1,22 @@ +-- 188_regrant_quarter_price_index_fdw.sql +-- C3 (#2583): tradein-эстиматор потерял квартальный индекс 2026-07-05. +-- +-- Причина: 179_mv_quarter_price_cadastral_floor.sql делает +-- DROP MATERIALIZED VIEW mv_quarter_price_index CASCADE; CREATE ... +-- DROP+CREATE не сохраняет гранты — GRANT из 99b_grant_quarter_price_index_fdw.sql +-- пропал, и tradein-сторона (foreign table quarter_price_index, роль +-- tradein_fdw_reader) с 05.07 получала: +-- permission denied for materialized view mv_quarter_price_index +-- +-- Симптом «не выполняется с 5 июля» — это дата применения 179, а не поломка +-- рефреша: REFRESH MATERIALIZED VIEW (beat: 05:00 МСК 5-го числа) гранты не трогает. +-- +-- Применено вживую на прод 2026-08-04 (FDW-чтение проверено: 1894 строки). +-- Этот файл — идемпотентное закрепление. Парный фикс: GRANT дописан в конец 179, +-- чтобы повторное применение 179 больше не теряло грант. + +BEGIN; + +GRANT SELECT ON public.mv_quarter_price_index TO tradein_fdw_reader; + +COMMIT;