From 9cfe11e7a0f81450d7bcbed31b7bec25d63b4956 Mon Sep 17 00:00:00 2001 From: naskya Date: Mon, 22 Jan 2024 07:22:29 +0900 Subject: [PATCH] migration: wrap the revert SQL queries in BEGIN; and COMMIT; Co-authored-by: sup39 --- Makefile | 2 +- docs/migrate_back.md | 64 +++++++++++++++++--------------------------- neko/revert.sql | 4 +++ 3 files changed, 29 insertions(+), 41 deletions(-) diff --git a/Makefile b/Makefile index 00b3a3cc9..3f58b58eb 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ $(T)/test-revert: neko/revert.sql $(MIGRATIONS) --user=$(POSTGRES_USER) \ --dbname=$(POSTGRES_DB) \ --set='ON_ERROR_STOP=1' \ - --command="$$(printf 'BEGIN;\n%s\nROLLBACK;' "$$(cat ../neko/revert.sql)")" + --command="$$(printf '%s\nROLLBACK;' "$$(cat ../neko/revert.sql | sed '$$ d')")" touch $@ diff --git a/docs/migrate_back.md b/docs/migrate_back.md index 92842368c..0b4fff786 100644 --- a/docs/migrate_back.md +++ b/docs/migrate_back.md @@ -32,25 +32,17 @@ db: firefish_db # これ ``` -6. 次のコマンドでデータベースをいじる前に、そのコマンドが正常に動作するか確認する(`firefish_db` の部分は自分のデータベース名に変更する) - - ```bash - printf 'BEGIN;\n%s\nROLLBACK;' "$(cat neko/revert.sql)" | sudo -u postgres psql --echo-all --set='ON_ERROR_STOP=1' --dbname=firefish_db - ``` - - これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)。 - - 出力の最後の行が `ROLLBACK` になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。 - -7. このフォークで加えられたデータベースへの変更を実際に取り消す(`firefish_db` の部分は自分のデータベース名に変更する) +6. このフォークで加えられたデータベースへの変更を取り消す(`firefish_db` の部分は自分のデータベース名に変更する) ```bash sudo -u postgres psql --file=neko/revert.sql --dbname=firefish_db ``` - これにも非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。 + これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。 -8. PGroonga をアンインストールする + 出力の最後の行が `COMMIT` になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。 + +7. PGroonga をアンインストールする コマンドの例 @@ -61,25 +53,25 @@ sudo apt update ``` -9. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く +8. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く ```bash cd .. ``` -10. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える +9. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える ```bash mv firefish firefish.old ``` -11. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する +10. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する ```bash git clone https://git.joinfirefish.org/firefish/firefish.git firefish ``` -12. 必要なファイルをコピーする +11. 必要なファイルをコピーする ```bash rm -rf firefish/files firefish/custom firefish/.config @@ -88,14 +80,14 @@ cp -r firefish.old/.config firefish ``` -13. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入り、`develop` ブランチに行く(実際には既に `develop` にいるはず) +12. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入り、`develop` ブランチに行く(実際には既に `develop` にいるはず) ```bash cd firefish git checkout develop ``` -14. Firefish をビルドする +13. Firefish をビルドする ```bash corepack prepare pnpm@latest --activate @@ -104,13 +96,13 @@ pnpm run migrate ``` -15. サーバーを起動して動作を確認する +14. サーバーを起動して動作を確認する ```bash sudo systemctl start firefish ``` -16. 元々 Firefish がインストールされていたディレクトリを削除する +15. 元々 Firefish がインストールされていたディレクトリを削除する ```bash cd .. @@ -153,43 +145,35 @@ Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` を POSTGRES_DB=firefish_db # これがデータベース名 ``` -6. 次のコマンドでデータベースをいじる前に、そのコマンドが正常に動作するか確認する(`firefish` と `firefish_db` の部分は自分のユーザー名とデータベース名に変更する) - - ```bash - podman-compose exec db psql --user=firefish --dbname=firefish_db --echo-all --set='ON_ERROR_STOP=1' --command="$(printf 'BEGIN;\n%s\nROLLBACK;' "$(cat neko/revert.sql)")" - ``` - - これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)。 - - 出力の最後の行が `ROLLBACK`(またはその後に `exit code: 0` と続いている)になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。 - -7. このフォークで加えられたデータベースへの変更を実際に取り消す(`firefish_db` の部分は自分のデータベース名に変更する) +6. このフォークで加えられたデータベースへの変更を取り消す(`firefish_db` の部分は自分のデータベース名に変更する) ```bash podman-compose exec db psql --user=firefish --dbname=firefish_db --command="$(cat neko/revert.sql)" ``` - これにも非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。 + これには非常に時間が掛かります(サーバーの規模によりますが、数十分から 1 時間の時間が掛かることが予想されます)が、**絶対に処理を強制終了しないでください**。 -8. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く + 出力の最後の行が `ROLLBACK`(またはその後に `exit code: 0` と続いている)になっていれば問題ありません。そうでない場合には[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。 + +7. Firefish がインストールされているディレクトリの親ディレクトリ (e.g., `/home/firefish`) に行く ```bash cd .. ``` -9. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える +8. Firefish がインストールされているディレクトリ (e.g., `./firefish`) の名前を変える ```bash mv firefish firefish.old ``` -10. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する +9. Firefish がインストールされているディレクトリと同じ名前で本家版の Firefish を clone する ```bash git clone https://git.joinfirefish.org/firefish/firefish.git firefish ``` -11. 必要なファイルをコピーする +10. 必要なファイルをコピーする ```bash rm -rf firefish/files firefish/custom firefish/.config @@ -198,13 +182,13 @@ Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` を cp -r firefish.old/.config firefish ``` -12. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入る +11. 新しい Firefish のディレクトリ (e.g., `./firefish`) に入る ```bash cd firefish ``` -13. サーバーを起動して動作を確認する +12. サーバーを起動して動作を確認する ```bash podman-compose up --detach @@ -212,7 +196,7 @@ Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` を `docker-compose.yml` にカスタムが必要な場合には、各自で編集してください。 -14. 元々 Firefish がインストールされていたディレクトリを削除する +13. 元々 Firefish がインストールされていたディレクトリを削除する ```bash cd .. diff --git a/neko/revert.sql b/neko/revert.sql index c5b2282bc..3d4894d49 100644 --- a/neko/revert.sql +++ b/neko/revert.sql @@ -1,3 +1,5 @@ +BEGIN; + -- remove-nsfw-detection ALTER TABLE "user_profile" ADD "autoSensitive" boolean NOT NULL DEFAULT false; ALTER TABLE "meta" ADD "enableSensitiveMediaDetectionForVideos" boolean NOT NULL DEFAULT false; @@ -102,3 +104,5 @@ DROP EXTENSION pgroonga CASCADE; -- emoji-moderator ALTER TABLE "user" DROP COLUMN "emojiModPerm"; DROP TYPE "public"."user_emojimodperm_enum"; + +COMMIT;