Skip to content
This repository was archived by the owner on Sep 7, 2021. It is now read-only.
This repository is currently being migrated. It's locked while the migration is in progress.

Commit da95db5

Browse files
authored
fix bug when update with setexpr (#1446)
1 parent db25dfc commit da95db5

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

session_update_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,3 +1390,34 @@ func TestUpdateDeleted(t *testing.T) {
13901390
assert.NoError(t, err)
13911391
assert.EqualValues(t, 1, cnt)
13921392
}
1393+
1394+
func TestUpdateExprs(t *testing.T) {
1395+
assert.NoError(t, prepareEngine())
1396+
1397+
type UpdateExprs struct {
1398+
Id int64
1399+
NumIssues int
1400+
Name string
1401+
}
1402+
1403+
assertSync(t, new(UpdateExprs))
1404+
1405+
_, err := testEngine.Insert(&UpdateExprs{
1406+
NumIssues: 1,
1407+
Name: "lunny",
1408+
})
1409+
assert.NoError(t, err)
1410+
1411+
_, err = testEngine.SetExpr("num_issues", "num_issues+1").AllCols().Update(&UpdateExprs{
1412+
NumIssues: 3,
1413+
Name: "lunny xiao",
1414+
})
1415+
assert.NoError(t, err)
1416+
1417+
var ue UpdateExprs
1418+
has, err := testEngine.Get(&ue)
1419+
assert.NoError(t, err)
1420+
assert.True(t, has)
1421+
assert.EqualValues(t, 2, ue.NumIssues)
1422+
assert.EqualValues(t, "lunny xiao", ue.Name)
1423+
}

statement.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,14 @@ func (statement *Statement) buildUpdates(bean interface{},
266266
continue
267267
}
268268

269+
if statement.incrColumns.isColExist(col.Name) {
270+
continue
271+
} else if statement.decrColumns.isColExist(col.Name) {
272+
continue
273+
} else if statement.exprColumns.isColExist(col.Name) {
274+
continue
275+
}
276+
269277
fieldValuePtr, err := col.ValueOf(bean)
270278
if err != nil {
271279
engine.logger.Error(err)

0 commit comments

Comments
 (0)