hasura / hasura/graphql-engine
Better error handling for unsupported SQL server versions
- Dominant language
- TypeScript
- Stars
- 32.1k
- Forks
- 3k
- PR merge metrics
- PR metrics pending
Description
### Version Information
Server Version: `v2.11.2`
### Environment
Database: `MS SQL Server`
### What is the current behaviour?
When you connect an unsupported SQL server version, you get an error like the following (*this is with SQL Server version 2012*):
```json
[
{
"definition": "MSSQL",
"message": {
"exception": {
"message": "[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]'JSON_QUERY' is not a recognized built-in function name.",
"type": "unsuccessful_return_code"
},
"query": "-- SCHEMA_NAME(..)\nSELECT ISNULL(\n (SELECT object.name, object.schema_id, object.object_id, object.type_desc,\n JSON_QUERY([schema].json) AS [joined_sys_schema],\n JSON_QUERY([column].json) AS [joined_sys_column],\n JSON_QUERY([primary_key].json) AS [joined_sys_primary_key]\n FROM sys.objects object\n CROSS APPLY (SELECT [column].name, [column].column_id, [column].is_nullable, [column].is_identity, [column].is_computed, [column].user_type_id,\n JSON_QUERY([types].json) AS [joined_sys_type],\n JSON_QUERY(ISNULL([relationships].json,'[]')) AS [joined_foreign_key_columns]\n FROM sys.columns [column]\n CROSS APPLY (SELECT name, schema_id, user_type_id FROM sys.types [type]\n WHERE [type].user_type_id = [column].user_type_id\n FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)\n AS [types](json)\n CROSS APPLY (SELECT fk.*,\n referenced_table.name AS joined_referenced_table_name,\n referenced_column.name AS joined_referenced_column_name,\n JSON_QUERY([schema].json) AS [joined_referenced_sys_schema]\n FROM sys.foreign_key_columns [fk],\n sys.objects AS referenced_table,\n sys.columns AS referenced_column\n CROSS APPLY (SELECT [schema].name, [schema].schema_id\n FROM sys.schemas [schema]\n WHERE [schema].schema_id = object.schema_id\n FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)\n AS [schema](json)\n WHERE [object].object_id = fk.parent_object_id\n AND [referenced_table].object_id = fk.referenced_object_id\n AND [referenced_column].object_id = [referenced_table].object_id\n AND [referenced_column].column_id = fk.referenced_column_id\n AND [column].column_id = fk.parent_column_id\n FOR JSON PATH)\n AS [relationships](json)\n WHERE [column].object_id = object.object_id\n FOR JSON PATH)\n AS [column](json)\n CROSS APPLY (SELECT [schema].name, [schema].schema_id\n FROM sys.schemas [schema]\n WHERE [schema].schema_id = object.schema_id\n FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)\n AS [schema](json)\n CROSS APPLY (SELECT pk.name, pk.index_id, JSON_QUERY([cols].json) AS columns\n FROM sys.indexes pk\n CROSS APPLY (SELECT col.name\n FROM sys.index_columns ic\n INNER JOIN sys.columns col\n ON col.column_id = ic.column_id\n AND col.object_id = ic.object_id\n WHERE ic.object_id = pk.object_id\n AND ic.index_id = pk.index_id\n FOR JSON PATH)\n AS [cols](json)\n WHERE pk.object_id = object.object_id\n AND pk.is_primary_key = 1\n FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)\n AS [primary_key](json)\n WHERE object.type_desc IN ('USER_TABLE', 'VIEW')\n FOR JSON PATH)\n , '[]')\n"
},
"name": "source MSSQL",
"reason": "Inconsistent object: database query error",
"type": "source"
}
]
```
### What is the expected behaviour?
A clear indication that Hasura doesn't support this version and information on where to find which version is supported.
### How to reproduce the issue?
See [this](https://hasurahelp.zendesk.com/agent/tickets/5853) or connect a sub-2016 version SQL Server instance to Hasura.
### Keywords
SQL server, MS SQL Server, supported, unsupported, version
Contributor guide
Assessment
This issue has not been assessed yet.