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]