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]
