diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go index 66552d03f..fd6edb051 100644 --- a/pkg/storage/driver/sql.go +++ b/pkg/storage/driver/sql.go @@ -575,6 +575,29 @@ func (s *SQL) Delete(key string) (*rspb.Release, error) { transaction.Rollback() return nil, err } + + LabelsQuery, args, err := s.statementBuilder. + Select(sqlLabelTableKeyColumn, sqlLabelTableValueColumn). + From(sqlLabelTableName). + Where(sq.Eq{sqlLabelTableReleaseKeyColumn: key, + sqlLabelTableReleaseNamespaceColumn: s.namespace}). + ToSql() + if err != nil { + s.Log("failed to build query: %v", err) + return nil, err + } + + var LabelsList = []SQLReleaseLabelWrapper{} + if err := s.db.Select(&LabelsList, LabelsQuery, args...); err != nil { + s.Log("get: failed to get release Labels: %v", err) + return nil, err + } + + LabelsMap := make(map[string]string) + for _, i := range LabelsList { + LabelsMap[i.Key] = i.Value + } + release.Labels = filterSystemLabels(LabelsMap) defer transaction.Commit() deleteQuery, args, err := s.statementBuilder. diff --git a/pkg/storage/driver/sql_test.go b/pkg/storage/driver/sql_test.go index e76654c17..874264624 100644 --- a/pkg/storage/driver/sql_test.go +++ b/pkg/storage/driver/sql_test.go @@ -451,6 +451,27 @@ func TestSqlDelete(t *testing.T) { ), ).RowsWillBeClosed() + queryLabels := fmt.Sprintf( + regexp.QuoteMeta("SELECT %s, %s FROM %s WHERE %s = $1 AND %s = $2"), + sqlLabelTableKeyColumn, + sqlLabelTableValueColumn, + sqlLabelTableName, + sqlLabelTableReleaseKeyColumn, + sqlLabelTableReleaseNamespaceColumn, + ) + + eq := mock.ExpectQuery(queryLabels). + WithArgs(key, namespace) + + returnRows := mock.NewRows([]string{ + sqlLabelTableKeyColumn, + sqlLabelTableValueColumn, + }) + for k, v := range rel.Labels { + returnRows.AddRow(k, v) + } + eq.WillReturnRows(returnRows).RowsWillBeClosed() + deleteQuery := fmt.Sprintf( "DELETE FROM %s WHERE %s = $1 AND %s = $2", sqlReleaseTableName,