From 44d66d26dc6dbf1e7c90dc3c4cffe7b5d4baba41 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Mar 2005 00:15:51 -0800 Subject: [PATCH] func_str.result, func_str.test: Added a test case for bug #8669. item_strfunc.cc: Fixed bug #8669. Function AES_DECRYPT can return NULL value. sql/item_strfunc.cc: Fixed bug #8669. Function AES_DECRYPT can return NULL value. mysql-test/t/func_str.test: Added a test case for bug #8669. mysql-test/r/func_str.result: Added a test case for bug #8669. --- mysql-test/r/func_str.result | 15 +++++++++++++++ mysql-test/t/func_str.test | 17 +++++++++++++++++ sql/item_strfunc.cc | 1 + 3 files changed, 33 insertions(+) diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result index 9392f152bb4..6fe71f97edd 100644 --- a/mysql-test/r/func_str.result +++ b/mysql-test/r/func_str.result @@ -304,3 +304,18 @@ QUOTE('A') 'A' 'A' DROP TABLE t1; +CREATE TABLE t1 (id int PRIMARY KEY, str char(255) NOT NULL); +CREATE TABLE t2 (id int NOT NULL UNIQUE); +INSERT INTO t2 VALUES (1),(2); +INSERT INTO t1 VALUES (1, aes_encrypt('foo', 'bar')); +INSERT INTO t1 VALUES (2, 'not valid'); +SELECT t1.id, aes_decrypt(str, 'bar') FROM t1, t2 WHERE t1.id = t2.id; +id aes_decrypt(str, 'bar') +1 foo +2 NULL +SELECT t1.id, aes_decrypt(str, 'bar') FROM t1, t2 WHERE t1.id = t2.id +ORDER BY t1.id; +id aes_decrypt(str, 'bar') +1 foo +2 NULL +DROP TABLE t1, t2; diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test index 6c2abd27551..9dac1d823d9 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -198,3 +198,20 @@ select quote(trim(concat(' ', 'a'))); CREATE TABLE t1 SELECT 1 UNION SELECT 2 UNION SELECT 3; SELECT QUOTE('A') FROM t1; DROP TABLE t1; + +# +# Test case for bug #8669: null aes_decrypt result in order by query +# + +CREATE TABLE t1 (id int PRIMARY KEY, str char(255) NOT NULL); +CREATE TABLE t2 (id int NOT NULL UNIQUE); +INSERT INTO t2 VALUES (1),(2); +INSERT INTO t1 VALUES (1, aes_encrypt('foo', 'bar')); +INSERT INTO t1 VALUES (2, 'not valid'); + +SELECT t1.id, aes_decrypt(str, 'bar') FROM t1, t2 WHERE t1.id = t2.id; +SELECT t1.id, aes_decrypt(str, 'bar') FROM t1, t2 WHERE t1.id = t2.id + ORDER BY t1.id; + +DROP TABLE t1, t2; + diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index ec88f58aa93..930014de771 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -208,6 +208,7 @@ String *Item_func_aes_decrypt::val_str(String *str) void Item_func_aes_decrypt::fix_length_and_dec() { max_length=args[0]->max_length; + maybe_null= 1; }