-- A stable identity per contact, for folder-based synchronisation.
--
-- Two PCs exchanging changes through a shared folder need to name the SAME
-- contact in both logs. "the QSO with M0ABC at 14:32" is a guess, and the two
-- machines can disagree about which row that is — so an edit or a deletion
-- cannot be addressed at all without an identity that travels with the record.
--
-- A REAL COLUMN, indexed, rather than a key inside extras_json. The identity is
-- looked up once per incoming change, and on a 120 000-QSO logbook scanning
-- JSON for it would turn every sync into a full table read. A column costs one
-- migration; the JSON would cost a scan every time.
--
-- sync_uid is listed in varcharColumns (internal/db/mysql.go): MySQL cannot
-- index a TEXT column without a prefix length, and a migration that tries dies
-- with error 1170 on every startup thereafter, with no way out from the UI.
--
-- Empty on every existing row: they are given an identity the first time
-- synchronisation is switched on, in one bulk statement, not row by row.
ALTER TABLE qso ADD COLUMN sync_uid TEXT NOT NULL DEFAULT '';
CREATE INDEX IF NOT EXISTS idx_qso_sync_uid ON qso (sync_uid);
