Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Bug] GPORCA: ERROR "btree index keys must be ordered by attribute" when a qual references an INCLUDE column

Aperta
#2,026 1 commento 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
52/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
c, postgresql, sql
Ambito
databases

Direzione di ricerca

Start by reproducing the SQL examples with GPORCA enabled, then compare the plans and results with the optimizer disabled. Trace how the btree INCLUDE column reaches the Index Cond; done means INCLUDE columns are not used as scan keys and the queries complete without the runtime error.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

type: Bug
Apache Cloudberry version

No response

What happened

With GPORCA (optimizer = on), a qual on a btree index's INCLUDE (non-key) column can be pushed into the Index Cond. INCLUDE columns are payload only and are not searchable, so the executor
rejects the scan keys at runtime:

ERROR:  btree index keys must be ordered by attribute (nbtutils.c:799)

The Postgres planner (optimizer = off) is not affected. The table does not need to contain any rows.

What you think should happen instead

No response

How to reproduce
CREATE TABLE c2t(a int, b int) DISTRIBUTED BY (a);
CREATE INDEX ci1 ON c2t USING btree (a) INCLUDE (b);

SET optimizer = on;
SELECT a, b FROM c2t WHERE b IS NULL;
-- ERROR:  btree index keys must be ordered by attribute (nbtutils.c:799)  (seg2 slice1 ...)

The plan puts the INCLUDE column b into the Index Cond:

EXPLAIN (COSTS OFF) SELECT a, b FROM c2t WHERE b IS NULL;

 Gather Motion 3:1  (slice1; segments: 3)
   ->  Index Scan using ci1 on c2t
         Index Cond: (b IS NULL)
 Optimizer: GPORCA

Same error with GROUP BY and with an index whose INCLUDE list repeats a key column:

CREATE TABLE c1t(a int, b int) DISTRIBUTED BY (a);
CREATE INDEX ci0 ON c1t USING btree (a) INCLUDE (a, b);
SET optimizer = on;
SELECT a, b FROM c1t WHERE b IS NULL GROUP BY a, b;
-- ERROR:  btree index keys must be ordered by attribute (nbtutils.c:799)

With SET optimizer = off; all of the above return the correct rows.

Operating System

any

Anything else

No response

Are you willing to submit PR?
  • Yes, I am willing to submit a PR!
Code of Conduct
Lingua principale
C
Stelle
1.4k
Fork
248
Merge medio
4g 10h
PR unite (30g)
40

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/cloudberry

Tutte le issue di apache/cloudberry

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.