1. 07 May, 2010 6 commits
  2. 05 May, 2010 4 commits
    • Alexander Nozdrin's avatar
      Patch for Bug#50511 (Sometimes wrong handling of user variables containing NULL). · 0a032dea
      Alexander Nozdrin authored
            
      The bug happened under the following condition:
        - there was a user variable of type REAL, containing NULL value
        - there was a table with a NOT_NULL column of any type but REAL, having
          default value (or auto increment);
        - a row was inserted into the table with the user variable as value.
          A warning was emitted here.
      
      The problem was that handling of NULL values of REAL type was not properly
      implemented: it didn't expect that REAL NULL value can be assigned to other
      data type.
      
      Basically, the problem was that set_field_to_null() was used instead of
      set_field_to_null_with_conversions().
      
      The fix is to use the right function, or more generally, to allow conversion of
      REAL NULL values to other data types.
      0a032dea
    • Alexander Barkov's avatar
      Bug#51571 load xml infile causes server crash · 3c93a784
      Alexander Barkov authored
        
        Problem:
        item->name was NULL for Item_user_var_as_out_param
        which made strcmp(something, item->name) crash in the LOAD XML code.
        
        Fix:
        - item_func.h: Adding set_name() in constuctor for Item_user_var_as_out_param
        - sql_load.cc: Changing the condition in write_execute_load_query_log_event() which
        distiguished between Item_user_var_as_out_param and Item_field
        from
          if (item->name == NULL)
        to
          if (item->type() == Item::FIELD_ITEM)
        - loadxml.result, loadxml.test: adding tests
      3c93a784
    • Alexander Barkov's avatar
      Bug#52849 [Com]: datetime index not work · f90f3414
      Alexander Barkov authored
      Problem: after introduction of "WL#2649 Number-to-string conversions"
      
      This query:
        SET NAMES cp850; -- Or any other non-latin1 ASCII-based character set
        SELECT * FROM t1
        WHERE datetime_column='2010-01-01 00:00:00'
      started to add extra character set conversion: 
        SELECT * FROM t1
        WHERE CONVERT(datetime_column USING cp850)='2010-01-01 00:00:00';
      
      so index on DATETIME column was not used anymore.
      Fix:
        avoid convertion of NUMERIC/DATETIME items
        (i.e. those with derivation DERIVATION_NUMERIC).
      f90f3414
    • Horst.Hunger's avatar
      Patch for 47759 to trunk-bugfixing. · 9eae31ab
      Horst.Hunger authored
      9eae31ab
  3. 04 May, 2010 4 commits
  4. 03 May, 2010 2 commits
    • Kristofer Pettersson's avatar
      Automerge · 95e712b0
      Kristofer Pettersson authored
      95e712b0
    • Kristofer Pettersson's avatar
      Bug#50373 --secure-file-priv="" · 5dd5d705
      Kristofer Pettersson authored
      Iterative patch improvement. Previously committed patch
      caused wrong result on Windows. The previous patch also
      broke secure_file_priv for symlinks since not all file
      paths which must be compared against this variable are
      normalized using the same norm.
      
      The server variable opt_secure_file_priv wasn't
      normalized properly and caused the operations
      LOAD DATA INFILE .. INTO TABLE ..
      and
      SELECT load_file(..)
      to do different interpretations of the 
      --secure-file-priv option.
           
      The patch moves code to the server initialization
      routines so that the path always is normalized
      once and only once.
            
      It was also intended that setting the option
      to an empty string should be equal to 
      lifting all previously set restrictions. This
      is also fixed by this patch.
      
      
      mysql-test/r/loaddata.result:
        * Removed test code which will currently break the much used --mem feature of mtr.
      mysql-test/t/loaddata.test:
        * Removed test code which will currently break the much used --mem feature of mtr.
      sql/item_strfunc.cc:
        * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
      sql/mysql_priv.h:
        * Added signature for is_secure_file_path()
      sql/mysqld.cc:
        * New function for checking if a path compatible with the secure path restriction.
        * Added initialization of the opt_secure_file_priv variable.
      sql/sql_class.cc:
        * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
      sql/sql_load.cc:
        * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
      5dd5d705
  5. 01 May, 2010 1 commit
  6. 30 Apr, 2010 4 commits
    • Alexander Nozdrin's avatar
      Patch for Bug#52356: query_cache_debug fails on Linux. · 63e6005a
      Alexander Nozdrin authored
      There were two problems here:
        1. misleading error message
        2. abusing KILL QUERY in the test case
      
      1. The server reported "'DELETE FROM t1' failed: 1689: Wait on a lock was
      aborted due to a pending exclusive lock", while the proper error message
      should be "'DELETE FROM t1' failed: 1317: Query execution was interrupted".
      
      The problem is that the server has two different flags for
      signalling that a query is being killed: THD::killed and
      mysys_var::abort. The test case triggers a race: sometimes
      mysys_var::abort is set earlier than THD::killed. That leads
      to the following situation:
      
        - thr_lock() checks mysys_var::abort and returns error status,
          since mysys_var::abort is set;
      
        - the caller (mysql_lock_tables()) gets an error from thr_lock(),
          but THD::killed is not set, so it decides that thr_lock() couldn't
          get a lock due to a pending exclusive lock.
      
      This is a known issue with the server and it's not going to be fixed soon.
      
      5.5 differs from 5.1 here as follows: when thr_lock() returns an error:
        - 5.1 continues trying thr_lock() until success;
        - 5.5 propagates the error
      
      2. The test case uses KILL QUERY is a highly concurent environment.
      
      The fix is to wait for the dying statement to rest in peace before
      executing another DELETE FROM t1.
      63e6005a
    • Alexey Kopytov's avatar
      Automerge. · 26570994
      Alexey Kopytov authored
      26570994
    • Alexey Kopytov's avatar
      Bug #48419: another explain crash.. · 97374a11
      Alexey Kopytov authored
      WHERE predicates containing references to empty tables in a
      subquery were handled incorrectly by the optimizer when
      executing EXPLAIN. As a result, the optimizer could try to
      evaluate such predicates rather than just stop with
      "Impossible WHERE noticed after reading const tables" as 
      it would do in a non-subquery case. This led to valgrind 
      errors and crashes.
      
      Fixed the code checking the above condition so that subqueries
      are not excluded and hence are handled in the same way as top
      level SELECTs.
      
      mysql-test/r/explain.result:
        Added a test case for bug #48419.
      mysql-test/r/ps.result:
        Updated test results to take the new (and more correct)
        "Extra" comments in execution plans.
      mysql-test/t/explain.test:
        Added a test case for bug #48419.
      sql/sql_select.cc:
        There is no point in excluding subqueries from checking
        for identically false WHERE conditions.
      97374a11
    • Vasil Dimov's avatar
      Disable innodb.innodb, main.ps_3innodb and main.partition_innodb_plugin · 3bffc40a
      Vasil Dimov authored
      mysql-tests because those emit (spurious?) valgrind warnings.
      3bffc40a
  7. 29 Apr, 2010 10 commits
  8. 28 Apr, 2010 9 commits
    • Georgi Kodinov's avatar
      Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when JOINed · 4d0e9957
      Georgi Kodinov authored
      during an UPDATE
      
      Extended the fix for bug 29310 to multi-table update:
      
      When a table is being updated it has two set of fields - fields required for
      checks of conditions and fields to be updated. A storage engine is allowed
      not to retrieve columns marked for update. Due to this fact records can't
      be compared to see whether the data has been changed or not. This makes the
      server always update records independently of data change.
        
      Now when an auto-updatable timestamp field is present and server sees that
      a table handle isn't going to retrieve write-only fields then all of such
      fields are marked as to be read to force the handler to retrieve them.
      4d0e9957
    • Sven Sandberg's avatar
      BUG#50670: Slave stops with error code 1644 · cf5ebc58
      Sven Sandberg authored
      Clarified error messages related to unsafe statements:
       - avoid the internal technical term "row injection"
       - use 'binary log' instead of 'binlog'
       - avoid the word 'unsafeness'
      
      
      mysql-test/extra/binlog_tests/blackhole.test:
        updated suppression pattern
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        updated suppression pattern
      mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test:
        updated suppression pattern
      mysql-test/extra/rpl_tests/rpl_insert_id.test:
        updated suppression pattern
      mysql-test/extra/rpl_tests/rpl_loaddata.test:
        updated suppression pattern
      mysql-test/extra/rpl_tests/rpl_mixing_engines.test:
        updated suppression pattern
      mysql-test/extra/rpl_tests/rpl_start_stop_slave.test:
        updated suppression pattern
      mysql-test/extra/rpl_tests/rpl_stm_000001.test:
        updated suppression pattern
      mysql-test/extra/rpl_tests/rpl_stop_middle_group.test:
        updated suppression pattern
      mysql-test/r/archive.result:
        updated result file
      mysql-test/r/commit_1innodb.result:
        updated result file
      mysql-test/r/ctype_cp932_binlog_stm.result:
        updated result file
      mysql-test/r/partition_innodb_stmt.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_innodb.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_killed.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_multi_engine.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_do_db.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_ps.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_row.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result:
        updated result file
      mysql-test/suite/binlog/r/binlog_unsafe.result:
        updated result file
      mysql-test/suite/binlog/t/binlog_killed.test:
        updated suppression pattern
      mysql-test/suite/binlog/t/binlog_multi_engine.test:
        updated suppression pattern
      mysql-test/suite/binlog/t/binlog_statement_insert_delayed.test:
        updated suppression pattern
      mysql-test/suite/binlog/t/binlog_stm_ps.test:
        updated suppression pattern
      mysql-test/suite/binlog/t/binlog_stm_row.test:
        updated suppression pattern
      mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test:
        updated suppression pattern
      mysql-test/suite/binlog/t/binlog_tmp_table.test:
        updated suppression pattern
      mysql-test/suite/binlog/t/binlog_unsafe.test:
        updated suppression pattern
      mysql-test/suite/ndb/r/ndb_binlog_format.result:
        updated result file
      mysql-test/suite/ndb/t/ndb_binlog_format.test:
        updated suppression pattern
      mysql-test/suite/perfschema/r/binlog_stmt.result:
        updated result file
      mysql-test/suite/perfschema/t/binlog_stmt.test:
        updated suppression pattern
      mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_blackhole.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_concurrency_error.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_get_lock.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_insert_id.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_insert_ignore.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_misc_functions.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_mysql_upgrade.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_non_direct_row_mixing_engines.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_non_direct_stm_mixing_engines.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_read_only.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_row_mixing_engines.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_slow_query_log.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_sp.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_stm_000001.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_stm_loadfile.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_temp_temporary.result:
        updated result file
      mysql-test/suite/rpl/r/rpl_variables_stm.result:
        updated result file
      mysql-test/suite/rpl/t/rpl000013.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_blackhole.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_concurrency_error.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_err_ignoredtable.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_get_lock.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_insert.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_insert_id.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_insert_ignore.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_invoked_features.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_misc_functions.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_mysql_upgrade.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_optimize.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_read_only.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_semi_sync.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_semi_sync_event.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_session_var.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_slow_query_log.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_sp.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_stm_found_rows.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_stm_loadfile.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_temp_table.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_temp_temporary.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_temporary.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_timezone.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_trigger.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_udf.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_user_variables.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_variables_stm.test:
        updated suppression pattern
      mysql-test/suite/rpl/t/rpl_view_multi.test:
        updated suppression pattern
      mysql-test/suite/rpl_ndb/r/rpl_ndb_binlog_format_errors.result:
        updated result file
      mysql-test/suite/rpl_ndb/t/rpl_ndb_binlog_format_errors.test:
        updated suppression pattern
      mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test:
        updated suppression pattern
      mysql-test/suite/sys_vars/t/rpl_init_slave_func.test:
        updated suppression pattern
      mysql-test/t/archive.test:
        updated suppression pattern
      mysql-test/t/commit_1innodb.test:
        updated suppression pattern
      mysql-test/t/create_select_tmp.test:
        updated suppression pattern
      mysql-test/t/ctype_cp932_binlog_stm.test:
        updated suppression pattern
      mysql-test/t/lock_sync.test:
        updated suppression pattern
      mysql-test/t/mysqlbinlog.test:
        updated suppression pattern
      mysql-test/t/mysqldump.test:
        updated suppression pattern
      mysql-test/t/sp_trans.test:
        updated suppression pattern
      sql/log_event.cc:
        Clarified error message.
      sql/share/errmsg-utf8.txt:
        Clarified error messages.
      cf5ebc58
    • Vasil Dimov's avatar
      Bug#53046 dict_update_statistics_low can still be run concurrently · 6fa8e485
      Vasil Dimov authored
      on same table
      
      Followup to vasil.dimov@oracle.com-20100428102033-dt3caf531rs3lidr :
      
      Add more asserions, which I forgot.
      6fa8e485
    • Alexander Nozdrin's avatar
      After-merge fixes. · 21b8741b
      Alexander Nozdrin authored
      21b8741b
    • Vasil Dimov's avatar
      Revert the fix of Bug#38996 Race condition in ANALYZE TABLE · b7ef4f17
      Vasil Dimov authored
      This is branches/zip@r6032 in SVN and _is part_ of
      revid:svn-v4:16c675df-0fcb-4bc9-8058-dcc011a37293:branches/zip:6113
      in BZR.
      
      This is being reverted because now the code is serialized directly on
      index->stat_n_diff_key_vals[] as the fix for
      Bug#53046 dict_update_statistics_low can still be run concurrently on same table
      goes.
      b7ef4f17
    • Vasil Dimov's avatar
      Followup to vasil.dimov@oracle.com-20100428084627-wtrmc66wqvjsdgj7: · 330f93bc
      Vasil Dimov authored
      Address Marko's suggestions wrt the fix of
      Bug#53046 dict_update_statistics_low can still be run concurrently
      on same table
      330f93bc
    • Vasil Dimov's avatar
      Fix Bug#53046 dict_update_statistics_low can still be run concurrently · 2b57b076
      Vasil Dimov authored
      on same table
      
      Protect dict_index_t::stat_n_diff_key_vals[] with an array of
      mutexes.
      
      Testing: tested all code paths under UNIV_SYNC_DEBUG
      for the one in dict_print() one has to enable the InnoDB table monitor:
      CREATE TABLE innodb_table_monitor (a int) ENGINE=INNODB;
      2b57b076
    • Marko Makela's avatar
      Merge r6103 from InnoDB Plugin to the built-in InnoDB to fix Bug #53202: · 91702fd3
      Marko Makela authored
        ------------------------------------------------------------------------
        r6103 | marko | 2009-10-26 15:46:18 +0200 (Mon, 26 Oct 2009) | 4 lines
        Changed paths:
           M /branches/zip/row/row0ins.c
      
        branches/zip: row_ins_alloc_sys_fields(): Zero out the system columns
        DB_TRX_ID, DB_ROLL_PTR and DB_ROW_ID, in order to avoid harmless
        Valgrind warnings about uninitialized data.  (The warnings were
        harmless, because the fields would be initialized at a later stage.)
        ------------------------------------------------------------------------
      91702fd3
    • unknown's avatar
      Bug #51839 mixup of DDL causes slave to stop · 164ff447
      unknown authored
      Stored routine DDL statements use statement-based replication
      regardless of the current binlog format. The problem here was
      that if a DDL statement failed during metadata lock acquisition
      or opening of mysql.proc, the binlog format would not be reset
      before returning. So the following DDL or DML statements are 
      binlogged with a wrong binlog format, which causes the slave 
      to stop.
      
      The problem can be resolved by grabbing an exclusive MDL lock firstly
      instead of clearing the current binlog format. So that the binlog
      format will not be affected when the lock grab returns directly with
      an error. The same way is taken to open a proc table for update.
      
      
      mysql-test/suite/rpl/r/rpl_tmp_table_and_DDL.result:
        Test Result for bug#51839
      mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test:
        Added test to make sure the binlog format is not changed
        after a execution of DDL with a table locked.
      sql/sp.cc:
        Grab an exclusive MDL lock and open a proc table for update firstly
        instead of clearing the current binlog format.
      164ff447