Console Data/manage tab crashes after tracking any MySQL (GDC) table — "getTableInfo is not a function" (Self-Hosted EE)
Version Information
Server Version: v2.41.0 (root-cause code is unchanged through v2.50.0 — see below) CLI Version (for CLI related issue): 2.36.1
Environment
EE (Self-Hosted Enterprise Edition, trial license)
Data connector agent: hasura/graphql-data-connector:v2.41.0 (MySQL), running as a sidecar; engine reaches it at http://localhost:8081/api/v1/mysql.
What is the current behaviour?
After tracking any table from a MySQL (GDC / data connector) source, the Console's Data manager (/console/data/manage) crashes on load with the error boundary "Something went wrong" and:
TypeError: <minified>.getTableInfo is not a function (inside an Array.forEach).
Because the crash happens while the Data manager builds the sources/tables tree on page load, it takes down the entire Data tab for ALL sources (Postgres included), not just the MySQL source. Untracking the MySQL table (<kind>_untrack_table) or dropping the source (<kind>_drop_source) restores the console immediately.
Everything else works: the GraphQL API, queries against the tracked MySQL table, and other console routes (e.g. /console/api/api-explorer) are all fine. Only the Data manager UI is affected.
What is the expected behaviour?
Tracking a MySQL/GDC table should not crash the Data manager. GDC sources should be handled by the GDC introspection path instead of the legacy native-driver schema loader, and/or the legacy call to the optional getTableInfo should be guarded.
How to reproduce the issue?
- Self-hosted engine (EE license) with the
hasura/graphql-data-connectoragent connected as a MySQL data connector. - Connect a MySQL source via the Console.
- Track any table on that source (via Console or
<kind>_track_table). - Open or reload
/console/data/manage→ the whole Data tab crashes ("Something went wrong").
Screenshots or Screencast
Please provide any traces or logs that could help here.
Browser console stack trace:
TypeError: .getTableInfo is not a function at .../pro-console/assets/channel/versioned/v2.41.0/main..js (Array.forEach)
Root cause (traced in the OSS console source):
- File:
frontend/libs/console/legacy-ce/src/lib/components/Services/Data/DataActions.js - Function
getDatabaseTableTypeInfoForAllSourcesdoes:schemaRequests.forEach(({ sourceType = 'postgres', sourceName, tables }) => { if (!tables.length) return; const sql = services[sourceType].getTableInfo(tables); ... }) services[sourceType]only implements native drivers (postgres, mssql, bigquery, cockroach, citus — each definesgetTableInfo). MySQL is a GDC source and has nogetTableInfohere (the interface indataSources/index.tseven types it as optional:getTableInfo?).- The call is unguarded and GDC/data-connector sources are not filtered out before the loop, so any tracked GDC table makes the loop throw and the error boundary takes down the whole Data manager.
- This exact code is still present and unguarded on
masterand at tagv2.50.0.
Any possible solutions/workarounds you're aware of?
Fix ideas:
- Guard the call:
if (!services[sourceType]?.getTableInfo) return;(or?.-call it), and/or - Route data-connector sources to the GDC introspection path (
features/DataSource/gdc/introspection, which already implementsGetTableInfoviarunMetadataQuery) instead of the legacyservices[sourceType].getTableInfo.
Workaround (keeps the tracked table, restores the console):
- Operate the MySQL source via the metadata API / CLI (GitOps) and avoid the Data tab; use
/console/api/api-explorerfor GraphiQL. - To recover a crashed console:
<kind>_untrack_table(removes only the table) or<kind>_drop_source(removes the source).
Keywords
getTableInfo, data connector, GDC, MySQL, MariaDB, console crash, Data manage, manage-database, self-hosted, EE, "is not a function"
Source: hasura/graphql-engine