hanahmily opened a new pull request, #1134:
URL: https://github.com/apache/skywalking-banyandb/pull/1134

   ## Summary
   
   Completes the **single-node (standalone)** vectorized measure query 
subsystem. Building on the merged G8 base (#1129), this closes every remaining 
single-node `tryVecDispatch` fall-through (G9a–G9d) and validates the result 
under a 6h production soak + per-workload bench gates (G9e).
   
   After this PR, **all single-node measure query shapes resolve through the 
vectorized columnar pipeline** with byte-identical gRPC wire output. Only the 
*distributed* fall-throughs remain on the row path — these are scoped, 
deliberately, as the separate distributed-vectorized-query initiative (future 
work).
   
   ## What this completes
   
   Single-node coverage, each closing a specific vec→row fall-through, each 
gated by `proto.Equal` parity vs the row path:
   
   - **G9a** — single-node `TopN`/`BottomN` dispatch (per-timestamp partition 
semantics) + analyzer sort-direction fix
   - **G9b** — GroupBy/Agg completeness: scalar reduce (`Agg` without 
`GroupBy`), raw `GroupBy` (without `Agg`), implicit projection auto-coverage
   - **G9c** — boundary-error parity: nil time range, unknown projection, empty 
result now emit the canonical row-path error/empty response from vec itself (no 
fall-through)
   - **G9d** — hidden criteria tags: egress-strip wrapper so filter-only tags 
never leak to the wire
   - **`order_by`** resolved in vec dispatch via `logical.ParseOrderBy` 
(mirrors the row path's `PushDownOrder` rule)
   - **COUNT** type-preservation fix for row-path parity (`float_top_count`)
   
   ## Validation (G9e)
   
   - **G9e.1** — bench harness rewritten to drive the production operator 
pipeline; **BatchTop** deferred-materialization perf fix (W3 Top-N 1.32× slower 
→ ~4.85× faster)
   - **G9e.2** — soak parity catalog extended 1→8 entries (Top, scalar reduce, 
raw GroupBy, GroupBy+Agg, hidden criteria, OrderBy, COUNT)
   - **6h production soak** — 4/4 criteria green: `final_parity_pass:true`, 
72/72 parity slices **0 divergences**, 0 MemoryTracker alerts, goroutine growth 
confirmed bounded steady-state (structural pprof diff: zero new goroutine 
signatures)
   - **Bench gates** — all 8 per-workload gates within G5a tolerances
   - G8e parity gate (`test/integration/standalone/query/vectorized_test.go`) 
green
   
   ## Explicitly out of scope (future: distributed vectorized query)
   
   These remain on the row path **by design** and are not addressed here:
   
   - Distributed Map-mode partial aggregation (multi-node GroupBy+Agg / TopN)
   - Multi-measure (multi-group) requests
   - Non-vectorized backends (mixed clusters / rolling upgrade)
   
   The row path is intentionally retained as the parity oracle until the 
distributed work lands; this PR does not remove it.
   
   ## Notes
   
   - `CHANGES.md` release note rewritten to accurately state single-node 
coverage is complete and to scope the remaining row-path cases precisely (was 
stale — read as if only scan/GroupBy+Agg/`order_by` were vectorized).
   - Rollback unchanged: `--measure-vectorized-enabled=false` restores the row 
path immediately.
   - Diff: 26 files, +2003/-571 (12 commits).
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to