1. 17 Jun, 2010 1 commit
  2. 15 Jun, 2010 4 commits
    • Joerg Bruehe's avatar
      Fix bug#27072: RPM autostarts the server · cb6641ab
      Joerg Bruehe authored
      This is the fix for 5.1, where only the behaviour on upgrade is changed:
      If the server was stopped when the upgrade begins, we assume the
      administrator is taking manual action, so we do not start the (new)
      server at the end of the upgrade.
      We still install the start/stop script, so it will be started on reboot.
      
      
      support-files/mysql.spec.sh:
        In the "pre" section of the spec file, check the server status, and write
        the result to a file.
        In the "post" section, evaluate the status file, and start the server if
        it was running during status analysis.
        In 5.1, we start the server if there is no status file (which will happen
        on first installation, when there is no data directory yet).
      cb6641ab
    • Alexey Kopytov's avatar
      Backport of the patch for bug52208 to 5.1 since the · 899a396d
      Alexey Kopytov authored
      root cause of 52208 resulted in another test failure
      in 5.1.
      899a396d
    • Bjorn Munch's avatar
      null upmerge 53424, irrelevant for 5.1 · 740400f8
      Bjorn Munch authored
      740400f8
    • Bjorn Munch's avatar
      Bug #53424 Certain combination of flags give internal error · f96deba1
      Bjorn Munch authored
      Reorder code breaks when finding tests skipped due to --skip-rpl etc.
      Add simple test that master_opt is non-empty
      f96deba1
  3. 14 Jun, 2010 2 commits
  4. 12 Jun, 2010 1 commit
  5. 11 Jun, 2010 4 commits
    • Alexey Kopytov's avatar
      Automerge. · aa8bb5db
      Alexey Kopytov authored
      aa8bb5db
    • Ramil Kalimullin's avatar
      Automerge. · 6cba6293
      Ramil Kalimullin authored
      6cba6293
    • Alexey Kopytov's avatar
      Manual merge from the bugfix tree. · bc75cc6f
      Alexey Kopytov authored
      conflicts:
         conflict      sql/sql_parse.cc
      bc75cc6f
    • Martin Hansson's avatar
      Bug#53859: Valgrind: opt_sum_query(TABLE_LIST*, List<Item>&, · fdd0bb47
      Martin Hansson authored
      Item*) at opt_sum.cc:305
            
      Queries applying MIN/MAX functions to indexed columns are
      optimized to read directly from the index if all key parts
      of the index preceding the aggregated key part are bound to
      constants by the WHERE clause. A prefix length is also
      produced, equal to the total length of the bound key
      parts. If the aggregated column itself is bound to a
      constant, however, it is also included in the prefix.
      
      Such full search keys are read as closed intervals for
      reasons beyond the scope of this bug. However, the procedure
      missed one case where a key part meant for use as range
      endpoint was being overwritten with a NULL value destined
      for equality checking. In this case the key part was
      overwritten but the range flag remained, causing open
      interval reading to be performed.
      
      Bug was fixed by adding more stringent checking to the
      search key building procedure (matching_cond) and never
      allow overwrites of range predicates with non-range
      predicates.
      
      An assertion was added to make sure open intervals are never
      used with full search keys.
      fdd0bb47
  6. 10 Jun, 2010 5 commits
    • Davi Arnaut's avatar
      Bug#42733: Type-punning warnings when compiling MySQL -- · fd4b3c6c
      Davi Arnaut authored
                  strict aliasing violations.
      
      One somewhat major source of strict-aliasing violations and
      related warnings is the SQL_LIST structure. For example,
      consider its member function `link_in_list` which takes
      a pointer to pointer of type T (any type) as a pointer to
      pointer to unsigned char. Dereferencing this pointer, which
      is done to reset the next field, violates strict-aliasing
      rules and might cause problems for surrounding code that
      uses the next field of the object being added to the list.
      
      The solution is to use templates to parametrize the SQL_LIST
      structure in order to deference the pointers with compatible
      types. As a side bonus, it becomes possible to remove quite
      a few casts related to acessing data members of SQL_LIST.
      
      sql/handler.h:
        Use the appropriate template type argument.
      sql/item.cc:
        Remove now-unnecessary cast.
      sql/item_subselect.cc:
        Remove now-unnecessary casts.
      sql/item_sum.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary cast.
      sql/mysql_priv.h:
        Move SQL_LIST structure to sql_list.h
        Use the appropriate template type argument.
      sql/sp.cc:
        Remove now-unnecessary casts.
      sql/sql_delete.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary casts.
      sql/sql_derived.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.h:
        SQL_LIST now takes a template type argument which must
        match the type of the elements of the list. Use forward
        declaration when the type is not available, it is used
        in pointers anyway.
      sql/sql_list.h:
        Rename SQL_LIST to SQL_I_List. The template parameter is
        the type of object that is stored in the list.
      sql/sql_olap.cc:
        Remove now-unnecessary casts.
      sql/sql_parse.cc:
        Remove now-unnecessary casts.
      sql/sql_prepare.cc:
        Remove now-unnecessary casts.
      sql/sql_select.cc:
        Remove now-unnecessary casts.
      sql/sql_show.cc:
        Remove now-unnecessary casts.
      sql/sql_table.cc:
        Remove now-unnecessary casts.
      sql/sql_trigger.cc:
        Remove now-unnecessary casts.
      sql/sql_union.cc:
        Remove now-unnecessary casts.
      sql/sql_update.cc:
        Remove now-unnecessary casts.
      sql/sql_view.cc:
        Remove now-unnecessary casts.
      sql/sql_yacc.yy:
        Remove now-unnecessary casts.
      storage/myisammrg/ha_myisammrg.cc:
        Remove now-unnecessary casts.
      fd4b3c6c
    • Davi Arnaut's avatar
      Bug#42733: Type-punning warnings when compiling MySQL -- · 486f9c05
      Davi Arnaut authored
                 strict aliasing violations.
      
      Essentially, the problem is that large parts of the server were
      developed in simpler times (last decades, pre C99 standard) when
      strict aliasing and compilers supporting such optimizations were
      rare to non-existent. Thus, when compiling the server with a modern
      compiler that uses strict aliasing rules to perform optimizations,
      there are several places in the code that might trigger undefined
      behavior.
      
      As evinced by some recent bugs, GCC does a somewhat good of job
      misoptimizing such code, but on the other hand also gives warnings
      about suspicious code. One problem is that the warnings aren't
      always accurate, yet we can't afford to just shut them off as we
      might miss real cases. False-positive cases are aggravated mostly
      by casts that are likely to trigger undefined behavior.
      
      The solution is to start a cleanup process focused on fixing and
      reducing the amount of strict-aliasing related warnings produced
      by GCC and others compilers. A good deal of noise reduction can
      be achieved by just removing useless casts that are product of
      historical cruft and are likely to trigger undefined behavior if
      dereferenced.
      
      client/mysql.cc:
        Remove now-unnecessary casts.
        Break up large strings.
      client/mysql_upgrade.c:
        Remove now-unnecessary casts.
      client/mysqladmin.cc:
        Remove now-unnecessary casts.
        Break up large strings.
      client/mysqlbinlog.cc:
        Remove now-unnecessary casts.
      client/mysqlcheck.c:
        Remove now-unnecessary casts.
      client/mysqldump.c:
        Remove now-unnecessary casts.
      client/mysqlimport.c:
        Remove now-unnecessary casts.
      client/mysqlshow.c:
        Remove now-unnecessary casts.
      client/mysqlslap.c:
        Remove now-unnecessary casts.
      client/mysqltest.cc:
        Remove now-unnecessary casts.
      extra/comp_err.c:
        Remove now-unnecessary casts.
      extra/my_print_defaults.c:
        Remove now-unnecessary casts.
        Break up large strings.
      extra/mysql_waitpid.c:
        Remove now-unnecessary casts.
      extra/perror.c:
        Remove now-unnecessary casts.
      extra/resolve_stack_dump.c:
        Remove now-unnecessary casts.
      extra/resolveip.c:
        Remove now-unnecessary casts.
      include/my_getopt.h:
        Use a void pointer type as the opaque type to avoid problems with type
        incompatibility -- GCC issues warnings when the type name is not type
        compatible with a operand. As a side bonus, a explicit cast won't be
        necessary anymore.
      include/sslopt-longopts.h:
        Remove now-unnecessary casts.
        Break up large strings.
      mysys/my_getopt.c:
        Update opaque type and introduce a type definition for the
        argument to my_getopt_register_get_addr.
      server-tools/instance-manager/options.cc:
        Remove now-unnecessary casts.
      sql/mysqld.cc:
        Remove now-unnecessary casts.
        Break up large strings.
        Update mysql_getopt_value prototype (the old prototype
        was different from the definition anyway).
      sql/sql_plugin.cc:
        The type of a pointer to a function must be compatible with the
        pointed-to function type, otherwise the behavior is undefined.
      sql/table.cc:
        The variable buf pointer to pointer to pointer to constant char
        could improperly alias a incompatible type in call to fix_type_
        pointers. Since this was actually dead code, it is simply removed.
      sql/unireg.cc:
        Remove call to get_form_pos. The code creates a new FRM file which
        is always truncated and writes the form position as 0. Hence, no
        need to retrieve it, we now for sure it is 0.
      storage/archive/archive_reader.c:
        Remove now-unnecessary casts.
      storage/myisam/ft_nlq_search.c:
        Read weight directly from the buffer.
      storage/myisam/fulltext.h:
        Add explanation about the type duality of a key buffer.
        Add accessor macro to retrieve a FT float value.
      storage/myisam/mi_test1.c:
        Remove now-unnecessary casts.
      storage/myisam/myisam_ftdump.c:
        Read weight directly from the buffer.
      storage/myisam/myisamchk.c:
        Remove now-unnecessary casts.
      storage/myisam/myisamlog.c:
        A pointer to char was used to alias a pointer to pointer to
        unsigned char, thus violating strict aliasing rules.
      storage/myisam/myisampack.c:
        Remove now-unnecessary casts.
      strings/decimal.c:
        Remove aliasing violation, printing the value is enough for
        debugging purposes.
      tests/mysql_client_test.c:
        Remove now-unnecessary casts.
      486f9c05
    • Tor Didriksen's avatar
      Backport of Bug#53303 mytap tests should always have a plan() · a2738507
      Tor Didriksen authored
      The bug was caused by buffered output. Flushing resolved it.
      We still recommend to allways call plan().
        
      Also fix some compile warnings (formal parameter different from declaration)
      
      
      unittest/examples/Makefile.am:
        Omit core-t, since it will always fail.
      unittest/examples/no_plan-t.c:
        Comment that we recommend calling plan(NO_PLAN)
      unittest/mytap/tap.c:
        Use the named constant NO_PLAN
        Flush all output.
      unittest/mytap/tap.h:
        Change documentation for the plan() function.
      a2738507
    • Davi Arnaut's avatar
      6d546ddf
    • Davi Arnaut's avatar
      Bug#34236: Various possibly related SSL crashes · de986ce1
      Davi Arnaut authored
      Addendum: Work around a compilation failure on Windows due to
                windows.h not being added to the global namespace.
      
      extra/yassl/include/lock.hpp:
        Move windows.h inclusion into the global namespace.
      de986ce1
  7. 09 Jun, 2010 2 commits
    • Ramil Kalimullin's avatar
      Fix for bug #54007: assert in ha_myisam::index_next, HANDLER · 4f60995d
      Ramil Kalimullin authored
      Problem: the server missed the fact that one can read from 
      2 indexes alternately using HANDLER interface.
      
      Fix: check if the same (initialized) index is involved
      reading next/prev values from the index.
      
      
      mysql-test/r/handler_myisam.result:
        Fix for bug #54007: assert in ha_myisam::index_next, HANDLER
          - test result.
      mysql-test/t/handler_myisam.test:
        Fix for bug #54007: assert in ha_myisam::index_next, HANDLER
          - test case.
      sql/sql_handler.cc:
        Fix for bug #54007: assert in ha_myisam::index_next, HANDLER
          - check if we use the same (initialized) index 
        to read next/prev values from the index.
      4f60995d
    • Georgi Kodinov's avatar
      Merge · 0121b9d1
      Georgi Kodinov authored
      0121b9d1
  8. 08 Jun, 2010 7 commits
    • Davi Arnaut's avatar
      Merge of mysql-5.0-bugteam into mysql-5.1-bugteam. · 8a55dda6
      Davi Arnaut authored
      config/ac-macros/ssl.m4:
        Enable yaSSL thread safety if linking with the server or a
        thread safe client library. Avoids building a thread safe
        yaSSL when only building a non-thread safe client library.
      8a55dda6
    • Davi Arnaut's avatar
      Bug#53906: Stray semicolon in my_sys.h corrupts macro function definition of MY_INIT · b93825f3
      Davi Arnaut authored
      include/my_sys.h:
        Remove stray semicolon.
      b93825f3
    • Davi Arnaut's avatar
      Bug#34236: Various possibly related SSL crashes · 82f09f49
      Davi Arnaut authored
      The problem was that the bundled yaSSL library was being built
      without thread safety support regardless of the thread safeness
      of the compoments linked with it.
      
      The solution is to enable yaSSL thread safety support if any
      component (server or client) is to be built with thread support.
      
      Also, generate new certificates for yaSSL's test suite.
      
      config/ac-macros/yassl.m4:
        Enable yaSSL thread safety if linking with the server or a
        thread safe client library. Avoids building a thread safe
        yaSSL when only building a non-thread safe client library.
      extra/yassl/CMakeLists.txt:
        Always enable for Windows builds.
      extra/yassl/certs/ca-cert.pem:
        New certificate, previous one expired.
      extra/yassl/certs/client-cert.der:
        New certificate, previous one expired.
      extra/yassl/certs/client-cert.pem:
        New certificate, previous one expired.
      extra/yassl/certs/dsa-cert.pem:
        New certificate, previous one expired.
      extra/yassl/certs/server-cert.pem:
        New certificate, previous one expired.
      extra/yassl/include/lock.hpp:
        Rename MULTI_THREAD to YASSL_THREAD_SAFE.
      extra/yassl/src/Makefile.am:
        Use CXXFLAGS to set thread related definitions as the lock header
        (lock.hpp) has no local dependencies.
      extra/yassl/src/lock.cpp:
        Rename MULTI_THREAD to YASSL_THREAD_SAFE.
      extra/yassl/taocrypt/CMakeLists.txt:
        Always enable for Windows builds.
      extra/yassl/taocrypt/benchmark/Makefile.am:
        Pass thread related CXXFLAGS.
      extra/yassl/taocrypt/src/Makefile.am:
        Pass thread related CXXFLAGS.
      extra/yassl/taocrypt/test/Makefile.am:
        Pass thread related CXXFLAGS.
      extra/yassl/taocrypt/test/memory.cpp:
        Rename MULTI_THREAD to YASSL_THREAD_SAFE.
      extra/yassl/testsuite/Makefile.am:
        Pass thread related CXXFLAGS.
      82f09f49
    • Kristofer Pettersson's avatar
      automerge · 67b6175a
      Kristofer Pettersson authored
      67b6175a
    • Kristofer Pettersson's avatar
      Bug#53191 Lock_time in slow log is negative when logging stored routines · bfd307b9
      Kristofer Pettersson authored
      Logging slow stored procedures caused the slow log to write 
      very large lock times. The lock times was a result of a 
      negative number being cast to an unsigned integer.
      The reason the lock time appeard negative was because 
      one of the measurements points was reset after execution
      causing it to change order with the start time of the 
      statement.
            
      This bug is related to bug 47905 which in turn was 
      introduced because of a joint fix for 12480,12481,12482 and 11587.
      
      The fix is to only reset the start_time before any statement
      execution in a SP while not resetting start_utime or
      utime_after_lock which are used for measuring the 
      performance of the SP. Start_time is used to set the
      timestamp on the replication event which controlls how
      the slave interprets time functions like NOW().
      bfd307b9
    • Sergey Glukhov's avatar
      5.0-bugteam->5.1-bugteam merge · 88fef157
      Sergey Glukhov authored
      88fef157
    • Sergey Glukhov's avatar
      Bug#53933 crash when using uncacheable subquery in the having clause of outer query · 3c1b4072
      Sergey Glukhov authored
      The problem is in the Item_func_isnull::update_used_tables() function,
      bracket is at the wrong place. Because of that isnull item erroneously
      is treated as const item. The fix is to set brackets in the right place.
      
      
      mysql-test/r/func_isnull.result:
        test case
      mysql-test/t/func_isnull.test:
        test case
      sql/item_cmpfunc.h:
        set brackets in the right place.
      3c1b4072
  9. 07 Jun, 2010 2 commits
  10. 04 Jun, 2010 5 commits
  11. 03 Jun, 2010 4 commits
  12. 02 Jun, 2010 3 commits
    • Luis Soares's avatar
    • Luis Soares's avatar
      BUG#53893: RBR: nullable unique key can lead to out-of-sync slave · 78906f72
      Luis Soares authored
      When using Unique Keys with nullable parts in RBR, the slave can
      choose the wrong row to update. This happens because a table with
      an unique key containing nullable parts cannot strictly guarantee 
      uniqueness. As stated in the manual, for all engines, a UNIQUE 
      index allows multiple NULL values for columns that can contain 
      NULL.
      
      We fix this at the slave by extending the checks before assuming
      that the row found through an unique index is is the correct
      one. This means that when a record (R) is fetched from the storage
      engine and a key that is not primary (K) is used, the server does 
      the following: 
      
       - If K is unique and has no nullable parts, it returns R;
       - Otherwise, if any field in the before image that is part of K
         is null do an index scan;
       - If there is no NULL field in the BI part of K, then return R.
      
      A side change: renamed the existing test case file and added a
      test case covering the changes in this patch.
      78906f72
    • Luis Soares's avatar
      da74eddd