)]}'
{
  "commit": "bd40bcc9715a0f91bee0cbea263b48e2ee86edcc",
  "tree": "f96dc5dbadcb11195bca4c5a61bf943462d17e95",
  "parents": [
    "546781460022b14e8ad7bae5c3dc10001ab0c44f"
  ],
  "author": {
    "name": "Lalit Maganti",
    "email": "lalitm@google.com",
    "time": "Tue Mar 17 01:52:11 2026 +0000"
  },
  "committer": {
    "name": "Lalit Maganti",
    "email": "lalitm@google.com",
    "time": "Tue Mar 17 02:23:25 2026 +0000"
  },
  "message": "tp: use HLL cardinality estimates in query planner\n\nWire up Column::estimated_unique_count into the query planner\u0027s\nequality filter row count estimation. When an HLL estimate is\navailable, use N/unique_count instead of the old N/(2*log2(N))\nheuristic. This gives SQLite more accurate cost estimates, leading\nto better join ordering.\n\nFix CUJ stdlib tables to use slice.id instead of ts for\nrow_number() ordering. slice.id is equivalent to ts ordering\n(slices are inserted in ts order) but is resilient to ties when\nmultiple CUJs share the same timestamp.\n\nFix cpu_cycles_per_thread_slice diff test to add ORDER BY id\nfor deterministic output with LIMIT.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4bbbb70a479a2b04b9318f7ced924e18b8f0e862",
      "old_mode": 33188,
      "old_path": "src/trace_processor/core/dataframe/query_plan.cc",
      "new_id": "746d04a521c35426b49526881b39aeeb96899fb9",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/dataframe/query_plan.cc"
    },
    {
      "type": "modify",
      "old_id": "01d547936c34f70c1d2b9e0ce5b4835886802c88",
      "old_mode": 33188,
      "old_path": "src/trace_processor/core/dataframe/query_plan.h",
      "new_id": "384e8a3390395209f8586ad0d11ef83111b16166",
      "new_mode": 33188,
      "new_path": "src/trace_processor/core/dataframe/query_plan.h"
    },
    {
      "type": "modify",
      "old_id": "608dc2b286925990a23c52bc0e28d4800e25dff2",
      "old_mode": 33188,
      "old_path": "src/trace_processor/perfetto_sql/stdlib/android/cujs/base.sql",
      "new_id": "e056f95f6bee9085823492173aaff238f502b029",
      "new_mode": 33188,
      "new_path": "src/trace_processor/perfetto_sql/stdlib/android/cujs/base.sql"
    },
    {
      "type": "modify",
      "old_id": "813d59f50120ec85284adbded95f0876ec334af8",
      "old_mode": 33188,
      "old_path": "src/trace_processor/perfetto_sql/stdlib/android/cujs/sysui_cujs.sql",
      "new_id": "9f8989a69c7462be3ff1596945c7e37187290933",
      "new_mode": 33188,
      "new_path": "src/trace_processor/perfetto_sql/stdlib/android/cujs/sysui_cujs.sql"
    },
    {
      "type": "modify",
      "old_id": "170f049f9415c96037057e3f3f78eedf0f805c3b",
      "old_mode": 33188,
      "old_path": "test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_metric.out",
      "new_id": "99960d6cd90f7039a833700719baa809b3a14c80",
      "new_mode": 33188,
      "new_path": "test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_metric.out"
    },
    {
      "type": "modify",
      "old_id": "1ec6b4919ebfcff0fae3f2179cb8a495ec9b356d",
      "old_mode": 33188,
      "old_path": "test/trace_processor/diff_tests/stdlib/linux/cpu.py",
      "new_id": "945c3b8eb8fcb867ed0031dc60ab9e30547cb809",
      "new_mode": 33188,
      "new_path": "test/trace_processor/diff_tests/stdlib/linux/cpu.py"
    }
  ]
}
