From 24ad2728d72ffaf94ca6abb92c13695d5aef772b Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sun, 8 Nov 2026 11:05:58 +0400 Subject: [PATCH] =?UTF-8?q?fix(perf):=20svod2=5Fpaging=5Fcheck=20=D1=81?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=8F=D0=B5=D1=82=20=D1=81=D0=BA=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9=D0=BA=D1=83=20view=3Dfull=20=D1=81=20=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=BC=20=D0=B1=D0=B5=D0=B7=20null-=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=B5=D0=B9=20(AURORA-1848)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- perf/analysis/svod2_paging_check.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/perf/analysis/svod2_paging_check.py b/perf/analysis/svod2_paging_check.py index 80a3b3b..03e4587 100644 --- a/perf/analysis/svod2_paging_check.py +++ b/perf/analysis/svod2_paging_check.py @@ -54,8 +54,19 @@ def _line_id(row: dict): return (row.get("data") or {}).get("line_id") +def strip_nulls(value): + """Как jsonb_strip_nulls: после AURORA-1848 прежний (без параметров) ответ отдаёт data без null-полей, + а постраничный view=full - с ними. Сверка идёт по значениям, поэтому null-поля отбрасываются.""" + if isinstance(value, dict): + return {k: strip_nulls(v) for k, v in value.items() if v is not None} + if isinstance(value, list): + return [strip_nulls(v) for v in value] + return value + + def compare_stitched(full_rows: list[dict], stitched: list[dict]) -> list[str]: problems: list[str] = [] + stitched = strip_nulls(stitched) if len(full_rows) != len(stitched): problems.append(f"число строк: прежний ответ {len(full_rows)}, склейка {len(stitched)}") ids = [_line_id(r) for r in stitched]