MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
param_check.inc
1 # suite/funcs_1/storedproc/param_check.inc
2 #
3 # Auxiliary routine to be sourced by
4 # suite/funcs_1/t/storedproc.test
5 #
6 # Purpose:
7 # The assignment of float values to objects of type DECIMAL causes
8 # conversions and in some cases an adjustment of the value to
9 # a border of the value range.
10 # Try to reveal that function and procedure parameters get a similar
11 # mangling of the value like columns.
12 #
13 # Variables to be set before sourcing this routine
14 # $test_value - value to be checked
15 #
16 # Created:
17 # 2008-08-27 mleich
18 #
19 # Modified:
20 # 2008-11-17 pcrews
21 # added --disable / --enable_warning statements to minimize differences
22 # between platforms (Bug#40177 Test funcs_1.storedproc failing on Pushbuild)
23 #
24 # TODO: (After 5.1 GA)
25 # 1) Examine reordering statements in this file to minimize the number of
26 # --disable / --enable_warning statements. Unsure if performance gains
27 # warrant the working time
28 # 2) We could probably add a comparison of the # of warnings before the
29 # assignment of @v1_proc and @v1_func to the # of warnings after assignment
30 # The difference of these values should be zero
31 # Refer to Bug#40177 - http://bugs.mysql.com/bug.php?id=40177 for notes as well
32 
33 eval UPDATE t1_aux SET f1 = NULL;
34 # Enforce that all user variables have the same data type and initial value.
35 SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux;
36 
37 --disable_warnings
38 eval UPDATE t1_aux SET f1 = $test_value;
39 --enable_warnings
40 SELECT f1 INTO @v1_tab FROM t1_aux;
41 --disable_warnings
42 eval CALL sproc_1($test_value, @v1_proc);
43 eval SET @v1_func = func_1($test_value);
44 --enable_warnings
45 
46 if (`SELECT @v1_tab <> @v1_proc OR @v1_tab <> @v2_proc OR @v1_tab <> @v1_func`)
47 {
48  --echo Error: @v1_tab, @v1_proc, @v2_proc, @v1_func are not all equal
49  SELECT @v1_tab, @v1_proc, @v2_proc, @v1_func;
50 }