diff --git a/datasette/app.py b/datasette/app.py index fa5e90e3..c2e685ee 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -69,6 +69,7 @@ from .utils import ( async_call_with_supported_arguments, await_me_maybe, call_with_supported_arguments, + detect_json1, display_actor, escape_css_string, escape_sqlite, @@ -1172,9 +1173,8 @@ class Datasette: conn = sqlite3.connect(":memory:") self._prepare_connection(conn, "_memory") sqlite_version = conn.execute("select sqlite_version()").fetchone()[0] - sqlite_extensions = {} + sqlite_extensions = {"json1": detect_json1(conn)} for extension, testsql, hasversion in ( - ("json1", "SELECT json('{}')", False), ("spatialite", "SELECT spatialite_version()", True), ): try: diff --git a/tests/test_api.py b/tests/test_api.py index 01c9bb79..fbbe3f67 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -835,6 +835,10 @@ async def test_versions_json(ds_client): assert "version" in data["sqlite"] assert "fts_versions" in data["sqlite"] assert "compile_options" in data["sqlite"] + # By default, the json1 extension is enabled in the SQLite + # provided by the `ubuntu-latest` github actions runner, and + # all versions of SQLite from 3.38.0 onwards + assert data["sqlite"]["extensions"]["json1"] @pytest.mark.asyncio