From: Date: June 30 2008 3:22am Subject: [patch 09/10] WL4271 Encrypted online backup: pass restore options to backup kernel List-Archive: http://lists.mysql.com/internals/35768 Message-Id: <20080630012612.753771413@flamingspork.com> --- mysql-test/r/backup_encrypted_syntax_basic.result | 2 - mysql-test/t/backup_encrypted_syntax_basic.test | 2 - sql/backup/backup_kernel.h | 6 ++++ sql/backup/kernel.cc | 27 +++++++++++++++++++--- 4 files changed, 31 insertions(+), 6 deletions(-) Index: stew-encrypted-backup/sql/backup/backup_kernel.h =================================================================== --- stew-encrypted-backup.orig/sql/backup/backup_kernel.h 2008-06-26 03:01:51.702661577 +1000 +++ stew-encrypted-backup/sql/backup/backup_kernel.h 2008-06-26 13:32:18.027064073 +1000 @@ -72,7 +72,11 @@ class Backup_restore_ctx: public backup: LEX_STRING encryption_keyfile, LEX_STRING encryption_password); - Restore_info* prepare_for_restore(LEX_STRING location, const char*); + Restore_info* prepare_for_restore(LEX_STRING location, const char*, + LEX_STRING encryption_algorithm, + ulong encryption_keysize, + LEX_STRING encryption_keyfile, + LEX_STRING encryption_password); int do_backup(); int do_restore(); Index: stew-encrypted-backup/sql/backup/kernel.cc =================================================================== --- stew-encrypted-backup.orig/sql/backup/kernel.cc 2008-06-26 12:51:04.059067421 +1000 +++ stew-encrypted-backup/sql/backup/kernel.cc 2008-06-26 13:31:34.083038543 +1000 @@ -196,8 +196,12 @@ execute_backup_command(THD *thd, LEX *le case SQLCOM_RESTORE: { - Restore_info *info= context.prepare_for_restore(lex->backup_dir, thd->query); - + Restore_info *info= context.prepare_for_restore(lex->backup_dir, thd->query, + lex->encryption_algorithm, + lex->encryption_keysize, + lex->encryption_keyfile, + lex->encryption_password); + if (!info || !info->is_valid()) DBUG_RETURN(send_error(context, ER_BACKUP_RESTORE_PREPARE)); @@ -603,7 +607,11 @@ Backup_restore_ctx::prepare_for_backup(L @note This function reports errors. */ Restore_info* -Backup_restore_ctx::prepare_for_restore(LEX_STRING location, const char *query) +Backup_restore_ctx::prepare_for_restore(LEX_STRING location, const char *query, + LEX_STRING encryption_algorithm, + ulong encryption_keysize, + LEX_STRING encryption_keyfile, + LEX_STRING encryption_password) { using namespace backup; @@ -631,6 +639,19 @@ Backup_restore_ctx::prepare_for_restore( */ backup::String path(location); + backup::String encryption_algorithm_str(encryption_algorithm); + backup::String encryption_keyfile_str(encryption_keyfile); + backup::String encryption_password_str(encryption_password); + + if(encryption_algorithm_str.ptr() + || encryption_keyfile_str.ptr() + || encryption_password_str.ptr() + || encryption_keysize) + { + fatal_error(ER_NOT_SUPPORTED_YET, "Encrypted Restore"); + return NULL; + } + Input_stream *s= new Input_stream(*this, path); if (!s) Index: stew-encrypted-backup/mysql-test/r/backup_encrypted_syntax_basic.result =================================================================== --- stew-encrypted-backup.orig/mysql-test/r/backup_encrypted_syntax_basic.result 2008-06-26 13:31:22.024066918 +1000 +++ stew-encrypted-backup/mysql-test/r/backup_encrypted_syntax_basic.result 2008-06-26 13:31:34.083038543 +1000 @@ -14,4 +14,4 @@ BACKUP DATABASE test TO 'test5.ba' ENCRY ERROR 42000: This version of MySQL doesn't yet support 'Encryption with keyfile' use test; RESTORE FROM 'test4.ba' ENCRYPTION_ALGORITHM=aes PASSWORD='pants'; -ERROR HY000: Can't read backup location 'test4.ba' +ERROR 42000: This version of MySQL doesn't yet support 'Encrypted Restore' Index: stew-encrypted-backup/mysql-test/t/backup_encrypted_syntax_basic.test =================================================================== --- stew-encrypted-backup.orig/mysql-test/t/backup_encrypted_syntax_basic.test 2008-06-26 13:31:22.016045654 +1000 +++ stew-encrypted-backup/mysql-test/t/backup_encrypted_syntax_basic.test 2008-06-26 13:31:34.087047220 +1000 @@ -12,7 +12,7 @@ BACKUP DATABASE test TO 'test4.ba' ENCRY BACKUP DATABASE test TO 'test5.ba' ENCRYPTION_ALGORITHM=aes ENCRYPTION_KEYSIZE=128 ENCRYPTION_KEYFILE='foo.key'; use test; ---error 1630 +--error 1235 RESTORE FROM 'test4.ba' ENCRYPTION_ALGORITHM=aes PASSWORD='pants'; --remove_file $MYSQLTEST_VARDIR/master-data/test.ba -- Stewart Smith