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-connector agent 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
getDatabaseTableTypeInfoForAllSources does:
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 defines getTableInfo). MySQL is a GDC source and has no getTableInfo here (the interface in dataSources/index.ts even 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
master and at tag v2.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 implements GetTableInfo via runMetadataQuery) instead of the legacy services[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-explorer for 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"
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 athttp://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 anArray.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
getTableInfoshould be guarded.How to reproduce the issue?
hasura/graphql-data-connectoragent connected as a MySQL data connector.<kind>_track_table)./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):
frontend/libs/console/legacy-ce/src/lib/components/Services/Data/DataActions.jsgetDatabaseTableTypeInfoForAllSourcesdoes: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?).masterand at tagv2.50.0.Any possible solutions/workarounds you're aware of?
Fix ideas:
if (!services[sourceType]?.getTableInfo) return;(or?.-call it), and/orfeatures/DataSource/gdc/introspection, which already implementsGetTableInfoviarunMetadataQuery) instead of the legacyservices[sourceType].getTableInfo.Workaround (keeps the tracked table, restores the console):
/console/api/api-explorerfor GraphiQL.<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"