diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc
index 5d7d35cf69b37627a50d9f83a15887b1073fd0c3..95a7fb3d34d0d71a90f6790ea0e6e485fb1908c2 100644
--- a/sql/sql_analyse.cc
+++ b/sql/sql_analyse.cc
@@ -86,6 +86,11 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result,
   else if (param->next)
   {
     // first parameter
+    if (!(*param->item)->fixed && (*param->item)->fix_fields(thd, param->item))
+    {
+      DBUG_PRINT("info", ("fix_fields() for the first parameter failed"));
+      goto err;
+    }
     if ((*param->item)->type() != Item::INT_ITEM ||
 	(*param->item)->val_real() < 0)
     {
@@ -100,6 +105,11 @@ proc_analyse_init(THD *thd, ORDER *param, select_result *result,
       goto err;
     }
     // second parameter
+    if (!(*param->item)->fixed && (*param->item)->fix_fields(thd, param->item))
+    {
+      DBUG_PRINT("info", ("fix_fields() for the second parameter failed"));
+      goto err;
+    }
     if ((*param->item)->type() != Item::INT_ITEM ||
 	(*param->item)->val_real() < 0)
     {