From 3452c43a51dc7739453db53373c11809f8785a84 Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Thu, 31 Mar 2022 15:18:15 -0700 Subject: [PATCH] handle hierarchyid correctly (#1450) --- .../QueryExecution/Contracts/DbColumnWrapper.cs | 2 +- .../QueryExecution/DataTypeTests.cs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs index 3758cf7d..497649ab 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/QueryExecution/Contracts/DbColumnWrapper.cs @@ -243,7 +243,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.Contracts SqlDbType = SqlDbType.NVarChar; break; default: - SqlDbType = DataTypeName.EndsWith(".sys.hierarchyid") ? SqlDbType.NVarChar : SqlDbType.Udt; + SqlDbType = DataTypeName.EndsWith(".sys.hierarchyid") ? SqlDbType.Binary : SqlDbType.Udt; break; } } diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs index 2970befe..fe8a645c 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/QueryExecution/DataTypeTests.cs @@ -196,6 +196,18 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.QueryExecution await ExecuteAndVerifyResult("SELECT geometry::STGeomFromText('POINT (-96.70 40.84)',4326) [Geo]", "0xE6100000010CCDCCCCCCCC2C58C0EC51B81E856B4440"); } + [Test] + public async Task SysnameTypeTest() + { + await ExecuteAndVerifyResult("SELECT CAST('testsysname' AS SYSNAME)", "testsysname"); + } + + [Test] + public async Task HierarchyIdTypeTest() + { + await ExecuteAndVerifyResult("SELECT CAST(0x58 as hierarchyid)", "0x58"); + } + private async Task ExecuteAndVerifyResult(string queryText, string expectedValue) { // Given a connection to a live database