home / github / issues

Menu
  • Search all tables
  • GraphQL API

issues: 806918878

This data as json

id node_id number title user state locked assignee milestone comments created_at updated_at closed_at author_association pull_request body repo type active_lock_reason performed_via_github_app reactions draft state_reason
806918878 MDExOlB1bGxSZXF1ZXN0NTcyMjU0MTAz 1223 Add compile option to Dockerfile to fix failing test (fixes #696) 7476523 closed 0     2 2021-02-12T03:38:05Z 2021-03-07T12:01:12Z 2021-03-07T07:41:17Z CONTRIBUTOR simonw/datasette/pulls/1223

This test was failing when run inside the Docker container: test_searchable[/fixtures/searchable.json?_search=te*+AND+do*&_searchmode=raw-expected_rows3],

with this error:

``` def test_searchable(app_client, path, expected_rows): response = app_client.get(path)

  assert expected_rows == response.json["rows"]

E AssertionError: assert [[1, 'barry c...sel', 'puma']] == [] E Left contains 2 more items, first extra item: [1, 'barry cat', 'terry dog', 'panther'] E Full diff: E + [] E - [[1, 'barry cat', 'terry dog', 'panther'], E - [2, 'terry dog', 'sara weasel', 'puma']] ```

The issue was that the version of sqlite3 built inside the Docker container was built with FTS3 and FTS4 enabled, but without the SQLITE_ENABLE_FTS3_PARENTHESIS compile option passed, which adds support for using AND and NOT within match expressions (see https://sqlite.org/fts3.html#compiling_and_enabling_fts3_and_fts4 and https://www.sqlite.org/compile.html).

Without this, the AND used in the search in this test was being interpreted as a literal string, and so no matches were found. Adding this compile option fixes this.


I actually ran into this issue because the same test was failing when I ran the test suite on my own machine, outside of Docker, and so I eventually tracked this down to my system sqlite3 also being compiled without this option.

I wonder if this is a sign of a slightly deeper issue, that Datasette can silently behave differently based on the version and compilation of sqlite3 it is being used with. On my own system I fixed the test suite by running pip install pysqlite3-binary, so that this would be picked up instead of the sqlite package, as this seems to be compiled using this option, . Maybe using pysqlite3-binary could be installed/recommended by default so a more deterministic version of sqlite is used? Or there could be some feature detection done on the available sqlite version, to know what features are available and can be used/tested?

107914493 pull    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1223/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
0  

Links from other tables

  • 0 rows from issues_id in issues_labels
  • 2 rows from issue in issue_comments
Powered by Datasette · Queries took 1.127ms · About: github-to-sqlite