Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Enhancement] LogicExpression three-valued truth table and short-circuit behavior lack direct tests

Đang mở Phù hợp với người mới
#11,339 2 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

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

Từ ngày 9/10/2026.

  • #11348 của @chennaji9 — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java
Lĩnh vực
testing

Hướng nghiên cứu

Bắt đầu với LogicExpression.java trong filter/src/main/java/org/apache/rocketmq/filter/expression/ để xem AND và OR đánh giá các toán hạng như thế nào và UNKNOWN (null) được xử lý ở đâu. Sau đó đọc ExpressionTest hiện có để xem cách các biểu thức SQL92 được tạo và đánh giá. Thêm một LogicExpressionTest mới, khẳng định cả chín tổ hợp toán hạng AND/OR và rằng matches() coi UNKNOWN là false, cùng với các kiểm tra short-circuit chứng minh toán hạng bên phải không được đánh giá khi toán hạng bên trái đã quyết định kết quả. Chạy các test của module filter; hoàn thành khi bảng chân trị và cả hai trường hợp short-circuit đều pass.

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

Mô tả

Description

LogicExpression (filter/src/main/java/org/apache/rocketmq/filter/expression/LogicExpression.java) implements the SQL92 three-valued logic used by property (SQL92) subscriptions: operands evaluate to TRUE, FALSE, or null (UNKNOWN), AND/OR short-circuit when the left operand already decides the result, and UNKNOWN propagates (null AND TRUE = UNKNOWN, null OR FALSE = UNKNOWN), with matches() treating UNKNOWN as no-match.

ExpressionTest covers composite expressions end to end, but nothing pins the truth table itself or the short-circuit: the full 3x3 operand matrix is not asserted anywhere, and no test would notice if the short-circuit disappeared (left FALSE under AND still evaluating the right operand) or if UNKNOWN propagation was replaced by a plain false.

Since brokers compile every SQL92 subscription through these expressions, the matching semantics deserve direct regression coverage.

Expected behavior

A dedicated LogicExpressionTest covering the 3x3 truth table for AND/OR, the UNKNOWN-matches-false rule, and short-circuit proofs (right operand provably unevaluated when the left decides).

Ngôn ngữ chính
Java
Star
22.6k
Fork
12k
Merge trung bình
6 ngày 16 giờ
Pull request đã merge (30 ngày)
18

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/rocketmq

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

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.