mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 02:13:47 +08:00
a7628c1d74
The `posts` relation on `Topic` is not ordered. Using `Topic.posts.first` is basically the same as asking for a random post, it will depend on DB order. This breaks on Topic merge and split for example. Additionally, a huge problem with that is that it forces active record down a slow path. `Topic.posts.first` is extremely slow on giant topics, since it has no default ordering it appears AR materializes the entire set prior to doing `first`. This commit also illustrates the importance of testing, initially I only fixed the second instance of the problem in `post_validator.rb` but testing revealed that the problem was repeated at the top of the file. Longer term we should consider a larger change of default ordering the posts relations so people do not fall down this trap anymore. |
||
---|---|---|
.. | ||
allow_user_locale_enabled_validator.rb | ||
allowed_ip_address_validator.rb | ||
alternative_reply_by_email_addresses_validator.rb | ||
censored_words_validator.rb | ||
email_setting_validator.rb | ||
email_validator.rb | ||
enable_local_logins_via_email_validator.rb | ||
enable_private_email_messages_validator.rb | ||
enable_sso_validator.rb | ||
integer_setting_validator.rb | ||
ip_address_format_validator.rb | ||
max_emojis_validator.rb | ||
max_username_length_validator.rb | ||
min_username_length_validator.rb | ||
password_validator.rb | ||
pop3_polling_enabled_setting_validator.rb | ||
post_validator.rb | ||
quality_title_validator.rb | ||
regex_presence_validator.rb | ||
regex_setting_validation.rb | ||
regex_setting_validator.rb | ||
reply_by_email_address_validator.rb | ||
reply_by_email_enabled_validator.rb | ||
sso_overrides_email_validator.rb | ||
string_setting_validator.rb | ||
stripped_length_validator.rb | ||
topic_title_length_validator.rb | ||
unique_among_validator.rb | ||
upload_url_validator.rb | ||
upload_validator.rb | ||
url_validator.rb | ||
user_full_name_validator.rb | ||
username_setting_validator.rb |