From a16551c6e710345f2e04e5c88ecb5842500c5095 Mon Sep 17 00:00:00 2001 From: CyJaySong Date: Fri, 14 Jul 2023 17:13:52 +0800 Subject: [PATCH] SQL Server database, default mapping of time type to DATETIME2 --- dialects/mssql.go | 6 +----- integrations/session_insert_test.go | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/dialects/mssql.go b/dialects/mssql.go index dcac9c3f..2c64e637 100644 --- a/dialects/mssql.go +++ b/dialects/mssql.go @@ -320,11 +320,7 @@ func (db *mssql) SQLType(c *schemas.Column) string { res += "(MAX)" } case schemas.TimeStamp, schemas.DateTime: - if c.Length > 3 { - res = "DATETIME2" - } else { - return schemas.DateTime - } + return "DATETIME2" case schemas.TimeStampz: res = "DATETIMEOFFSET" c.Length = 7 diff --git a/integrations/session_insert_test.go b/integrations/session_insert_test.go index 1e1b40e6..5af5b9e4 100644 --- a/integrations/session_insert_test.go +++ b/integrations/session_insert_test.go @@ -1207,6 +1207,14 @@ func TestInsertNotDeleted(t *testing.T) { assert.NoError(t, PrepareEngine()) zeroTime := time.Date(1, 1, 1, 0, 0, 0, 0, testEngine.GetTZDatabase()) + type TestInsertNotDeletedStructNotRight struct { + ID uint64 `xorm:"'ID' pk autoincr"` + DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull"` + } + // notnull tag will be ignored + err := testEngine.Sync(new(TestInsertNotDeletedStructNotRight)) + assert.NoError(t, err) + type TestInsertNotDeletedStruct struct { ID uint64 `xorm:"'ID' pk autoincr"` DeletedAt time.Time `xorm:"'DELETED_AT' deleted"` @@ -1214,12 +1222,22 @@ func TestInsertNotDeleted(t *testing.T) { assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedStruct))) + var v1 TestInsertNotDeletedStructNotRight + _, err = testEngine.Insert(&v1) + assert.NoError(t, err) + + var v2 TestInsertNotDeletedStructNotRight + has, err := testEngine.Get(&v2) + assert.NoError(t, err) + assert.True(t, has) + assert.Equal(t, v2.DeletedAt.In(testEngine.GetTZDatabase()).Format("2006-01-02 15:04:05"), zeroTime.Format("2006-01-02 15:04:05")) + var v3 TestInsertNotDeletedStruct - _, err := testEngine.Insert(&v3) + _, err = testEngine.Insert(&v3) assert.NoError(t, err) var v4 TestInsertNotDeletedStruct - has, err := testEngine.Get(&v4) + has, err = testEngine.Get(&v4) assert.NoError(t, err) assert.True(t, has) assert.Equal(t, v4.DeletedAt.In(testEngine.GetTZDatabase()).Format("2006-01-02 15:04:05"), zeroTime.Format("2006-01-02 15:04:05"))