Screenshots/recordings
No response
Superset version
6.1.0
Python version
3.9
Node version
16
Browser
Chrome
Additional context
Superset version
6.1.0
What's the issue?
When SQL Lab initializes, it fetches the database list via:
GET /api/v1/database/?q=(filters:!((col:database_name,opr:neq,value:examples)))
No page_size is specified, so FAB defaults to 20 results. The response is dispatched as SET_DATABASES, populating the Redux databases map with only those 20 entries (keyed by integer id).
When a user's saved tab has a database_id that doesn't appear in the first 20 results, databases[dbId] is undefined -> the frontend evaluates F = isEmpty(databases[dbId]) as true -> the yellow warning banner appears:
The database that was used to generate this query could not be found
Choose one of the available databases on the left panel.
The database exists, permissions are correct, and the tab state in the backend is valid. This is a pure frontend state population problem. Reloading the page sometimes resolves it (timing-dependent). Clicking the database in the left panel always resolves it (that search uses page_size=1000 and correctly finds the database).
Steps to reproduce
- Have a Superset instance with more than 20 databases
- Ensure a user has a saved SQL Lab tab whose
database_id is not among the first 20 results of GET /api/v1/database/ (default sort)
- Open SQL Lab
- Observe the yellow "database not found" banner on that tab despite the database being visible and selectable in the left panel
Expected behavior
SQL Lab loads without the "database not found" error. All saved tabs display correctly regardless of how many databases exist.
Actual behavior
Any user whose saved tab references a database outside the first 20 API results sees the error on every fresh SQL Lab load.
Root cause
GET /api/v1/database/ without an explicit page_size returns FAB's default of 20 rows. The SQL Lab init code does not request a larger page size or paginate through results. The Redux databases map is
therefore incomplete.
Mainly - SQL Lab entry bundle, SET_DATABASES reducer.
Workaround
Patch DatabaseRestApi.page_size at app startup via FLASK_APP_MUTATOR:
def FLASK_APP_MUTATOR(app):
from superset.databases.api import DatabaseRestApi
DatabaseRestApi.page_size = 100000
This causes the unpaginated init call to return all databases. DatabaseRestApi.max_page_size is already -1 (unlimited), so no server-side cap blocks this.
Proposed fix
Option A — explicitly request all databases
Option B — defer tab rendering until SET_DATABASES is fully populated, then fall back to a targeted fetch for any dbId still missing from the map.
Environment
- Superset 6.1.0
- ~885 databases in the instance
- FAB default page_size: 20
- DatabaseRestApi.max_page_size: -1 (unlimited)
Checklist
Screenshots/recordings
No response
Superset version
6.1.0
Python version
3.9
Node version
16
Browser
Chrome
Additional context
Superset version
6.1.0
What's the issue?
When SQL Lab initializes, it fetches the database list via:
GET /api/v1/database/?q=(filters:!((col:database_name,opr:neq,value:examples)))
No
page_sizeis specified, so FAB defaults to 20 results. The response is dispatched asSET_DATABASES, populating the Reduxdatabasesmap with only those 20 entries (keyed by integerid).When a user's saved tab has a
database_idthat doesn't appear in the first 20 results,databases[dbId]isundefined-> the frontend evaluatesF = isEmpty(databases[dbId])astrue-> the yellow warning banner appears:The database exists, permissions are correct, and the tab state in the backend is valid. This is a pure frontend state population problem. Reloading the page sometimes resolves it (timing-dependent). Clicking the database in the left panel always resolves it (that search uses
page_size=1000and correctly finds the database).Steps to reproduce
database_idis not among the first 20 results ofGET /api/v1/database/(default sort)Expected behavior
SQL Lab loads without the "database not found" error. All saved tabs display correctly regardless of how many databases exist.
Actual behavior
Any user whose saved tab references a database outside the first 20 API results sees the error on every fresh SQL Lab load.
Root cause
GET /api/v1/database/without an explicitpage_sizereturns FAB's default of 20 rows. The SQL Lab init code does not request a larger page size or paginate through results. The Reduxdatabasesmap istherefore incomplete.
Mainly - SQL Lab entry bundle,
SET_DATABASESreducer.Workaround
Patch DatabaseRestApi.page_size at app startup via FLASK_APP_MUTATOR:
This causes the unpaginated init call to return all databases. DatabaseRestApi.max_page_size is already -1 (unlimited), so no server-side cap blocks this.
Proposed fix
Option A — explicitly request all databases
Option B — defer tab rendering until SET_DATABASES is fully populated, then fall back to a targeted fetch for any dbId still missing from the map.
Environment
Checklist