04-attachment-fix.postgres.sql 1.4 KB

1234567891011121314151617181920
  1. -- v4: Fix storing attachments
  2. ALTER TABLE reaction DROP CONSTRAINT reaction_message_fkey;
  3. ALTER TABLE attachment DROP CONSTRAINT attachment_message_fkey;
  4. ALTER TABLE message DROP CONSTRAINT message_pkey;
  5. ALTER TABLE message ADD COLUMN dc_attachment_id TEXT NOT NULL DEFAULT '';
  6. ALTER TABLE message ADD COLUMN dc_edit_index INTEGER NOT NULL DEFAULT 0;
  7. ALTER TABLE message ALTER COLUMN dc_attachment_id DROP DEFAULT;
  8. ALTER TABLE message ALTER COLUMN dc_edit_index DROP DEFAULT;
  9. ALTER TABLE message ADD PRIMARY KEY (dcid, dc_attachment_id, dc_edit_index, dc_chan_id, dc_chan_receiver);
  10. INSERT INTO message (dcid, dc_attachment_id, dc_edit_index, dc_chan_id, dc_chan_receiver, dc_sender, timestamp, dc_thread_id, mxid)
  11. SELECT message.dcid, attachment.dcid, 0, attachment.dc_chan_id, attachment.dc_chan_receiver, message.dc_sender, message.timestamp, attachment.dc_thread_id, attachment.mxid
  12. FROM attachment LEFT JOIN message ON attachment.dc_msg_id = message.dcid;
  13. DROP TABLE attachment;
  14. ALTER TABLE reaction ADD COLUMN dc_first_attachment_id TEXT NOT NULL DEFAULT '';
  15. ALTER TABLE reaction ALTER COLUMN dc_first_attachment_id DROP DEFAULT;
  16. ALTER TABLE reaction ADD COLUMN _dc_first_edit_index INTEGER DEFAULT 0;
  17. ALTER TABLE reaction ADD CONSTRAINT reaction_message_fkey
  18. FOREIGN KEY (dc_msg_id, dc_first_attachment_id, _dc_first_edit_index, dc_chan_id, dc_chan_receiver)
  19. REFERENCES message(dcid, dc_attachment_id, dc_edit_index, dc_chan_id, dc_chan_receiver);