discourse/app/models
Krzysztof Kotlarek 63a0466548
FIX: improve performance of UserStat.ensure_consistency (#21044)
Optimize `UserStatpost_read_count` calculation.

In addition, tests were updated to fail when code is not evaluated. Creation of PostTiming was updating `post_read_count`. Count it has to be reset to ensure that ensure_consitency correctly calculates result.

Extracting users seen in the last hour to separate Common Table Expression reduces the amount of processed rows.

Before
```
Update on user_stats  (cost=267492.07..270822.95 rows=2900 width=174) (actual time=12606.121..12606.127 rows=0 loops=1)
  ->  Hash Join  (cost=267492.07..270822.95 rows=2900 width=174) (actual time=12561.814..12603.689 rows=10 loops=1)
        Hash Cond: (user_stats.user_id = x.user_id)
        Join Filter: (x.c <> user_stats.posts_read_count)
        Rows Removed by Join Filter: 67
        ->  Seq Scan on user_stats  (cost=0.00..3125.34 rows=75534 width=134) (actual time=0.014..39.173 rows=75534 loops=1)
        ->  Hash  (cost=267455.80..267455.80 rows=2901 width=48) (actual time=12558.613..12558.617 rows=77 loops=1)
              Buckets: 4096  Batches: 1  Memory Usage: 39kB
              ->  Subquery Scan on x  (cost=267376.03..267455.80 rows=2901 width=48) (actual time=12168.601..12558.572 rows=77 loops=1)
                    ->  GroupAggregate  (cost=267376.03..267426.79 rows=2901 width=12) (actual time=12168.595..12558.525 rows=77 loops=1)
                          Group Key: pt.user_id
                          ->  Sort  (cost=267376.03..267383.28 rows=2901 width=4) (actual time=12100.490..12352.106 rows=2072830 loops=1)
                                Sort Key: pt.user_id
                                Sort Method: external merge  Disk: 28488kB
                                ->  Nested Loop  (cost=1.28..267209.18 rows=2901 width=4) (actual time=0.040..11528.680 rows=2072830 loops=1)
                                      ->  Nested Loop  (cost=0.86..261390.02 rows=13159 width=8) (actual time=0.030..3492.887 rows=3581648 loops=1)
                                            ->  Index Scan using index_users_on_last_seen_at on users u  (cost=0.42..89.71 rows=28 width=4) (actual time=0.010..0.201 rows=78 loops=1)
                                                  Index Cond: (last_seen_at > '2023-04-11 00:22:49.555537'::timestamp without time zone)
                                            ->  Index Scan using index_post_timings_on_user_id on post_timings pt  (cost=0.44..9287.60 rows=4455 width=8) (actual time=0.081..38.542 rows=45919 loops=78)
                                                  Index Cond: (user_id = u.id)
                                      ->  Index Scan using forum_threads_pkey on topics t  (cost=0.42..0.44 rows=1 width=4) (actual time=0.002..0.002 rows=1 loops=3581648)
                                            Index Cond: (id = pt.topic_id)
                                            Filter: ((deleted_at IS NULL) AND ((archetype)::text = 'regular'::text))
                                            Rows Removed by Filter: 0
Planning Time: 0.692 ms
Execution Time: 12612.587 ms
```
After
```
Update on user_stats  (cost=9473.60..12804.30 rows=2828 width=174) (actual time=677.724..677.729 rows=0 loops=1)
  ->  Hash Join  (cost=9473.60..12804.30 rows=2828 width=174) (actual time=672.536..677.706 rows=1 loops=1)
        Hash Cond: (user_stats.user_id = x.user_id)
        Join Filter: (x.c <> user_stats.posts_read_count)
        Rows Removed by Join Filter: 54
        ->  Seq Scan on user_stats  (cost=0.00..3125.34 rows=75534 width=134) (actual time=0.012..23.977 rows=75534 loops=1)
        ->  Hash  (cost=9438.24..9438.24 rows=2829 width=48) (actual time=647.818..647.822 rows=55 loops=1)
              Buckets: 4096  Batches: 1  Memory Usage: 37kB
              ->  Subquery Scan on x  (cost=9381.66..9438.24 rows=2829 width=48) (actual time=647.409..647.805 rows=55 loops=1)
                    ->  HashAggregate  (cost=9381.66..9409.95 rows=2829 width=12) (actual time=647.403..647.786 rows=55 loops=1)
                          Group Key: pt.user_id
                          Batches: 1  Memory Usage: 121kB
                          ->  Nested Loop  (cost=1.86..9367.51 rows=2829 width=4) (actual time=0.056..625.245 rows=120022 loops=1)
                                ->  Nested Loop  (cost=1.44..3692.96 rows=12832 width=8) (actual time=0.047..171.754 rows=217440 loops=1)
                                      ->  Nested Loop  (cost=1.00..254.63 rows=25 width=12) (actual time=0.030..1.407 rows=56 loops=1)
                                            Join Filter: (u.id = user_stats_1.user_id)
                                            ->  Nested Loop  (cost=0.71..243.08 rows=25 width=8) (actual time=0.018..1.207 rows=87 loops=1)
                                                  ->  Index Scan using index_users_on_last_seen_at on users u  (cost=0.42..86.71 rows=27 width=4) (actual time=0.009..0.156 rows=87 loops=1)
                                                        Index Cond: (last_seen_at > '2023-04-11 00:47:07.437568'::timestamp without time zone)
                                                  ->  Index Only Scan using user_stats_pkey on user_stats us  (cost=0.29..5.79 rows=1 width=4) (actual time=0.011..0.011 rows=1 loops=87)
                                                        Index Cond: (user_id = u.id)
                                                        Heap Fetches: 87
                                            ->  Index Scan using user_stats_pkey on user_stats user_stats_1  (cost=0.29..0.45 rows=1 width=4) (actual time=0.002..0.002 rows=1 loops=87)
                                                  Index Cond: (user_id = us.user_id)
                                                  Filter: (posts_read_count < 10000)
                                                  Rows Removed by Filter: 0
                                      ->  Index Scan using index_post_timings_on_user_id on post_timings pt  (cost=0.44..92.98 rows=4455 width=8) (actual time=0.036..2.492 rows=3883 loops=56)
                                            Index Cond: (user_id = user_stats_1.user_id)
                                ->  Index Scan using forum_threads_pkey on topics t  (cost=0.42..0.44 rows=1 width=4) (actual time=0.002..0.002 rows=1 loops=217440)
                                      Index Cond: (id = pt.topic_id)
                                      Filter: ((deleted_at IS NULL) AND ((archetype)::text = 'regular'::text))
                                      Rows Removed by Filter: 0
Planning Time: 1.406 ms
Execution Time: 677.817 ms
```
2023-04-11 12:28:08 +10:00
..
concerns DEV: Added .only_deleted scope in the Trashable module (#20196) 2023-02-07 15:28:59 -03:00
about.rb DEV: Move about_stat_groups to DiscoursePluginRegistry (#20496) 2023-03-02 08:10:16 +10:00
admin_dashboard_data.rb Update default ga_version to v4 and add warning message for v3 (#20936) 2023-04-04 13:14:20 +01:00
admin_dashboard_general_data.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
admin_dashboard_index_data.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
allowed_pm_user.rb FEATURE: Allow List for PMs (#10270) 2020-07-20 15:23:49 -06:00
anonymous_user.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
api_key_scope.rb FEATURE: Add API scope for listing topics in a category (#20471) 2023-02-27 16:21:39 -07:00
api_key.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
application_request.rb PERF: Use native postgres upsert for ApplicationRequest (#20706) 2023-03-17 09:35:29 +00:00
associated_group.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
auto_track_duration_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
backup_draft_post.rb FEATURE: experimental hidden setting for draft backups 2019-10-17 16:58:21 +11:00
backup_draft_topic.rb FEATURE: experimental hidden setting for draft backups 2019-10-17 16:58:21 +11:00
backup_file.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
backup_location_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
backup_metadata.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
badge_grouping.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
badge_type.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
badge.rb DEV: Remove badge_granted_title column from user_profiles (#20476) 2023-03-08 13:37:20 +01:00
base_font_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
bookmark.rb DEV: Minor refactor for bookmark polymorphic changes (#20733) 2023-03-20 10:19:28 +01:00
category_and_topic_lists.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
category_custom_field.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
category_featured_topic.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category_form_template.rb DEV: Apply form template to categories (#20337) 2023-02-23 11:18:14 -08:00
category_group.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category_list.rb DEV: More specific API to including extra associations in CategoryList (#20790) 2023-03-23 12:39:38 -05:00
category_page_style.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category_required_tag_group.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category_search_data.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
category_setting.rb FEATURE: Configurable auto-bump cooldown (#20507) 2023-03-10 13:45:01 +08:00
category_tag_group.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category_tag_stat.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category_tag.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category_user.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
category.rb DEV: Support filter for topics in specific subcategories on /filter (#20927) 2023-04-03 18:36:59 +08:00
child_theme.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
color_scheme_color.rb FIX: Wizard could not send custom color schemes to the client correctly (#10484) 2020-08-20 17:10:33 -07:00
color_scheme_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
color_scheme.rb DEV: Make hex cache work like other caches (#20816) 2023-03-27 09:22:53 -05:00
custom_emoji.rb FEATURE: Create upload_references table (#16146) 2022-06-09 09:24:30 +10:00
developer.rb DEV: make developer cache work like other caches (#20817) 2023-03-27 09:22:33 -05:00
digest_email_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
directory_column.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
directory_item.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
discourse_connect.rb FIX: skip email if blank while syncing SSO attributes. (#19939) 2023-01-24 09:10:24 +05:30
discourse_version_check.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
dismissed_topic_user.rb FEATURE: New way to dismiss new topics (#11927) 2021-02-04 11:27:34 +11:00
do_not_disturb_timing.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
draft_sequence.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
draft.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
email_change_request.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
email_level_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
email_log.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
email_style.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
email_token.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
embeddable_host.rb SECURITY: Remove bypass for base_url (#19995) 2023-01-25 13:50:45 +02:00
embedding.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
emoji_set_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
emoji.rb FIX: Make emoji cache store marshalled objects (#21029) 2023-04-10 10:44:11 -05:00
external_upload_stub.rb DEV: Remove defunct TODOs (#19825) 2023-01-12 09:41:39 +10:00
form_template.rb DEV: Apply form template to categories (#20337) 2023-02-23 11:18:14 -08:00
given_daily_like.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
global_setting.rb DEV: Enable unless cops 2023-02-21 10:30:48 +01:00
group_archived_message.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
group_associated_group.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
group_category_notification_default.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
group_custom_field.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
group_history.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
group_manager.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
group_mention.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
group_request.rb SECURITY: Limit the character count of group membership requests (#19993) 2023-01-25 13:50:33 +02:00
group_tag_notification_default.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
group_user.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
group.rb FEATURE: ability to bulk_remove users from a group (#20876) 2023-03-30 08:06:36 -05:00
ignored_user.rb DEV: Update core model annotations 2021-07-06 10:11:06 +01:00
imap_sync_log.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
incoming_domain.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
incoming_email.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
incoming_link.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
incoming_links_report.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
incoming_referer.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
invite_redeemer.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
invite.rb FIX: Display a proper error when user already exists and email addresses are hidden. (#20585) 2023-03-08 12:38:58 -03:00
invited_group.rb FEATURE: Various improvements to invite system (#12314) 2021-03-09 00:15:14 +02:00
invited_user.rb FEATURE: Various improvements to invite system (#12298) 2021-03-06 13:29:35 +02:00
javascript_cache.rb DEV: Introduce minification and source maps for Theme JS (#18646) 2022-10-18 18:20:10 +01:00
like_notification_frequency_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
linked_topic.rb FEATURE: new setting to create a linked topic on autoclosing mega topics (#11001) 2020-11-02 12:18:48 +05:30
locale_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
mailing_list_mode_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
muted_user.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
navigation_menu_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
new_topic_duration_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
notification_level_when_replying_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
notification.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
oauth2_user_info.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
onceoff_log.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
optimized_image.rb DEV: Enable unless cops 2023-02-21 10:30:48 +01:00
permalink.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
plugin_store_row.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
plugin_store.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_action_type.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
post_action.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
post_analyzer.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_custom_field.rb DEV: Drop plugin related index from core (#20930) 2023-04-04 07:31:09 +08:00
post_detail.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_hotlinked_media.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_mover.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_reply_key.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_reply.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_revision.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_search_data.rb DEV: annotate models (#11047) 2020-10-27 23:42:33 +05:30
post_stat.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
post_timing.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
post_upload.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
post.rb DEV: Remove diffhtml_preview for video thumbnails (#20865) 2023-03-28 12:38:50 -06:00
previous_replies_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
private_message_topic_tracking_state.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
published_page.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
push_subscription.rb DEV: Update core model annotations 2021-07-06 10:11:06 +01:00
quoted_post.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
remote_theme.rb FEATURE: Allow embedded view to include a header (#20150) 2023-02-06 11:10:50 -05:00
remove_muted_tags_from_latest_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
report.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
reviewable_claimed_topic.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
reviewable_flagged_post.rb UX/DEV: Review queue redesign fixes (#20239) 2023-03-02 16:40:53 +01:00
reviewable_history.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
reviewable_post.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
reviewable_priority_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
reviewable_queued_post.rb FIX: Remove action buttons if post has already been reviewed (#20126) 2023-02-06 11:55:52 -07:00
reviewable_score.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
reviewable_sensitivity_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
reviewable_user.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
reviewable.rb DEV: properly namespace chat (#20690) 2023-03-17 14:24:38 +01:00
s3_region_site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
screened_email.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
screened_ip_address.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
screened_url.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
search_log.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
shared_draft.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
shelved_notification.rb DEV: Update core model annotations 2021-07-06 10:11:06 +01:00
sidebar_section_link.rb FIX: public sidebar sections belong to system user (#20972) 2023-04-05 10:52:18 +10:00
sidebar_section.rb FEATURE: public custom sidebar sections visible to anonymous (#20931) 2023-04-06 08:55:47 +10:00
sidebar_url.rb FIX: Drop internal URL validation for paths in sidebar (#20891) 2023-03-31 13:26:56 +08:00
single_sign_on_record.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
site_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
site.rb FIX: Welcome topic banner showing after general category is deleted (#20639) 2023-03-10 12:33:12 -07:00
sitemap.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
skipped_email_log.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
slug_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
stylesheet_cache.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
tag_group_membership.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
tag_group_permission.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
tag_group.rb PERF: N+1 queries when viewing tags (#19891) 2023-01-17 15:50:21 +08:00
tag_search_data.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
tag_user.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
tag.rb SECURITY: Show only visible tags in metadata 2023-02-23 17:22:20 +01:00
theme_field.rb DEV: Store theme sprites in the DB (#20501) 2023-03-14 13:11:45 -05:00
theme_modifier_set.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
theme_setting.rb FEATURE: Create upload_references table (#16146) 2022-06-09 09:24:30 +10:00
theme_svg_sprite.rb DEV: Store theme sprites in the DB (#20501) 2023-03-14 13:11:45 -05:00
theme_translation_override.rb DEV: Use the theme cache helper for settings 2022-02-21 09:45:14 +00:00
theme.rb DEV: Make theme cache work like other caches (#20813) 2023-03-24 12:37:16 -05:00
top_lists.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
top_menu_item.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
top_topic.rb FIX: Prevent concurrent updates to top_topics (#19854) 2023-01-12 14:03:26 -06:00
topic_allowed_group.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
topic_allowed_user.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
topic_converter.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
topic_custom_field.rb DEV: Update core model annotations 2021-07-06 10:11:06 +01:00
topic_embed.rb FEATURE: Update topic/comment embedding parameters (#20181) 2023-02-28 14:31:59 +02:00
topic_featured_users.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_group.rb DEV: Enable unless cops 2023-02-21 10:30:48 +01:00
topic_invite.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
topic_link_click.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
topic_link.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
topic_list.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_notifier.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_participants_summary.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_poster.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_posters_summary.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_search_data.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
topic_tag.rb SECURITY: Default tags to show count of topics in unrestricted categories (#19916) 2023-01-20 09:50:24 +08:00
topic_thumbnail.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_timer.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic_tracking_state.rb FIX: Incorrect topic tracking state count when a new category is created (#20506) 2023-03-06 10:13:10 +08:00
topic_user.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
topic_view_item.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
topic.rb FIX: Don’t email suspended users from group PM 2023-03-08 15:53:53 +01:00
translation_override.rb REFACTOR: Fix pluralized strings in chat plugin (#20357) 2023-02-20 10:31:02 +01:00
trust_level3_requirements.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
trust_level_and_staff_and_disabled_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
trust_level_and_staff_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
trust_level_setting.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
unsubscribe_key.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
upload_reference.rb DEV: Use UploadReference instead of ChatUpload in chat (#19947) 2023-01-24 13:28:21 +10:00
upload.rb FIX: dominant color not working for 16bit images (#20300) 2023-02-15 12:41:04 +11:00
user_action.rb DEV: Enable unless cops 2023-02-21 10:30:48 +01:00
user_api_key_scope.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_api_key.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_archived_message.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_associated_account.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
user_associated_group.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_auth_token_log.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
user_auth_token.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_avatar.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_badge.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_badges.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_bookmark_list.rb FIX: Return next bookmarks page only if it exists (#18139) 2022-09-01 13:04:00 +03:00
user_custom_field.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_email.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_export.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_field_option.rb FIX: Validate value of custom dropdown user fields - dropdowns and multiple selects (#13890) 2021-07-30 13:50:47 -04:00
user_field.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_history.rb FEATURE: log manual bounce reset (#20758) 2023-03-21 15:26:26 +01:00
user_ip_address_history.rb DEV: annotate models (#11047) 2020-10-27 23:42:33 +05:30
user_notification_schedule.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_open_id.rb DEV: Drop legacy OpenID 2.0 support (#8894) 2020-02-07 17:32:35 +00:00
user_option.rb FEATURE: Chat header icon indicator preference (#20474) 2023-03-01 11:01:44 +10:00
user_profile_view.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_profile.rb DEV: Remove badge_granted_title column from user_profiles (#20476) 2023-03-08 13:37:20 +01:00
user_search_data.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
user_search.rb FIX: only show approved users in search_user results when site setting enabled (#20493) 2023-03-01 12:23:29 +08:00
user_second_factor.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_security_key.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_stat.rb FIX: improve performance of UserStat.ensure_consistency (#21044) 2023-04-11 12:28:08 +10:00
user_status.rb FIX: Truncate existing user status to 100 chars (#20044) 2023-01-30 10:49:08 +02:00
user_summary.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_upload.rb DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
user_visit.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user_warning.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
user.rb FIX: Do not validate email in TL promotion (#20892) 2023-03-30 13:52:10 +10:00
username_validator.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
watched_word.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
web_crawler_request.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
web_hook_event_type.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
web_hook_event.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
web_hook.rb DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00