An error occurred fetching the project authors.
  1. 28 Mar, 2013 1 commit
    • Sujatha Sivakumar's avatar
      Bug#14324766:PARTIALLY WRITTEN INSERT STATEMENT IN BINLOG · c78c1fe5
      Sujatha Sivakumar authored
      NO ERRORS REPORTED
            
      Problem:
      =======
      Errors from my_b_fill are ignored. MYSQL_BIN_LOG::write_cache
      code assumes that 0 returned from my_b_fill always means
      end-of-cache, but that is incorrect. It can result in error
      and the error is ignored. Other callers of my_b_fill don't
      check for error: my_b_copy_to_file, maybe my_b_gets.
            
      Fix:
      ===
      An error handler is already present to check the "cache"
      error that is reported during "MYSQL_BIN_LOG::write_cache"
      call. Hence error handlers are added for "my_b_copy_to_file"
      and "my_b_gets".
      During my_b_fill() function call, when the cache read fails
      info->error= -1 is set. Hence a check for "info->error"
      is added for the above to callers upon their return.
      c78c1fe5
  2. 25 Feb, 2013 1 commit
  3. 10 Jul, 2012 1 commit
    • Sujatha Sivakumar's avatar
      BUG#11762670:MY_B_WRITE RETURN VALUE IGNORED · cf858b71
      Sujatha Sivakumar authored
      Problem:
      =======
      The return value from my_b_write is ignored by: `my_b_write_quoted',
      `my_b_write_bit',`Query_log_event::print_query_header'
      
      Most callers of `my_b_printf' ignore the return value. `log_event.cc' 
      has many calls to it. 
      
      Analysis:
      ========
      `my_b_write' is used to write data into a file. If the write fails it
      sets appropriate error number and error message through my_error()
      function call and sets the IO_CACHE::error == -1.
      `my_b_printf' function is also used to write data into a file, it
      internally invokes my_b_write to do the write operation. Upon
      success it returns number of characters written to file and on error
      it returns -1 and sets the error through my_error() and also sets
      IO_CACHE::error == -1.  Most of the event specific print functions
      for example `Create_file_log_event::print', `Execute_load_log_event::print'
      etc are the ones which make several calls to the above two functions and
      they do not check for the return value after the 'print' call. All the above 
      mentioned abuse cases deal with the client side.
      
      Fix:
      ===
      As part of bug fix a check for IO_CACHE::error == -1 has been added at 
      a very high level after the call to the 'print' function.  There are 
      few more places where the return value of "my_b_write" is ignored
      those are mentioned below.
      
      +++ mysys/mf_iocache2.c    2012-06-04 07:03:15 +0000
      @@ -430,7 +430,8 @@
                 memset(buffz, '0', minimum_width - length2);
               else
                 memset(buffz, ' ', minimum_width - length2);
      -        my_b_write(info, buffz, minimum_width - length2);
      
      +++ sql/log.cc	2012-06-08 09:04:46 +0000
      @@ -2388,7 +2388,12 @@
           {
             end= strxmov(buff, "# administrator command: ", NullS);
             buff_len= (ulong) (end - buff);
      -      my_b_write(&log_file, (uchar*) buff, buff_len);
      
      At these places appropriate return value handlers have been added.
      cf858b71
  4. 30 Jun, 2011 1 commit
  5. 10 Feb, 2009 1 commit
  6. 08 Aug, 2007 1 commit
  7. 30 Jul, 2007 1 commit
    • monty@mysql.com/nosik.monty.fi's avatar
      Slow query log to file now displays queries with microsecond precission · b16289a5
      monty@mysql.com/nosik.monty.fi authored
      --long-query-time is now given in seconds with microseconds as decimals
      --min_examined_row_limit added for slow query log
      long_query_time user variable is now double with 6 decimals
      Added functions to get time in microseconds
      Added faster time() functions for system that has gethrtime()  (Solaris)
      We now do less time() calls.
      Added field->in_read_set() and field->in_write_set() for easier field manipulation by handlers
      set_var.cc and my_getopt() can now handle DOUBLE variables.
      All time() calls changed to my_time()
      my_time() now does retry's if time() call fails.
      Added debug function for stopping in mysql_admin_table() when tables are locked
      Some trivial function and struct variable renames to avoid merge errors.
      Fixed compiler warnings
      Initialization of some time variables on windows moved to my_init() 
      b16289a5
  8. 10 May, 2007 1 commit
    • monty@mysql.com/narttu.mysql.fi's avatar
      WL#3817: Simplify string / memory area types and make things more consistent (first part) · 088e2395
      monty@mysql.com/narttu.mysql.fi authored
      The following type conversions was done:
      
      - Changed byte to uchar
      - Changed gptr to uchar*
      - Change my_string to char *
      - Change my_size_t to size_t
      - Change size_s to size_t
      
      Removed declaration of byte, gptr, my_string, my_size_t and size_s. 
      
      Following function parameter changes was done:
      - All string functions in mysys/strings was changed to use size_t
        instead of uint for string lengths.
      - All read()/write() functions changed to use size_t (including vio).
      - All protocoll functions changed to use size_t instead of uint
      - Functions that used a pointer to a string length was changed to use size_t*
      - Changed malloc(), free() and related functions from using gptr to use void *
        as this requires fewer casts in the code and is more in line with how the
        standard functions work.
      - Added extra length argument to dirname_part() to return the length of the
        created string.
      - Changed (at least) following functions to take uchar* as argument:
        - db_dump()
        - my_net_write()
        - net_write_command()
        - net_store_data()
        - DBUG_DUMP()
        - decimal2bin() & bin2decimal()
      - Changed my_compress() and my_uncompress() to use size_t. Changed one
        argument to my_uncompress() from a pointer to a value as we only return
        one value (makes function easier to use).
      - Changed type of 'pack_data' argument to packfrm() to avoid casts.
      - Changed in readfrm() and writefrom(), ha_discover and handler::discover()
        the type for argument 'frmdata' to uchar** to avoid casts.
      - Changed most Field functions to use uchar* instead of char* (reduced a lot of
        casts).
      - Changed field->val_xxx(xxx, new_ptr) to take const pointers.
      
      Other changes:
      - Removed a lot of not needed casts
      - Added a few new cast required by other changes
      - Added some cast to my_multi_malloc() arguments for safety (as string lengths
        needs to be uint, not size_t).
      - Fixed all calls to hash-get-key functions to use size_t*. (Needed to be done
        explicitely as this conflict was often hided by casting the function to
        hash_get_key).
      - Changed some buffers to memory regions to uchar* to avoid casts.
      - Changed some string lengths from uint to size_t.
      - Changed field->ptr to be uchar* instead of char*. This allowed us to
        get rid of a lot of casts.
      - Some changes from true -> TRUE, false -> FALSE, unsigned char -> uchar
      - Include zlib.h in some files as we needed declaration of crc32()
      - Changed MY_FILE_ERROR to be (size_t) -1.
      - Changed many variables to hold the result of my_read() / my_write() to be
        size_t. This was needed to properly detect errors (which are
        returned as (size_t) -1).
      - Removed some very old VMS code
      - Changed packfrm()/unpackfrm() to not be depending on uint size
        (portability fix)
      - Removed windows specific code to restore cursor position as this
        causes slowdown on windows and we should not mix read() and pread()
        calls anyway as this is not thread safe. Updated function comment to
        reflect this. Changed function that depended on original behavior of
        my_pwrite() to itself restore the cursor position (one such case).
      - Added some missing checking of return value of malloc().
      - Changed definition of MOD_PAD_CHAR_TO_FULL_LENGTH to avoid 'long' overflow.
      - Changed type of table_def::m_size from my_size_t to ulong to reflect that
        m_size is the number of elements in the array, not a string/memory
        length.
      - Moved THD::max_row_length() to table.cc (as it's not depending on THD).
        Inlined max_row_length_blob() into this function.
      - More function comments
      - Fixed some compiler warnings when compiled without partitions.
      - Removed setting of LEX_STRING() arguments in declaration (portability fix).
      - Some trivial indentation/variable name changes.
      - Some trivial code simplifications:
        - Replaced some calls to alloc_root + memcpy to use
          strmake_root()/strdup_root().
        - Changed some calls from memdup() to strmake() (Safety fix)
        - Simpler loops in client-simple.c
      088e2395
  9. 23 Apr, 2007 1 commit
  10. 23 Feb, 2007 1 commit
    • gbichot@dl145h.mysql.com's avatar
      Fix for BUG#25628: "mysqlbinlog crashes while processing binary logs". · ba2452f0
      gbichot@dl145h.mysql.com authored
      mysqlbinlog prints all row-based events of a single statement as a
      single "BINLOG" statement containing the concatenation of those events.
      Big (i.e. >64k) concatenations of row-based events
      (e.g. Write_rows_log_event) caused mysqlbinlog's IO_CACHE to overflow
      to a temporary file but the IO_CACHE had not been inited with
      open_cached_file(), so it tried to create a temporary file in
      an uninitialized directory (thus failing to create, then to write;
      some OS errors were printed, and it finally segfaulted).
      After fixing this, it appeared that mysqlbinlog was printing only
      a piece of big concatenations of row-based events (it printed
      at most the size of the IO_CACHE's buffer i.e. 64k); that caused data
      loss at restore. We fix and test that.
      Last, mysqlbinlog's printouts looked a bit strange with the informative
      header (#-prefixed) of groupped Rows_log_event all on one line,
      so we insert \n. After that, a small bug in the --hexdump code appeared
      (only if the string to hex-print had its length a multiple of 16),
      we fix it.
      ba2452f0
  11. 23 Dec, 2006 1 commit
  12. 14 Dec, 2006 1 commit
    • monty@mysql.com/narttu.mysql.fi's avatar
      Fixed compiler warnings detected by option -Wshadow and -Wunused: · 88dd873d
      monty@mysql.com/narttu.mysql.fi authored
      - Removed not used variables and functions
      - Added #ifdef around code that is not used
      - Renamed variables and functions to avoid conflicts
      - Removed some not used arguments
      
      Fixed some class/struct warnings in ndb
      Added define IS_LONGDATA() to simplify code in libmysql.c
      
      I did run gcov on the changes and added 'purecov' comments on almost all lines that was not just variable name changes
      88dd873d
  13. 10 Oct, 2006 1 commit
  14. 06 Oct, 2006 1 commit
    • mats@romeo.(none)'s avatar
      BUG#19459 (BINLOG RBR command does not lock tables correctly causing · e762328b
      mats@romeo.(none) authored
      crash for, e.g., NDB):
      
      Before, mysqlbinlog printed table map events as a separate statement, so
      when executing the event, the opened table was subsequently closed
      when the statement ended. Instead, the row-based events that make up
      a statement are now printed as *one* BINLOG statement, which means
      that the table maps and the following *_rows_log_event events are
      executed fully before the statement ends.
      
      Changing implementation of BINLOG statement to be able to read the 
      emitted format, which now consists of several chunks of BASE64-encoded
      data.
      e762328b
  15. 02 Oct, 2006 1 commit
  16. 02 May, 2006 1 commit
    • cmiller@zippy.(none)'s avatar
      SECURITY FIX · 85ffd964
      cmiller@zippy.(none) authored
      Bug#17667: An attacker has the opportunity to bypass query logging.
      
      This adds a new, local-only printf format specifier to our *printf functions
      that allows us to print known-size buffers that must not be interpreted as 
      NUL-terminated "strings."
      
      It uses this format-specifier to print to the log, thus fixing this 
      problem.
      85ffd964
  17. 03 Jan, 2006 1 commit
  18. 10 Jun, 2004 1 commit
  19. 03 Jun, 2004 1 commit
  20. 18 Dec, 2003 1 commit
    • guilhem@gbichot2's avatar
      This will be pushed only after I fix the testsuite. · 66a32e89
      guilhem@gbichot2 authored
      This is the main commit for Worklog tasks:
       * A more dynamic binlog format which allows small changes (1064)
       * Log session variables in Query_log_event (1063)
      Below 5.0 means 5.0.0.
      MySQL 5.0 is able to replicate FOREIGN_KEY_CHECKS, UNIQUE_KEY_CHECKS (for speed),
      SQL_AUTO_IS_NULL, SQL_MODE. Not charsets (WL#1062), not some vars (I can only think
      of SQL_SELECT_LIMIT, which deserves a special treatment). Note that this
      works for queries, except LOAD DATA INFILE (for this it would have to wait
      for Dmitri's push of WL#874, which in turns waits for the present push, so...
      the deadlock must be broken!). Note that when Dmitri pushes WL#874 in 5.0.1,
      5.0.0 won't be able to replicate a LOAD DATA INFILE from 5.0.1.
      Apart from that, the new binlog format is designed so that it can tolerate
      a little variation in the events (so that a 5.0.0 slave could replicate a
      5.0.1 master, except for LOAD DATA INFILE unfortunately); that is, when I
      later add replication of charsets it should break nothing. And when I later
      add a UID to every event, it should break nothing.
      The main change brought by this patch is a new type of event, Format_description_log_event,
      which describes some lengthes in other event types. This event is needed for
      the master/slave/mysqlbinlog to understand a 5.0 log. Thanks to this event,
      we can later add more bytes to the header of every event without breaking compatibility.
      Inside Query_log_event, we have some additional dynamic format, as every Query_log_event
      can have a different number of status variables, stored as pairs (code, value); that's
      how SQL_MODE and session variables and catalog are stored. Like this, we can later
      add count of affected rows, charsets... and we can have options --don't-log-count-affected-rows
      if we want.
      MySQL 5.0 is able to run on 4.x relay logs, 4.x binlogs.
      Upgrading a 4.x master to 5.0 is ok (no need to delete binlogs),
      upgrading a 4.x slave to 5.0 is ok (no need to delete relay logs);
      so both can be "hot" upgrades.
      Upgrading a 3.23 master to 5.0 requires as much as upgrading it to 4.0.
      3.23 and 4.x can't be slaves of 5.0.
      So downgrading from 5.0 to 4.x may be complicated.
      Log_event::log_pos is now the position of the end of the event, which is
      more useful than the position of the beginning. We take care about compatibility
      with <5.0 (in which log_pos is the beginning).
      I added a short test for replication of SQL_MODE and some other variables.
      TODO:
      - after committing this, merge the latest 5.0 into it
      - fix all tests
      - update the manual with upgrade notes.
      66a32e89
  21. 16 Mar, 2003 1 commit
  22. 21 Aug, 2002 1 commit
    • monty@hundin.mysql.fi's avatar
      Use our version of RWLOCKS on UNIXWARE 7 · 03b0179a
      monty@hundin.mysql.fi authored
      More DBUG info for replication
      Better error messages from replication
      Fixed bug in replication code when connecting to 'localhost' (time was not released properly)
      Block ALARM signal on Linux for signal handler thread (Fixes problem with running mysqld with --debug)
      Removed warning when setting an AUTO_INCREMENT field to NULL
      03b0179a
  23. 08 Aug, 2002 1 commit
    • monty@mashka.mysql.fi's avatar
      Lots of code fixes to the replication code (especially the binary logging and... · 2c4fa340
      monty@mashka.mysql.fi authored
      Lots of code fixes to the replication code (especially the binary logging and index log file handling)
      Fixed bugs in my last changeset that made MySQL hard to compile.
      Added mutex around some data that could cause table cache corruptions when using OPTIMIZE TABLE / REPAIR TABLE or automatic repair of MyISAM tables.
      Added mutex around some data in the slave start/stop code that could cause THD linked list corruptions
      Extended my_chsize() to allow one to specify a filler character.
      Extend vio_blocking to return the old state (This made some usage of this function much simpler)
      Added testing for some functions that they caller have got the required mutexes before calling the function.
      Use setrlimit() to ensure that we can write core file if one specifies --core-file.
      Added --slave-compressed-protocol
      Made 2 the minimum length for ft_min_word_len
      Added variables foreign_key_checks & unique_checks.
      Less logging from replication code (if not started with --log-warnings)
      Changed that SHOW INNODB STATUS requre the SUPER privilege
      More DBUG statements and a lot of new code comments
      2c4fa340
  24. 11 Jun, 2002 1 commit
  25. 02 Apr, 2002 1 commit
    • sasha@mysql.sashanet.com's avatar
      relay_log_space_limit · 14603a36
      sasha@mysql.sashanet.com authored
      DBUG_ macro cleanup
      buffer boundary cleanup
      This changeset, although not fully tested, works for me better than 
      anything I've had so far, including what is in the repository. I will 
      push it unless something crashes while I am writing this :-)
      14603a36
  26. 12 Mar, 2002 1 commit
  27. 31 Jan, 2002 2 commits
  28. 27 Jan, 2002 1 commit
  29. 20 Jan, 2002 1 commit
  30. 06 Dec, 2001 1 commit
  31. 28 Nov, 2001 5 commits
  32. 09 Nov, 2001 1 commit
  33. 03 Oct, 2001 1 commit
  34. 07 Jan, 2001 1 commit
  35. 12 Dec, 2000 1 commit