Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

sqlite virtual table silently returns empty rows for unavailable join parameters

未關閉
#66,214 0 則留言 0 個 reaction 已指派 1 人 在 GitHub 檢視

@trivikr 已經在處理了。

開始於 2026年9月22日。

評估

這個 Issue 還沒有評估資料。

描述

sqlite
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

主要語言
JavaScript
星號
122k
分支
37.4k
平均合併
4 天 2 小時
30 天內合併 PR
277

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

nodejs/node 的其他 Issue

查看 nodejs/node 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。