From c442c5a9a8f0f81b1a3ef2f23e23e249c99e0c22 Mon Sep 17 00:00:00 2001 From: L-Angel Date: Tue, 19 Jan 2021 13:41:14 +0800 Subject: [PATCH] fix_bugs_for_mssql (#1852) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. add: support xml column type for mssql. 2. fix: array index overflow when getindexs caused by unregular indexname(eg.idx_(tablename)) Co-authored-by: Rick Reviewed-on: https://gitea.com/xorm/xorm/pulls/1852 Reviewed-by: Lunny Xiao Co-authored-by: L-Angel Co-committed-by: L-Angel --- dialects/mssql.go | 2 +- schemas/type.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dialects/mssql.go b/dialects/mssql.go index 5340455d..4504eb55 100644 --- a/dialects/mssql.go +++ b/dialects/mssql.go @@ -538,7 +538,7 @@ WHERE IXS.TYPE_DESC='NONCLUSTERED' and OBJECT_NAME(IXS.OBJECT_ID) =? colName = strings.Trim(colName, "` ") var isRegular bool - if strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName) { + if (strings.HasPrefix(indexName, "IDX_"+tableName) || strings.HasPrefix(indexName, "UQE_"+tableName)) && len(indexName) > (5+len(tableName)) { indexName = indexName[5+len(tableName):] isRegular = true } diff --git a/schemas/type.go b/schemas/type.go index 89459a4d..f0ede296 100644 --- a/schemas/type.go +++ b/schemas/type.go @@ -68,6 +68,10 @@ func (s *SQLType) IsJson() bool { return s.Name == Json || s.Name == Jsonb } +func (s *SQLType) IsXML() bool { + return s.Name == XML +} + var ( Bit = "BIT" TinyInt = "TINYINT" @@ -128,6 +132,7 @@ var ( Json = "JSON" Jsonb = "JSONB" + XML = "XML" Array = "ARRAY" SqlTypes = map[string]int{ @@ -144,6 +149,8 @@ var ( Json: TEXT_TYPE, Jsonb: TEXT_TYPE, + XML: TEXT_TYPE, + Char: TEXT_TYPE, NChar: TEXT_TYPE, Varchar: TEXT_TYPE,