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

`sql_check keys` is O(|L| x |R|) per probe and reports "unmatched keys found" for any key subset

Aperta
#1,491 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
sql, typescript

Direzione di ricerca

Start with checkKeys in packages/opencode/src/altimate/tools/sql-check.ts (around lines 314-347), where the correlated EXISTS probes are built, then read the verdict logic near line 382. The work spans query shape, the prefix/suffix probe and the reported wording, so it needs more context than a first contribution usually has. Done means 7k x 130k distinct keys finish in under 5 s, a left-subset result reports complete left coverage, and integer keys produce no prefix/suffix findings.

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

Descrizione

Problem

sql_check in keys mode can run for minutes on large tables and then reports "unmatched keys found" even when every left key matches a right key.

Mechanism

  • checkKeys (packages/opencode/src/altimate/tools/sql-check.ts:314-347) computes count(...) and exists(...) as correlated EXISTS over l x r with functions applied to both sides (LOWER(TRIM()), regexp_replace, a leading-zero CASE). The prefix_suffix probe is a non-equi SUBSTR comparison. None can use a hash join, so each probe is |L| x |R|.
  • The verdict (sql-check.ts:382) says "unmatched keys found" unless matched_exact equals both distinct counts, so a lookup of keys into a larger dimension table always "fails". Integer IDs also trigger a spurious prefix/suffix difference, because 12 is a prefix of 123.

Evidence

  • 119 recorded keys checks; 32 took over 30 s (3,170 s total, 10 sessions); one took 360 s with nothing else running. Size: 6,696 left keys x 127,600 right keys, about 854M pairs times seven probes.
  • 71 of 87 "unmatched keys found" verdicts had every left key matched exactly; 53 of those also flagged a spurious prefix/suffix difference.

Impact

Time (consumes budget in sessions using gpt-5.6-sol) and a misleading verdict.

Proposed fix

  • Compute the normalised forms once per side in CTEs and match with equality joins.
  • Run the prefix/suffix probe on a bounded sample, or only over unmatched keys.
  • Report left coverage ("left subset of right: 6,696/6,696") separately from right coverage and word the verdict accordingly.
  • Skip text-format probes when both columns are integer-typed.

Acceptance check

  • 7k x 130k distinct keys finish in under 5 s.
  • Left keys fully contained in a larger right set yield a verdict that says left coverage is complete.
  • Integer keys do not produce prefix/suffix findings.
Lingua principale
TypeScript
Stelle
810
Fork
121
Merge medio
1g 12h
PR unite (30g)
94

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

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 AltimateAI/altimate-code

Tutte le issue di AltimateAI/altimate-code

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.