Merge pull request #680 from Allda/slices

Replace arrays with slices
master
Jimmy Zelinskie 5 years ago committed by GitHub
commit cc8d1152c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -76,11 +76,9 @@ func (tx *pgSession) PersistFeatures(features []database.Feature) error {
}) })
// TODO(Sida): A better interface for bulk insertion is needed. // TODO(Sida): A better interface for bulk insertion is needed.
keys := make([]interface{}, len(features)*3) keys := make([]interface{}, 0, len(features)*3)
for i, f := range features { for _, f := range features {
keys[i*3] = f.Name keys = append(keys, f.Name, f.Version, f.VersionFormat)
keys[i*3+1] = f.Version
keys[i*3+2] = f.VersionFormat
if f.Name == "" || f.Version == "" || f.VersionFormat == "" { if f.Name == "" || f.Version == "" || f.VersionFormat == "" {
return commonerr.NewBadRequestError("Empty feature name, version or version format is not allowed") return commonerr.NewBadRequestError("Empty feature name, version or version format is not allowed")
} }
@ -160,11 +158,9 @@ func (tx *pgSession) CacheAffectedNamespacedFeatures(features []database.Namespa
cache, err := tx.searchAffectingVulnerabilities(features) cache, err := tx.searchAffectingVulnerabilities(features)
keys := make([]interface{}, len(cache)*3) keys := make([]interface{}, 0, len(cache)*3)
for i, c := range cache { for _, c := range cache {
keys[i*3] = c.vulnID keys = append(keys, c.vulnID, c.nsFeatureID, c.vulnAffectingID)
keys[i*3+1] = c.nsFeatureID
keys[i*3+2] = c.vulnAffectingID
} }
if len(cache) == 0 { if len(cache) == 0 {
@ -231,10 +227,9 @@ func (tx *pgSession) PersistNamespacedFeatures(features []database.NamespacedFea
return err return err
} }
keys := make([]interface{}, len(features)*2) keys := make([]interface{}, 0, len(features)*2)
for i, f := range features { for _, f := range features {
keys[i*2] = fIDs[f.Feature] keys = append(keys, fIDs[f.Feature], nsIDs[f.Namespace])
keys[i*2+1] = nsIDs[f.Namespace]
} }
_, err := tx.Exec(queryPersistNamespacedFeature(len(features)), keys...) _, err := tx.Exec(queryPersistNamespacedFeature(len(features)), keys...)
@ -329,12 +324,9 @@ func (tx *pgSession) findNamespacedFeatureIDs(nfs []database.NamespacedFeature)
} }
nfsMap := map[database.NamespacedFeature]sql.NullInt64{} nfsMap := map[database.NamespacedFeature]sql.NullInt64{}
keys := make([]interface{}, len(nfs)*4) keys := make([]interface{}, 0, len(nfs)*4)
for i, nf := range nfs { for _, nf := range nfs {
keys[i*4] = nfs[i].Name keys = append(keys, nf.Name, nf.Version, nf.VersionFormat, nf.Namespace.Name)
keys[i*4+1] = nfs[i].Version
keys[i*4+2] = nfs[i].VersionFormat
keys[i*4+3] = nfs[i].Namespace.Name
nfsMap[nf] = sql.NullInt64{} nfsMap[nf] = sql.NullInt64{}
} }
@ -373,11 +365,9 @@ func (tx *pgSession) findFeatureIDs(fs []database.Feature) ([]sql.NullInt64, err
fMap := map[database.Feature]sql.NullInt64{} fMap := map[database.Feature]sql.NullInt64{}
keys := make([]interface{}, len(fs)*3) keys := make([]interface{}, 0, len(fs)*3)
for i, f := range fs { for _, f := range fs {
keys[i*3] = f.Name keys = append(keys, f.Name, f.Version, f.VersionFormat)
keys[i*3+1] = f.Version
keys[i*3+2] = f.VersionFormat
fMap[f] = sql.NullInt64{} fMap[f] = sql.NullInt64{}
} }

@ -235,12 +235,9 @@ func (tx *pgSession) persistLayerFeatures(features []dbLayerFeature) error {
sort.Slice(features, func(i, j int) bool { sort.Slice(features, func(i, j int) bool {
return features[i].featureID < features[j].featureID return features[i].featureID < features[j].featureID
}) })
keys := make([]interface{}, 0, len(features)*3)
keys := make([]interface{}, len(features)*3) for _, f := range features {
for i, feature := range features { keys = append(keys, f.layerID, f.featureID, f.detectorID)
keys[i*3] = feature.layerID
keys[i*3+1] = feature.featureID
keys[i*3+2] = feature.detectorID
} }
_, err := tx.Exec(queryPersistLayerFeature(len(features)), keys...) _, err := tx.Exec(queryPersistLayerFeature(len(features)), keys...)
@ -260,12 +257,9 @@ func (tx *pgSession) persistLayerNamespaces(namespaces []dbLayerNamespace) error
return namespaces[i].namespaceID < namespaces[j].namespaceID return namespaces[i].namespaceID < namespaces[j].namespaceID
}) })
elementSize := 3 keys := make([]interface{}, 0, len(namespaces)*3)
keys := make([]interface{}, len(namespaces)*elementSize) for _, row := range namespaces {
for i, row := range namespaces { keys = append(keys, row.layerID, row.namespaceID, row.detectorID)
keys[i*3] = row.layerID
keys[i*3+1] = row.namespaceID
keys[i*3+2] = row.detectorID
} }
_, err := tx.Exec(queryPersistLayerNamespace(len(namespaces)), keys...) _, err := tx.Exec(queryPersistLayerNamespace(len(namespaces)), keys...)

Loading…
Cancel
Save