Gerhard Schlager
71849242fa
PERF: Speed up moving posts on large databases
...
Old exection plan:
```
Delete on post_replies pr (cost=6.59..20462.62 rows=2254 width=24) (actual time=2.580..2.580 rows=0 loops=1)
-> Nested Loop (cost=6.59..20462.62 rows=2254 width=24) (actual time=0.086..2.557 rows=4 loops=1)
Join Filter: (p.topic_id <> r.topic_id)
Rows Removed by Join Filter: 328
-> Nested Loop (cost=6.16..16845.77 rows=2254 width=26) (actual time=0.020..1.886 rows=332 loops=1)
-> Nested Loop (cost=5.74..13257.09 rows=2254 width=20) (actual time=0.016..1.361 rows=332 loops=1)
-> Seq Scan on moved_posts mp (cost=0.00..19.70 rows=970 width=10) (actual time=0.002..0.028 rows=263 loops=1)
-> Bitmap Heap Scan on post_replies pr (cost=5.74..13.63 rows=2 width=14) (actual time=0.004..0.005 rows=1 loops=263)
Recheck Cond: ((reply_post_id = mp.old_post_id) OR (post_id = mp.old_post_id))
Heap Blocks: exact=278
-> BitmapOr (cost=5.74..5.74 rows=2 width=0) (actual time=0.004..0.004 rows=0 loops=263)
-> Bitmap Index Scan on index_post_replies_on_reply_post_id (cost=0.00..2.87 rows=1 width=0) (actual time=0.001..0.001 rows=1 loops=263)
Index Cond: (reply_post_id = mp.old_post_id)
-> Bitmap Index Scan on index_post_replies_on_post_id_and_reply_post_id (cost=0.00..2.87 rows=1 width=0) (actual time=0.002..0.002 rows=1 loops=263)
Index Cond: (post_id = mp.old_post_id)
-> Index Scan using posts_pkey on posts p (cost=0.42..1.59 rows=1 width=14) (actual time=0.001..0.001 rows=1 loops=332)
Index Cond: (id = pr.post_id)
-> Index Scan using posts_pkey on posts r (cost=0.42..1.59 rows=1 width=14) (actual time=0.001..0.002 rows=1 loops=332)
Index Cond: (id = pr.reply_post_id)
Planning Time: 0.305 ms
Execution Time: 2.600 ms
```
New execution plan:
```
Delete on post_replies pr (cost=15.34..6538275.37 rows=364157 width=12) (actual time=1.961..1.961 rows=0 loops=1)
-> Nested Loop (cost=15.34..6538275.37 rows=364157 width=12) (actual time=0.048..1.827 rows=187 loops=1)
-> Seq Scan on moved_posts mp (cost=0.00..19.70 rows=970 width=10) (actual time=0.004..0.029 rows=188 loops=1)
-> Bitmap Heap Scan on post_replies pr (cost=15.34..6736.72 rows=375 width=14) (actual time=0.009..0.009 rows=1 loops=188)
Recheck Cond: ((reply_post_id = mp.old_post_id) OR (post_id = mp.old_post_id))
Filter: ((SubPlan 1) <> (SubPlan 2))
Heap Blocks: exact=187
-> BitmapOr (cost=15.34..15.34 rows=377 width=0) (actual time=0.003..0.003 rows=0 loops=188)
-> Bitmap Index Scan on index_post_replies_on_reply_post_id (cost=0.00..4.33 rows=1 width=0) (actual time=0.001..0.001 rows=1 loops=188)
Index Cond: (reply_post_id = mp.old_post_id)
-> Bitmap Index Scan on index_post_replies_on_post_id_and_reply_post_id (cost=0.00..10.82 rows=376 width=0) (actual time=0.001..0.001 rows=0 loops=188)
Index Cond: (post_id = mp.old_post_id)
SubPlan 1
-> Index Scan using posts_pkey on posts p (cost=0.43..8.45 rows=1 width=4) (actual time=0.002..0.002 rows=1 loops=187)
Index Cond: (id = pr.post_id)
SubPlan 2
-> Index Scan using posts_pkey on posts r (cost=0.43..8.45 rows=1 width=4) (actual time=0.002..0.003 rows=1 loops=187)
Index Cond: (id = pr.reply_post_id)
Planning Time: 0.136 ms
Execution Time: 1.990 ms
```
2020-02-04 12:30:43 +01:00
Martin Brennan
1b3b0708c0
FEATURE: Update upload security status on post move, topic conversion, category change ( #8731 )
...
Add TopicUploadSecurityManager to handle post moves. When a post moves around or a topic changes between categories and public/private message status the uploads connected to posts in the topic need to have their secure status updated, depending on the security context the topic now lives in.
2020-01-23 12:01:10 +10:00
Gerhard Schlager
ab07b945c2
Merge pull request #8736 from gschlager/rename_reply_id_column
...
REFACTOR: Rename `post_replies.reply_id` column to `post_replies.reply_post_id`
2020-01-17 17:24:49 +01:00
Dan Ungureanu
bbcce08712
FIX: Update quotes after moving posts ( #8326 )
2019-11-12 15:16:39 +02:00
Gerhard Schlager
2c011252f1
FIX: Move notification level only when user posted
...
Moving posts also moves the read state (`topic_users` table) to the destination topic. This changes that behavior so that only users who posted in the destination topic will have the original notification level (probably "watching") of the original topic. The notification level for all other users will be set to "regular".
2019-10-14 15:06:09 +02:00
Gerhard Schlager
f1742617fb
PERF: Faster moving of read state
...
This should improve the performance of moving the read state of lots of posts to a new/existing topic.
2019-10-14 15:06:09 +02:00
Gerhard Schlager
10e509e47f
FIX: Don't swallow the original error when moving posts
...
Dropping the temp table in an `ensure` block hides the actual exception. Creating the table with `ON COMMIT DROP` makes the temp table disappear automatically at the end of the transaction. We only need the explicit `DROP` in tests, because tests already run inside a transaction, so the temp table won't be dropped after each test which leads to spec failures.
2019-10-09 17:02:17 +02:00
Gerhard Schlager
bee000bcec
FIX: Existing post timings could prevent moving posts
...
Post timings are created by `topic_id` and `post_number` and it's possible that the destination topic already contains post timings for non-existent posts. For example, this can happen if the destination topic was previously split and Discourse recorded post timings for moved posts in the destination topic.
This commit ensures that all timings which reference non-existent posts are deleted from the destination topic before the posts are moved.
2019-10-08 21:07:29 +02:00
Gerhard Schlager
52461abad9
FIX: Move read state when moving posts
...
* Moves / copies post timings
* Moves / copies topic users
* Fixes a small bug in the calculation of post numbers
2019-09-06 20:52:44 +02:00
Gerhard Schlager
2a95c5c5d6
FIX: Don't update `watching_first_post` notifications when moving first post
...
The first post isn't moved. It gets copied during a move. Notifications of this special type should still link to the original first post.
2019-08-12 22:59:43 +02:00
Gerhard Schlager
50db6a1d62
FIX: Correctly update replies when first post gets moved
2019-08-01 22:07:21 +02:00
Gerhard Schlager
4113b57cfe
REFACTOR: Use less queries when moving posts
2019-08-01 22:04:45 +02:00
Gerhard Schlager
845fd42153
FIX: Update reply count when moving posts
2019-07-22 21:42:24 +02:00
Gerhard Schlager
271ddac467
FIX: Delete notifications users can't see after moving posts
...
No need to let notifications stay around when users can't access
a topic after it was converted into a PM or posts were moved
into a restricted topic.
Also makes sure that moving to a new topic correctly uses the
guardian for the first post by enqueuing jobs outside of a
transaction.
2019-07-22 19:02:21 +02:00
Gerhard Schlager
1235105c03
FIX: Old notifications didn't link to correct post after moving post
2019-07-22 17:38:45 +02:00
Bianca Nenciu
1d3375b176
FEATURE: Preserve notifications levels when splitting topics. ( #7494 )
2019-05-15 17:29:29 +10:00
Sam Saffron
30990006a9
DEV: enable frozen string literal on all files
...
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.
Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00
Dan Ungureanu
a40dcbde9b
FIX: Do not move hidden post actions. ( #7424 )
...
Hidden (staff-only) post actions are whisper posts with no content, that
are later transformed by the client into post actions (discourse-assign
uses this).
2019-05-06 16:21:42 +03:00
Arpit Jalan
d6d71de855
FIX: allow banner topic posts to be moved to regular topic (and vice versa)
2019-03-14 23:41:23 +05:30
Arpit Jalan
c02956e29c
FIX: when posts are moved to a message then small action post should not be publicly visible ( #7085 )
...
This fix is inspired from what we do in discourse-assigned plugin.
https://github.com/discourse/discourse-assign/blob/master/lib/topic_assigner.rb#L184
https://github.com/discourse/discourse-assign/blob/master/assets/javascripts/discourse-assign/initializers/extend-for-assigns.js.es6#L125-L133
2019-02-28 19:49:26 +05:30
Gerhard Schlager
66901f67f6
UX: Moderator post wasn't completely translatable
2019-02-20 16:37:47 +01:00
Guo Xiang Tan
7da7a30e02
PERF: Restore `exists?` in favor of `blank?`.
...
Regression from dcd7b92532
.
2019-02-18 10:04:21 +08:00
Arpit Jalan
dcd7b92532
FIX: some posters were not getting added to topic_allowed_users when moving posts to a new PM
...
If a user posted twice in a topic then subsequent posters were not getting added as topic_allowed_users.
2019-02-11 17:05:21 +05:30
Arpit Jalan
70fdc10365
FEATURE: move posts to new/existing PM ( #6802 )
2018-12-31 17:17:22 +05:30
Gerhard Schlager
f4ca105498
FIX: Moving posts to existing topic didn't update topic metadata
2018-08-01 18:05:43 +02:00
OsamaSayegh
69450750d1
shorter method name and better specs
2018-07-20 10:13:27 +03:00
OsamaSayegh
547b571d84
FIX: topic owner should watch the new topic when moving posts to a new topic
2018-07-18 15:23:32 +03:00
Guo Xiang Tan
b068a8a771
Fix the build.
2018-07-18 14:03:27 +08:00
Maja Komel
18f5f646b1
FEATURE: allow selecting a tag when moving posts to a new topic ( #6072 )
2018-07-06 18:21:32 +02:00
Sam
89ad2b5900
DEV: Rails 5.2 upgrade and global gem upgrade
...
This updates tests to use latest rails 5 practice
and updates ALL dependencies that could be updated
Performance testing shows that performance has not regressed
if anything it is marginally faster now.
2018-06-07 14:21:33 +10:00
Neil Lalonde
3e9230714f
UX: moved posts message links to the first post at the destination topic
2018-04-13 12:47:36 -04:00
Gerhard Schlager
0ecdf90023
FIX: Validations could prevent moving posts
2018-02-08 13:36:13 +01:00
Gerhard Schlager
8ab6689f43
FIX: Preserve original date when moving first post
2018-02-08 12:55:32 +01:00
Vinoth Kannan
e8559f222c
FIX: After moving the posts topic timestamp should be updated with newest post
2018-02-02 19:30:52 +05:30
Gerhard Schlager
b3094e9954
FIX: incoming and outgoing emails got lost when post was moved
2017-11-24 11:45:36 +01:00
Gerhard Schlager
39810e4425
FIX: do not move small post actions
2017-11-23 17:25:53 +01:00
Guo Xiang Tan
77d4c4d8dc
Fix all the errors to get our tests green on Rails 5.1.
2017-09-25 13:48:58 +08:00
Gerhard Schlager
efef422416
FIX: Use default locale for moderator post when posts are moved
2017-09-14 17:17:37 +02:00
Régis Hanol
c2061aae3d
Add new 'post_moved' event
2017-08-12 04:12:09 +02:00
Guo Xiang Tan
5012d46cbd
Add rubocop to our build. ( #5004 )
2017-07-28 10:20:09 +09:00
Arpit Jalan
984778d3ac
FIX: handle moving first post to a closed/archived topic
2017-07-03 21:21:20 +05:30
Guo Xiang Tan
5794ff53a1
FIX: Copy custom fields when moving first post of a topic.
...
https://meta.discourse.org/t/transfer-poll-votes-when-moving-a-topic-into-an-existing-one/63678
2017-06-07 19:04:48 +09:00
Sam
a7fc93acac
FIX: post mover not clearing reply_to_user_id
2017-06-01 18:00:14 -04:00
Régis Hanol
0d66529d2b
PostReply doesn't have a primary key, so no luck here
2017-04-24 23:14:01 +02:00
Régis Hanol
1787c45b38
PERF: don't load all replies in memory when moving posts
2017-04-24 23:00:32 +02:00
David Rodríguez
934bff43d9
FIX: Copy post actions when moving a topic.
2017-04-06 12:16:22 +08:00
Guo Xiang Tan
8aea3caf00
FIX: Ensure that we only move posts that belong to the original topic.
2017-03-06 15:04:10 +08:00
Robin Ward
e5b529f8e1
FIX: Couldn't move posts with deleted replies
2016-08-04 11:56:01 -04:00
Guo Xiang Tan
5fed886c8f
FIX: Update post replies when we move posts. ( #4324 )
2016-07-13 17:34:21 +02:00
Robin Ward
aa16f043ea
FIX: When moving a topic, skip validations in case user is TL4
2016-07-05 16:48:14 -04:00