enable_fts() exhausts iterator columns before populating the index
Los mantenedores suelen responder en 3 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 83/100
Línea de trabajo
Lee la implementación de Table.enable_fts() y populate_fts(), incluida la construcción de triggers, y luego ejecuta la reproducción del issue con una base de datos en memoria. Comprueba cómo se usa el iterable columns para crear y rellenar la tabla FTS y construir triggers. Se considera terminado cuando un iterador de un solo uso funciona con FTS4 y FTS5, con y sin triggers, y la entrada como lista sigue funcionando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
Table.enable_fts() accepts columns: Iterable[str], but passing a one-shot iterator raises sqlite3.OperationalError: near ")": syntax error. The same columns supplied as a list work. The FTS virtual table has already been created when the error occurs, so a retry without replace=True also encounters an existing table.
Reproduced locally against main 9c66bafa52ae23d40499c74b0db3b635bcddb876, Python 3.12.14, using an in-memory database:
from sqlite_utils import Database
db = Database(memory=True)
table = db["notes"].insert({"text": "hello"})
table.enable_fts(iter(["text"]))
# sqlite3.OperationalError: near ")": syntax error
Replacing iter(["text"]) with ["text"] succeeds and list(table.search("hello")) returns the record. I reproduced the failure with both FTS4 and FTS5, with and without create_triggers=True.
The iterable is consumed while building CREATE VIRTUAL TABLE, then passed to populate_fts(). Trigger construction also reuses it. Materializing the columns once would preserve the declared iterable contract.
AI assistance: OpenAI Codex inspected the code and ran this reproduction. No live service, user database, or external model call was used.
- Lenguaje dominante
- Python
- Estrellas
- 2.2k
- Forks
- 215
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la 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 simonw/sqlite-utils
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
simonw/sqlite-utils#928 ·
Los mantenedores suelen responder en 3 días
-
Tests use CliRunner.isolated_filesystem(), which is deprecated and will be removed in Click 9.0Posiblemente ocupada @devpryan7792 la tomó hace 11 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
simonw/sqlite-utils#916 ·
Los mantenedores suelen responder en 3 días
-
rows_from_file() splits a single-column CSV file on a letter, or raises csv.ErrorPosiblemente ocupada @L4XB la tomó hace 19 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
simonw/sqlite-utils#907 ·
Los mantenedores suelen responder en 3 días
-
rows_from_file() ignores ignore_extras= and extras_key= for anything that isn't Format.CSVPosiblemente ocupada @feiiiiii5 la tomó hace 37 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
simonw/sqlite-utils#892 ·
Los mantenedores suelen responder en 3 días
-
Raw numpy scalar values get silently stored as corrupted BLOBs instead of being convertedPosiblemente ocupada @TanbirRamim la tomó hace 43 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
simonw/sqlite-utils#876 ·
Los mantenedores suelen responder en 3 días
Todos los issues de simonw/sqlite-utils
Issues similares
-
community enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Hochfrequenz/sapgui.mcp#1039 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
didi/helixharness#18 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
API /search : typer la réponseAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
dataforgoodfr/democracy-watch#46 · 1 reacción ·