summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/ps.result9
-rw-r--r--mysql-test/t/ps.test4
-rw-r--r--sql/sql_prepare.cc6
3 files changed, 17 insertions, 2 deletions
diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result
index 234c4af56f4..14af3c32292 100644
--- a/mysql-test/r/ps.result
+++ b/mysql-test/r/ps.result
@@ -66,6 +66,7 @@ NULL
NULL
NULL
NULL
+set @nullvar=1;
set @nullvar=NULL;
execute stmt5 using @nullvar;
? + a
@@ -74,4 +75,12 @@ NULL
NULL
NULL
NULL
+set @nullvar2=NULL;
+execute stmt5 using @nullvar2;
+? + a
+NULL
+NULL
+NULL
+NULL
+NULL
drop table t1;
diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test
index a97de1a0de7..ab698174161 100644
--- a/mysql-test/t/ps.test
+++ b/mysql-test/t/ps.test
@@ -68,8 +68,12 @@ execute stmt5 using @a;
execute stmt5 using @no_such_var;
+set @nullvar=1;
set @nullvar=NULL;
execute stmt5 using @nullvar;
+set @nullvar2=NULL;
+execute stmt5 using @nullvar2;
+
drop table t1;
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index 08691f67aa1..d9d19647c8c 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -661,7 +661,8 @@ static bool insert_params_from_vars(Prepared_statement *stmt,
varname= var_it++;
if ((entry= (user_var_entry*)hash_search(&stmt->thd->user_vars,
(byte*) varname->str,
- varname->length)))
+ varname->length))
+ && entry->value)
{
param->item_result_type= entry->type;
switch (entry->type)
@@ -710,7 +711,8 @@ static bool insert_params_from_vars_with_log(Prepared_statement *stmt,
varname= var_it++;
if ((entry= (user_var_entry*)hash_search(&stmt->thd->user_vars,
(byte*) varname->str,
- varname->length)))
+ varname->length))
+ && entry->value)
{
param->item_result_type= entry->type;
switch (entry->type)