Files
beacon-server/db/migrations/007_dedupe_hashonly_channels.sql
T

22 lines
862 B
SQL

-- Copyright 2026 Beacon Contributors
-- SPDX-License-Identifier: AGPL-3.0-or-later
-- Cleans up the ghost "unknown key" channel rows created by the
-- side_effects.go bug where UpsertChannelHashOnly was called
-- unconditionally on every GRP_TXT packet, even when the key was
-- known and the message decrypted successfully.
--
-- Safe because hash-only rows (key_fingerprint IS NULL) never have
-- channel_messages attached to them -- InsertChannelMessage is only
-- ever called against a keyed channel row. We only delete a hash-only
-- row when a keyed row already exists for the same channel_hash;
-- hashes with no known key at all (genuinely unknown) are left as-is.
DELETE FROM channels c
WHERE c.key_fingerprint IS NULL
AND EXISTS (
SELECT 1 FROM channels k
WHERE k.channel_hash = c.channel_hash
AND k.key_fingerprint IS NOT NULL
);