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

[BUG] expand on a field that is not a column of the input fails as a ClassCastException

Abierto Apto para principiantes
#5,840 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@RyanL1997 ya está trabajando en esto.

Desde el 6/10/2026.

  • #5841 de @RyanL1997 — abierto

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
85/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
backend

Línea de trabajo

La conversión problemática se encuentra en CalciteRelNodeVisitor.java en la línea 4459; primero localiza la comprobación existente de destino no compatible de mvexpand en el mismo método para usarla como patrón. Agrega una comprobación de tipo para el resultado de rexVisitor.analyze antes de convertirlo a RexInputRef, y devuelve un error orientado al usuario que indique que expand requiere un campo de índice en lugar de un valor calculado. Ejecuta el caso de prueba de reproducción proporcionado contra una columna de mapa para confirmar que la ClassCastException se reemplaza por el mensaje de error correcto.

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

Descripción

untriaged
What is wrong

expand correlates the expansion with a column of its input, and the planner casts the resolved field to a RexInputRef without checking it:

https://github.com/opensearch-project/sql/blob/803ed31c8/core/src/main/java/org/opensearch/sql/calcite/CalciteRelNodeVisitor.java#L4459

RexInputRef arrayFieldRex = (RexInputRef) rexVisitor.analyze(arrayField, context);

Anything that is not a column of the input resolves to something else — a leaf of an object or a map reaches the planner as an ITEM call — so the cast fails:

java.lang.ClassCastException: class org.apache.calcite.rex.RexCall cannot be cast to
class org.apache.calcite.rex.RexInputRef

The user gets an internal error naming Calcite classes rather than a message about their query. The sibling check in the same method already reports an unsupported mvexpand target properly, so the vocabulary for saying this is there.

Reproduce

A unit test against main at 803ed31c8, on a table with a map column:

getRelNode("source=DEPT_MAP | expand ATTRS.k");
// -> ClassCastException: RexCall cannot be cast to RexInputRef

Any expand target that is not a column of the input reaches it — a sub-field of an object field, or an expression.

What it should do

Report it the way the mvexpand check in the same method does: name the field, say that expand takes a field of the index rather than a value computed from one, and suggest expanding the field itself or projecting the value first.

Found while

Adding flat_object support (#5830), whose leaves are reached the same way. The cast predates that change and is reached without it.

Lenguaje dominante
Java
Estrellas
175
Forks
231
Merge medio
2 d 7 h
PR fusionados (30 d)
35

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 opensearch-project/sql

Todos los issues de opensearch-project/sql

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.