enable_fts() exhausts iterator columns before populating the index
Maintainer antworten meist innerhalb von 3 Tagen
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 83/100
Rechercherichtung
Lies die Implementierung von Table.enable_fts() und populate_fts(), einschließlich der Trigger-Erstellung, und führe dann die Reproduktion aus dem Issue mit einer In-Memory-Datenbank aus. Prüfe, wie das columns-Iterable zum Erstellen und Befüllen der FTS-Tabelle sowie zum Erstellen der Trigger verwendet wird. Erledigt, wenn ein einmalig durchlaufbarer Iterator mit FTS4 und FTS5 funktioniert, sowohl mit als auch ohne Trigger, und die Eingabe als Liste weiterhin funktioniert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Python
- Sterne
- 2.2k
- Forks
- 215
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
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 simonw/sqlite-utils
-
FTS detection treats table names as LIKE patternsEvtl. vergeben @IlyaKhalafi hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
simonw/sqlite-utils#930 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Contributing docs: local test runs silently skip SpatiaLite and ext.c tests, and the setup steps assume SSH and uvEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
simonw/sqlite-utils#928 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Tests use CliRunner.isolated_filesystem(), which is deprecated and will be removed in Click 9.0Evtl. vergeben @devpryan7792 hat das vor 12 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
simonw/sqlite-utils#916 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
rows_from_file() splits a single-column CSV file on a letter, or raises csv.ErrorEvtl. vergeben @L4XB hat das vor 20 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
simonw/sqlite-utils#907 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
rows_from_file() ignores ignore_extras= and extras_key= for anything that isn't Format.CSVEvtl. vergeben @feiiiiii5 hat das vor 37 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
simonw/sqlite-utils#892 ·
Maintainer antworten meist innerhalb von 3 Tagen
Alle Issues in simonw/sqlite-utils
Ähnliche Issues
-
binding:python bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
The Browser tab fails with a Wayland error when Open Terminal runs from a Wayland desktop sessionOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
open-webui/open-terminal#210 ·
-
triage/confirmed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
agentscope-ai/agentscope#3807 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
NousResearch/hermes-agent#150542 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 91/100
triton-inference-server/server#9069 ·
Maintainer antworten meist innerhalb von 1 Tag