From 310fb0c9eae57d3020381b4b9feae4cbb9b7b6ea Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:54:49 +0800 Subject: [PATCH 01/11] Added lines to update new message_quoted Added lines to update new `message_quoted` which is presummably the new `messages_quotes`. I believe it has now depreciated quoted_row_id and simplified it to a combination of `message_row_id` and `chat_row_id` to identify msgs it quoted --- Updates.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Updates.sql b/Updates.sql index 9a8ef10..ff19e19 100644 --- a/Updates.sql +++ b/Updates.sql @@ -127,6 +127,8 @@ update messages_quotes set quoted_row_id = -(quoted_row_id + (SELECT seq FROM ol update messages_quotes set quoted_row_id = -quoted_row_id where quoted_row_id < 0; update messages set quoted_row_id = -(quoted_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_quotes")) where quoted_row_id > 0; update messages set quoted_row_id = -quoted_row_id where quoted_row_id < 0; +update message_quoted set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; +update message_quoted set message_row_id = -message_row_id where message_row_id < 0; update messages_links set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_links")) where _id > 0; update messages_links set _id = -_id where _id < 0; update messages_vcards set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_vcards")) where _id > 0; From eba18e3d0407526b95a024de6be1b5ce43156272 Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Wed, 12 Oct 2022 18:02:10 +0800 Subject: [PATCH 02/11] Updated for current format with message instead of messages table Depluralised `messages`, `messages_links`, `messages_vcards`, `messages_vcards_jids` tables and removed reference to old `messages_quotes` table --- Updates.sql | 68 ++++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/Updates.sql b/Updates.sql index ff19e19..d287364 100644 --- a/Updates.sql +++ b/Updates.sql @@ -78,60 +78,54 @@ update user_device_info set user_jid_row_id = -user_jid_row_id where user_jid_r update receipt_orphaned set receipt_recipient_jid_row_id = -(receipt_recipient_jid_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="jid")) where receipt_recipient_jid_row_id > 0; update receipt_orphaned set receipt_recipient_jid_row_id = -receipt_recipient_jid_row_id where receipt_recipient_jid_row_id < 0; --------------------------------------------------------------------------------------- -update messages set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where _id > 0; -update messages set _id = -_id where _id < 0; -update audio_data set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update message set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where _id > 0; +update message set _id = -_id where _id < 0; +update audio_data set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update audio_data set message_row_id = -message_row_id where message_row_id < 0; -update message_ftsv2_content set docid = -(docid + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where docid > 0; +update message_ftsv2_content set docid = -(docid + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where docid > 0; update message_ftsv2_content set docid = -docid where docid < 0; -update message_ftsv2_docsize set docid = -(docid + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where docid > 0; +update message_ftsv2_docsize set docid = -(docid + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where docid > 0; update message_ftsv2_docsize set docid = -docid where docid < 0; -update message_forwarded set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update message_forwarded set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update message_forwarded set message_row_id = -message_row_id where message_row_id < 0; -update message_streaming_sidecar set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update message_streaming_sidecar set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update message_streaming_sidecar set message_row_id = -message_row_id where message_row_id < 0; -update message_media set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update message_media set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update message_media set message_row_id = -message_row_id where message_row_id < 0; -update message_view_once_media set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update message_view_once_media set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update message_view_once_media set message_row_id = -message_row_id where message_row_id < 0; -update missed_call_logs set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update missed_call_logs set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update missed_call_logs set message_row_id = -message_row_id where message_row_id < 0; -update mms_thumbnail_metadata set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update mms_thumbnail_metadata set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update mms_thumbnail_metadata set message_row_id = -message_row_id where message_row_id < 0; -update receipt_device set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update receipt_device set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update receipt_device set message_row_id = -message_row_id where message_row_id < 0; -update receipt_user set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; +update receipt_user set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update receipt_user set message_row_id = -message_row_id where message_row_id < 0; -update status set message_table_id = -(message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_table_id > 0; +update status set message_table_id = -(message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_table_id > 0; update status set message_table_id = -message_table_id where message_table_id < 0; -update status set last_read_message_table_id = -(last_read_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where last_read_message_table_id > 0; +update status set last_read_message_table_id = -(last_read_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where last_read_message_table_id > 0; update status set last_read_message_table_id = -last_read_message_table_id where last_read_message_table_id < 0; -update status set last_read_receipt_sent_message_table_id = -(last_read_receipt_sent_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where last_read_receipt_sent_message_table_id > 0; +update status set last_read_receipt_sent_message_table_id = -(last_read_receipt_sent_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where last_read_receipt_sent_message_table_id > 0; update status set last_read_receipt_sent_message_table_id = -last_read_receipt_sent_message_table_id where last_read_receipt_sent_message_table_id < 0; -update status set last_read_message_table_id = -(last_read_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where last_read_message_table_id > 0; +update status set last_read_message_table_id = -(last_read_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where last_read_message_table_id > 0; update status set last_read_message_table_id = -last_read_message_table_id where last_read_message_table_id < 0; -update status set first_unread_message_table_id = -(first_unread_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where first_unread_message_table_id > 0; +update status set first_unread_message_table_id = -(first_unread_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where first_unread_message_table_id > 0; update status set first_unread_message_table_id = -first_unread_message_table_id where first_unread_message_table_id < 0; -update status set autodownload_limit_message_table_id = -(autodownload_limit_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where autodownload_limit_message_table_id > 0; +update status set autodownload_limit_message_table_id = -(autodownload_limit_message_table_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where autodownload_limit_message_table_id > 0; update status set autodownload_limit_message_table_id = -autodownload_limit_message_table_id where autodownload_limit_message_table_id < 0; -update messages_links set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; -update messages_links set message_row_id = -message_row_id where message_row_id < 0; -update messages_vcards set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; -update messages_vcards set message_row_id = -message_row_id where message_row_id < 0; -update messages_vcards_jids set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages")) where message_row_id > 0; -update messages_vcards_jids set message_row_id = -message_row_id where message_row_id < 0; +update message_link set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; +update message_link set message_row_id = -message_row_id where message_row_id < 0; +update message_vcard set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; +update message_vcard set message_row_id = -message_row_id where message_row_id < 0; +update message_vcard_jid set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; +update message_vcard_jid set message_row_id = -message_row_id where message_row_id < 0; ----------------------------------------------------------------------------- -update messages_quotes set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_quotes")) where _id > 0; -update messages_quotes set _id = -_id where _id < 0; -update messages_quotes set quoted_row_id = -(quoted_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_quotes")) where quoted_row_id > 0; -update messages_quotes set quoted_row_id = -quoted_row_id where quoted_row_id < 0; -update messages set quoted_row_id = -(quoted_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_quotes")) where quoted_row_id > 0; -update messages set quoted_row_id = -quoted_row_id where quoted_row_id < 0; update message_quoted set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update message_quoted set message_row_id = -message_row_id where message_row_id < 0; -update messages_links set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_links")) where _id > 0; -update messages_links set _id = -_id where _id < 0; -update messages_vcards set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_vcards")) where _id > 0; -update messages_vcards set _id = -_id where _id < 0; -update messages_vcards_jids set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="messages_vcards_jids")) where _id > 0; -update messages_vcards_jids set _id = -_id where _id < 0; +update message_link set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message_link")) where _id > 0; +update message_link set _id = -_id where _id < 0; +update message_vcard set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message_vcard")) where _id > 0; +update message_vcard set _id = -_id where _id < 0; +update message_vcard_jid set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message_vcard_jid")) where _id > 0; +update message_vcard_jid set _id = -_id where _id < 0; From 863c02d16b60570905548bad65090e26418c6e57 Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Wed, 12 Oct 2022 19:33:53 +0800 Subject: [PATCH 03/11] Fix for current format Removed pluralised messages and related tables (`messages`, `messages_links`, `messages_vcards`, `messages_vcards_jids`, `messages_quotes`) Left the duplicated legacy ones in there to preserve the case where older tables get merged, such that data should still be in there. Unknown if it will be read properly or used. --- insertAndSequence.sql | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/insertAndSequence.sql b/insertAndSequence.sql index ccc4eb1..aae13b9 100644 --- a/insertAndSequence.sql +++ b/insertAndSequence.sql @@ -179,15 +179,16 @@ UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM group_participants) WHERE UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM group_participants_history) WHERE name="group_participants_history"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM jid) WHERE name="jid"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM media_refs) WHERE name="media_refs"; +-- Next 2 lines are legacy tables which are duplicated and left here UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages) WHERE name="messages"; +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages_vcards_jids) WHERE name="messages_vcards_jids"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_media_interactive_annotation) WHERE name="message_media_interactive_annotation"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_media_interactive_annotation_vertex) WHERE name="message_media_interactive_annotation_vertex"; +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message) WHERE name="message"; +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_link) WHERE name="message_link"; +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_quote) WHERE name="message_quote"; +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_vcard) WHERE name="message_vcard"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_vcard_jid) WHERE name="message_vcard_jid"; -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages) WHERE name="messages"; -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages_links) WHERE name="messages_links"; -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages_quotes) WHERE name="messages_quotes"; -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages_vcards) WHERE name="messages_vcards"; -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages_vcards_jids) WHERE name="messages_vcards_jids"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM missed_call_log_participant) WHERE name="missed_call_log_participant"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM missed_call_logs) WHERE name="missed_call_logs"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM props) WHERE name="props"; From bd838c9ab3bdb47dc60c5324d1a7f71385b73f2c Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Wed, 12 Oct 2022 19:46:25 +0800 Subject: [PATCH 04/11] Also adjust `sort_id` Also adjust `sort_id` incase that causes any issues --- Updates.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Updates.sql b/Updates.sql index d287364..7de33cd 100644 --- a/Updates.sql +++ b/Updates.sql @@ -80,6 +80,8 @@ update receipt_orphaned set receipt_recipient_jid_row_id = -receipt_recipient_ji --------------------------------------------------------------------------------------- update message set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where _id > 0; update message set _id = -_id where _id < 0; +update message set sort_id = -(sort_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where _id > 0; +update message set sort_id = -sort_id where _id < 0; update audio_data set message_row_id = -(message_row_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where message_row_id > 0; update audio_data set message_row_id = -message_row_id where message_row_id < 0; update message_ftsv2_content set docid = -(docid + (SELECT seq FROM oldest.sqlite_sequence WHERE name="message")) where docid > 0; From 35c3a0f14029e3f126fc2e0b1c8cc5659b31ec1b Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Thu, 13 Oct 2022 11:23:09 +0800 Subject: [PATCH 05/11] Fixed typo Fixed `message_quoted` typo from commit 863c02d --- insertAndSequence.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/insertAndSequence.sql b/insertAndSequence.sql index aae13b9..5628c68 100644 --- a/insertAndSequence.sql +++ b/insertAndSequence.sql @@ -186,7 +186,7 @@ UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_media_interactive UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_media_interactive_annotation_vertex) WHERE name="message_media_interactive_annotation_vertex"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message) WHERE name="message"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_link) WHERE name="message_link"; -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_quote) WHERE name="message_quote"; +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_quoted) WHERE name="message_quoted"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_vcard) WHERE name="message_vcard"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_vcard_jid) WHERE name="message_vcard_jid"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM missed_call_log_participant) WHERE name="missed_call_log_participant"; From 4765a141d14715d10fced41941371e49b15064d8 Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Thu, 13 Oct 2022 11:24:10 +0800 Subject: [PATCH 06/11] Change file name to be more descriptive --- insertAndSequence.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/insertAndSequence.sql b/insertAndSequence.sql index 5628c68..0294598 100644 --- a/insertAndSequence.sql +++ b/insertAndSequence.sql @@ -3,7 +3,7 @@ -- -- -ATTACH DATABASE '/home/benjamin/Bureau/samsung.db' AS newest; +ATTACH DATABASE 'msgstore_newer.db' AS newest; insert or ignore into agent_devices select * from newest.agent_devices; From 1aaa2fb9e6c7f479976820357b47c824960699d1 Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Thu, 13 Oct 2022 11:51:48 +0800 Subject: [PATCH 07/11] Grouped legacy tables at the end Grouped legacy tables which will throw errors at the end --- insertAndSequence.sql | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/insertAndSequence.sql b/insertAndSequence.sql index 0294598..e43a1b9 100644 --- a/insertAndSequence.sql +++ b/insertAndSequence.sql @@ -132,17 +132,7 @@ insert or ignore into message_ui_elements_reply select * from newest.message_ui insert or ignore into message_vcard select * from newest.message_vcard; insert or ignore into message_vcard_jid select * from newest.message_vcard_jid; insert or ignore into message_view_once_media select * from newest.message_view_once_media; -insert or ignore into messages select * from newest.messages; -insert or ignore into messages_fts select * from newest.messages_fts; -insert or ignore into messages_fts_content select * from newest.messages_fts_content; -insert or ignore into messages_fts_segdir select * from newest.messages_fts_segdir; -insert or ignore into messages_fts_segments select * from newest.messages_fts_segments; insert or ignore into messages_hydrated_four_row_template select * from newest.messages_hydrated_four_row_template; -insert or ignore into messages_links select * from newest.messages_links; -insert or ignore into messages_quotes select * from newest.messages_quotes; -insert or ignore into messages_quotes_payment_invite_legacy select * from newest.messages_quotes_payment_invite_legacy; -insert or ignore into messages_vcards select * from newest.messages_vcards; -insert or ignore into messages_vcards_jids select * from newest.messages_vcards_jids; insert or ignore into missed_call_log_participant select * from newest.missed_call_log_participant; insert or ignore into missed_call_logs select * from newest.missed_call_logs; insert or ignore into mms_thumbnail_metadata select * from newest.mms_thumbnail_metadata; @@ -157,8 +147,6 @@ insert or ignore into quick_replies select * from newest.quick_replies; insert or ignore into quick_reply_attachments select * from newest.quick_reply_attachments; insert or ignore into quick_reply_keywords select * from newest.quick_reply_keywords; insert or ignore into quick_reply_usage select * from newest.quick_reply_usage; -insert or ignore into quoted_message_order select * from newest.quoted_message_order; -insert or ignore into quoted_message_product select * from newest.quoted_message_product; insert or ignore into receipt_device select * from newest.receipt_device; insert or ignore into receipt_orphaned select * from newest.receipt_orphaned; insert or ignore into receipt_user select * from newest.receipt_user; @@ -179,9 +167,6 @@ UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM group_participants) WHERE UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM group_participants_history) WHERE name="group_participants_history"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM jid) WHERE name="jid"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM media_refs) WHERE name="media_refs"; --- Next 2 lines are legacy tables which are duplicated and left here -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages) WHERE name="messages"; -UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages_vcards_jids) WHERE name="messages_vcards_jids"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_media_interactive_annotation) WHERE name="message_media_interactive_annotation"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message_media_interactive_annotation_vertex) WHERE name="message_media_interactive_annotation_vertex"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM message) WHERE name="message"; @@ -199,4 +184,20 @@ UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM receipts) WHERE name="rec UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM status) WHERE name="status"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM status_list) WHERE name="status_list"; UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM user_device) WHERE name="user_device"; +-- Moved legacy tables to bottom to group errors together +insert or ignore into messages select * from newest.messages; +insert or ignore into messages_fts select * from newest.messages_fts; +insert or ignore into messages_fts_content select * from newest.messages_fts_content; +insert or ignore into messages_fts_segdir select * from newest.messages_fts_segdir; +insert or ignore into messages_fts_segments select * from newest.messages_fts_segments; +insert or ignore into messages_links select * from newest.messages_links; +insert or ignore into messages_quotes select * from newest.messages_quotes; +insert or ignore into messages_quotes_payment_invite_legacy select * from newest.messages_quotes_payment_invite_legacy; +insert or ignore into messages_vcards select * from newest.messages_vcards; +insert or ignore into messages_vcards_jids select * from newest.messages_vcards_jids; +insert or ignore into quoted_message_order select * from newest.quoted_message_order; +insert or ignore into quoted_message_product select * from newest.quoted_message_product; +-- Next 2 lines are legacy tables which are duplicated and left here +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages) WHERE name="messages"; +UPDATE sqlite_sequence SET seq = (SELECT MAX(_id) FROM messages_vcards_jids) WHERE name="messages_vcards_jids"; From 16b6ae682e21a5b660e459796bce7103b5abb110 Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Thu, 13 Oct 2022 11:57:33 +0800 Subject: [PATCH 08/11] Standardise path name Standardise path name within scripts to be consistent and descriptive --- Updates.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Updates.sql b/Updates.sql index 7de33cd..e80bdea 100644 --- a/Updates.sql +++ b/Updates.sql @@ -3,7 +3,7 @@ -- exec it connect to the newest -- -ATTACH DATABASE '/path/old/db' AS oldest; +ATTACH DATABASE '/path/old/msgstore_older.db' AS oldest; update user_device set _id = -(_id + (SELECT seq FROM oldest.sqlite_sequence WHERE name="user_device")) where _id > 0; update user_device set _id = -_id where _id < 0; From dff37c126fa874b87df173783b4532dc7718133c Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Thu, 13 Oct 2022 11:58:29 +0800 Subject: [PATCH 09/11] Standardise path name Standardise path name within scripts to be consistent and descriptive --- insertAndSequence.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/insertAndSequence.sql b/insertAndSequence.sql index e43a1b9..c5b27b1 100644 --- a/insertAndSequence.sql +++ b/insertAndSequence.sql @@ -3,7 +3,7 @@ -- -- -ATTACH DATABASE 'msgstore_newer.db' AS newest; +ATTACH DATABASE '/path/new/msgstore_newer.db' AS newest; insert or ignore into agent_devices select * from newest.agent_devices; From 62b0f445108d685eabbce9ab1c2c197fd391f05e Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Thu, 13 Oct 2022 12:09:25 +0800 Subject: [PATCH 10/11] Added more details in readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c8fc3b5..5e6cdc4 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,11 @@ The easy way is to open your databases in [dbeaver](https://dbeaver.io/download/ Database > new connexion > sqlite > open : select the db file open new file (ctrl + O) > open each script > for each script connect it to the right base > ![click N/A up in the bar](https://user-images.githubusercontent.com/43207983/167259262-9b1cc634-8c6c-4fa1-a263-654e38c99c01.png) +(Further details in each script commented at the top of the script) Update the path to the db files in the scripts. -Execute each script (Alt + X or clic ![button](https://user-images.githubusercontent.com/43207983/167259327-9cf1e47d-486f-4908-a8d2-1b6e5b17b342.png)) +Execute each script 1 at a time (Alt + X or click 3rd icon from the top![3rd button](https://user-images.githubusercontent.com/43207983/167259327-9cf1e47d-486f-4908-a8d2-1b6e5b17b342.png)) Right click on the destination database, which I name the "oldest" in the script, and disconnect it. Close dbeaver, normaly next to your dbs the file named db_wal.db should be emptied. From 8bc0e6e5a557d416dd479802af667c280cdfaccc Mon Sep 17 00:00:00 2001 From: MrBarbie <88872912+MrBarbie@users.noreply.github.com> Date: Fri, 28 Oct 2022 02:07:05 +0800 Subject: [PATCH 11/11] Added example for specifying column order --- insertAndSequence.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/insertAndSequence.sql b/insertAndSequence.sql index c5b27b1..3dedadf 100644 --- a/insertAndSequence.sql +++ b/insertAndSequence.sql @@ -52,6 +52,9 @@ insert or ignore into labels select * from newest.labels; insert or ignore into media_hash_thumbnail select * from newest.media_hash_thumbnail; insert or ignore into media_refs select * from newest.media_refs; insert or ignore into message select * from newest.message; +--Example code to specify order of columns +--insert or ignore into message select _id,chat_row_id,from_me,key_id,sender_jid_row_id,status,broadcast,recipient_count,participant_hash,origination_flags,origin,timestamp,received_timestamp,receipt_server_timestamp,message_type,text_data,starred,lookup_tables,sort_id,message_add_on_flags +from newest.message; insert or ignore into message_add_on select * from newest.message_add_on; insert or ignore into message_add_on_orphan select * from newest.message_add_on_orphan; insert or ignore into message_add_on_reaction select * from newest.message_add_on_reaction;