- 26 Aug, 2010 2 commits
-
-
Alexander Nozdrin authored
-
Alexey Kopytov authored
-
- 25 Aug, 2010 2 commits
-
-
Dmitry Shulga authored
-
Dmitry Shulga authored
Added open log file with FILE_SHARE_DELETE flag on Windows. sql/log.cc: added reopen_fstreams(); modified redirect_std_streams(): call to sequence of freopen() replaced to reopen_fstreams(); modified flush_error_log(): removed file rename for flushed error log file. sql/mysqld.cc: modified main() and init_server_components(): do open log error file over call to reopen_fstreams().
-
- 24 Aug, 2010 1 commit
-
-
Alexey Kopytov authored
Queries involving predicates of the form "const NOT BETWEEN not_indexed_column AND indexed_column" could return wrong data due to incorrect handling by the range optimizer. For "c NOT BETWEEN f1 AND f2" predicates, get_mm_tree() produces a disjunction of the SEL_ARG trees for "f1 > c" and "f2 < c". If one of the trees is empty (i.e. one of the arguments is not sargable) the resulting tree should be empty as well, since the whole expression in this case is not sargable. The above logic is implemented in get_mm_tree() as follows. The initial state of the resulting tree is NULL (aka empty). We then iterate through arguments and compute the corresponding SEL_ARG tree (either "f1 > c" or "f2 < c"). If the resulting tree is NULL, it is simply replaced by the generated tree. Otherwise it is replaced by a disjunction of itself and the generated tree. The obvious flaw in this implementation is that if the first argument is not sargable and thus produces a NULL tree, the resulting tree will simply be replaced by the tree for the second argument. As a result, "c NOT BETWEEN f1 AND f2" will end up as just "f2 < c". Fixed by adding a check so that when the first argument produces an empty tree for the NOT BETWEEN case, the loop is aborted with an empty tree as a result. The whole idea of using a loop for 2 arguments does not make much sense, but it was probably used to avoid code duplication for several BETWEEN variants.
-
- 20 Aug, 2010 6 commits
-
-
Mattias Jonsson authored
-
Mattias Jonsson authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
- 19 Aug, 2010 4 commits
-
-
unknown authored
-
MySQL Build Team authored
-
Mattias Jonsson authored
-
Mattias Jonsson authored
-
- 18 Aug, 2010 2 commits
-
-
unknown authored
So null merge.
-
unknown authored
'CREATE TABLE IF NOT EXISTS ... SELECT' behaviour BUG#55474, BUG#55499, BUG#55598, BUG#55616 and BUG#55777 are fixed in this patch too. This is the 5.1 part. It implements: - if the table exists, binlog two events: CREATE TABLE IF NOT EXISTS and INSERT ... SELECT - Insert nothing and binlog nothing on master if the existing object is a view. It only generates a warning that table already exists. mysql-test/r/trigger.result: Ather this patch, 'CREATE TABLE IF NOT EXISTS ... SELECT' will not insert anything if the creating table already exists and is a view. sql/sql_class.h: Declare virtual function write_to_binlog() for select_insert. It's used to binlog 'create select' sql/sql_insert.cc: Implement write_to_binlog(); Use write_to_binlog() instead of binlog_query() to binlog the statement. if the table exists, binlog two events: CREATE TABLE IF NOT EXISTS and INSERT ... SELECT sql/sql_lex.h: Declare create_select_start_with_brace and create_select_pos. They are helpful for binlogging 'create select' sql/sql_parse.cc: Do nothing on master if the existing object is a view. sql/sql_yacc.yy: Record the relative postion of 'SELECT' in the 'CREATE ...SELECT' statement. Record whether there is a '(' before the 'SELECT' clause.
-
- 17 Aug, 2010 1 commit
-
-
Georgi Kodinov authored
-
- 16 Aug, 2010 3 commits
-
-
Georgi Kodinov authored
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
- 13 Aug, 2010 3 commits
-
-
Georgi Kodinov authored
variable assignments The assert() that is firing is checking if expressions that can't be null return a NULL when evaluated. MAKEDATE() function can return NULL if the second argument is less then or equal to 0. Thus its nullability depends not only on the nullability of its arguments but also on their values. Fixed by (overoptimistically) setting MAKEDATE() to be nullable despite the nullability of its arguments. Test added. Had to update one test result to reflect the metadata change.
-
Alexander Nozdrin authored
-
Georgi Kodinov authored
The server was not checking for errors generated during the execution of Item::val_xxx() methods when copying data to the group, order, or distinct temp table's row. Fixed by extending the copy_funcs() to return an error code and by checking for that error code on the places copy_funcs() is called. Test case added.
-
- 12 Aug, 2010 3 commits
-
-
Alexander Nozdrin authored
Fixing copyright text.
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
- 11 Aug, 2010 1 commit
-
-
Guilhem Bichot authored
it couldn't parse the --ssl option. client/mysql_upgrade.c: mysql_upgrade parses its options and passes some of them to the underlying tools (mysqlcheck etc). To do this passdown, it reconstructs a command-line-suitable text from the my_option object (which contains the option's name and option's value). For options which expect no parameter, it just had to use the option's name; for other options, it had to concatenate the option's name, a "=" symbol, and the option's value; it had code to handle this latter case, but only for GET_STR options (options taking a string as value). But since the work on WL 4738, the --ssl option, a GET_BOOL, which used to have no parameter (NO_ARG), can now have one (OPT_ARG), so with --ssl we came to the "default" label, error. Fixed by constructing the command-line-suitable representation for GET_BOOL too. For --ssl it will produce --ssl=1 ; for --ssl=0, it will produce --ssl=0. mysql-test/include/mysql_upgrade_preparation.inc: handles requirements of tests which use mysql_upgrade mysql-test/r/mysql_upgrade_ssl.result: result; without the code fix we would get "internal error". mysql-test/t/mysql_upgrade.test: This test has requirements before running; moved them to an include file in order to share with mysql_upgrade_ssl. mysql-test/t/mysql_upgrade_ssl.test: test for bug. Couldn't go into mysql_upgrade.test as this new test requires SSL support. --force is needed, in case mysql_upgrade.test run before (in which case mysql_upgrade_ssl would say that upgrade has already been done); --force forces the upgrade in all cases.
-
- 12 Aug, 2010 1 commit
-
-
Marc Alff authored
This is a performance improvement fix. Removed the "volatile" property of PFS_events_waits::m_wait_class. Simplified the code accordingly.
-
- 11 Aug, 2010 2 commits
-
-
Martin Hansson authored
-
Martin Hansson authored
feature The test for bug no 50939 was put in range.test which isn't such a good idea since it requires partitioning. Fixed by moving the test case to partitioning_range.test.
-
- 10 Aug, 2010 5 commits
-
-
Jonathan Perkin authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
Updated the README file.
-
Alfranio Correia authored
After BUG#36649, warnings for sub-statements are cleared when a new sub-statement is started. This is problematic since it suppresses warnings for unsafe statements in some cases. It is important that we always give a warning to the client, because the user needs to know when there is a risk that the slave goes out of sync. We fixed the problem by generating warning messages for unsafe statements while returning from a stored procedure, function, trigger or while executing a top level statement. We also started checking unsafeness when both performance and log tables are used. This is necessary after the performance schema which does a distinction between performance and log tables. mysql-test/extra/rpl_tests/create_recursive_construct.inc: Changed the order of the calls in the procedure because the code that checks if a warning message is printed out expects that the first statement gives an warning what is not the case for INSERT INTO ta$CRC_ARG_level VALUES (47); mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result: Updated the result file. mysql-test/suite/binlog/r/binlog_unsafe.result: There are several changes here: (1) - Changed the CREATE PROCEDURE $CRC. (2) - The procedure $CRC was failing and the content of the binlog was being printed out, after fix (1) the failure disappeared. (3) - The warning message for unsafeness due to auto-increment collumns was changed. (4) - The warning message for unsafeness due to VERSION(), RAND() was changed. mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test: Tested filters. mysql-test/suite/binlog/t/binlog_unsafe.test: Reenabled the test case binlog_unsafe. mysql-test/suite/binlog/t/disabled.def: Reenabled the test case binlog_unsafe. mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result: Updated the result file. mysql-test/suite/rpl/r/rpl_non_direct_stm_mixing_engines.result: Updated the result file. mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result: Updated the result file. sql/sql_class.cc: Moved the stmt_accessed_table_flag variable and related information to the LEX as we need the variable reset after each statement even inside a stored procedure, what did not happen if the information was in the THD. Changed the routine in the THD::binlog_query that prints the warning messages to avoid trying to print them when inside a stored procedure, function or trigger. Checked for unsafeness when both performance and log tables where used. After the introduction of the performance schema, we need to check both.
-
- 09 Aug, 2010 4 commits
-
-
Vladislav Vaintroub authored
Fix by adding "DEPENDS gen_lex_hash" to ADD_CUSTOM_COMMAND(), so it regenerates lex_hash.h whenever gen_lex_lash changes. Also, make sql dependent on GenServerSource to avoid concurrent generation of lex_hash.h (once for sql , and in parallel for embedded)
-
Alexander Nozdrin authored
-
Alexander Nozdrin authored
-
Jonathan Perkin authored
-