1. 26 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Use _ma_set_fatal_error() in Aria also for HA_ERR_WRONG_IN_RECORD, to be able... · b152b147
      Michael Widenius authored
      Use _ma_set_fatal_error() in Aria also for HA_ERR_WRONG_IN_RECORD, to be able to get an assert as soon as a failure is detected.
      Fixed stack overrun failure when calling maria_chk_data_link().
      
      storage/maria/ma_blockrec.c:
        Use _ma_set_fatal_error() for HA_ERR_WRONG_IN_RECORD
      storage/maria/ma_cache.c:
        Use _ma_set_fatal_error() for HA_ERR_WRONG_IN_RECORD.
        Added argument to _ma_read_cache() to be able to call _ma_set_fatal_error()
      storage/maria/ma_check.c:
        Use _ma_set_fatal_error() for HA_ERR_WRONG_IN_RECORD.
        Don't allocate data to print bitmap on stack.
        (This fixed stack overrun failure when calling maria_chk_data_link() when gcc had inlined a function)
        Added new parameter to _ma_read_cache() and _ma_get_block_info()
      storage/maria/ma_dynrec.c:
        Use _ma_set_fatal_error() for HA_ERR_WRONG_IN_RECORD.
        Added argument to _ma_get_block_info() to be able to call _ma_set_fatal_error()
      storage/maria/ma_locking.c:
        Added DBUG_PRINT
      storage/maria/ma_packrec.c:
        Use _ma_set_fatal_error() for HA_ERR_WRONG_IN_RECORD
      storage/maria/ma_statrec.c:
        Use _ma_set_fatal_error() for HA_ERR_WRONG_IN_RECORD
      storage/maria/maria_def.h:
        Updated prototypes.
      b152b147
    • Michael Widenius's avatar
      Fixed bugs found by buildbot: · c49762ce
      Michael Widenius authored
      - Use -Wno-uninitialized if -DFORCE_INIT_OF_VARS is not used, to avoid warnings about not initialized variables.
      - Fixed compiler warnings
      - Added a name for each thr_lock to get better error messages (This is needed to find out why 'archive.test' sometimes fails)
      
      
      BUILD/SETUP.sh:
        Use -Wno-uninitialized if -DFORCE_INIT_OF_VARS is not used, to avoid warnings about not initialized variables.
      BUILD/build_mccge.sh:
        Use -Wno-uninitialized if -DFORCE_INIT_OF_VARS is not used, to avoid warnings about not initialized variables.
      client/mysqltest.cc:
        Fixed bug in remove_files_wildcards (the orignal code never removed anything)
      extra/libevent/devpoll.c:
        Fixed compiler warning
      include/thr_lock.h:
        Added a name for each thr_lock to get better error messages.
      mysql-test/suite/maria/t/maria3.test:
        Speed up test.
      mysys/thr_lock.c:
        Added a name for each thr_lock to get better error messages.
        Added a second 'check_locks' to find if something goes wrong in 'wake_up_waiters'.
      sql/lock.cc:
        Added a name for each thr_lock to get better error messages.
      storage/xtradb/fil/fil0fil.c:
        Fixed compiler warning
      c49762ce
  2. 24 Jan, 2011 1 commit
    • Michael Widenius's avatar
      Aria issues: · f1d804d7
      Michael Widenius authored
      - Fix for LP#700623 "Aria recovery: ma_blockrec.c:3930: _ma_update_at_original_place: Assertion `block->org_bitmap_value == _ma_bitmap_get_page_bits(info, &info->s->bitmap, page)' failed"
        - Issue was that when deleting a tail page where all index entries where full, the page was marked wrongly in the bitmap.
      - If debug_assert_if_crashed_table is set, we now crash when we find Aria corrupted.
      - Write more information if we find something wrong with the bitmap.
      - Fixed that REPAIR also can fix wrong create_rename_lsn issues (a very unlikely event)
      - Define STATE_CRASHED_FLAGS as set of all CRASHED flags (to simplify code)
      
      
      storage/maria/ha_maria.cc:
        Mark the normal page cache (not the page cache for the logs) so that we can request extra debugging for it.
        Copy the value of debug_assert_if_crashed_table to maria_assert_if_crashed_table so that we can request a crash at exactly the point where we find Aria corrupted.
        Use STATE_CRASHED_FLAGS
      storage/maria/ma_bitmap.c:
        Made bits_to_txt extern so that we can use this in maria_chk
        Added extra information to the log files to be able to easier find bitmap failures in recovery. (When compiling with -DEXTRA_DEBUG_BITMAP)
        Added _ma_get_bitmap_description() to request a clear text description of the bitmap.
        Simplify _ma_check_bitmap_data(), as we know the bitmap pattern in the caller.
      storage/maria/ma_blockrec.c:
        In delete_head_or_tail(), fixed a bug where we sent wrong information to _ma_bitmap_set() if the directory was full for a page that should be freed.
        This fixed LP#700623 (failure in bitmap found during recovery)
      storage/maria/ma_blockrec.h:
        Added definitions for _ma_get_bitmap_description() and bits_to_txt
      storage/maria/ma_check.c:
        Simplify call to _ma_check_bitmap_data().
        Write more information if we find something wrong with the bitmap.
        Moved getting clear text information about the bitmap to ma_bitmap.c::_ma_get_bitmap_description()
      storage/maria/ma_checkpoint.c:
        More asserts
      storage/maria/ma_create.c:
        Fix wrong create_rename_lsn during repair.
        (Create_rename_lsn can be too big if someone restores an old maria_log_file after an Aria file was created)
      storage/maria/ma_delete.c:
        Call _ma_set_fatal_error() in case of crashed file
        Remove not needed test of save_errno == HA_ERR_KEY_NOT_FOUND. (Handled by other code
      storage/maria/ma_extra.c:
        Call _ma_set_fatal_error() in case of crashed file
        Reset share->bitmap.changed_not_flushed to not cause new ASSERTS to trigger.
        Added _ma_file_callback_to_id() for writing share->id to log file in case of DEBUG logging.
      storage/maria/ma_init.c:
        Destroy also translog if it's readonly (as when called by maria_read_log -d)
      storage/maria/ma_key.c:
        Call _ma_set_fatal_error() in case of crashed file
      storage/maria/ma_key_recover.c:
        STATE_CRASHED -> STATE_CRASHED_FLAGS
      storage/maria/ma_keycache.c:
        Call _ma_set_fatal_error() in case of crashed file
      storage/maria/ma_locking.c:
        Call _ma_set_fatal_error() in case of crashed file.
        Added _ma_set_fatal_error()
      storage/maria/ma_open.c:
        Call _ma_set_fatal_error() in case of crashed file
      storage/maria/ma_page.c:
        Call _ma_set_fatal_error() in case of crashed file
      storage/maria/ma_pagecache.c:
        Added extra information to log file to simply debugging of bitmap errors.
      storage/maria/ma_pagecache.h:
        Added extra_debug flag to allow marking of row and index cache for extra logging (for debugging).
      storage/maria/ma_panic.c:
        Flush both data and index blocks in case of HA_PANIC_CLOSE
        Fixed wrong position of 'break'. (Not critical for MariaDB as MariaDB never uses this code)
      storage/maria/ma_recovery_util.c:
        Avoid writing extra not needed \n to DBUG log.
      storage/maria/ma_rkey.c:
        Call _ma_set_fatal_error() in case of crashed file
      storage/maria/ma_search.c:
        Call _ma_set_fatal_error() in case of crashed file
      storage/maria/ma_static.c:
        Define maria_assert_if_crashed_table
      storage/maria/ma_update.c:
        Call _ma_set_fatal_error() in case of crashed file.
        The new code also avoids a problem where we before would print the error twice.
      storage/maria/ma_write.c:
        Call _ma_set_fatal_error() in case of crashed file
      storage/maria/maria_chk.c:
        STATE_CRASHED -> STATE_CRASHED_FLAGS
      storage/maria/maria_def.h:
        Added STATE_CRASHED_PRINTED to avoid giving error message about crash twice.
        Added STATE_CRASHED_FLAGS to be able to easily detect and set all CRASHED related flags.
        Added prototypes for new functions.
      storage/myisam/mi_panic.c:
        Fixed wrong position of 'break'. (Not critical for MariaDB as MariaDB never uses this code)
      f1d804d7
  3. 20 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Fixed bug that another thread used handler->s->id before it was recorded in the log. · c65cc061
      Michael Widenius authored
      This fixed an assert in recovert in mi_recovery.c "cmp_translog_addr(rec->lsn, checkpoint_start) < 0"
      
      storage/maria/ma_loghandler.c:
        Don't assign share->id until it's recorded in the log.
        Had to do an extra test in translog_write_record() to not call translog_assign_id_to_share() for LOGREC_FILE_ID (which sets share->id)
      storage/maria/ma_recovery.c:
        Print comment in log for checkpoints
      c65cc061
    • Michael Widenius's avatar
      Fixed some mysql-test-run failures and compile warnings/errors · 2f427f1a
      Michael Widenius authored
      Added logging of all possible fatal table errors if --log-warnings set to > 1
      
      
      mysql-test/extra/rpl_tests/rpl_EE_err.test:
        Safety fix
      mysql-test/extra/rpl_tests/rpl_row_basic.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/r/archive.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/r/csv.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/maria/r/maria-autozerofill.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/maria/t/maria-autozerofill.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/maria/t/maria-recover.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/parts/t/partition_recover_myisam.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/r/rpl_bug38694.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/r/rpl_idempotency.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/r/rpl_ignore_table.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/r/rpl_row_conflicts.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/r/rpl_temporary_errors.result:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/t/rpl_bug38694.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/t/rpl_idempotency.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/t/rpl_ignore_table.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/t/rpl_row_conflicts.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/suite/rpl/t/rpl_temporary_errors.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/t/archive.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      mysql-test/t/csv.test:
        Added suppression of possible error message (so that one can run test with --log-warnings=2)
      sql/handler.cc:
        If running with --assert-of-crashed-table or --log-warnings > 1 then print engine error to log
      sql/sql_select.cc:
        Disable not initialized warning from gcc
      strings/Makefile.am:
        Fixed compiler error on Solaris 10 (duplicate strmov() function)
      2f427f1a
  4. 18 Jan, 2011 1 commit
  5. 14 Jan, 2011 3 commits
  6. 12 Jan, 2011 3 commits
    • Michael Widenius's avatar
      Merge with 5.1 · 42e0ba2a
      Michael Widenius authored
      42e0ba2a
    • Michael Widenius's avatar
      Fix for LP#697610 ha_index_prev(uchar*): Assertion `inited==INDEX' failed with... · 212b3e63
      Michael Widenius authored
      Fix for LP#697610 ha_index_prev(uchar*): Assertion `inited==INDEX' failed with HANDLER + InnoDB in maria-5.3
      
      
      mysql-test/suite/handler/innodb.result:
        Added test case
      mysql-test/suite/handler/innodb.test:
        Added test case
      sql/handler.h:
        Move setting/resetting of active_index to ha_index_init()/ha_index_end() to simplify handler functions index_init()/index_end()
        Fixed that get_index() returns MAX_KEY if index is not inited (this fixed LP#697610)
      storage/federated/ha_federated.cc:
        Settting of active_index is not needed anymore
      storage/maria/ma_pagecache.c:
        Added error message if we have too little memory for Maria page cache
      212b3e63
    • Sergey Petrunya's avatar
      Merge BUG#675118 into maria-5.1 · 3e10481a
      Sergey Petrunya authored
      3e10481a
  7. 11 Jan, 2011 6 commits
  8. 10 Jan, 2011 1 commit
    • Michael Widenius's avatar
      - Fixed that Aria works with HANDLER commands · 15074383
      Michael Widenius authored
      - Added test case for Aria
      - Tested HANDLER with HEAP (changes to HEAP code will be pushed in 5.3)
      - Moved all HANDLER test to suite/handler.
      
      
      mysql-test/Makefile.am:
        Added suite/handler
      mysql-test/mysql-test-run.pl:
        Added suite/handler
      mysql-test/r/lock_multi.result:
        Remove test that is already in handler test suite
      mysql-test/suite/handler/aria.result:
        Test for HANDLER with Aria storage engine
      mysql-test/suite/handler/aria.test:
        Test for HANDLER with Aria storage engine
      mysql-test/suite/handler/handler.inc:
        Extended the general handler test
        Moved interface testing to 'interface.test'
      mysql-test/suite/handler/init.inc:
        Common init for handler tests.
      mysql-test/suite/handler/innodb.result:
        New results
      mysql-test/suite/handler/innodb.test:
        Update to use new include files
      mysql-test/suite/handler/interface.result:
        Test of HANDLER interface (not storage engine dependent parts)
      mysql-test/suite/handler/interface.test:
        Test of HANDLER interface (not storage engine dependent parts)
      mysql-test/suite/handler/myisam.result:
        New results
      mysql-test/suite/handler/myisam.test:
        Update to use new include files
      mysql-test/t/lock_multi.test:
        Remove test that is already in handler test suite
      mysys/tree.c:
        Added missing handling of read previous (showed up in HEAP testing)
      sql/handler.cc:
        Don't marka 'HA_ERR_RECORD_CHANGED' as fatal (can be used with HANDLER READ, especially with MEMORY ENGINE)
      sql/handler.h:
        Added prototype for can_continue_handler_scan()
      sql/sql_handler.cc:
        Re-initialize search if we switch from key to table search.
        Check if handler can continue searching between calls (via can_continue_handler_scan())
        Don't write common not fatal errors to log
      storage/maria/ma_extra.c:
        Don't set index 0 as default. This forces call to ma_check_index() to set up index variables.
      storage/maria/ma_ft_boolean_search.c:
        Ensure that info->last_key.keyinfo is set
      storage/maria/ma_open.c:
        Don't set index 0 as default. This forces call to ma_check_index() to set up index variables.
      storage/maria/ma_rkey.c:
        Trivial optimization
      storage/maria/ma_rnext.c:
        Added missing code from mi_rnext.c to ensure that handler next/prev works.
      storage/maria/ma_rsame.c:
        Simple optimizations
      storage/maria/ma_search.c:
        Initialize info->last_key once and for all when we change keys.
      storage/maria/ma_unique.c:
        Ensure that info->last_key.keyinfo is up to date.
      15074383
  9. 07 Jan, 2011 1 commit
    • Michael Widenius's avatar
      Don't do DBUG_ASSERT for checksum errors when using REPAIR · 91ecf748
      Michael Widenius authored
      mysql_convert_table_format ignored --engine option.
      Fix that zerofill() doesn't write out wrong data to client if run with auto repair.
      Ensure that pagecache is properly flushed, even in case of errors.
      Handle checksum errors in BLOCK_RECORD format.
      
      
      scripts/mysql_convert_table_format.sh:
        Fixed that --engine option works
      storage/maria/ha_maria.cc:
        Fix that zerofill() doesn't write out wrong data to client if run with auto repair.
      storage/maria/ma_check.c:
        Set in_check_table when scanning table to not get DBUG_ASSERT for checksum error.
        Ensure that pagecache is properly flushed, even in case of errors.
        Handle checksum errors in BLOCK_RECORD format.
      storage/maria/ma_sort.c:
        Set in_check_table when scanning table to not get DBUG_ASSERT for checksum error.
      91ecf748
  10. 06 Jan, 2011 1 commit
    • Michael Widenius's avatar
      Bug fixing in Aria: · 896fb79e
      Michael Widenius authored
      - Fixed some bugs in recovery of blobs
      - Don't ASSERT() on checksum errors when running check table
      - Added to maria_read_log option --tables-to-redo=list-of-tables to only recover some tables (good for debugging)
      
      
      storage/maria/ma_blockrec.c:
        Don't ASSERT() on checksum errors when running check table
        Fixed bug in recovery of blog page that was not in dirty pages list
      storage/maria/ma_check.c:
        Don't ASSERT() on checksum errors when running check table
      storage/maria/ma_recovery.c:
        Handling of --tables-to-redo
      storage/maria/ma_recovery.h:
        Handling of --tables-to-redo
      storage/maria/ma_recovery_util.c:
        Give better warning if table was not in dirty pages list
      storage/maria/maria_def.h:
        Added in_check_table
      storage/maria/maria_read_log.c:
        Added --tables-to-redo=list-of-tables to only recover some tables (good for debugging)
        Cleaned up message when wrong arguments
      896fb79e
  11. 05 Jan, 2011 3 commits
  12. 04 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Fixed recovery problem in Aria where bitmap had wrong information after recovery. · 308e11b8
      Michael Widenius authored
      LP#619731: Aria recovery corruption "Page 1: Row: 1 has an extent with wrong information in bitmap
      
      storage/maria/ma_bitmap.c:
        Don't send broadcast if no one is waiting for it
      storage/maria/ma_blockrec.c:
        Don't update bitmap if the page is not in the dirty_page list (or LSN is after checkpoint start)
        Fixes the case where we have in the log redo_free_block followed by another redo entry for the same page which is ignored.
        Also fixed that _ma_apply_redo_insert_row_blobs() doesn't update the bitmap in similar circumstances.
      storage/maria/ma_blockrec.h:
        Updated prototype
      storage/maria/ma_check.c:
        Added printing of bitmap information if used with maria_chk -vvv (for debugging)
      storage/maria/ma_recovery.c:
        Updated call parameters to _ma_apply_redo_free_blocks().
      308e11b8
    • Michael Widenius's avatar
      Updated README for MTR test suite · 7c521183
      Michael Widenius authored
      7c521183
  13. 03 Jan, 2011 1 commit
    • unknown's avatar
      Speed up `mtr --parallel=<lots>` by scheduling some slow tests earlier. · bf14edc2
      unknown authored
      The patch also fixes a race in rpl_stop_slave.test.
      
      On machines with lots of CPU and memory, something like `mtr --parallel=10`
      can speed up the test suite enormously. However, we have a few test cases
      that run for long (several minutes), and if we are unlucky and happen to
      schedule those towards the end of the test suite, we end up with most
      workers idle while waiting for the last slow test to end, significantly
      delaying the finish of the entire suite.
      
      Improve this by marking the offending tests as taking "long", and trying
      to schedule those tests early. This reduces the time towards the end of
      the test suite run where some workers are waiting with nothing to do for
      the remaining workers each to finish their last test.
      
      Also, the rpl_stop_slave test had a race which could cause it to take
      a 300 seconds debug_sync timeout; this is fixed.
      
      Testing on a 4-core 8GB machine, this patch speeds up the test suite with
      around 30% for --parallel=10 (debug build), allowing to run the entire
      suite in 5 minutes.
      bf14edc2
  14. 24 Dec, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #639935 (bug #58727). · b6242087
      Igor Babaev authored
      When the optimizer creates items out of other items it does
      not have to call the fix_fields method. Usually in these
      cases it calls quick_fix_field() that just marks the 
      created item as fixed. If the created item is an Item_func
      object then calling quick_fix_field() works fine if the
      arguments of the created functional item are already fixed.
      Otherwise some unfixed nodes remain in the item tree and
      it triggers an assertion failure whenever the item is 
      evaluated.
      
      Fixed the problem by making the method quick_fix_field
      virtual and providing an implementation for the class
      Item_func objects that recursively calls the method
      for unfixed arguments of any functional item.
      b6242087
  15. 21 Dec, 2010 2 commits
  16. 13 Dec, 2010 1 commit
  17. 10 Dec, 2010 2 commits
    • Michael Widenius's avatar
      Fix for Lbug:#686010 maria.optimize corrupts stack around alloca() call · 4bb42c4e
      Michael Widenius authored
      
      storage/maria/ma_check.c:
        Allocate also memory for nodflag and transid's
      storage/maria/ma_write.c:
        Allow nodflag and transid as part of key.
        (This has nothing to do with the bug report, but it's a safer check).
      storage/maria/maria_def.h:
        Define MARIA_MAX_POINTER_LENGTH (length of pointer to node)
        Added node pointer length to MARIA_INDEX_OVERHEAD_SIZE, as this is part of the key.
        (Safety fix)
      4bb42c4e
    • Michael Widenius's avatar
      Better warning message if lock test fails · b0312896
      Michael Widenius authored
      Made archive.test a bit more safe
      
      
      
      mysql-test/r/archive.result:
        Added removal of files to make rerun of failed test work
      mysql-test/t/archive.test:
        Added removal of files to make rerun of failed test work
      mysys/thr_lock.c:
        Better warning message if lock test fails
      b0312896
  18. 08 Dec, 2010 1 commit
    • unknown's avatar
      MBug#687320: Fix sporadic test failures in innodb_mysql.test and... · 52920994
      unknown authored
      MBug#687320: Fix sporadic test failures in innodb_mysql.test and partition_innodb_semi_consistent.test
      
      Problem is that these tests run with --innodb-lock-wait-timeout=2 in .opt
      (and this is necessary as built-in innodb does not allow to change this
      dynamically). This cases another part of the test to occasionally time
      out an UPDATE, which subsequently caused the test case to timeout due to
      waiting for a condition (successful UPDATE) that never occurs.
      
      Fixed by re-trying the update in case of timeout.
      
      Tested by inserting a sleep() in the connection that the UPDATE is waiting
      for, and checking that the retry loops a couple of times until the other
      connection is done and COMMITs.
      52920994
  19. 07 Dec, 2010 1 commit
  20. 19 Nov, 2010 1 commit
    • unknown's avatar
      Mbug#677407 / MySQL Bug#48883: Stale data from INNODB_LOCKS table. · 40ce82b9
      unknown authored
      The logic for how to check when to update the table cache for
      INNODB_LOCKS with real data was flawed. This could result in both
      not updating the cache often enough (when the table is queried
      repeatedly with less than 100 milliseconds in-between) resulting
      in stale data; as well as updating too often (when multiple
      queries against the table start at around the same time).
      
      This caused occasional test failures in innodb_information_schema.
      
      Fix by updating the "last updated" timestamp in the right place,
      when the cache is updated, not when it is read.
      40ce82b9
  21. 06 Dec, 2010 4 commits
    • Vladislav Vaintroub's avatar
      Fix myisam_crash_before_flush_keys on Windows · a1abfb58
      Vladislav Vaintroub authored
      Problem : mtr reports test failure because it sees
      [ERROR] mysqld got exception 0x80000003 ;
      in the .err file
      
      The exception comes from DBUG_EXECUTE_IF (.. abort())
      
      Fix:  use DBUG_ABORT instead of abort() - it does not throw 
      any exceptions.
      a1abfb58
    • Vladislav Vaintroub's avatar
      Fix LP Bug#686184 - merge_debug test fails. · cd72b793
      Vladislav Vaintroub authored
      The reason for failure is that DBUG_EXECUTE_IF in mi_open()
      only worked for Unix-formatted file names, due to strstr(name, "/crashed")
      
      The fix change strstr() above to strstr(name, "crashed"), to it can work with 
      Windows file names as well.
      cd72b793
    • Vladislav Vaintroub's avatar
      merge · 1208fba6
      Vladislav Vaintroub authored
      1208fba6
    • Vladislav Vaintroub's avatar
      Bug#473914: mysql_client_test fail with in debug compilaton on windows x64 · 7a80fa96
      Vladislav Vaintroub authored
       
      Reason: inconsistent compilation, federatedx is compiled without SAFEMALLOC
      flag, while anything else is compiled with SAFEMALLOC.
      
      As a consequence, my_hash_init used inside federatedx initialization does not
      provide correct caller info parameters (file, line) , so they are initialized with 
      whatever is on stack. When info about allocated memory is output in
      COM_DEBUG command, the server crashes trying to output string starting at
      0xcccccccccccccccc.
      
      The fix is to remove SAFEMALLOC  preprocessor flags 
      from every CMakeLists.txt, except the top-level one.
      
      Also, SAFEMALLOC is not defined by default now, instead
      there is WITH_DEBUG_FULL CMake option which adds 
      -DSAFEMALLOC to C and C++ flags in debug compilation. 
      This option is off by  default, because 
      1) Debug C runtime already has heap debugging builtin with 
       overwrite and leak detection
      2)safemalloc considerably slows down the tests.
      
      
      Note also  that 
      - SAFEMALLOC is gone  in MySQL5.5
      - On Windows, heap related overflows can also be found using free pageheap utility
      (that is also part of application verifier). This is even more efficient if there are no other layers 
      on top of Windows heap allocator, e.g  it is most efficient with release version.
      7a80fa96