sqlite virtual table silently returns empty rows for unavailable join parameters
@trivikr arbeitet bereits daran.
Seit 22.9.2026.
Bewertung
Dieses Issue wurde noch nicht bewertet.
Beschreibung
Version
main
Platform
All
Subsystem
sqlite
What steps will reproduce the bug?
import { DatabaseSync } from 'node:sqlite';
const db = new DatabaseSync(':memory:');
db.createModule('m', {
columns: [
{ name: 'value', type: 'INTEGER' },
{ name: 'a', type: 'INTEGER', hidden: true },
],
*rows(a) { if (a !== null) yield [a]; },
});
db.exec('CREATE TABLE t (a INTEGER)');
db.exec('INSERT INTO t VALUES (1), (2), (3)');
console.log(db.prepare('SELECT DISTINCT * FROM m(t.a) JOIN t ON t.a = m.a').all());
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
Per SQLite's Enforcing Required Parameters On Table-Valued Functions, xBestIndex() must return SQLITE_CONSTRAINT when a parameter has an EQ constraint whose usable flag is false, so the planner picks an ordering where the parameter is available. Cost estimates alone cannot enforce parameter dependencies.
What do you see instead?
rows() is called with null and the query returns []. xBestIndex() skips constraints with usable == false, accepts the unconstrained plan, and xFilter() passes Null(isolate).
Additional information
No response
- Vorherrschende Sprache
- JavaScript
- Sterne
- 122k
- Forks
- 37.4k
- Ø Merge
- 4 T. 2 Std.
- Gemergte PRs (30 T.)
- 277
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus nodejs/node
-
doc
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
build
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
-
feature request
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Ähnliche Issues
-
Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Automattic/safe-publish#594 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
dream-num/dsh-univer-office#104 ·
-
comp/dashboard invalid P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
NousResearch/hermes-agent#121143 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
avniproject/avni-webapp#1811 ·
-
area/auroraboot area/webui bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100