Combined measure QL follow-up verification

The original integration combined the three local features on merged main b54a9fc76 (PR #1438), without importing the historical Catalog B branch again:

Capability Original commit Integrated commit
Indexed LIKE/ILIKE and shared native wildcard execution 145962b6b 145962b6b
Scalar aggregate composition and computed aggregate inputs 532e5c4aa fe086e543
Exact bounded decimal sums 1a0050540 790d37f25

The commits, binary hashes and test counts below describe that pre-rebase integration. They remain unchanged as historical evidence. See review-fixes-verification.md for the rebase onto 39d33bc5d, its verification and the subsequent review fixes.

Decimal aggregation depends on the computed-input machinery. Merge resolution preserves both pattern filtering and computed-input restrictions on native aggregate pushdown. Generated expectations were regenerated from the combined source, and the grammar audit includes all three capabilities.

The final integration changes also make the native scan’s exclusion of decimal storage columns explicit, consolidate batch-request pattern binding, and satisfy the repository’s lint and license rules. No protobuf definitions, persisted formats or native decimal frame types are added. Calendar TIME_BUCKET extensions, JOIN, index-visibility recovery, spilling and retained-result sessions are excluded.

Combined-feature acceptance

Three additional generated scenarios use the existing neutral pattern fixture:

  • LIKE and ILIKE before COALESCE(SUM(value + 1), 0) and a decimal computed sum.
  • Grouped decimal sums with HAVING, numeric ordering, LIMIT and OFFSET.
  • Rebinding matched, unmatched and NULL patterns, with normal and bypassed caches.

The decimal ordering witness compares 12.0 and 5.0, so string ordering cannot pass. Expected values use the independent pattern oracle and small integer arithmetic rather than the production expression or decimal implementation. The pattern cohort contains 34 scenarios, 123 bindings and 246 verification RPCs per topology. Existing generated decimal cases retain the independent PostgreSQL oracle and a sum whose coefficient exceeds int64.

Checks

The combined parser, QL, decimal, vectorized execution, native index, liaison, query processor and queue package tests passed. The generator package and make check-ql-test-cases passed. Native scan/merge and distributed query tests passed after the lint fixes. Full make lint and the separate benchmark-package lint passed. All three benchmark packages compile on the combined source.

The broad generated RPC cohort passed 444/444 scenarios in each topology, covering T07, T08, T14, T15, T16, T17 and indexed patterns. Both deployments ran sequentially in Docker with four CPUs, 8 GiB memory and no extra swap. These runs preceded the final lint-only corrections; final-binary feature results and binary hashes are recorded in follow-up-rpc-verification.json.

The broad filter is:

measure-ql && (QL-patterns || QLB-T07 || QLB-T08 || QLB-T14 || QLB-T15 || QLB-T16 || QLB-T17)

After committing the integration, run make check from the clean worktree. This repository target checks license headers and formatting; it is not a substitute for the package and real RPC tests above. Local commands use source /tmp/pr4-env.sh (Go 1.26.10), with the existing tools selected through tool_bin=/mnt/d/skywalking-banyandb/bin and LINTER=/mnt/d/qlb-t01-tools/golangci-lint.

Benchmark evidence

The included aggregate composition, bounded decimal and shared wildcard benchmarks retain their original workloads, source provenance and limitations. They were not rerun as performance measurements for this combined branch. Their saved timings must not be described as measurements of the final combined query or as new statistical gates. The new integration cases verify composition and cleanup; they do not broaden the benchmark scope.