[Chore] Keep Stream filtering and projection on batches until output

Đã đóng
#14,067 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@SammyUrfen đang làm issue này rồi.

Từ ngày 7/10/2026.

  • #1400 của @SammyUrfen — đang mở

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
30/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
go

Hướng nghiên cứu

Bắt đầu với banyand/query/processor.go và các thay đổi tiên quyết trong apache/skywalking-banyandb#1331, sau đó chạy các lệnh kiểm thử Go và kiểm thử tích hợp được liệt kê. Issue này là một issue cha để theo dõi, vì vậy hãy chia công việc thành các tác vụ lá có thể thực thi trước khi triển khai. Được xem là hoàn tất khi mỗi tác vụ lá có một production caller và coverage processor hoặc tích hợp bị lỗi, đồng thời duy trì hành vi filtering, projection, response và tracing đã liệt kê.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

database

Summary

Stop constructing protobuf Element objects merely to filter rows or remove internally projected tags. This follows the legacy-engine removal child #14066 (closed; implemented by BanyanDB PR apache/skywalking-banyandb#1326, merged) under #13998.

Scope and dependencies

Boundary: Stream batch filtering and client projection through banyand/query/processor.go, with eligible frame egress and required protobuf egress. It spans filter placement, projection, and response-path activation, implemented here as one task against the now-merged legacy-engine removal, not split into separate PRs.
Prerequisite already merged: BanyanDB PR apache/skywalking-banyandb#1331 provides pre-merge filtering for index-order queries.
Unblocked: #14066 is closed; its completion criterion, BanyanDB PR apache/skywalking-banyandb#1326, is merged.

Requirements

R1. Reuse apache/skywalking-banyandb#1331's pre-merge index-order filtering and remove the redundant element-level recheck. Preserve filter-first duplicate winners and the bounded merge.
R2. Apply timestamp-order filtering to batches at its existing position after the cap; do not change its existing under-fill behavior.
R3. Strip criteria-only and hidden ordering tags through batch projection. Retain internal ordering keys until ordering is finished, without exposing hidden tags in the client's projection.
R4. Enable frame output for eligible distributed queries. Preserve required protobuf responses, including traced responses and final client output.

Concrete oracle

Input:

ID=A, order=1, state=closed, service=old
ID=A, order=2, state=open,   service=new
ID=B, order=3, state=open,   service=other

With criteria state=open, ascending index order, and projection service, return A/new then B/other. Neither state nor the ordering tag may appear in client tag families. Offset 1, limit 1 returns B/other. Expected values are specified here, not derived from a legacy engine.

Completion criteria and RED-test direction

  • Real processor tests prove eligible filtered queries emit frames. Today their filter gate selects protobuf output, so this is an observable failing path assertion, not only output parity.
  • Exact selected values, duplicate winners, hidden-tag removal, null behavior, and offset/limit are tested across batches.
  • Timestamp-order filtering remains behind the cap, and traced responses retain tracing information.
  • Each implementation leaf activates a production caller and includes its own failing test; batch ownership is correct on success, cancellation, and errors.
go test ./pkg/query/vectorized/stream/... ./pkg/query/logical/stream ./banyand/query
go test ./test/integration/standalone/query/... ./test/integration/distributed/query/...

Out of scope

Reimplementing apache/skywalking-banyandb#1331; changing timestamp under-fill semantics; local cross-group or distributed result merging (a separate workstream).

Parent: #13998.

Compatibility and review policy

  • Preserve existing on-disk and wire formats and mixed-version compatibility. Any necessary protocol change requires a separately reviewed compatibility contract.
  • Use explicit, hand-calculated expected results; do not depend on the removed row engine as the test oracle.
  • Human review enforces the no-new-row-path policy. A row-call-site lint guard is not required.
Ngôn ngữ chính
Java
Star
25k
Fork
6.6k
Merge trung bình
13 giờ 58 phút
Pull request đã merge (30 ngày)
42

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/skywalking

Tất cả issue của apache/skywalking

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.