Jelajahi Sumber

Simplify cleanupEntries' query

- `NOT (hash=ANY(%4))` can be expressed as `hash NOT IN $4`
- There is no need for a subquery operating on the same table,
  moving the conditions out is equivalent.
jvoisin 2 tahun lalu
induk
melakukan
26d189917e
1 mengubah file dengan 4 tambahan dan 4 penghapusan
  1. 4 4
      internal/storage/entry.go

+ 4 - 4
internal/storage/entry.go

@@ -251,11 +251,11 @@ func (s *Storage) cleanupEntries(feedID int64, entryHashes []string) error {
 		DELETE FROM
 			entries
 		WHERE
-			feed_id=$1
-		AND
-			id IN (SELECT id FROM entries WHERE feed_id=$2 AND status=$3 AND NOT (hash=ANY($4)))
+			feed_id=$1 AND
+			status=$3 AND
+			NOT (hash=ANY($4))
 	`
-	if _, err := s.db.Exec(query, feedID, feedID, model.EntryStatusRemoved, pq.Array(entryHashes)); err != nil {
+	if _, err := s.db.Exec(query, feedID, model.EntryStatusRemoved, pq.Array(entryHashes)); err != nil {
 		return fmt.Errorf(`store: unable to cleanup entries: %v`, err)
 	}