id,node_id,number,state,locked,title,user,user_label,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,assignee_label,milestone,milestone_label,draft,head,base,author_association,repo,repo_label,url,merged_by,merged_by_label,auto_merge 313007483,MDExOlB1bGxSZXF1ZXN0MzEzMDA3NDgz,56,closed,0,Escape the table name in populate_fts and search.,49260,amjith,"The table names weren't escaped using double quotes in the populate_fts method. Reproducible case: ``` >>> import sqlite_utils >>> db = sqlite_utils.Database(""abc.db"") >>> db[""http://example.com""].insert_all([ ... {""id"": 1, ""age"": 4, ""name"": ""Cleo""}, ... {""id"": 2, ""age"": 2, ""name"": ""Pancakes""} ... ], pk=""id"") >>> db[""http://example.com""].enable_fts([""name""]) Traceback (most recent call last): File """", line 1, in db[""http://example.com""].enable_fts([""name""]) File ""/home/amjith/.virtualenvs/itsysearch/lib/python3.7/site-packages/sqlite_utils/db.py"", l ine 705, in enable_fts self.populate_fts(columns) File ""/home/amjith/.virtualenvs/itsysearch/lib/python3.7/site-packages/sqlite_utils/db.py"", l ine 715, in populate_fts self.db.conn.executescript(sql) sqlite3.OperationalError: unrecognized token: "":"" >>> ```",2019-09-01T06:29:05Z,2019-09-02T17:23:21Z,2019-09-02T17:23:21Z,,79852e97ecb69b88da87da0cba2a55887cf83bda,,,,,0,83ca4c802f5d5102e73ff366e61514ded81dc7a1,cb70f7d10996b844154bf3da88779dd1f65590bc,CONTRIBUTOR,140912432,sqlite-utils,https://github.com/simonw/sqlite-utils/pull/56,,, 313105634,MDExOlB1bGxSZXF1ZXN0MzEzMTA1NjM0,57,closed,0,Add triggers while enabling FTS,49260,amjith,"This adds the option for a user to set up triggers in the database to keep their FTS table in sync with the parent table. Ref: https://sqlite.org/fts5.html#external_content_and_contentless_tables I would prefer to make the creation of triggers the default behavior, but that will break existing usage where people have been calling `populate_fts` after inserting new rows. I am happy to make changes to the PR as you see fit. ",2019-09-02T04:23:40Z,2019-09-03T01:03:59Z,2019-09-02T23:42:29Z,2019-09-02T23:42:29Z,405e092d5916e70df10f82d15e9c052aa9ee8d80,,,,,0,e01943271b17115fbe0e81d523126d2fb1c7c24b,cb70f7d10996b844154bf3da88779dd1f65590bc,CONTRIBUTOR,140912432,sqlite-utils,https://github.com/simonw/sqlite-utils/pull/57,,, 434085235,MDExOlB1bGxSZXF1ZXN0NDM0MDg1MjM1,848,closed,0,Reload support for config_dir mode.,49260,amjith,"A reference implementation for adding support to reload when datasette is in the config_dir mode. This implementation is flawed since it is watching the entire directory and any changes to the database will reload the server and adding unrelated files to the directory will also reload the server. ",2020-06-14T02:34:46Z,2020-07-03T02:44:54Z,2020-07-03T02:44:53Z,,888538efdbf545c0df524ca590a17fb6c6fa2419,,,,,0,0d100d15aca93fae200b3bc2e29dfd60aaa4b384,57879dc8b346a435804a9e45ffaacbf2a0228bc6,CONTRIBUTOR,107914493,datasette,https://github.com/simonw/datasette/pull/848,,, 443823040,MDExOlB1bGxSZXF1ZXN0NDQzODIzMDQw,890,closed,0,Load only python files from plugins-dir.,49260,amjith,"The current behavior for `--plugins-dir` is to load every file in that folder as a python module. This can result in errors if there are non-python files in the plugins dir (such as .mypy_cache). This PR restricts the module loading to only python files. ",2020-07-03T02:47:32Z,2020-07-03T03:08:33Z,2020-07-03T03:08:33Z,2020-07-03T03:08:33Z,ea99a4431ce5bc2d65a3496da5b38e1986550a96,,,,,0,745af3b72d95d91f3ccd703f4fab819bc9f4b6a4,57879dc8b346a435804a9e45ffaacbf2a0228bc6,CONTRIBUTOR,107914493,datasette,https://github.com/simonw/datasette/pull/890,,,