Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions datasette/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ async def inspect_(files, sqlite_extensions):
app = Datasette([], immutables=files, sqlite_extensions=sqlite_extensions)
data = {}
for name, database in app.databases.items():
database.count_limit = 10**10
counts = await database.table_counts(limit=3600 * 1000)
data[name] = {
"hash": database.hash,
Expand Down
15 changes: 15 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,21 @@ def test_inspect_cli_writes_to_file(app_client):
assert ["fixtures"] == list(data.keys())


def test_inspect_cli_returns_exact_counts_for_large_tables(tmp_path):
db_path = tmp_path / "large.db"
conn = sqlite3.connect(db_path)
conn.execute("create table t(id integer primary key)")
conn.executemany("insert into t(id) values (?)", [(i,) for i in range(10002)])
conn.commit()
conn.close()

runner = CliRunner()
result = runner.invoke(cli, ["inspect", str(db_path)])
assert result.exit_code == 0, result.output
data = json.loads(result.output)
assert data["large"]["tables"]["t"]["count"] == 10002


def test_serve_with_inspect_file_prepopulates_table_counts_cache():
inspect_data = {"fixtures": {"tables": {"hithere": {"count": 44}}}}
with make_app_client(inspect_data=inspect_data, is_immutable=True) as client:
Expand Down
Loading