mariadb/mysql-test/suite/maria/encrypt-no-key.test
Monty 1ef22e28ad MDEV-26258 Various crashes/asserts/corruptions when Aria encryption is enabled/used, but the encryption plugin is not loaded
The reason for the MDEV reported failures is that the tests are enabling
encryption for Aria but not providing any encryption keys.

Fixed by checking if encryption keys exists before creating the table.

Other things:
- maria.encrypt_wrong-key changed as we now get the error on CREATE
  instead during insert.
2023-05-02 23:37:10 +03:00

55 lines
1.7 KiB
Text

#
# MDEV-18496 Crash when Aria encryption is enabled but plugin not available
#
call mtr.add_suppression("Initialization of encryption failed.*");
set global aria_encrypt_tables= 1;
--error HA_ERR_NO_ENCRYPTION
create table t1 (pk int primary key, a int, key(a)) engine=aria transactional=1;
set global aria_encrypt_tables= default;
--echo #
--echo # MDEV-26258 Various crashes/asserts/corruptions when Aria encryption is
--echo # enabled/used, but the encryption plugin is not loaded
--echo #
SET GLOBAL aria_encrypt_tables=ON;
--write_file $MYSQLTEST_VARDIR/keys1.txt
1;770A8A65DA156D24EE2A093277530142
EOF
--replace_result \\ /
--error HA_ERR_NO_ENCRYPTION
CREATE TABLE t1 (a INT KEY,b INT,KEY(b)) ENGINE=Aria;
--echo # Restart with encryption enabled
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc
--exec echo "restart:--aria-encrypt-tables=1 --plugin-load-add=file_key_management --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
CREATE TABLE t1 (a INT KEY,b INT,KEY(b)) ENGINE=Aria;
INSERT INTO t1 VALUES (4,0);
LOAD INDEX INTO CACHE t1 IGNORE LEAVES;
LOAD INDEX INTO CACHE t1;
# Restart without encryption. Above table should be unreadable
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc
--exec echo "restart:--aria-encrypt-tables=0" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
--replace_result \\ /
--error HA_ERR_NO_ENCRYPTION
SELECT * FROM t1;
DROP TABLE t1;
--echo Cleanup
--remove_file $MYSQLTEST_VARDIR/keys1.txt