summaryrefslogtreecommitdiff
path: root/sql/item_func.cc
diff options
context:
space:
mode:
authorRamil Kalimullin <ramil@mysql.com>2009-05-10 21:20:35 +0500
committerRamil Kalimullin <ramil@mysql.com>2009-05-10 21:20:35 +0500
commitc754cc84c1fec2e5f08ee6b7119779efd53140d0 (patch)
treeab1e1975f6a29f1effedef4204037622123e750f /sql/item_func.cc
parente545d470d5f1c2fbb0fe196eaa7899582f2aa509 (diff)
parent0781a302628077dae05db3542f0885d031a99b36 (diff)
downloadmariadb-git-c754cc84c1fec2e5f08ee6b7119779efd53140d0.tar.gz
Manual merge.
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r--sql/item_func.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 876aee719a3..6f40298f8cf 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -4178,6 +4178,41 @@ Item_func_set_user_var::check(bool use_result_field)
/**
+ @brief Evaluate and store item's result.
+ This function is invoked on "SELECT ... INTO @var ...".
+
+ @param item An item to get value from.
+*/
+
+void Item_func_set_user_var::save_item_result(Item *item)
+{
+ DBUG_ENTER("Item_func_set_user_var::save_item_result");
+
+ switch (cached_result_type) {
+ case REAL_RESULT:
+ save_result.vreal= item->val_result();
+ break;
+ case INT_RESULT:
+ save_result.vint= item->val_int_result();
+ unsigned_flag= item->unsigned_flag;
+ break;
+ case STRING_RESULT:
+ save_result.vstr= item->str_result(&value);
+ break;
+ case DECIMAL_RESULT:
+ save_result.vdec= item->val_decimal_result(&decimal_buff);
+ break;
+ case ROW_RESULT:
+ default:
+ // Should never happen
+ DBUG_ASSERT(0);
+ break;
+ }
+ DBUG_VOID_RETURN;
+}
+
+
+/**
This functions is invoked on
SET \@variable or \@variable:= expression.