Skip to content

Commit bdd55eb

Browse files
add veb file version (#606)
1 parent f80a391 commit bdd55eb

7 files changed

Lines changed: 383 additions & 110 deletions

File tree

mysql-test/include/villagesql/create_extension_sdk.inc

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
#
1313
# Optional:
1414
# --let $extension_manifest_extra = , "description": "My extension"
15+
# --let $extension_versioned = 1
16+
# When set, copies to {name}-{version}.veb instead of {name}.veb.
17+
# Use this when the test needs versioned VEB files on disk (e.g. for
18+
# INSTALL EXTENSION foo VERSION 'x.y.z').
1519
#
1620
# The VEB file will be created and moved to the VEB directory.
1721
#
@@ -76,9 +80,18 @@ if (!$extension_version)
7680

7781
# Move VEB to server's VEB directory
7882
--exec mkdir -p $veb_dir
79-
--exec cp $ext_build_dir/build/$extension_name.veb $veb_dir/
8083

81-
--echo Created $extension_name.veb
84+
if ($extension_versioned)
85+
{
86+
--exec cp $ext_build_dir/build/$extension_name.veb $veb_dir/$extension_name-$extension_version.veb
87+
--echo Created $extension_name-$extension_version.veb
88+
}
89+
90+
if (!$extension_versioned)
91+
{
92+
--exec cp $ext_build_dir/build/$extension_name.veb $veb_dir/
93+
--echo Created $extension_name.veb
94+
}
8295

8396
# Cleanup build directory
8497
--exec rm -rf $ext_build_dir
@@ -88,3 +101,4 @@ if (!$extension_version)
88101
--let $extension_version =
89102
--let $extension_source =
90103
--let $extension_manifest_extra =
104+
--let $extension_versioned =
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
Creating extension versioned_noop using SDK...
2+
Created versioned_noop-1.2.3.veb
3+
INSTALL EXTENSION versioned_noop;
4+
ERROR HY000: Multiple versions of extension 'versioned_noop' found in 'MYSQLTEST_VARDIR/mysqld.1/veb/'; specify a version with INSTALL EXTENSION versioned_noop VERSION 'x.y.z'
5+
INSTALL EXTENSION versioned_noop;
6+
SELECT extension_name, extension_version FROM INFORMATION_SCHEMA.EXTENSIONS
7+
WHERE extension_name = 'versioned_noop';
8+
EXTENSION_NAME EXTENSION_VERSION
9+
versioned_noop 1.2.3
10+
UNINSTALL EXTENSION versioned_noop VERSION '1.2.3';
11+
INSTALL EXTENSION versioned_noop VERSION '1.2.3';
12+
SELECT extension_name, extension_version FROM INFORMATION_SCHEMA.EXTENSIONS
13+
WHERE extension_name = 'versioned_noop';
14+
EXTENSION_NAME EXTENSION_VERSION
15+
versioned_noop 1.2.3
16+
UNINSTALL EXTENSION versioned_noop VERSION '1.2.3';
17+
INSTALL EXTENSION versioned_noop VERSION '9.9.9';
18+
ERROR HY000: Version mismatch in 'versioned_noop-9.9.9.veb': filename says '9.9.9' but manifest says '1.2.3'
19+
INSTALL EXTENSION versioned_noop;
20+
ERROR HY000: Version mismatch in 'versioned_noop-9.9.9.veb': filename says '9.9.9' but manifest says '1.2.3'
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Test INSTALL EXTENSION with versioned VEB filenames ({name}-{version}.veb).
2+
# The original extension_install_version.test covers unversioned {name}.veb
3+
# with manifest-version matching; this one covers the version-in-filename
4+
# resolution rules.
5+
6+
--let $veb_dir = `SELECT @@veb_dir`
7+
8+
--let $extension_name = versioned_noop
9+
--let $extension_version = 1.2.3
10+
--let $extension_source = $MYSQL_TEST_DIR/suite/villagesql/std_data/noop_extension.cc
11+
--let $extension_versioned = 1
12+
--source include/villagesql/create_extension_sdk.inc
13+
14+
--copy_file $veb_dir/versioned_noop-1.2.3.veb $veb_dir/versioned_noop-2.0.0.veb
15+
--replace_result $MYSQLTEST_VARDIR/mysqld.1/veb/ MYSQLTEST_VEB_DIR
16+
--replace_result $veb_dir MYSQLTEST_VEB_DIR
17+
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
18+
--error ER_VILLAGESQL_GENERIC_ERROR
19+
INSTALL EXTENSION versioned_noop;
20+
--remove_file $veb_dir/versioned_noop-2.0.0.veb
21+
22+
INSTALL EXTENSION versioned_noop;
23+
SELECT extension_name, extension_version FROM INFORMATION_SCHEMA.EXTENSIONS
24+
WHERE extension_name = 'versioned_noop';
25+
UNINSTALL EXTENSION versioned_noop VERSION '1.2.3';
26+
27+
INSTALL EXTENSION versioned_noop VERSION '1.2.3';
28+
SELECT extension_name, extension_version FROM INFORMATION_SCHEMA.EXTENSIONS
29+
WHERE extension_name = 'versioned_noop';
30+
UNINSTALL EXTENSION versioned_noop VERSION '1.2.3';
31+
32+
--copy_file $veb_dir/versioned_noop-1.2.3.veb $veb_dir/versioned_noop-9.9.9.veb
33+
--error ER_VILLAGESQL_GENERIC_ERROR
34+
INSTALL EXTENSION versioned_noop VERSION '9.9.9';
35+
--remove_file $veb_dir/versioned_noop-9.9.9.veb
36+
37+
# Filename version must match manifest version even when VERSION is omitted.
38+
# Move versioned_noop-1.2.3.veb to versioned_noop-9.9.9.veb: filename says
39+
# 9.9.9 but manifest still says 1.2.3.
40+
--move_file $veb_dir/versioned_noop-1.2.3.veb $veb_dir/versioned_noop-9.9.9.veb
41+
--error ER_VILLAGESQL_GENERIC_ERROR
42+
INSTALL EXTENSION versioned_noop;
43+
--remove_file $veb_dir/versioned_noop-9.9.9.veb

0 commit comments

Comments
 (0)