From 39ce4774f7b1d58ac51b9d411d8bb18de5164eb4 Mon Sep 17 00:00:00 2001 From: "grafana-delivery-bot[bot]" <132647405+grafana-delivery-bot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 21:00:59 +0100 Subject: [PATCH] [v11.0.x] MSSQL: Add `SQL_VARIANT` converter and update test (#86469) MSSQL: Add `SQL_VARIANT` converter and update test (#85823) Add SQL_VARIANT converter and update test (cherry picked from commit 420067a7e138ea60ed316c3a0938275c14ee1d98) Co-authored-by: Andreas Christou --- pkg/tsdb/mssql/mssql.go | 15 +++++++++++++++ pkg/tsdb/mssql/mssql_test.go | 4 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/tsdb/mssql/mssql.go b/pkg/tsdb/mssql/mssql.go index 368e0141847..3f6a4fae44d 100644 --- a/pkg/tsdb/mssql/mssql.go +++ b/pkg/tsdb/mssql/mssql.go @@ -403,5 +403,20 @@ func (t *mssqlQueryResultTransformer) GetConverterList() []sqlutil.StringConvert }, }, }, + { + Name: "handle SQL_VARIANT", + InputScanKind: reflect.Pointer, + InputTypeName: "SQL_VARIANT", + ConversionFunc: func(in *string) (*string, error) { return in, nil }, + Replacer: &sqlutil.StringFieldReplacer{ + OutputFieldType: data.FieldTypeNullableString, + ReplaceFunc: func(in *string) (any, error) { + if in == nil { + return nil, nil + } + return in, nil + }, + }, + }, } } diff --git a/pkg/tsdb/mssql/mssql_test.go b/pkg/tsdb/mssql/mssql_test.go index 77b2c1f4fbf..f424fb0016f 100644 --- a/pkg/tsdb/mssql/mssql_test.go +++ b/pkg/tsdb/mssql/mssql_test.go @@ -92,6 +92,7 @@ func TestMSSQL(t *testing.T) { c_datetimeoffset datetimeoffset, c_uuid uniqueidentifier + c_sql_variant sql_variant ) ` @@ -114,7 +115,7 @@ func TestMSSQL(t *testing.T) { 'char10', 'varchar10', 'text', N'☺nchar12☺', N'☺nvarchar12☺', N'☺text☺', CAST('%s' AS DATETIME), CAST('%s' AS DATETIME2), CAST('%s' AS SMALLDATETIME), CAST('%s' AS DATE), CAST('%s' AS TIME), SWITCHOFFSET(CAST('%s' AS DATETIMEOFFSET), '-07:00'), - CONVERT(uniqueidentifier, '%s') + CONVERT(uniqueidentifier, '%s'), 'test-sql-variant' `, d, d2, d, d, d, d2, uuid) _, err = db.Exec(sql) @@ -170,6 +171,7 @@ func TestMSSQL(t *testing.T) { require.Equal(t, dt2.In(time.FixedZone("UTC-7", int(-7*60*60))).Unix(), (*frames[0].Fields[22].At(0).(*time.Time)).Unix()) require.Equal(t, uuid, *frames[0].Fields[23].At(0).(*string)) + require.Equal(t, "test-sql-variant", *frames[0].Fields[24].At(0).(*string)) }) })