sqlite: re-filtering a virtual-table cursor skips generator cleanup
@trivikr ya está trabajando en esto.
Desde el 22/9/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Version
main
Platform
N/A
Subsystem
sqlite
What steps will reproduce the bug?
import { DatabaseSync } from 'node:sqlite';
const db = new DatabaseSync(':memory:');
let cleaned = 0;
db.createModule('m', {
columns: [{ name: 'input', type: 'INTEGER', hidden: true }],
*rows(input) {
try { yield [input]; } finally { cleaned++; }
},
});
db.exec('CREATE TABLE t(a); INSERT INTO t VALUES (1), (2)');
db.prepare('SELECT a FROM t WHERE EXISTS(SELECT 1 FROM m(t.a))').all();
console.log(cleaned); // 1, expected 2
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
Both rows() calls (for t.a = 1 and t.a = 2) run their finally, so cleaned is 2.
What do you see instead?
cleaned is 1; the first generator is suspended and discarded by the re-filter and its finally never runs.
Additional information
No response
- Lenguaje dominante
- JavaScript
- Estrellas
- 122k
- Forks
- 37.4k
- Merge medio
- 4 d 3 h
- PR fusionados (30 d)
- 279
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de nodejs/node
-
doc
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
build
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
feature request
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Todos los issues de nodejs/node
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
palladius/rails8-app-on-gcp#145 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
dotenvx/dotenv-vscode#139 ·
-
test-change-proposal
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
web-platform-tests/interop#1455 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
corsairdev/corsair#1764 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100