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

[Bug] ORCA: "bogus index qualification" when a filter on an INCLUDE-only index column is pushed into the index qual

Abierto
#1,948 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
52/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
c, postgresql, sql
Área
databases

Línea de trabajo

Reproduce el fallo con el ejemplo de SQL, luego lee nodeIndexscan.c alrededor de la línea 1249 y compara la salida de ORCA EXPLAIN con el optimizador deshabilitado. La corrección estará completa cuando el filtro INCLUDE-only-column ya no provoque una calificación de índice espuria y la consulta devuelva las dos filas esperadas con cualquiera de las dos configuraciones del optimizador.

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

Descripción

type: Bug type: Orca
Apache Cloudberry version

main branch (recent build)

What happened

With ORCA enabled, a query filtering on a column that is only an INCLUDE column of an index fails at execution time with an internal error:

ERROR:  bogus index qualification (nodeIndexscan.c:1249)

ORCA generates an index scan on bogus_i and pushes c1 into the index qualification (EXPLAIN shows Index Cond: (c1 = true)), but c1 is a non-key INCLUDE column and ExecIndexBuildScanKeys rejects it. Line number is from current main. With optimizer = off the query returns the correct 2 rows.

Found by SQLancer.

What you think should happen instead

The query should return the two rows where c1 is true, with either optimizer.

How to reproduce
CREATE TABLE bogus_t (c0 boolean, c1 boolean);
CREATE INDEX bogus_i ON bogus_t (c0) INCLUDE (c1);
INSERT INTO bogus_t VALUES (true, true), (false, true), (true, false);

SET optimizer = on;
SELECT * FROM bogus_t WHERE c1;
-- ERROR:  bogus index qualification (nodeIndexscan.c:1249)

SET optimizer = off;
SELECT * FROM bogus_t WHERE c1;
-- 2 rows
Operating System

Linux

Anything else

Found while running SQLancer against Cloudberry main (3-segment demo cluster, --enable-cassert). See the proposal to run SQLancer continuously: https://github.com/apache/cloudberry/discussions/1952

Are you willing to submit PR?
  • Yes, I am willing to submit a PR!
Code of Conduct
Lenguaje dominante
C
Estrellas
1.4k
Forks
248
Merge medio
4 d 10 h
PR fusionados (30 d)
40

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

Todos los issues de apache/cloudberry

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.