diff --git a/storage/data/database_test.go b/storage/data/database_test.go index ff641185d..5b18798fe 100644 --- a/storage/data/database_test.go +++ b/storage/data/database_test.go @@ -321,6 +321,13 @@ func testFeedback(t *testing.T, db Database) { result, err = db.GetUserItemFeedback("100", "8") assert.NoError(t, err) assert.Empty(t, result) + + // insert valid feedback and invalid feedback at the same time + err = db.BatchInsertFeedback([]Feedback{ + {FeedbackKey: FeedbackKey{"a", "0", "8"}}, + {FeedbackKey: FeedbackKey{"a", "100", "200"}}, + }, false, false, false) + assert.NoError(t, err) } func testItems(t *testing.T, db Database) { diff --git a/storage/data/sql.go b/storage/data/sql.go index c5b4e01c5..3a9852d07 100644 --- a/storage/data/sql.go +++ b/storage/data/sql.go @@ -1067,8 +1067,11 @@ func (d *SQLDatabase) BatchInsertFeedback(feedback []Feedback, insertUser, inser builder.WriteString("INSERT INTO feedback(feedback_type, user_id, item_id, time_stamp, comment) VALUES ") } var args []interface{} - for i, f := range feedback { + for _, f := range feedback { if users.Has(f.UserId) && items.Has(f.ItemId) { + if len(args) > 0 { + builder.WriteString(",") + } switch d.driver { case MySQL: builder.WriteString("(?,?,?,?,?)") @@ -1082,9 +1085,6 @@ func (d *SQLDatabase) BatchInsertFeedback(feedback []Feedback, insertUser, inser builder.WriteString(fmt.Sprintf("($%d,$%d,$%d,$%d,$%d)", len(args)+1, len(args)+2, len(args)+3, len(args)+4, len(args)+5)) } - if i+1 < len(feedback) { - builder.WriteString(",") - } args = append(args, f.FeedbackType, f.UserId, f.ItemId, f.Timestamp, f.Comment) } }