{
  "request_duration_ms": 76.50141298654489,
  "sum_trace_duration_ms": 132.87244900129735,
  "num_traces": 43,
  "traces": [
    {
      "type": "sql",
      "start": 210003.353454177,
      "end": 210003.35379898,
      "duration_ms": 0.34480300382710993,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 964, in table_view_traced\n    resolved = await datasette.resolve_table(request)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 2314, in resolve_table\n    table_exists = await db.table_exists(table_name)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/database.py\", line 588, in table_exists\n    results = await self.execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select 1 from sqlite_master where type='table' and name=?",
      "params": [
        "roadside_attractions"
      ]
    },
    {
      "type": "sql",
      "start": 210003.354147643,
      "end": 210003.354755957,
      "duration_ms": 0.6083140033297241,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1389, in check_visibility\n    if not await self.allowed(action=action, resource=resource, actor=actor):\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT parent, child, allow, reason, 'datasette.default_permissions' AS source_plugin FROM (\n                SELECT NULL AS parent, NULL AS child, 1 AS allow, :reason_9128107 AS reason\n            )\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "reason_9128107": "default allow for view-table",
        "action": "view-table",
        "actor": null,
        "actor_id": null,
        "_check_parent": "fixtures",
        "_check_child": "roadside_attractions"
      }
    },
    {
      "type": "sql",
      "start": 210003.355106959,
      "end": 210003.355774287,
      "duration_ms": 0.6673279858659953,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1393, in check_visibility\n    if not await self.allowed(action=action, resource=resource, actor=None):\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT parent, child, allow, reason, 'datasette.default_permissions' AS source_plugin FROM (\n                SELECT NULL AS parent, NULL AS child, 1 AS allow, :reason_9128108 AS reason\n            )\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "reason_9128108": "default allow for view-table",
        "action": "view-table",
        "actor": null,
        "actor_id": null,
        "_check_parent": "fixtures",
        "_check_child": "roadside_attractions"
      }
    },
    {
      "type": "sql",
      "start": 210003.358374366,
      "end": 210003.358737532,
      "duration_ms": 0.3631659783422947,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 935, in table_view\n    response = await table_view_traced(datasette, request)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 988, in table_view_traced\n    view_data = await table_view_data(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1372, in table_view_data\n    results = await db.execute(sql, params, truncate=True, **extra_args)\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select pk, name, address, url, latitude, longitude from roadside_attractions order by pk limit 101",
      "params": {}
    },
    {
      "type": "sql",
      "start": 210003.360075329,
      "end": 210003.362555458,
      "duration_ms": 2.480129012838006,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/asyncinject/__init__.py\", line 132, in worker\n    res = await self._get_awaitable(name, results)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1647, in run_display_columns_and_rows\n    display_columns, display_rows = await display_columns_and_rows(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 168, in display_columns_and_rows\n    await datasette.get_internal_database().execute(\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "SELECT\n            column_name,\n            value\n          FROM metadata_columns\n          WHERE database_name = ?\n            AND resource_name = ?\n            AND key = 'description'",
      "params": [
        "fixtures",
        "roadside_attractions"
      ]
    },
    {
      "type": "sql",
      "start": 210003.360150774,
      "end": 210003.362746732,
      "duration_ms": 2.595957979792729,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/asyncinject/__init__.py\", line 132, in worker\n    res = await self._get_awaitable(name, results)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1774, in extra_metadata\n    tablemetadata = await datasette.get_resource_metadata(database_name, table_name)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 906, in get_resource_metadata\n    rows = await self.get_internal_database().execute(\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "SELECT\n                key,\n                value\n              FROM metadata_resources\n              WHERE database_name = ?\n                AND resource_name = ?",
      "params": [
        "fixtures",
        "roadside_attractions"
      ]
    },
    {
      "type": "sql",
      "start": 210003.360026941,
      "end": 210003.362876213,
      "duration_ms": 2.8492720157373697,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1857, in extra_view_definition\n    return await db.get_view_definition(table_name)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/database.py\", line 812, in get_view_definition\n    return await self.get_table_definition(view, \"view\")\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/database.py\", line 792, in get_table_definition\n    await self.execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select sql from sqlite_master where name = :n and type=:t",
      "params": {
        "n": "roadside_attractions",
        "t": "view"
      }
    },
    {
      "type": "sql",
      "start": 210003.360599002,
      "end": 210003.362986838,
      "duration_ms": 2.387836022535339,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1736, in extra_set_column_type_ui\n    if not await datasette.allowed(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT NULL AS parent, NULL AS child, 0 AS allow, NULL AS reason, NULL AS source_plugin WHERE 0\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "_check_parent": "fixtures",
        "_check_child": "roadside_attractions"
      }
    },
    {
      "type": "sql",
      "start": 210003.360186593,
      "end": 210003.363127036,
      "duration_ms": 2.9404429951682687,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/asyncinject/__init__.py\", line 132, in worker\n    res = await self._get_awaitable(name, results)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1854, in extra_table_definition\n    return await db.get_table_definition(table_name)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/database.py\", line 792, in get_table_definition\n    await self.execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select sql from sqlite_master where name = :n and type=:t",
      "params": {
        "n": "roadside_attractions",
        "t": "table"
      }
    },
    {
      "type": "sql",
      "start": 210003.362372401,
      "end": 210003.383163686,
      "duration_ms": 20.791285001905635,
      "traceback": [
        "  File \"plugins/my_plugin.py\", line 174, in suggest\n    columns = await self.get_columns(self.sql, self.params)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 145, in get_columns\n    await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 0",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.362854002,
      "end": 210003.383747946,
      "duration_ms": 20.89394399081357,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/asyncio/events.py\", line 80, in _run\n    self._context.run(self._callback, *self._args)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/asyncinject/__init__.py\", line 132, in worker\n    res = await self._get_awaitable(name, results)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1776, in extra_metadata\n    rows = await datasette.get_internal_database().execute(\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "SELECT\n                column_name,\n                value\n              FROM metadata_columns\n              WHERE database_name = ?\n                AND resource_name = ?\n                AND key = 'description'",
      "params": [
        "fixtures",
        "roadside_attractions"
      ]
    },
    {
      "type": "sql",
      "start": 210003.363216166,
      "end": 210003.383889979,
      "duration_ms": 20.673813007306308,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/asyncinject/__init__.py\", line 132, in worker\n    res = await self._get_awaitable(name, results)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1854, in extra_table_definition\n    return await db.get_table_definition(table_name)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/database.py\", line 802, in get_table_definition\n    await self.execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select sql from sqlite_master where tbl_name = :n and type='index' and sql is not null",
      "params": {
        "n": "roadside_attractions"
      }
    },
    {
      "type": "sql",
      "start": 210003.36271308,
      "end": 210003.384404637,
      "duration_ms": 21.69155701994896,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1647, in run_display_columns_and_rows\n    display_columns, display_rows = await display_columns_and_rows(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 183, in display_columns_and_rows\n    column_types_map = await datasette.get_column_types(database_name, table_name)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1105, in get_column_types\n    rows = await self.get_internal_database().execute(\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "SELECT column_name, column_type, config FROM column_types WHERE database_name = ? AND resource_name = ?",
      "params": [
        "fixtures",
        "roadside_attractions"
      ]
    },
    {
      "type": "sql",
      "start": 210003.383675713,
      "end": 210003.384554019,
      "duration_ms": 0.878305989317596,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 156, in suggest\n    columns = await self.get_columns(self.sql, self.params)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 145, in get_columns\n    await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 0",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.384803558,
      "end": 210003.385546968,
      "duration_ms": 0.7434099970851094,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 177, in suggest\n    distinct_values = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select pk as value, count(*) as n from limited\n                where value is not null\n                group by value\n                limit 31",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.38570799,
      "end": 210003.386407046,
      "duration_ms": 0.6990559922996908,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 177, in suggest\n    distinct_values = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select name as value, count(*) as n from limited\n                where value is not null\n                group by value\n                limit 31",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.386605425,
      "end": 210003.387828552,
      "duration_ms": 1.2231269793119282,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 177, in suggest\n    distinct_values = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select address as value, count(*) as n from limited\n                where value is not null\n                group by value\n                limit 31",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.388095497,
      "end": 210003.389532603,
      "duration_ms": 1.4371059951372445,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 177, in suggest\n    distinct_values = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select url as value, count(*) as n from limited\n                where value is not null\n                group by value\n                limit 31",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.389842601,
      "end": 210003.390578852,
      "duration_ms": 0.7362510077655315,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 177, in suggest\n    distinct_values = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select latitude as value, count(*) as n from limited\n                where value is not null\n                group by value\n                limit 31",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.390767682,
      "end": 210003.391151976,
      "duration_ms": 0.3842939913738519,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 177, in suggest\n    distinct_values = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select longitude as value, count(*) as n from limited\n                where value is not null\n                group by value\n                limit 31",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.391359175,
      "end": 210003.391969578,
      "duration_ms": 0.610402988968417,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 472, in suggest\n    columns = await self.get_columns(self.sql, self.params)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 145, in get_columns\n    await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 0",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.392204874,
      "end": 210003.392884676,
      "duration_ms": 0.6798020040150732,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 485, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select date(pk) from (\n                    select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 100\n                ) where pk glob \"????-??-*\"",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.393081367,
      "end": 210003.393753647,
      "duration_ms": 0.6722800026182085,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 485, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select date(name) from (\n                    select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 100\n                ) where name glob \"????-??-*\"",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.394026709,
      "end": 210003.394414492,
      "duration_ms": 0.38778301677666605,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 485, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select date(address) from (\n                    select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 100\n                ) where address glob \"????-??-*\"",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.394610396,
      "end": 210003.394956178,
      "duration_ms": 0.34578199847601354,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 485, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select date(url) from (\n                    select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 100\n                ) where url glob \"????-??-*\"",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.395074745,
      "end": 210003.395608295,
      "duration_ms": 0.5335499881766737,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 485, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select date(latitude) from (\n                    select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 100\n                ) where latitude glob \"????-??-*\"",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.395759559,
      "end": 210003.398163319,
      "duration_ms": 2.403760008746758,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 485, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select date(longitude) from (\n                    select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 100\n                ) where longitude glob \"????-??-*\"",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.398318864,
      "end": 210003.398702567,
      "duration_ms": 0.38370300899259746,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 311, in suggest\n    columns = await self.get_columns(self.sql, self.params)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 145, in get_columns\n    await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 0",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.398914598,
      "end": 210003.399548933,
      "duration_ms": 0.6343350105453283,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 329, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select distinct json_type(pk)\n                from limited\n                where pk is not null and pk != ''",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.399705356,
      "end": 210003.401659389,
      "duration_ms": 1.9540330104064196,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 329, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": "malformed JSON",
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select distinct json_type(name)\n                from limited\n                where name is not null and name != ''",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.402014338,
      "end": 210003.402590409,
      "duration_ms": 0.5760710046160966,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 329, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": "malformed JSON",
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select distinct json_type(address)\n                from limited\n                where address is not null and address != ''",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.402893298,
      "end": 210003.405624658,
      "duration_ms": 2.7313599712215364,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 329, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": "malformed JSON",
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select distinct json_type(url)\n                from limited\n                where url is not null and url != ''",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.405803392,
      "end": 210003.406491343,
      "duration_ms": 0.6879509892314672,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 329, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select distinct json_type(latitude)\n                from limited\n                where latitude is not null and latitude != ''",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.406669927,
      "end": 210003.407664561,
      "duration_ms": 0.9946339996531606,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 91, in run_sequential\n    results.append(await fn)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/facets.py\", line 329, in suggest\n    results = await self.ds.execute(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1699, in execute\n    return await self.databases[db_name].execute(\n"
      ],
      "error": null,
      "database": "fixtures",
      "sql": "with limited as (select * from (select pk, name, address, url, latitude, longitude from roadside_attractions ) limit 1000)\n                select distinct json_type(longitude)\n                from limited\n                where longitude is not null and longitude != ''",
      "params": []
    },
    {
      "type": "sql",
      "start": 210003.408078007,
      "end": 210003.414099173,
      "duration_ms": 6.021166016580537,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 988, in table_view_traced\n    view_data = await table_view_data(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 2018, in table_view_data\n    ct_map = await datasette.get_column_types(database_name, table_name)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1105, in get_column_types\n    rows = await self.get_internal_database().execute(\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "SELECT column_name, column_type, config FROM column_types WHERE database_name = ? AND resource_name = ?",
      "params": [
        "fixtures",
        "roadside_attractions"
      ]
    },
    {
      "type": "sql",
      "start": 210003.415600256,
      "end": 210003.416525903,
      "duration_ms": 0.9256470075342804,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1623, in allowed\n    if not await self.allowed(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT parent, child, allow, reason, 'datasette.default_permissions' AS source_plugin FROM (\n                SELECT NULL AS parent, NULL AS child, 1 AS allow, :reason_9128116 AS reason\n            )\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "reason_9128116": "default allow for view-database",
        "action": "view-database",
        "actor": null,
        "actor_id": null,
        "_check_parent": "fixtures",
        "_check_child": null
      }
    },
    {
      "type": "sql",
      "start": 210003.416784069,
      "end": 210003.417569379,
      "duration_ms": 0.7853099959902465,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/views/table.py\", line 1099, in table_view_traced\n    allow_execute_sql=await datasette.allowed(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT parent, child, allow, reason, 'datasette.default_permissions' AS source_plugin FROM (\n                SELECT NULL AS parent, NULL AS child, 1 AS allow, :reason_9128117 AS reason\n            )\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "reason_9128117": "default allow for execute-sql",
        "action": "execute-sql",
        "actor": null,
        "actor_id": null,
        "_check_parent": "fixtures",
        "_check_child": null
      }
    },
    {
      "type": "sql",
      "start": 210003.417808249,
      "end": 210003.418317236,
      "duration_ms": 0.5089869955554605,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1972, in render_template\n    extra_script = await await_me_maybe(extra_script)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/__init__.py\", line 169, in await_me_maybe\n    value = await value\n",
        "  File \"plugins/my_plugin.py\", line 96, in inner\n    await datasette.get_database().execute(\"select 3 * 5\")\n"
      ],
      "error": null,
      "database": "_memory",
      "sql": "select 3 * 5",
      "params": null
    },
    {
      "type": "sql",
      "start": 210003.418730179,
      "end": 210003.419055557,
      "duration_ms": 0.3253780014347285,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 2075, in _asset_urls\n    hook = await await_me_maybe(hook)\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/__init__.py\", line 169, in await_me_maybe\n    value = await value\n",
        "  File \"plugins/my_plugin.py\", line 53, in inner\n    await datasette.get_database().execute(\"select 3 * 5\")\n"
      ],
      "error": null,
      "database": "_memory",
      "sql": "select 3 * 5",
      "params": null
    },
    {
      "type": "sql",
      "start": 210003.419777231,
      "end": 210003.420573868,
      "duration_ms": 0.7966370030771941,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1292, in _crumb_items\n    if await self.allowed(action=\"view-instance\", actor=actor):\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT parent, child, allow, reason, 'datasette.default_permissions' AS source_plugin FROM (\n                SELECT NULL AS parent, NULL AS child, 1 AS allow, :reason_9128120 AS reason\n            )\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "reason_9128120": "default allow for view-instance",
        "action": "view-instance",
        "actor": null,
        "actor_id": null,
        "_check_parent": null,
        "_check_child": null
      }
    },
    {
      "type": "sql",
      "start": 210003.420896692,
      "end": 210003.422371321,
      "duration_ms": 1.4746290107723325,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1296, in _crumb_items\n    if await self.allowed(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT parent, child, allow, reason, 'datasette.default_permissions' AS source_plugin FROM (\n                SELECT NULL AS parent, NULL AS child, 1 AS allow, :reason_9128121 AS reason\n            )\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "reason_9128121": "default allow for view-database",
        "action": "view-database",
        "actor": null,
        "actor_id": null,
        "_check_parent": "fixtures",
        "_check_child": null
      }
    },
    {
      "type": "sql",
      "start": 210003.422628182,
      "end": 210003.424328021,
      "duration_ms": 1.6998390201479197,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1310, in _crumb_items\n    if await self.allowed(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT parent, child, allow, reason, 'datasette.default_permissions' AS source_plugin FROM (\n                SELECT NULL AS parent, NULL AS child, 1 AS allow, :reason_9128122 AS reason\n            )\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "reason_9128122": "default allow for view-table",
        "action": "view-table",
        "actor": null,
        "actor_id": null,
        "_check_parent": "fixtures",
        "_check_child": "roadside_attractions"
      }
    },
    {
      "type": "sql",
      "start": 210003.424760246,
      "end": 210003.426110257,
      "duration_ms": 1.3500109780579805,
      "traceback": [
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/default_menu_links.py\", line 7, in inner\n    if not await datasette.allowed(action=\"debug-menu\", actor=actor):\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/app.py\", line 1634, in allowed\n    result = await check_permission_for_resource(\n",
        "  File \"/usr/local/lib/python3.11/site-packages/datasette/utils/actions_sql.py\", line 580, in check_permission_for_resource\n    result = await datasette.get_internal_database().execute(query, all_params)\n"
      ],
      "error": null,
      "database": "__INTERNAL__",
      "sql": "WITH\nall_rules AS (\n  SELECT NULL AS parent, NULL AS child, 0 AS allow, NULL AS reason, NULL AS source_plugin WHERE 0\n),\nmatched_rules AS (\n  SELECT ar.*,\n    CASE\n      WHEN ar.child IS NOT NULL THEN 2  -- child-level (most specific)\n      WHEN ar.parent IS NOT NULL THEN 1  -- parent-level\n      ELSE 0                             -- root/global\n    END AS depth\n  FROM all_rules ar\n  WHERE (ar.parent IS NULL OR ar.parent = :_check_parent)\n    AND (ar.child IS NULL OR ar.child = :_check_child)\n),\nwinner AS (\n  SELECT *\n  FROM matched_rules\n  ORDER BY\n    depth DESC,                          -- specificity first (higher depth wins)\n    CASE WHEN allow=0 THEN 0 ELSE 1 END, -- then deny over allow\n    source_plugin                        -- stable tie-break\n  LIMIT 1\n)\nSELECT COALESCE((SELECT allow FROM winner), 0) AS is_allowed",
      "params": {
        "_check_parent": null,
        "_check_child": null
      }
    }
  ]
}