Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto Apto para principiantes
#11,339 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@chennaji9 ya está trabajando en esto.

Desde el 9/10/2026.

  • #11348 de @chennaji9 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
testing

Línea de trabajo

Empieza con LogicExpression.java en filter/src/main/java/org/apache/rocketmq/filter/expression/ para ver cómo AND y OR evalúan sus operandos y dónde se gestiona UNKNOWN (null). Después lee el ExpressionTest existente para ver cómo se construyen y evalúan las expresiones SQL92. Añade una nueva LogicExpressionTest que compruebe las nueve combinaciones de operandos de AND/OR y que matches() trata UNKNOWN como false, además de comprobaciones de cortocircuito que demuestren que el operando derecho no se evalúa cuando el izquierdo decide el resultado. Ejecuta las pruebas del módulo filter; estará terminado cuando pasen la tabla de verdad y ambos casos de cortocircuito.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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).

Lenguaje dominante
Java
Estrellas
22.6k
Forks
12k
Merge medio
6 d 21 h
PR fusionados (30 d)
17

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/rocketmq

Todos los issues de apache/rocketmq

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.