[Enhancement] LogicExpression three-valued truth table and short-circuit behavior lack direct tests
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
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
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/rocketmq
-
[Bug] notifyMasterOnline aborts the long-polling wake-up with a NullPointerException when an arrival drains a bucket firstPosiblemente ocupada @iloveeyjafjalla la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/rocketmq#11441 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[Bug] DefaultMQPushConsumer.shutdown() never stops the pop consume service, so its non-daemon threads keep the JVM alivePosiblemente ocupada @iloveeyjafjalla la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
apache/rocketmq#11427 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Enhancement] FilterFactory duplicate-registration and unregister semantics lack testsPosiblemente ocupada @chennaji9 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
apache/rocketmq#11340 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Enhancement] SyncStateInfo defensive-copy and epoch semantics lack direct testsPosiblemente ocupada @chennaji9 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/rocketmq#11338 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Enhancement] ControllerClosure request-completion semantics lack direct testsPosiblemente ocupada @chennaji9 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/rocketmq#11337 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/rocketmq
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/rocketmq-dashboard#6716 ·
Los mantenedores suelen responder en 3 días
-
DefaultRedisList.get(int) does not reject an index equal to the list sizePosiblemente ocupada @ryujungkyun la tomó hoy. Abiertostatus: waiting-for-triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
spring-projects/spring-data-redis#3471 ·
Los mantenedores suelen responder en 5 días
-
:maddi-inspection-kotlin:test runs out of heap in a full maddi test run; exit 1 with no failing testAbiertobuild/ci front-end:kotlin
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
uwolfer/gerrit-intellij-plugin#768 ·
Los mantenedores suelen responder en 1 día