From 08357eeb31e2e06a4d81d40d9727461456cc9922 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 6 May 2014 11:25:50 +0800 Subject: [PATCH 1/2] mssql bug fixed --- mssql_dialect.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mssql_dialect.go b/mssql_dialect.go index 55940136..5ceca9d4 100644 --- a/mssql_dialect.go +++ b/mssql_dialect.go @@ -203,10 +203,7 @@ func (db *mssql) GetIndexes(tableName string) (map[string]*core.Index, error) { s := `SELECT IXS.NAME AS [INDEX_NAME], C.NAME AS [COLUMN_NAME], -IXS.is_unique AS [IS_UNIQUE], -CASE IXCS.IS_INCLUDED_COLUMN -WHEN 0 THEN 'NONE' -ELSE 'INCLUDED' END AS [IS_INCLUDED_COLUMN] +IXS.is_unique AS [IS_UNIQUE] FROM SYS.INDEXES IXS INNER JOIN SYS.INDEX_COLUMNS IXCS ON IXS.OBJECT_ID=IXCS.OBJECT_ID AND IXS.INDEX_ID = IXCS.INDEX_ID @@ -214,6 +211,7 @@ INNER JOIN SYS.COLUMNS C ON IXS.OBJECT_ID=C.OBJECT_ID AND IXCS.COLUMN_ID=C.COLUMN_ID WHERE IXS.TYPE_DESC='NONCLUSTERED' and OBJECT_NAME(IXS.OBJECT_ID) =? ` + rows, err := db.DB().Query(s, args...) if err != nil { return nil, err @@ -224,7 +222,7 @@ WHERE IXS.TYPE_DESC='NONCLUSTERED' and OBJECT_NAME(IXS.OBJECT_ID) =? var indexType int var indexName, colName, isUnique string - err = rows.Scan(&indexName, &colName, &isUnique, nil) + err = rows.Scan(&indexName, &colName, &isUnique) if err != nil { return nil, err } From 9347c8ab3e55da28f8a44e973acc913420ebf0b3 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 6 May 2014 14:19:37 +0800 Subject: [PATCH 2/2] bug fixed for mssql limit --- statement.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/statement.go b/statement.go index 5185c91e..f5c122cb 100644 --- a/statement.go +++ b/statement.go @@ -996,7 +996,9 @@ func (statement *Statement) genSelectSql(columnStr string) (a string) { } if statement.Engine.dialect.DBType() == core.MSSQL { - top = fmt.Sprintf(" TOP %d", statement.LimitN) + if statement.LimitN > 0 { + top = fmt.Sprintf(" TOP %d ", statement.LimitN) + } if statement.Start > 0 { var column string = "(id)" if len(statement.RefTable.PKColumns()) == 0 { @@ -1019,7 +1021,11 @@ func (statement *Statement) genSelectSql(columnStr string) (a string) { a = fmt.Sprintf("SELECT %v%v%v%v%v", top, distinct, columnStr, fromStr, whereStr) if mssqlCondi != "" { - a += " AND " + mssqlCondi + if whereStr != "" { + a += " AND " + mssqlCondi + } else { + a += " WHERE " + mssqlCondi + } } if statement.GroupByStr != "" {