- 18 May, 2009 1 commit
-
-
Gleb Shchepa authored
The RAND(N) function where the N is a field of "constant" table (table of single row) failed with a SIGFPE. Evaluation of RAND(N) rely on constant status of its argument. Current server "seeded" random value for each constant argument only once, in the Item_func_rand::fix_fields method. Then the server skipped a call to seed_random() in the Item_func_rand::val_real method for such constant arguments. However, non-constant state of an argument may be changed after the call to fix_fields, if an argument is a field of "constant" table. Thus, pre-initialization of random value in the fix_fields method is too early. Initialization of random value by seed_random() has been removed from Item_func_rand::fix_fields method. The Item_func_rand::val_real method has been modified to call seed_random() on the first evaluation of this method if an argument is a function. mysql-test/r/func_math.result: Added test case for bug #44768. mysql-test/t/func_math.test: Added test case for bug #44768. sql/item_func.cc: Bug #44768: SIGFPE crash when selecting rand from a view containing null 1. Initialization of random value by seed_random() has been removed from Item_func_rand::fix_fields method. 2. The Item_func_rand::val_real method has been modified to call seed_random() on the first evaluation of this method if an argument is a function. sql/item_func.h: Bug #44768: SIGFPE crash when selecting rand from a view containing null 1. The Item_func_rand::first_eval has been added to trace the first evaluation of the val_real method. 2. The Item_func_rand::cleanup method has been added to cleanup the first_eval flag.
-
- 17 May, 2009 3 commits
-
-
Kristofer Pettersson authored
Fix bug in mtr_cases.pm script visible only when InnoDB isn't configured. mysql-test/lib/mtr_cases.pm: If InnoDB isn't configured the help texts won't show the "innodb" option and mysqld_variables will not contain any "innodb" entry.
-
Narayanan V authored
Occasionally, if both the partition_pruning and partition_range tests are run sequentially against the IBMDB2I engine, the partition_range test will fail. Compiler padding on a 64-bit build allowed garbage data in the hash key used for caching open iconv descriptors. As a result, cached descriptors were not found, and multiple duplicate iconv descriptors were opened for a single character set. Eventually, the maximum number of open iconv descriptors was reached, and further iconv_open() calls would fail, leading the storage engine to report incorrectly that the character set was not supported. This patch widens the 16-bit members of the hash key to 32 bits to eliminate compiler padding. The entire length of the hash key is now initialized correctly on both 32-bit and 64-bit builds. storage/ibmdb2i/db2i_charsetSupport.cc: Bug#44856 IBMDB2I gives misleading 2504 error widen the 16-bit members of the hash key to 32 bits to eliminate compiler padding.
-
Narayanan V authored
In order to better support the usage of IBMDB2I tables from within RPG programs, the storage engine should ensure that the RCDFMT name is consistent and predictable for DB2 tables. This patch appends a "RCDFMT <name>" clause to the CREATE TABLE statement that is passed to DB2. <name> is generated from the original name of the table itself. This ensures a consistent and deterministic mapping from the original table. For the sake of simplicity only the alpha-numeric characters are preserved when generating the new name, and these are upper-cased; other characters are replaced with an underscore (_). Following DB2 system identifier rules, the name always begins with an alpha-character and has a maximum of ten characters. If no usable characters are found in the table name, the name X is used. mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44610.result: Bug#44610 RCDFMT clause requested when creating DB2 table Result file for the test case. mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44610.test: Bug#44610 RCDFMT clause requested when creating DB2 table Test case that confirms that the names that are being generated are valid. storage/ibmdb2i/ha_ibmdb2i.cc: Bug#44610 RCDFMT clause requested when creating DB2 table This patch appends a "RCDFMT <name>" clause to the CREATE TABLE statement that is passed to DB2. <name> is generated from the original name of the table itself. This ensures a consistent and deterministic mapping from the original table. storage/ibmdb2i/ha_ibmdb2i.h: Bug#44610 RCDFMT clause requested when creating DB2 table This patch appends a "RCDFMT <name>" clause to the CREATE TABLE statement that is passed to DB2. <name> is generated from the original name of the table itself. This ensures a consistent and deterministic mapping from the original table.
-
- 15 May, 2009 24 commits
-
-
Jim Winstead authored
-
Jim Winstead authored
-
Matthias Leich authored
-
Matthias Leich authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Philip Stoev authored
It turns out that this test case no longer fails with the discrepancy in numbers that was the original cause for disabling this test (and showed potential genuine issues with the query cache). Therefore this test is being enabled after some minor adjustment of error codes and messages.
-
Matthias Leich authored
Details: 1. Add missing "disconnect <session>" 2. Take care that the disconnects are finished when the test terminates 3. Replace error names by error numbers 4. Minor beautifying of script code
-
Georgi Kodinov authored
-
Kristofer Pettersson authored
-
Alexey Kopytov authored
-
Alexey Kopytov authored
-
Alexey Kopytov authored
-
Alexey Kopytov authored
-
Alexey Kopytov authored
Field_time::get_time() did not initialize some members of MYSQL_TIME which led to valgrind warnings when those members were accessed in Protocol_simple::store_time(). It is unlikely that this bug could result in wrong data being returned, since Field_time::get_time() initializes the 'day' member of MYSQL_TIME to 0, so the value of 'day' in Protocol_simple::store_time() would be 0 regardless of the values for 'year' and 'month'. mysql-test/r/type_time.result: Added a test case for bug #44792. mysql-test/t/type_time.test: Added a test case for bug #44792. sql/field.cc: Field_time::get_time() did not initialize some members of MYSQL_TIME which led to valgrind warnings when those members were accessed in Protocol_simple::store_time().
-
Joerg Bruehe authored
Remove a cast (which shouldn't have got here anyway) which might lose significant bits beyond 4 GB RAM. mysys/safemalloc.c: Vlad's comment to the cast: pointless cast from size_t to uint that loses significant bits, when safe_malloc allocates more than 4GB Ram. safemalloc is not used in release binaries, so it is not absolutely critical. It got into the sources by a wrong merge resolution.
-
Kristofer Pettersson authored
-
Sergey Glukhov authored
-
Sergey Glukhov authored
In UNION if we use last SELECT without braces and this SELECT have ORDER BY clause, such clause belongs to global UNION. It is parsed like last SELECT part and used further as 'unit->global_parameters->order_list' value. During DESCRIBE EXTENDED we call select_lex->print_order() for last SELECT where order fields refer to tmp table which already freed. It leads to crash. The fix is clean up global_parameters->order_list instead of fake_select_lex->order_list. mysql-test/r/union.result: test result mysql-test/t/union.test: test case sql/sql_union.cc: In UNION if we use last SELECT without braces and this SELECT have ORDER BY clause, such clause belongs to global UNION. It is parsed like last SELECT part and used further as 'unit->global_parameters->order_list' value. During DESCRIBE EXTENDED we call select_lex->print_order() for last SELECT where order fields refer to tmp table which already freed. It leads to crash. The fix is clean up global_parameters->order_list instead of fake_select_lex->order_list.
-
- 14 May, 2009 9 commits
-
-
Philip Stoev authored
-
Philip Stoev authored
UNIX sockets need to be on a path shorter than 70 characters on some older platofrms. MTRv1 tries to fix this by moving the socket to the $TMPDIR, however this causes issues with certain tests on Windows. Fixed by not applying any hacks on Windows - Windows does not need them.
-
Kristofer Pettersson authored
It is not possible to prevent the server from starting if a mandatory built-in plugin fails to start. This can in some cases lead to data corruption when the old table name space suddenly is used by a different storage engine. A boolean command line option in the form of --foobar is automatically created for every existing plugin "foobar". By changing this command line option from a boolean to a tristate { OFF, ON, FORCE } it is possible to specify the plugin loading policy for each plugin. The behavior is specified as follows: OFF = Disable the plugin and start the server ON = Enable the plugin and start the server even if an error occurrs during plugin initialization. FORCE = Enable the plugin but don't start the server if an error occurrs during plugin initialization. mysql-test/lib/mtr_cases.pm: * Changed --<pluginname> from a boolean to a tristate. mysys/my_getopt.c: * Changed --<pluginname> from boolean to tristate. Optional arguments must still work for tristates. It is praxis that disable means value 0 and enable is value 1. Since plugin name is the only tristate with optional arguments this principle will still hold. sql/sql_plugin.cc: * Changed --<pluginname> option from a boolean type to a tristate. - FORCE will now terminate the server if the plugin fails to initialize properly. * Refactored prototypes for test_plugin_options() and construct_options() to get rid of the 'enable' value pointer. * Cleaned up code related to option name constructing. * Added documentation sql/sql_plugin.h: * Introduced new member to st_plugin_int structure.
-
Luis Soares authored
-
Philip Stoev authored
UNIX sockets need to be on a path shorter than 70 characters on some older platofrms. MTRv1 tries to fix this by moving the socket to the $TMPDIR, however this causes issues with certain tests on Windows. Fixed by not applying any hacks on Windows - Windows does not need them.
-
Narayanan V authored
-
Jonathan Perkin authored
-
Narayanan V authored
checking in a test case that will reproduce the error on v5r4. mysql-test/suite/ibmdb2i/include/have_i54.inc: Bug#44232 Error msg should be improved when collation not supported. mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44232.result: Bug#44232 Error msg should be improved when collation not supported. mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44232.test: Bug#44232 Error msg should be improved when collation not supported.
-
Anurag Shekhar authored
-
- 13 May, 2009 3 commits
-
-
Ramil Kalimullin authored
-
Jim Winstead authored
-
Jim Winstead authored
-