fix(sql): re-grant mv_quarter_price_index to tradein_fdw_reader (C3, #2583) #2641

Merged
bot-backend merged 1 commit from fix/c3-quarter-index-fdw-grant into main 2026-08-04 18:42:23 +00:00
Collaborator

Что

C3 из аудита #2583 («квартальный индекс не выполняется с 5 июля из-за прав на FDW») — диагностирован и починен.

Диагноз

  • «С 5 июля» — это дата применения миграции 179 (mv_quarter_price_cadastral_floor): её DROP MATERIALIZED VIEW mv_quarter_price_per_m2 CASCADE уносит зависимый mv_quarter_price_index, а пересоздание не восстанавливает GRANT из 99b → роль tradein_fdw_reader с тех пор ловила permission denied for materialized view mv_quarter_price_index на каждом FDW-чтении (foreign table quarter_price_index в tradein).
  • Сам рефреш не сломан: beat-задача refresh-quarter-price-index — месячная (0 5 5 * *, 05:00 МСК 5-го числа), REFRESH MATERIALIZED VIEW CONCURRENTLY гранты не трогает. Последний прогон 05.07 был штатным, следующий — завтра 05.08.

Фикс

  • Прод починен вживую 2026-08-04: GRANT SELECT выдан, FDW-чтение из tradein проверено (1894 строки).
  • 188_regrant_quarter_price_index_fdw.sql — идемпотентное закрепление (без него recovery-прогон схемы снова потерял бы грант).
  • В 179 дописан GRANT после пересоздания MV — повторное применение 179 больше не оторвёт tradein.

Эстиматор МЕРА снова видит квартальный индекс (O(1) lookup по quarter_cad_number, #647-3).

Refs #2583 (C3).

## Что **C3 из аудита #2583** («квартальный индекс не выполняется с 5 июля из-за прав на FDW») — диагностирован и починен. ### Диагноз - «С 5 июля» — это дата применения миграции **179** (`mv_quarter_price_cadastral_floor`): её `DROP MATERIALIZED VIEW mv_quarter_price_per_m2 CASCADE` уносит зависимый `mv_quarter_price_index`, а пересоздание **не восстанавливает GRANT** из `99b` → роль `tradein_fdw_reader` с тех пор ловила `permission denied for materialized view mv_quarter_price_index` на каждом FDW-чтении (foreign table `quarter_price_index` в tradein). - Сам рефреш **не сломан**: beat-задача `refresh-quarter-price-index` — месячная (`0 5 5 * *`, 05:00 МСК 5-го числа), `REFRESH MATERIALIZED VIEW CONCURRENTLY` гранты не трогает. Последний прогон 05.07 был штатным, следующий — завтра 05.08. ### Фикс - **Прод починен вживую 2026-08-04**: `GRANT SELECT` выдан, FDW-чтение из tradein проверено (1894 строки). - `188_regrant_quarter_price_index_fdw.sql` — идемпотентное закрепление (без него recovery-прогон схемы снова потерял бы грант). - В `179` дописан GRANT после пересоздания MV — повторное применение 179 больше не оторвёт tradein. Эстиматор МЕРА снова видит квартальный индекс (O(1) lookup по quarter_cad_number, #647-3). Refs #2583 (C3).
bot-backend added 1 commit 2026-08-04 18:16:28 +00:00
fix(sql): re-grant mv_quarter_price_index to tradein_fdw_reader (C3, #2583)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m0s
CI / backend-tests (pull_request) Successful in 15m12s
e84c613edc
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.
bot-backend merged commit 99757c6370 into main 2026-08-04 18:42:23 +00:00
bot-backend deleted branch fix/c3-quarter-index-fdw-grant 2026-08-04 18:42:23 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2641
No description provided.