@@ -77,7 +77,7 @@ if [[ -z "$target_version" ]]; then
77
77
echo " Using default RPM directory"
78
78
rpm_dir=" rpm/"
79
79
fi
80
- if [ ! -d $rpm_dir ]; then
80
+ if [ ! -d " $rpm_dir " ]; then
81
81
echo " Error: directory $rpm_dir not found"
82
82
usage
83
83
exit 1
@@ -96,17 +96,18 @@ function wait_for_socket {
96
96
SOCK=" $1 "
97
97
LIMIT=" ${2:- 10} "
98
98
log " Waiting $LIMIT seconds for Unix socket to be created at $SOCK ..."
99
- for ii in $( seq $LIMIT ) ; do
100
- [ -S $SOCK ] && break || sleep 1
99
+ for ii in $( seq " $LIMIT " ) ; do
100
+ [ -S " $SOCK " ] && break
101
+ sleep 1
101
102
done
102
- if [ $ii == $LIMIT ]; then
103
+ if [ " $ii " == " $LIMIT " ]; then
103
104
log " Unix socket was not created within $LIMIT seconds"
104
105
false
105
106
fi
106
107
}
107
108
108
109
# Install dependencies
109
- log Installing dependencies
110
+ log " Installing dependencies"
110
111
dnf install -y wget libxcrypt-compat libaio ncurses-compat-libs numactl-libs
111
112
112
113
install_mariadb_from_archive () {
@@ -116,19 +117,20 @@ install_mariadb_from_archive() {
116
117
# Certain required libraries are missing in the latest version of the distribuiton this test is being run on (currently Fedora).
117
118
# The missing libraries depned on the latest distribution version, so that is found by scanning the MariaDB archive directory.
118
119
119
- log Finding MariaDB RPM repository for version $version
120
- latest_distro=$( curl -s https://archive.mariadb.org/mariadb-$version /yum/fedora/ | (grep -Eo ' ^<a href="[0-9]+/">' || true) |
121
- sort -V | tail -n 1 | sed -n ' s/^<a href="\([0-9]*\)\/">/\1/p' )
122
- if [ -z $latest_distro ]; then
123
- log Could not find repository. Exiting.
120
+ log " Finding MariaDB RPM repository for version $version "
121
+ latest_distro=$( curl -s https://archive.mariadb.org/mariadb-" $version " /yum/fedora/ |
122
+ (grep -Eo ' ^<a href="[0-9]+/">' || true) |
123
+ sort -V | tail -n 1 | sed -n ' s/^<a href="\([0-9]*\)\/">/\1/p' )
124
+ if [ -z " $latest_distro " ]; then
125
+ log " Could not find repository. Exiting."
124
126
exit 1
125
127
fi
126
128
rpm_repository=https://archive.mariadb.org/mariadb-$version /yum/fedora/$latest_distro /$( uname -m) /
127
- log RPM repository: $rpm_repository
129
+ log " RPM repository: $rpm_repository "
128
130
# log Fedora distribution: $latest_distro # Currently only supports tests on Fedora
129
131
130
132
# Use custom repository
131
- log Using custom MariaDB repository
133
+ log " Using custom MariaDB repository"
132
134
cat << EOF >/etc/yum.repos.d/MariaDB.repo
133
135
[mariadb]
134
136
name=MariaDB
@@ -141,12 +143,12 @@ EOF
141
143
142
144
# Get version of MariaDB server. This is necessary to check which additional dependencies must be installed.
143
145
# Full version has been defined
144
- major_version=$( echo $version | cut -d ' .' -f1-2)
145
- minor_version=$( echo $version | cut -d ' .' -f3)
146
+ major_version=$( echo " $version " | cut -d ' .' -f1-2)
147
+ minor_version=$( echo " $version " | cut -d ' .' -f3)
146
148
# Only major version has been defined, get minor version from RPM
147
- if [ -z $minor_version ]; then
149
+ if [ -z " $minor_version " ]; then
148
150
rpm_version=$( dnf list MariaDB-server | grep -oP ' MariaDB-server.x86_64\s+\K[0-9]+\.[0-9]+\.[0-9]+(?=-)' )
149
- minor_version=$( echo $rpm_version | cut -d ' .' -f3)
151
+ minor_version=$( echo " $rpm_version " | cut -d ' .' -f3)
150
152
fi
151
153
# Install missing dependencies that are version/distro specific
152
154
log " Installing missing libraries"
@@ -162,110 +164,122 @@ EOF
162
164
(dnf install -y boost-program-options-1.81.0 ||
163
165
dnf install -y https://rpmfind.net/linux/fedora/linux/releases/39/Everything/x86_64/os/Packages/b/boost-program-options-1.81.0-8.fc39.x86_64.rpm)
164
166
if [[ $major_version == " 10.4" ]] && [[ $minor_version -ge 24 ]]; then
165
- log RPMs not available for version 10.4.24+ from this repository. You may try testing by installing from the .tar.gz binaries.
167
+ log " RPMs not available for version 10.4.24+ from this repository. You may try testing by installing from the .tar.gz binaries."
166
168
exit 1
167
169
fi
168
170
169
- log Begin installation of MariaDB version $version
171
+ log " Begin installation of MariaDB version $version "
170
172
dnf install -y MariaDB-server
171
173
}
172
174
173
- install_mariadb_from_archive $source_version
175
+ install_mariadb_from_archive " $source_version "
174
176
175
177
# Set variables and binaries
176
178
MYSQLD=$( [ -f /usr/sbin/mariadbd ] && echo " /usr/sbin/mariadbd" || echo " /usr/sbin/mysqld" )
177
- MYSQL_BIN=/usr/bin
179
+ MYSQL_CLIENT=$( command -v mariadb || command -v mysql)
180
+ MYSQL_INSTALL_DB=$( command -v mariadb-install-db || command -v mysql_install_db ||
181
+ find /usr/bin /usr/sbin /usr/local/bin -name ' mariadb-install-db' -o -name ' mysql_install_db' 2> /dev/null |
182
+ head -n 1)
178
183
TMP_DATA_DIR=/tmp/var/lib/mysql
179
184
rm -rf $TMP_DATA_DIR test_upgrade.log # clean up from old tests
180
185
SOCK=/var/lib/mysql/mysql.sock
181
186
182
187
start_mariadb_server () {
183
188
$MYSQLD --version # check version
184
189
185
- log Creating system tables with mysql_install_db
186
- $MYSQL_BIN /mysql_install_db --user=mysql --datadir=$TMP_DATA_DIR
190
+ if [ -z " $MYSQL_INSTALL_DB " ]; then
191
+ log " Error: mysql_install_db or mariadb-install-db not found"
192
+ exit 1
193
+ fi
194
+
195
+ log " Creating system tables"
196
+ $MYSQL_INSTALL_DB --user=mysql --datadir=$TMP_DATA_DIR
187
197
chown -R mysql $TMP_DATA_DIR
188
198
189
199
# Start server
190
- log Starting mariadb daemon
191
- sudo -u mysql $MYSQLD --datadir=$TMP_DATA_DIR &
192
- wait_for_socket $SOCK 10
193
- $MYSQL_BIN /mysql --skip-column-names -e " SELECT @@version, @@version_comment" # Show version
200
+ log " Starting mariadb daemon"
201
+ sudo -u mysql " $MYSQLD " --datadir=$TMP_DATA_DIR &
202
+ wait_for_socket " $SOCK " 10
203
+ $MYSQL_CLIENT --skip-column-names -e " SELECT @@version, @@version_comment" # Show version
194
204
}
195
205
196
206
shutdown_and_wait () {
197
- while $MYSQL_BIN /mysql -e ' SELECT 1' 2>&1 > /dev/null; do
198
- $MYSQL_BIN /mysql -e ' SHUTDOWN'
207
+ while $MYSQL_CLIENT -e ' SELECT 1' > /dev/null 2>&1 ; do
208
+ $MYSQL_CLIENT -e ' SHUTDOWN'
199
209
sleep 1
200
- [ ! -S $SOCK ] && break
210
+ [ ! -S " $SOCK " ] && break
201
211
done
202
212
}
203
213
204
- log Start server with source version
214
+ log " Start server with source version"
205
215
start_mariadb_server
206
216
207
- log Dump database contents in installed state
208
- $MYSQL_BIN /mysqldump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-installed-database.sql
209
- log Check if tables need upgrade
210
- $MYSQL_BIN /mysqlcheck --all-databases --check-upgrade | tee -a test_upgrade.log
217
+ MYSQL_DUMP=$( command -v mariadb-dump || command -v mysqldump)
218
+ MYSQL_CHECK=$( command -v mariadb-check || command -v mysqlcheck)
219
+ MYSQL_UPGRADE=$( command -v mariadb-upgrade || command -v mysql_upgrade)
220
+
221
+ log " Dump database contents in installed state"
222
+ $MYSQL_DUMP --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-installed-database.sql
223
+ log " Check if tables need upgrade"
224
+ $MYSQL_CHECK --all-databases --check-upgrade | tee -a test_upgrade.log
211
225
212
226
# Generate user tables filled with random data
213
- $MYSQL_BIN /mysql -e " CREATE DATABASE random_data;" || true
214
- $MYSQL_BIN /mysql -e " USE random_data;"
227
+ $MYSQL_CLIENT -e " CREATE DATABASE random_data;" || true
228
+ $MYSQL_CLIENT -e " USE random_data;"
215
229
# Varchars
216
- $MYSQL_BIN /mysql -D random_data -e " CREATE TABLE random_strings (string VARCHAR(255) NOT NULL);" || true
217
- for i in {1..10}; do
218
- $MYSQL_BIN /mysql -D random_data -e " INSERT INTO random_strings ( string ) VALUES ( MD5(RAND()) );"
230
+ $MYSQL_CLIENT -D random_data -e " CREATE TABLE random_strings (string VARCHAR(255) NOT NULL);" || true
231
+ for _ in {1..10}; do
232
+ $MYSQL_CLIENT -D random_data -e " INSERT INTO random_strings ( string ) VALUES ( MD5(RAND()) );"
219
233
done
220
- $MYSQL_BIN /mysql -D random_data -e " SELECT count(*) FROM random_strings;"
234
+ $MYSQL_CLIENT -D random_data -e " SELECT count(*) FROM random_strings;"
221
235
# Integers
222
- $MYSQL_BIN /mysql -D random_data -e " CREATE TABLE random_numbers (number INT NOT NULL);" || true
223
- for i in {1..10}; do
224
- $MYSQL_BIN /mysql -D random_data -e " INSERT INTO random_numbers ( number ) VALUES ( RAND() );"
236
+ $MYSQL_CLIENT -D random_data -e " CREATE TABLE random_numbers (number INT NOT NULL);" || true
237
+ for _ in {1..10}; do
238
+ $MYSQL_CLIENT -D random_data -e " INSERT INTO random_numbers ( number ) VALUES ( RAND() );"
225
239
done
226
- $MYSQL_BIN /mysql -D random_data -e " SELECT count(*) FROM random_numbers;"
240
+ $MYSQL_CLIENT -D random_data -e " SELECT count(*) FROM random_numbers;"
227
241
228
242
# Run mysql_upgrade which should have no effect
229
- log Do upgrade
230
- $MYSQL_BIN /mysql_upgrade -u root -v | tee -a test_upgrade.log
231
- log Dump database contents in upgraded state
232
- $MYSQL_BIN /mysqldump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-upgraded-database.sql
233
- $MYSQL_BIN /mysql --skip-column-names -e " SELECT @@version, @@version_comment" # Show version
234
- log Shutdown
243
+ log " Do upgrade"
244
+ $MYSQL_UPGRADE -u root -v | tee -a test_upgrade.log
245
+ log " Dump database contents in upgraded state"
246
+ $MYSQL_DUMP --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-upgraded-database.sql
247
+ $MYSQL_CLIENT --skip-column-names -e " SELECT @@version, @@version_comment" # Show version
248
+ log " Shutdown"
235
249
shutdown_and_wait
236
250
237
- log Uninstall source version
251
+ log " Uninstall source version"
238
252
dnf remove -y MariaDB-server
239
253
240
- log ------------------------------------------------
254
+ log " ------------------------------------------------"
241
255
if [[ -n " $target_version " ]]; then
242
- install_mariadb_from_archive $target_version
256
+ install_mariadb_from_archive " $target_version "
243
257
elif [[ -n " $rpm_dir " ]]; then
244
- log Begin installation of MariaDB from local RPMs
258
+ log " Begin installation of MariaDB from local RPMs"
245
259
log " rpm_dir: $rpm_dir "
246
- dnf install -y $rpm_dir /* .rpm # from previous job
260
+ dnf install -y " $rpm_dir " /* .rpm # from previous job
247
261
fi
248
262
249
263
start_mariadb_server
250
264
251
- log Dump database contents in installed state
252
- $MYSQL_BIN /mysqldump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-installed-database.sql || true
265
+ log " Dump database contents in installed state"
266
+ $MYSQL_DUMP --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-installed-database.sql || true
253
267
# The step above fails on: mariadb-dump: Couldn't execute 'show events': Cannot proceed, because event scheduler is disabled (1577)
254
268
255
- log Run check for upgrade
256
- $MYSQL_BIN /mysqlcheck --all-databases --check-upgrade --check --extended | tee -a test_upgrade.log
269
+ log " Run check for upgrade"
270
+ $MYSQL_CHECK --all-databases --check-upgrade --check --extended | tee -a test_upgrade.log
257
271
258
- log Run upgrade
259
- $MYSQL_BIN /mysql_upgrade -u root | tee -a test_upgrade.log # minor version is the same, so no upgrade done
272
+ log " Run upgrade"
273
+ $MYSQL_UPGRADE -u root | tee -a test_upgrade.log # minor version is the same, so no upgrade done
260
274
261
- log Force upgrade
262
- $MYSQL_BIN /mysql_upgrade -u root --force | tee -a test_upgrade.log
275
+ log " Force upgrade"
276
+ $MYSQL_UPGRADE -u root --force | tee -a test_upgrade.log
263
277
264
- log Dump database contents in upgraded state
265
- $MYSQL_BIN /mysqldump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-upgraded-database.sql
266
- $MYSQL_BIN /mysql --skip-column-names -e " SELECT @@version, @@version_comment" # Show version
278
+ log " Dump database contents in upgraded state"
279
+ $MYSQL_DUMP --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-upgraded-database.sql
280
+ $MYSQL_CLIENT --skip-column-names -e " SELECT @@version, @@version_comment" # Show version
267
281
268
- log Shutdown
282
+ log " Shutdown"
269
283
shutdown_and_wait
270
284
echo
271
285
0 commit comments