mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-07 00:37:22 +08:00
Database dumps sometimes reference functions in the `discourse_functions` schema. It's possible that some of these functions have been dropped in a newer version of Discourse. In that case, restoring an older backup will fail with a `ERROR: function discourse_functions.something_something() does not exist` error. The restore functionality contains a workaround for that problem, but it didn't work with functions created in plugin migrations. This commit adds support for temporarily creating missing `discourse_functions` from plugins. And it adds a simple check if the DB migration file even contains the required `DROPPED_TABLES` or `DROPPED_COLUMNS` constant. We don't need to create an instance of the DB migration class unless one of those constants is used. This makes the restore slightly faster and works around a problem with migrations that execute without `up` or `down` methods (e.g. `BackfillChatChannelAndThreadLastMessageIdsPostMigrate`). |
||
|---|---|---|
| .. | ||
| backup_file_handler.rb | ||
| backup_store.rb | ||
| backuper.rb | ||
| database_restorer.rb | ||
| factory.rb | ||
| local_backup_store.rb | ||
| logger.rb | ||
| meta_data_handler.rb | ||
| restorer.rb | ||
| s3_backup_store.rb | ||
| system_interface.rb | ||
| uploads_restorer.rb | ||