mirror of https://github.com/citusdata/citus.git
34 lines
1.2 KiB
Bash
Executable File
34 lines
1.2 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
set -euo pipefail
|
|
# shellcheck disable=SC1091
|
|
source ci/ci_helpers.sh
|
|
|
|
# This file checks for the existence of downgrade scripts for every upgrade script that is changed in the branch.
|
|
|
|
# create list of migration files for upgrades
|
|
upgrade_files=$(git diff --name-only origin/main | { grep "src/backend/distributed/sql/citus--.*sql" || exit 0 ; })
|
|
downgrade_files=$(git diff --name-only origin/main | { grep "src/backend/distributed/sql/downgrades/citus--.*sql" || exit 0 ; })
|
|
ret_value=0
|
|
|
|
for file in $upgrade_files
|
|
do
|
|
# There should always be 2 matches, and no need to avoid splitting here
|
|
# shellcheck disable=SC2207
|
|
versions=($(grep --only-matching --extended-regexp "[0-9]+\.[0-9]+[-.][0-9]+" <<< "$file"))
|
|
|
|
from_version=${versions[0]};
|
|
to_version=${versions[1]};
|
|
|
|
downgrade_migration_file="src/backend/distributed/sql/downgrades/citus--$to_version--$from_version.sql"
|
|
|
|
# check for the existence of migration scripts
|
|
if [[ $(grep --line-regexp --count downgrade_migration_file <<< "$downgrade_files") == 0 ]]
|
|
then
|
|
echo "$file is updated, but $downgrade_migration_file is not updated in branch"
|
|
ret_value=1
|
|
fi
|
|
done
|
|
|
|
exit $ret_value;
|