This commit is contained in:
CyJaySong 2023-10-30 09:17:50 +08:00
parent 408217218b
commit 056952e17a
2 changed files with 28 additions and 24 deletions

View File

@ -163,7 +163,7 @@ func (statement *Statement) Reset() {
// SQL adds raw sql statement // SQL adds raw sql statement
func (statement *Statement) SQL(query interface{}, args ...interface{}) *Statement { func (statement *Statement) SQL(query interface{}, args ...interface{}) *Statement {
switch t := query.(type) { switch t := query.(type) {
case (*builder.Builder): case *builder.Builder:
var err error var err error
statement.RawSQL, statement.RawParams, err = t.ToSQL() statement.RawSQL, statement.RawParams, err = t.ToSQL()
if err != nil { if err != nil {
@ -609,7 +609,7 @@ func (statement *Statement) BuildConds(table *schemas.Table, bean interface{}, i
// MergeConds merge conditions from bean and id // MergeConds merge conditions from bean and id
func (statement *Statement) MergeConds(bean interface{}) error { func (statement *Statement) MergeConds(bean interface{}) error {
if !statement.NoAutoCondition && statement.RefTable != nil { if !statement.NoAutoCondition && statement.RefTable != nil {
addedTableName := (len(statement.joins) > 0) addedTableName := len(statement.joins) > 0
autoCond, err := statement.BuildConds(statement.RefTable, bean, true, true, false, true, addedTableName) autoCond, err := statement.BuildConds(statement.RefTable, bean, true, true, false, true, addedTableName)
if err != nil { if err != nil {
return err return err

View File

@ -943,7 +943,7 @@ func TestMultipleInsertTableName(t *testing.T) {
assert.NoError(t, testEngine.Table(tableName).Sync(new(NightlyRate))) assert.NoError(t, testEngine.Table(tableName).Sync(new(NightlyRate)))
trans := testEngine.NewSession() trans := testEngine.NewSession()
defer trans.Close() defer func(trans *xorm.Session) { _ = trans.Close() }(trans)
err := trans.Begin() err := trans.Begin()
assert.NoError(t, err) assert.NoError(t, err)
@ -1031,7 +1031,7 @@ func TestInsertTwice(t *testing.T) {
} }
ssn := testEngine.NewSession() ssn := testEngine.NewSession()
defer ssn.Close() defer func(ssn *xorm.Session) { _ = ssn.Close() }(ssn)
err := ssn.Begin() err := ssn.Begin()
assert.NoError(t, err) assert.NoError(t, err)
@ -1226,7 +1226,8 @@ func TestInsertNotDeleted(t *testing.T) {
DeletedAt time.Time `xorm:"'DELETED_AT' deleted"` DeletedAt time.Time `xorm:"'DELETED_AT' deleted"`
} }
assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedStruct))) err = testEngine.Sync(new(TestInsertNotDeletedStruct))
assert.NoError(t, err)
var v1 TestInsertNotDeletedStructNotRight var v1 TestInsertNotDeletedStructNotRight
_, err = testEngine.Insert(&v1) _, err = testEngine.Insert(&v1)
@ -1264,7 +1265,8 @@ func TestInsertNotDeletedNum(t *testing.T) {
DeletedAt int64 `xorm:"'DELETED_AT' deleted INT(11)"` DeletedAt int64 `xorm:"'DELETED_AT' deleted INT(11)"`
} }
assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedNumStruct))) err = testEngine.Sync(new(TestInsertNotDeletedNumStruct))
assert.NoError(t, err)
var v1 TestInsertNotDeletedNumStructNotRight var v1 TestInsertNotDeletedNumStructNotRight
_, err = testEngine.Insert(&v1) _, err = testEngine.Insert(&v1)
@ -1289,37 +1291,39 @@ func TestInsertNotDeletedNum(t *testing.T) {
func TestInsertNotDeletedTimeStamp(t *testing.T) { func TestInsertNotDeletedTimeStamp(t *testing.T) {
assert.NoError(t, PrepareEngine()) assert.NoError(t, PrepareEngine())
type TestInsertNotDeletedTimeStampStructNotRight struct {
ID uint64 `xorm:"'ID' pk autoincr"` // UTC time from 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999
DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull TIMESTAMP"` //type TestInsertNotDeletedTimeStampStructNotRight struct {
} // ID uint64 `xorm:"'ID' pk autoincr"`
// notnull tag will be ignored // DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull TIMESTAMP"`
err := testEngine.Sync(new(TestInsertNotDeletedTimeStampStructNotRight)) //}
assert.NoError(t, err) //// notnull tag will be ignored
//err := testEngine.Sync(new(TestInsertNotDeletedTimeStampStructNotRight))
//assert.NoError(t, err)
type TestInsertNotDeletedTimeStampStruct struct { type TestInsertNotDeletedTimeStampStruct struct {
ID uint64 `xorm:"'ID' pk autoincr"` ID uint64 `xorm:"'ID' pk autoincr"`
DeletedAt time.Time `xorm:"'DELETED_AT' deleted TIMESTAMP"` DeletedAt time.Time `xorm:"'DELETED_AT' deleted TIMESTAMP"`
} }
err := testEngine.Sync(new(TestInsertNotDeletedTimeStampStruct))
assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedTimeStampStruct)))
var v1 TestInsertNotDeletedTimeStampStructNotRight
_, err = testEngine.Insert(&v1)
assert.NoError(t, err) assert.NoError(t, err)
var v2 TestInsertNotDeletedTimeStampStructNotRight //var v1 TestInsertNotDeletedTimeStampStructNotRight
has, err := testEngine.Get(&v2) //_, err = testEngine.Insert(&v1)
assert.NoError(t, err) //assert.NoError(t, err)
assert.True(t, has) //
assert.Equal(t, v2.DeletedAt, time.Unix(0, 0)) //var v2 TestInsertNotDeletedTimeStampStructNotRight
//has, err := testEngine.Get(&v2)
//assert.NoError(t, err)
//assert.True(t, has)
//assert.Equal(t, v2.DeletedAt, time.Unix(0, 0))
var v3 TestInsertNotDeletedTimeStampStruct var v3 TestInsertNotDeletedTimeStampStruct
_, err = testEngine.Insert(&v3) _, err = testEngine.Insert(&v3)
assert.NoError(t, err) assert.NoError(t, err)
var v4 TestInsertNotDeletedTimeStampStruct var v4 TestInsertNotDeletedTimeStampStruct
has, err = testEngine.Get(&v4) has, err := testEngine.Get(&v4)
assert.NoError(t, err) assert.NoError(t, err)
assert.True(t, has) assert.True(t, has)
assert.Equal(t, v4.DeletedAt, time.Time{}) assert.Equal(t, v4.DeletedAt, time.Time{})