1. 20 May, 2011 3 commits
    • Dmitry Shulga's avatar
      fac0e0e0
    • Dmitry Shulga's avatar
      Fixed bug#11749345 (formerly bug#38813) - increasing memory consumption · 733893ba
      Dmitry Shulga authored
      when selecting from I_S and views exist, in SP.
      
      Symptoms: re-execution of prepared statement (or statement in a stored
      routine) which read from one of I_S tables and which in order to fill
      this I_S table had to open a view led to increasing memory consumption.
      
      What happened in this situation was that during the process of view
      opening for purpose of I_S filling view-related structures (like its
      LEX) were allocated on persistent MEM_ROOT of prepared statement (or 
      stored routine). Since this MEM_ROOT is not freed until prepared
      statement deallocation (or expulsion of stored routine from the cache)
      and code responsible for filling I_S is not able to re-use results of
      view opening from previous executions this allocation ended up in
      memory hogging.
      
      This patch solves the problem by ensuring that when a view opened
      for the purpose of I_S filling all its structures are allocated on
      non-persistent runtime MEM_ROOT. This is achieved by activating a
      temporary Query_arena bound to this MEM_ROOT.
      Since this step makes impossible linking of view structures into
      LEX of our prepared statement (or stored routine statement) this
      patch also changes code filling I_S table to install a proxy LEX
      before trying to open a view or a table. Consequently some code
      which was responsible for backing-up/restoring parts of LEX when
      view/table was opened during filling of I_S table became redundant
      and was removed.
      
      This patch doesn't contain test case for this bug as it is hard
      to test memory hogging in our test suite.
      733893ba
    • Mayank Prasad's avatar
      resolved pending merge conflicts from 5.1 · a91d168d
      Mayank Prasad authored
      a91d168d
  2. 19 May, 2011 4 commits
    • Luis Soares's avatar
      BUG#11746302 · 19b16fc5
      Luis Soares authored
      Manual merged mysql-5.1-gca into latest mysql-5.5.
      
      Conflicts
      =========
      Text conflict in mysql-test/suite/rpl/r/rpl_relayspace.result
      Text conflict in mysql-test/suite/rpl/t/rpl_relayspace.test
      19b16fc5
    • Luis Soares's avatar
      BUG#11746302 · d1de97fc
      Luis Soares authored
      Automerge mysql-5.1-gca into latest mysql-5.1.
      d1de97fc
    • Luis Soares's avatar
      BUG#11746302: 25228: RPL_RELAYSPACE.TEST FAILS ON POWERMACG5, · 4f03d600
      Luis Soares authored
                    VM-WIN2003-32-A, SLES10-IA64-A 
            
      The test case waits for master_pos_wait not to timeout, which
      means that the deadlock between SQL and IO threads was 
      succesfully and automatically dealt with.
            
      However, very rarely, master_pos_wait reports a timeout. This
      happens because the time set for master_pos_wait to wait was
      too small (6 seconds). On slow test env this could be a 
      problem.
            
      We fix this by setting the timeout inline with the one used
      in sync_slave_with_master (300 seconds). In addition we 
      refactored the test case and refined some comments.
      4f03d600
    • Mikael Ronström's avatar
      merge · c51c4a77
      Mikael Ronström authored
      c51c4a77
  3. 18 May, 2011 6 commits
    • Mayank Prasad's avatar
      Bug#11764633 : 57491: THD->MAIN_DA.IS_OK() ASSERT IN EMBEDDED · d608ad2d
      Mayank Prasad authored
      Issue:
      While running embedded server, if client issues TEE command (\T foo/bar) and
      "foo/bar" directory doesn't exist, it is suppose to give error. But it was
      aborting.  This was happening because wrong error handler was being called.
      
      Solution:
      Modified calls to correct error handler. In embedded server case, there are 
      two error handler (client and server) which are supposed to be called based 
      on which context code is in. If it is in client context, client error handler
      should be called otherwise server.
      
      Test case:
      Test case automation is not possible as current (following) code doesn't 
      allow '\T' to be executed from command line (OR command read from a file):
      [client/mysql.cc]
      ...
       static int
       com_tee(String *buffer __attribute__((unused)),
               char *line __attribute__((unused)))
       {
         char file_name[FN_REFLEN], *end, *param;
      
         if (status.batch) << THIS IS TRUE WHILE EXECUTING FROM COMMAND LINE.
            return 0;
       ...
      So, not adding test case in GA. WIll add a test case in mysql-trunk after 
      removing above code so that this could be properly tested before GA.
      
      libmysqld/lib_sql.cc:
        Added code to call client/server error handler based on in control is in 
        client/server code respectively.
      sql/mysql_priv.h:
        Added comments for THR_THD, THR_MALLOC keys.
      sql/sql_class.cc:
        Function definition of new function restore_global to removes thread specific 
        data from stack (which was stored in store global).
      sql/sql_class.h:
        Function declaration of new function restore_global.
      d608ad2d
    • Mayank Prasad's avatar
      merge from 5.1 for bug#11764633 · 47f7fc43
      Mayank Prasad authored
      47f7fc43
    • Mikael Ronström's avatar
      merge · a922909a
      Mikael Ronström authored
      a922909a
    • Mikael Ronström's avatar
      89ec5426
    • Sergey Glukhov's avatar
      5.1 -> 5.5 merge · b7ed314f
      Sergey Glukhov authored
      b7ed314f
    • Sergey Glukhov's avatar
      Bug#12403504 AFTER FIX FOR #11889186 : ASSERTION FAILED: DELSUM+(INT) Y/4-TEMP > 0 · 3201f92c
      Sergey Glukhov authored
      There are two problems:
      1. There is a missing check for 'year' parameter(year can not be greater than 9999) in
         makedate function. fix: added check that year can not be greater than 9999.
      2. There is a missing check for zero date in from_days() function.
         fix: added zero date check into Item_func_from_days::get_date()
         function.
      
      
      mysql-test/r/func_time.result:
        test case
      mysql-test/t/func_time.test:
        test case
      sql/item_timefunc.cc:
        --added check that year can not be greater than 9999 for makedate() function
        --added zero date check into Item_func_from_days::get_date() function
      3201f92c
  4. 16 May, 2011 6 commits
  5. 14 May, 2011 2 commits
  6. 13 May, 2011 7 commits
    • Marc Alff's avatar
      Bug#12552516 LF_HASH REQUIRES MY_THREAD_INIT() · d343f5e3
      Marc Alff authored
      Before this fix, a thread instrumented for the performance schema,
      that would perform file io operations, could crash inside the LF_HASH
      implementation, in cases when my_thread_init is not called.
      
      The crash itself has not been reported in 5.5 but similar crashes have
      been found in 5.6-based development branches, using LF_HASH for
      more instrumentation.
      
      The possibility of a crash in 5.5 is confirmed by code analysis.
      
      The problem is that, when my_thread_init() is not called,
      which can happen for threads in storage engines or thirs party code,
      my_thread_var is NULL.
      
      Using my_thread_var->stacks_ends_here in mysys/lf_alloc-pin.c is unsafe.
      
      Given that my_thread_var is used:
      - only for stacks_ends_here
      - only on platform with HAVE_ALLOCA
      - only when there is enough room on the stack
      and given that the LF_HASH implementation has a fallback
      algorythm implemented already when using alloca is not possible,
      using my_thread_var->stacks_ends_here is in fact not a strict requirement,
      and can be relaxed.
      
      The fix is to:
      - test explicitly if my_thread_var is NULL, to account for cases
        when my_thread_init() is not used by the calling thread.
      - not use alloca in this case, and rely on the fall back code already in place.
        so that the LF_HASH can be supported even without my_thread_init().
      
      The implementation of mysys/lf_alloc-pin.c has been fixed to support this new usage.
      The units tests in unittest/mysys/lf-t.c have been adjusted accordingly.
      d343f5e3
    • Mikael Ronstrom's avatar
    • Mikael Ronström's avatar
      merge · e44579d2
      Mikael Ronström authored
      e44579d2
    • Bjorn Munch's avatar
      null upmerge · 94d657bf
      Bjorn Munch authored
      94d657bf
    • Bjorn Munch's avatar
      merge from 5.1-mtr · 067fa4a5
      Bjorn Munch authored
      067fa4a5
    • Bjorn Munch's avatar
      merge from 5.5-mtr · 0610c9a7
      Bjorn Munch authored
      0610c9a7
    • MySQL Build Team's avatar
      changed the VERSION tag to 14 · cb0f843e
      MySQL Build Team authored
      cb0f843e
  7. 12 May, 2011 12 commits
    • unknown's avatar
      BUG#12549572 : CMake file does not include gcov option · d25b5b68
      unknown authored
      This patch inserts an 'ENABLE_GCOV' option for enabling gcov compilation
      on Linux machines. It modifies the CMakeLists.txt setting this option
      to 'OFF' by default.
      
      Note: The option requires a debug build. For example, 
            -DCMAKE_BUILD_TYPE:string="Debug" 
      d25b5b68
    • Mikael Ronström's avatar
      merge · a537c106
      Mikael Ronström authored
      a537c106
    • Bjorn Munch's avatar
      null upmerge · bdfdb825
      Bjorn Munch authored
      bdfdb825
    • Bjorn Munch's avatar
      null upmerge · 1b6b2f23
      Bjorn Munch authored
      1b6b2f23
    • Bjorn Munch's avatar
      merge from 5.5 main · c455b204
      Bjorn Munch authored
      c455b204
    • Jon Olav Hauglid's avatar
      Bug#12346411 SQL/LOG.CC:6509: ASSERTION `PREPARED_XIDS > 0' FAILED · e9b8feef
      Jon Olav Hauglid authored
      This assert could be triggered during two phase commit if binary
      log was used as transaction coordinator log. The triggered assert
      checks that the same number of transaction IDs are processed in
      the prepare and commit phases.
      
      The reason it was triggered, was that the transaction consisted
      of an INSERT/UPDATE IGNORE that had an ignorable error. Since it
      had an error, no row log events were made and therefore
      prepared_xids was 0. However, since it was an IGNORE statement,
      the statement started a read/write statement transaction, committed
      it and completed successfully.
      
      This patch fixes the problem by adjusting the assert to take
      this possibility into account.
      
      Test case added to binlog.binlog_innodb_row.test.
      e9b8feef
    • Tatjana Azundris Nuernberg's avatar
      auto-merge · b677cadd
      Tatjana Azundris Nuernberg authored
      b677cadd
    • Mikael Ronström's avatar
      merge · 43c55e9a
      Mikael Ronström authored
      43c55e9a
    • Bjorn Munch's avatar
      merge from 5.1 main · f66763a3
      Bjorn Munch authored
      f66763a3
    • Tatjana Azundris Nuernberg's avatar
      auto-merge · 30265fd1
      Tatjana Azundris Nuernberg authored
      30265fd1
    • Tatjana Azundris Nuernberg's avatar
      auto-merge · c2257fc5
      Tatjana Azundris Nuernberg authored
      c2257fc5
    • Tatjana Azundris Nuernberg's avatar
      Bug#11902767/Bug#60580: Statement improperly replicated crashes slave SQL thread · 5047a638
      Tatjana Azundris Nuernberg authored
      If LOAD DATA INFILE featured a SET clause, the name=value pairs
      would be regenerated using item::print. Unfortunately, that code
      is mostly optimized for EXPLAIN EXTENDED output and such, and can
      not be relied on to return valid SQL.
      
      We now name each value its original, user-supplied form and use
      that to create LOAD DATA INFILE statements for statement-based
      replication.
      
      mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
        minor change in syntactic sugar
      mysql-test/suite/rpl/r/rpl_loaddatalocal.result:
        add test case
      mysql-test/suite/rpl/t/rpl_loaddatalocal.test:
        add test case
      sql/sql_load.cc:
        Do not try to item::print values in LOAD DATA INFILE's
        SET clause; they might not even be valid SQL at this
        point. Use our saved version instead.
      sql/sql_yacc.yy:
        If LOAD DATA INFILE has SET name=val clauses, tag the
        individual val-parts with the user's version so we can
        later replicate that, rather than the smashed pieces
        we'd get from item::print once the optimizer's through
        with our poor values.
      5047a638