enable_fts() exhausts iterator columns before populating the index
Maintainer thường phản hồi trong vòng 3 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 83/100
Hướng nghiên cứu
Đọc phần triển khai của Table.enable_fts() và populate_fts(), bao gồm cả việc xây dựng trigger, sau đó chạy cách tái hiện trong issue trên cơ sở dữ liệu trong bộ nhớ. Kiểm tra cách iterable columns được dùng để tạo và nạp dữ liệu vào bảng FTS cũng như xây dựng trigger. Hoàn thành khi một iterator chỉ dùng được một lần hoạt động với cả FTS4 và FTS5, có hoặc không có trigger, và đầu vào dạng danh sách vẫn hoạt động.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Python
- Star
- 2.2k
- Fork
- 215
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của simonw/sqlite-utils
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
simonw/sqlite-utils#928 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Tests use CliRunner.isolated_filesystem(), which is deprecated and will be removed in Click 9.0Có thể đã có người làm @devpryan7792 đã nhận 11 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
simonw/sqlite-utils#916 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
rows_from_file() splits a single-column CSV file on a letter, or raises csv.ErrorCó thể đã có người làm @L4XB đã nhận 20 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
simonw/sqlite-utils#907 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
rows_from_file() ignores ignore_extras= and extras_key= for anything that isn't Format.CSVCó thể đã có người làm @feiiiiii5 đã nhận 37 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
simonw/sqlite-utils#892 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Raw numpy scalar values get silently stored as corrupted BLOBs instead of being convertedCó thể đã có người làm @TanbirRamim đã nhận 43 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
simonw/sqlite-utils#876 ·
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của simonw/sqlite-utils
Issue tương tự
-
area/test type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Clodmony/starship-coop#70 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
punitarani/fli#270 ·
-
🐛 Bug 🔔 Pending processing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
jumpserver/jumpserver#17980 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
community enhancement good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Claiming namespace `prodmetrics`Đang mởnamespace
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 60/100
EclipseFdn/open-vsx.org#15341 ·
Maintainer thường phản hồi trong vòng 1 ngày