1. 10 Dec, 2009 8 commits
    • Georgi Kodinov's avatar
      merge · 7b174dca
      Georgi Kodinov authored
      7b174dca
    • Ramil Kalimullin's avatar
      Auto-merge. · e1d4ad39
      Ramil Kalimullin authored
      e1d4ad39
    • Ramil Kalimullin's avatar
      Manual merge. · c888a4a2
      Ramil Kalimullin authored
      c888a4a2
    • Gleb Shchepa's avatar
      Bug #49480: WHERE using YEAR columns returns unexpected results · 32463833
      Gleb Shchepa authored
      A few problems were found in the fix for bug 43668:
      1) Comparison of the YEAR column with NULL always returned TRUE;
      2) Comparison of the YEAR column with constants always returned
         unpredictable result;
      3) Unnecessary conversion warnings when comparing a non-integer
         constant with a NULL value in the YEAR column;
      
      The problems described above have been resolved with an
      exception: zero (i.e. invalid) YEAR column value comparison
      with 00 or 2000 still fail (it is not a regression and it was
      not a regression), so MIN/MAX on YEAR column containing zero
      value still fail.
      
      
      mysql-test/r/type_year.result:
        Test case for bug #49480.
      mysql-test/t/type_year.test:
        Test case for bug #49480.
      sql/item_cmpfunc.cc:
        - The get_year_value() function has been modified to make its
          return value compatible with the get_datetime_value() return
          value (i.e. to convert numeric values into the YYYY0000000000
          (YYYY-00-00 00:00:00) form.
        
        - The Arg_comparator::set_cmp_func method has been modified to
          use the get_year_value function if get_datetime_value() is not
          applicable.
          From now only 2 cases have a special processing there:
          * both comparing items have MYSQL_TYPE_YEAR field type
                  or
          * one item have is MYSQL_TYPE_YEAR and other one is
            is_datetime()-compliant.
        
        - New helper function try_year_cmp_func() has been
          added for the better code readability to call from
          Arg_comparator::set_cmp_func().
        
        - The Arg_comparator::compare_year method has been removed
          since get_year_value() is compatible with the old
          Arg_comparator::compare_datetime method that doesn't have
          problems #1-#3 (see whole patch entry commentary).
      sql/item_cmpfunc.h:
        - New helper function try_year_cmp_func() has been
          added for the better code readability to call from
          Arg_comparator::set_cmp_func().
        
        - Unnecessary Arg_comparator::year_as_datetime and
          Arg_comparator::compare_year() declarations have been
          removed.
      32463833
    • Ramil Kalimullin's avatar
      Auto-merge. · 36e019c9
      Ramil Kalimullin authored
      36e019c9
    • He Zhenxing's avatar
      Auto merge · 34c08c15
      He Zhenxing authored
      34c08c15
    • He Zhenxing's avatar
      Merge from 5.0-bugteam · f8d16332
      He Zhenxing authored
      f8d16332
    • He Zhenxing's avatar
      Post fix for bug#45520 · 91689490
      He Zhenxing authored
      mysql-test/include/kill_query.inc:
        Error 1034 can be generated when change MyISAM table indexes was interrupted
      mysql-test/r/rpl_killed_ddl.result:
        table t4 may not exists because the ALTER above was interrupted
      mysql-test/t/rpl_killed_ddl.test:
        table t4 may not exists because the ALTER above was interrupted
      91689490
  2. 09 Dec, 2009 6 commits
    • Alfranio Correia's avatar
      62551f07
    • Olav Sandstaa's avatar
      Fix for Bug#49506 Valgrind error in make_cond_for_table_from_pred · 9060aa68
      Olav Sandstaa authored
            
      This fix has been proposed by Sergey Petrunya and has been contributed
      under SCA by sca@askmonty.org.
            
      The cause for this valgrind error is that in the function
      add_cond_and_fix() in sql_select.cc an Item_cond_and object is
      created. This is marked as fixed but does not have a correct
      table_map() attribute. Later, in make_join_select(), if
      engine_condition_pushdown is in use, this table map is used and
      results in the valgrind error.
            
      The fix is to add a call to update_used_tables() in add_cond_and_fix()
      so that the table map is updated correctly.
            
      This patch is tested by multiple existing tests (e.g. the tests
      innodb_mysql, innodb, fulltext, compress all produces this valgrind
      warning/error without this fix).
      
      
      sql/sql_select.cc:
        In add_cond_and_fix() add a call to update_used_tables() to ensure
        the table map is updated.
      9060aa68
    • He Zhenxing's avatar
      Merge from 5.0-bugteam · 2573ba24
      He Zhenxing authored
      2573ba24
    • He Zhenxing's avatar
      removed rpl_killed_ddl from disabled list · b3d9f784
      He Zhenxing authored
      b3d9f784
    • He Zhenxing's avatar
      Merge Bug#45520 fix from 5.0-bugteam · b13541ff
      He Zhenxing authored
      b13541ff
    • He Zhenxing's avatar
      BUG#45520 rpl_killed_ddl fails sporadically in pb2 · bc2b3d2c
      He Zhenxing authored
      There are three issues that caused rpl_killed_ddl fails sporadically
      in pb2:
      
       1) thd->clear_error() was not called before create Query event
      if operation is executed successfully.
       2) DATABASE d2 might do exist because the statement to CREATE or
      ALTER it was killed
       3) because of bug 43353, kill the query that do DROP FUNCTION or
          DROP PROCEDURE can result in SP not found
      
      This patch fixed all above issues by:
       1) Called thd->clear_error() if the operation succeeded.
       2) Add IF EXISTS to the DROP DATABASE d2 statement
       3) Temporarily disabled testing DROP FUNCTION/PROCEDURE IF EXISTS.
      
      mysql-test/t/rpl_killed_ddl.test:
        DATABASE d2 might not exists, add IF EXITS to the DROP statement
      sql/sql_db.cc:
        Called thd->clear_error() if the operation succeeded
      bc2b3d2c
  3. 08 Dec, 2009 1 commit
  4. 07 Dec, 2009 2 commits
  5. 06 Dec, 2009 5 commits
    • Luis Soares's avatar
      Automerge bzr bundle from bug report. · 7948403b
      Luis Soares authored
      Removed rpl_cross_version from experimental list.
      7948403b
    • Luis Soares's avatar
    • Luis Soares's avatar
      BUG#49119: Master crashes when executing 'REVOKE ... ON · c75712ca
      Luis Soares authored
      {PROCEDURE|FUNCTION} FROM ...'
      
      The master would hit an assertion when binary log was
      active. This was due to the fact that the thread's diagnostics
      area was being cleared before writing to the binlog,
      independently of mysql_routine_grant returning an error or
      not. When mysql_routine_grant was to return an error, the return
      value and the diagnostics area contents would
      mismatch. Consequently, neither my_ok would be called nor an
      error would be signaled in the diagnostics area, eventually
      triggering the assertion in net_end_statement.
      
      We fix this by not clearing the diagnostics area at binlogging
      time. 
      c75712ca
    • Staale Smedseng's avatar
      Merge from 5.0 · 7a14bfa5
      Staale Smedseng authored
      7a14bfa5
    • Staale Smedseng's avatar
      Bug #47391 no stack trace printed to error log on · 63ff2b4c
      Staale Smedseng authored
      solaris after a crash
            
      This patch adds a Solaris-specific version of
      print_stacktrace() which uses printstack(2), available on all
      Solaris versions since Solaris 9. (While Solaris 11 adds
      support for the glibc functions backtrace_*() as of
      PSARC/2007/162, printstack() is used for consistency over all
      Solaris versions.)
      
      The symbol names are mangled, so use of c++filt may be
      required as described in the MySQL documentation.
      
      
      sql/stacktrace.c:
        Added Solaris-specific print_stacktrace().
      63ff2b4c
  6. 05 Dec, 2009 1 commit
  7. 04 Dec, 2009 4 commits
    • Ramil Kalimullin's avatar
      Fix for bug#49199: Optimizer handles incorrectly: · f5b51bc1
      Ramil Kalimullin authored
      field='const1' AND field='const2' in some cases
      
      Building multiple equality predicates containing
      a constant which is compared as a datetime (with a field)
      we should take this fact into account and compare the 
      constant with another possible constatns as datetimes 
      as well.
      
      E.g. for the
      SELECT ... WHERE a='2001-01-01' AND a='2001-01-01 00:00:00'
      we should compare '2001-01-01' with '2001-01-01 00:00:00' as
      datetimes but not as strings.
      
      
      mysql-test/r/select.result:
        Fix for bug#49199: Optimizer handles incorrectly: 
        field='const1' AND field='const2' in some cases
          - test result.
      mysql-test/t/select.test:
        Fix for bug#49199: Optimizer handles incorrectly: 
        field='const1' AND field='const2' in some cases
          - test case.
      sql/item_cmpfunc.cc:
        Fix for bug#49199: Optimizer handles incorrectly: 
        field='const1' AND field='const2' in some cases
          - adding a constant to Item_equal compare it as
        a datetime value with stored one if there's a 
        date[time] field in a equality predicate.
      sql/item_cmpfunc.h:
        Fix for bug#49199: Optimizer handles incorrectly: 
        field='const1' AND field='const2' in some cases
          - adding a constant to Item_equal compare it as
        a datetime value with stored one if there's a 
        date[time] field in a equality predicate.
      sql/sql_select.cc:
        Fix for bug#49199: Optimizer handles incorrectly: 
        field='const1' AND field='const2' in some cases
          - adding a constant to Item_equal compare it as
        a datetime value with stored one if there's a 
        date[time] field in a equality predicate.
      f5b51bc1
    • Davi Arnaut's avatar
      Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0 · e53ecf2d
      Davi Arnaut authored
      The problem was that the multiple evaluations of a ENCODE or
      DECODE function within a single statement caused the random
      generator to be reinitialized at each evaluation, even though
      the parameters were constants.
      
      The solution is to initialize the random generator only once
      if the password (seed) parameter is constant.
      
      This patch borrows code and ideas from Georgi Kodinov's patch.
      
      mysql-test/r/func_str.result:
        Add test case result.
      mysql-test/r/ps.result:
        Add test case result.
      mysql-test/t/func_str.test:
        Add test case for Bug#49141
      mysql-test/t/ps.test:
        Add test case for Bug#49141
      sql/item_strfunc.cc:
        Move seed generation code to a separate method.
        Seed only once if the password (seed) argument
        is constant.
        Remove duplicated code and use a transform method
        to apply encoding or decoding.
      sql/item_strfunc.h:
        Add parameter to signal whether the PRNG is already seeded.
        Introduce transform method.
        Combine val_str methods.
      sql/sql_crypt.cc:
        Remove method.
      sql/sql_crypt.h:
        Seed is supplied as two long integers.
      e53ecf2d
    • Davi Arnaut's avatar
      Bug#41569: mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table but does not set values · 4760c13e
      Davi Arnaut authored
      Post-merge fix: Redirect stderr to a file as to avoid buffering
      problems due to redirecting stderr to stdout.
      
      mysql-test/r/mysql_upgrade.result:
        Update test case result.
      mysql-test/t/mysql_upgrade.test:
        Redirect stderr to a file, cat and remove.
      4760c13e
    • Alfranio Correia's avatar
      BUG#45292 orphan binary log created when starting server twice · a4c50983
      Alfranio Correia authored
      This patch fixes three bugs as follows. First, aborting the server while purging
      binary logs might generate orphan files due to how the purge operation was
      implemented:
      
                (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)
      
            1 - register the files to be removed in a temporary buffer.
            2 - update the log-bin.index.
            3 - flush the log-bin.index.
            4 - erase the files whose names where register in the temporary buffer
            in step 1.
      
      Thus a failure while  executing step 4 would generate an orphan file. Second,
      a similar issue might happen while creating a new binary as follows:
      
                (create routine - sql/log.cc - MYSQL_BIN_LOG::open)
      
            1 - open the new log-bin.
            2 - update the log-bin.index.
      
      Thus a failure while executing step 1 would generate an orphan file.
      
      To fix these issues, we record the files to be purged or created before really
      removing or adding them. So if a failure happens such records can be used to
      automatically remove dangling files. The new steps might be outlined as follows:
      
                (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)
      
            1 - register the files to be removed in the log-bin.~rec~ placed in
            the data directory.
            2 - update the log-bin.index.
            3 - flush the log-bin.index.
            4 - delete the log-bin.~rec~.
      
                (create routine - sql/log.cc - MYSQL_BIN_LOG::open)
      
            1 - register the file to be created in the log-bin.~rec~
            placed in the data directory.
            2 - open the new log-bin.
            3 - update the log-bin.index.
            4 - delete the log-bin.~rec~.
      
                (recovery routine - sql/log.cc - MYSQL_BIN_LOG::open_index_file)
      
            1 - open the log-bin.index.
            2 - open the log-bin.~rec~.
            3 - for each file in log-bin.~rec~.
              3.1 Check if the file is in the log-bin.index and if so ignore it.
              3.2 Otherwise, delete it.
      
      The third issue can be described as follows. The purge operation was allowing
      to remove a file in use thus leading to the loss of data and possible
      inconsistencies between the master and slave. Roughly, the routine was only
      taking into account the dump threads and so if a slave was not connect the
      file might be delete even though it was in use.
      a4c50983
  8. 03 Dec, 2009 7 commits
    • Gleb Shchepa's avatar
      Bug #38883: thd_security_context is not thread safe, crashes? · 43d8e02f
      Gleb Shchepa authored
      After-push minor code cleanup for WL 2360: unnecessary external
      reference to LOCK_thread_count has been removed from ha_innodb.cc.
      
      43d8e02f
    • unknown's avatar
      This is a patch for bug#41569. · 699a8711
      unknown authored
      "mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table but does
      not set values".
                  
      mysql_upgrade (ver 5.1) adds 3 fields (character_set_client, 
      collation_connection and db_collation) to the mysql.proc table, but 
      does not set any values. When we run stored procedures, which were 
      created with mysql 5.0, a warning is logged into the error log.
                  
      The solution to this is for mysql_upgrade to set default best guess
      values for these fields. A warning is also written during upgrade, to
      make the user aware that default values are set.
      
      client/mysql_upgrade.c:
        Result lines which start with "WARNING" are passed through to the output. 
        This way we have a way of triggering WARNING-messages during upgrade 
        directly from the .sql-script.
      mysql-test/r/mysql_upgrade.result:
        Expected result of the test.
      mysql-test/t/mysql_upgrade.test:
        Added a test-case for the bug.
      scripts/mysql_system_tables_fix.sql:
        The new fields are populated, and warnings are written.
      699a8711
    • Evgeny Potemkin's avatar
      Auto-merged. · 2e8ad6bf
      Evgeny Potemkin authored
      2e8ad6bf
    • Evgeny Potemkin's avatar
      Auto-merged. · 026541c6
      Evgeny Potemkin authored
      026541c6
    • Evgeny Potemkin's avatar
      Bug#48508: Crash on prepared statement re-execution. · 8fa282cc
      Evgeny Potemkin authored
      Test case cleanup.
      
      mysql-test/r/ps.result:
        Test case cleanup for bug#48508.
      mysql-test/t/ps.test:
        Test case cleanup for bug#48508.
      8fa282cc
    • Georgi Kodinov's avatar
      Bug #48985: show create table crashes if previous access to the table was killed · 9091535c
      Georgi Kodinov authored
      When checking for an error after removing the special view error handler the code
      was not taking into account that open_tables() may fail because of the current
      statement being killed. 
      Added a check for thd->killed.
      Added a client program to test it.
      9091535c
    • Alexander Barkov's avatar
      Bug#44131 Binary-mode "order by" returns records in incorrect order for UTF-8 strings · 76221343
      Alexander Barkov authored
      Problem: Item_char_typecast reported wrong max_length when
      casting to BINARY, which lead, in particular, in wrong
      "ORDER BY BINARY(char_column)" results.
      
      Fix: making Item_char_typecast report correct max_length.
      
        @ mysql-test/r/ctype_utf16.result
          Fixing old incorrect test result.
        @ mysql-test/r/ctype_utf32.result
          Fixing old incorrect test result.
        @ mysql-test/r/ctype_utf8.result
          Adding new test
        @ mysql-test/t/ctype_utf8.test
          Adding new test
        @ sql/item_timefunc.cc
          Making Item_char_typecast report correct max_length
          when cast is done to BINARY.
      76221343
  9. 02 Dec, 2009 3 commits
    • Evgeny Potemkin's avatar
      Auto-merged. · 1eda9dc7
      Evgeny Potemkin authored
      1eda9dc7
    • Evgeny Potemkin's avatar
      Auto-merged fix for the bug#48508. · d969cbc5
      Evgeny Potemkin authored
      d969cbc5
    • Alexander Barkov's avatar
      Bug#48766 SHOW CREATE FUNCTION returns extra data in return clause · d7abca9a
      Alexander Barkov authored
      Problem: SHOW CREATE FUNCTION and SELECT DTD_IDENTIFIER FROM I_S.ROUTINES
      returned wrong values in case of ENUM return data type and UCS2
      character set.
      
      Fix: the string to collect returned data type was incorrectly set to
      "binary" character set, therefore UCS2 values where returned with
      extra '\0' characters.
      Setting string character set to creation_ctx->get_client_cs()
      in sp_find_routine(), and to system_charset_info in sp_create_routine
      fixes the problem.
      
      Adding tests:
      - the original test with Latin letters
      - an extra test with non-Latin letters
      d7abca9a
  10. 01 Dec, 2009 3 commits
    • Evgeny Potemkin's avatar
      Bug#48508: Crash on prepared statement re-execution. · 7853f553
      Evgeny Potemkin authored
      Actually there is two different bugs.
      The first one caused crash on queries with WHERE condition over views
      containing WHERE condition. A wrong check for prepared statement phase led
      to items for view fields being allocated in the execution memory and freed
      at the end of execution. Thus the optimized WHERE condition refers to
      unallocated memory on the second execution and server crashed.
      The second one caused by the Item_cond::compile function not saving changes
      it made to the item tree. Thus on the next execution changes weren't
      reverted and server crashed on dereferencing of unallocated space.
      
      The new helper function called is_stmt_prepare_or_first_stmt_execute
      is added to the Query_arena class.
      The find_field_in_view function now uses
      is_stmt_prepare_or_first_stmt_execute() to check whether
      newly created view items should be freed at the end of the query execution.
      The Item_cond::compile function now saves changes it makes to item tree.
      
      mysql-test/r/ps.result:
        Added a test case for the bug#48508.
      mysql-test/t/ps.test:
        Added a test case for the bug#48508.
      sql/item_cmpfunc.cc:
        Bug#48508: Crash on prepared statement re-execution.
        The Item_cond::compile function now saves changes it makes to item tree.
      sql/sql_base.cc:
        Bug#48508: Crash on prepared statement re-execution.
        The find_field_in_view function now uses
        is_stmt_prepare_or_first_stmt_execute() to check whether
        newly created view items should be freed at the end of the query execution.
      sql/sql_class.h:
        Bug#48508: Crash on prepared statement re-execution.
        The Query_arena::is_stmt_prepare_or_first_sp_execute function now correctly
        do its check.
      7853f553
    • Satya B's avatar
      merge to mysql-5.1-bugteam · b19ae492
      Satya B authored
      b19ae492
    • Satya B's avatar
      Addition to Innodb Plugin 1.0.6 snapshot · 9128418e
      Satya B authored
      the last IF ELSE part which decides the plugin name is not relevant as we still have
      to substitute the occurences of INNOBASE with INNODB_PLUGIN.
      Remove the last IF ELSE part in CMakeLists.txt as it doesn't make sense in 5.1.
      
      9128418e