1. 20 Feb, 2011 1 commit
    • Michael Widenius's avatar
      Merge with MySQL 5.1.55 · 58bb0769
      Michael Widenius authored
      - Fixed some issues with partitions and connection_string, which also fixed lp:716890 "Pre- and post-recovery crash in Aria"
      - Fixed wrong assert in Aria
      
      Now need to merge with latest xtradb before pushing 
      
      sql/ha_partition.cc:
        Ensure that m_ordered_rec_buffer is not freed before close.
      sql/mysqld.cc:
        Changed to use opt_stack_trace instead of opt_pstack.
        Removed references to pstack
      sql/partition_element.h:
        Ensure that connect_string is initialized
      storage/maria/ma_key_recover.c:
        Fixed wrong assert
      58bb0769
  2. 10 Feb, 2011 5 commits
    • Michael Widenius's avatar
      Automatic merge with trunk · 7e497abc
      Michael Widenius authored
      7e497abc
    • Michael Widenius's avatar
      Fixed compiler warnings · 75fad9dc
      Michael Widenius authored
      75fad9dc
    • Michael Widenius's avatar
      Applied patch for lp:585688 "maridb crashes in federatedx code" from lp:~atcurtis/maria/federatedx: · f2ca9c87
      Michael Widenius authored
      - Fixed Partition engine to store CONNECTION string for partitions.
        Removed HA_NO_PARTITION flag from FederatedX.
        Added test 'federated_partition' to suite.
      - lp:#585688 - maridb crashes in federatedx code
        FederatedX handler instances, created on one thread and used on
        another thread (via table cache) when "show table status" is executed
        crashed because txn member was not initialized for current thread.
        Added test 'federated_bug_585688' to suite.
      
      Author for the patch is Antony Curtis
      
      mysql-test/suite/federated/federated_bug_585688.result:
        Test for lp:585688
      mysql-test/suite/federated/federated_bug_585688.test:
        Test for lp:585688
      mysql-test/suite/federated/federated_partition-slave.opt:
        Test for partition support in federatedx
      mysql-test/suite/federated/federated_partition.result:
        Test for partition support in federatedx
      mysql-test/suite/federated/federated_partition.test:
        Test for partition support in federatedx
      mysql-test/t/partition_federated.test:
        Updated error message
      sql/ha_partition.cc:
        Added support for connection strings to partitions for federatedx
      sql/ha_partition.h:
        Added support for connection strings to partitions for federatedx
      sql/partition_element.h:
        Added support for connection strings to partitions for federatedx
      sql/sql_yacc.yy:
        Added support for connection strings to partitions for federatedx
      storage/federatedx/ha_federatedx.cc:
        Added support for partitions.
        FederatedX handler instances, created on one thread and used on another thread (via table cache) when "show table status"
        is executed crashed because txn member was not initialized for current thread.
      f2ca9c87
    • Vladislav Vaintroub's avatar
    • Michael Widenius's avatar
      Fixes for Aria storage engine: · 6db663d6
      Michael Widenius authored
      - Fixed bug lp:624099 ma_close.c:75: maria_close: Assertion `share->in_trans == 0' failed on UNLOCK TABLES
      - Fixed bug that caused table to be marked as not closed (crashed) during recovery testing.
      - Use maria_delete_table_files() instead of maria_delete_table() to delete tempoary tables (faster and safer)
      - Added checks to ensure that bitmap and internal mutex are always taken in right order.
      - For transactional tables, only mark the table as changed before page for table is to be written to disk (and thus the log is flushed).
        This speeds up things a bit and fixes a problem where open_count was incremented on disk but there was no log entry to fix it during recovery -> table was crashed.
      - Fixed a bug in repair() where table was not automaticly repaired.
      - Ensure that state->global_changed, share->changed and share->state.open_count are set and reset properly.
      - Added option --ignore-control-file to maria_chk to be able to run maria_chk even if the control file is locked.
      
      
      mysql-test/suite/maria/r/maria-recover.result:
        Test result changed as we now force checkpoint before copying table, which results in pagecache getting flushed and we have more rows to recover.
      mysql-test/suite/maria/r/maria.result:
        Added new tests
      mysql-test/suite/maria/t/maria-recover.test:
        Force checkpoint before copying table.
        This is needed as now the open-count is increased first when first page is flushed.
      mysql-test/suite/maria/t/maria.test:
        Added tests to verify fix for lp:624099
      storage/maria/ha_maria.cc:
        Use table->in_use instead of current_thd (trivial optimization)
        Use maria_delete_table_files() instead of maria_delete_table() to delete tempoary tables (faster and safer)
        More DBUG_ASSERT()
        Reset locked tables count after locked tables have been moved to new transaction. This fixed lp:624099
      storage/maria/ma_bitmap.c:
        Temporarly unlock bitmap mutex when calling _ma_mark_file_changed() and pagecache_delete_pages() to ensure right mutex lock order.
        Call _ma_bitmap_unpin_all() when bitmap->non_flusable is set to 0. This fixed a case when bitmap was not proparly unpinned.
        More comments
        Added DBUG_ASSERT() for detecting wrong share->bitmap usage
      storage/maria/ma_blockrec.c:
        More DBUG_ASSERT()
        Moved code around in _ma_apply_redo_insert_row_head_or_tail() to make things safer on error conditions.
      storage/maria/ma_check.c:
        Changed parameter for _ma_set_uuid()
        Corrected test for detecting if we lost many rows. This fixed some cases where auto-recovery failed.
        share->changed need to be set if state.open_count is changed.
        Removed setting of share->changed= 0 as called function sets it.
      storage/maria/ma_close.c:
        - Added code to properly decrement open_count and have it written by _ma_state_info_write() for transactional tables.
          (This is more correct and also saves us one extra write by _ma_decrement_open_count() at close.
        - Added DBUG_ASSERT() to detect if open_count is wrong at maria_close().
      storage/maria/ma_delete.c:
        Updated argument to _ma_mark_file_changed()
      storage/maria/ma_delete_all.c:
        Updated argument to _ma_mark_file_changed()
        For transactional tables, call _ma_mark_file_changed() after log entry has been written (to allow recover to fix open_count)
        Reset more needed variables in _ma_reset_status()
      storage/maria/ma_delete_table.c:
        Moved deletion of Aria files to maria_delete_table_files().
        Remove RAID usage (old not working code)
      storage/maria/ma_extra.c:
        Set share->changed=1 when state needs to be updated on disk.
        Don't reset share->changed after call to _ma_state_info_write() as this calls sets share->changed.
        Set share->state.open_count to 1 to force table to be auto repaired if drop fails.
        Set share->global_changed before call to _ma_flush_table_files() to ensure that we don't try to mark the table changed during flush.
        Added DBUG_ENTER
      storage/maria/ma_locking.c:
        Split _ma_mark_file_changed() into two functions to delay marking transactional tables as changed on disk until first disk write.
        Added argument to _ma_decrement_open_count() to tell if we should call ma_lock_database() or not.
        Don't decrement open count for transactional tables during _ma_decrement_open_count(). This will be done during close.
        Changed parameter for _ma_set_uuid()
      storage/maria/ma_open.c:
        Set share->open_count_not_zero_on_open if state.open_count is not zero.
        This is needed for DBUG_ASSERT() in maria_close() that is there to enforce that open_count is always 0 at close.
        This test doesn't however work for tables that had open_count != 0 already on disk (ie, crashed tables).
        Enforce right mutex order for share->intern_lock and share->bitmap.bitmap_lock
        Don't set share->changed to 0 if share->state.open_count != 0, as state needs to be be written at close
      storage/maria/ma_pagecache.c:
        Moved a bit of code in find_block() to avoid one if.
        More DBUG_ASSERT()
        (I left a comment in the code for Sanja to look at;  The code probably works but we need to check if it's optimal)
      storage/maria/ma_pagecrc.c:
        For transactional tables, just before first write to disk, but after log is flushed, mark the file changed.
        This fixes some cases where recovery() did not detect that table was marked as changed and could thus not recover the marker.
      storage/maria/ma_recovery.c:
        Set share->changed when share->global_changed is set.
      storage/maria/ma_update.c:
        Updated parameter for _ma_mark_file_changed()
      storage/maria/ma_write.c:
        Updated parameter for _ma_mark_file_changed()
      storage/maria/maria_chk.c:
        Added option --ignore-control-file to be able to run maria_chk even if the control file is locked.
      storage/maria/maria_def.h:
        Updated function prototypes.
        Added open_count_not_zero_on_open to MARIA_SHARE.
      storage/myisam/ha_myisam.cc:
        current_thd -> table->in_use
      6db663d6
  3. 03 Feb, 2011 3 commits
  4. 02 Feb, 2011 1 commit
    • Michael Widenius's avatar
      Don't delete directory mysql-test/var if we use mysql-test-run --vardir= · 1027b4cf
      Michael Widenius authored
      Fixed error in Maria unittest
      Fixes other issues found by test case for lp:700623 "Aria recovery: ma_blockrec.c:3930: _ma_update_at_original_place: Assertion `block->org_bitmap_value == .."
      Fixes lp:670356 "Aria table "is marked as crashed and should be repaired"
      
      
      
      mysql-test/lib/v1/mysql-test-run.pl:
        Don't delete directory mysql-test/var if we use mysql-test-run --vardir=
      mysql-test/mysql-test-run.pl:
        Don't delete directory mysql-test/var if we use mysql-test-run --vardir=
        (Needed to be able to run multiple concurrent mysql-test-run's/randgen on the same server)
        Added extra supression
      storage/maria/ma_pagecache.c:
        Removed duplicate DBUG_PRINT information
        Added KEYCACHE_PRINT for printing information that was already printed to DBUG log (to get rid of some duplicated output)
        More comments
        Fixed bug that caused page block to be used by two treads at the same time (with different page information)
        Mark block->status with PCBLOCK_DIRECT_W independent of the block is changed or not. (Safety fix)
      storage/maria/maria_chk.c:
        Better --help
      storage/maria/unittest/ma_test_recovery.pl:
        Ignore differences in 'recover time'.
        Fixed error in Maria unittest
      1027b4cf
  5. 30 Jan, 2011 4 commits
    • Michael Widenius's avatar
      Ignore some linked files · 336023b6
      Michael Widenius authored
      336023b6
    • Michael Widenius's avatar
      Merge with 5.1 · 2e75dda3
      Michael Widenius authored
      Fixed a couple of compilation failures that was not detected before merge.
      2e75dda3
    • Michael Widenius's avatar
      Aria fixes: · 5bcf3a24
      Michael Widenius authored
      - Fixed a bug where we didn't signal a thread waiting for bitmap flush that it's now time to continue which caused a deadlock in Aria.
      - 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"
      - Fixed a bug in pagecache where a block could change while it was in use.
      - In maria_chk set --update-state to on by default so that open_count is cleared if table was ok during check.
      
      storage/maria/ma_bitmap.c:
        Fixed a bug where we didn't signal a thread waiting for bitmap flush that it's now time to continue.
        This fix adds counters for the different conditions that may be waited upon and signals if there is a waiter when the condition changes.
      storage/maria/ma_blockrec.c:
        Check if directory if full when calculating what should be in the bitmap.
        Fixes 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"
      storage/maria/ma_pagecache.c:
        Added more comments
        Removed some duplicated DBUG_PRINT and DBUG_ASSERT()
        find_block() now waits for block to be usable if we are not copying it directly. This fixes a bug where a block changed information while we where using it. Fixed by adding an extra parameter to find_block()
        Simplified code in make_lock_and_pin() as block can never be == 0 here.
      storage/maria/ma_recovery.c:
        Reset open_count for tables that are closed in middle of recovery.
      storage/maria/maria_chk.c:
        Set --update-state to on by default so that open_count is cleared if table was ok during check.
        Update time when table was recovered/checked if --update-state was used.
        Updated --help message with missing information.
      storage/maria/maria_def.h:
        Added wait counters
      5bcf3a24
    • Michael Widenius's avatar
      Flush DBUG log in case of DBUG_ASSERT() · 785695e7
      Michael Widenius authored
      Added strings_def.h into strings library to be able to have a DBUG_ASSERT() version without _db_flush() call (as strings.a should not depend on dbug.a)
      Remove include of m_string.h in all string files (as it's included by string_def.h).
      Fixed include order.
      Changed "m_ctype.h" -> <m_ctype.h>
      
       
      
      include/my_dbug.h:
        Flush DBUG log in case of DBUG_ASSERT()
      strings/bchange.c:
        Include strings_def.h
      strings/bcmp.c:
        Include strings_def.h
      strings/bfill.c:
        Include strings_def.h
      strings/bmove.c:
        Include strings_def.h
      strings/bmove512.c:
        Include strings_def.h
      strings/bmove_upp.c:
        Include strings_def.h
      strings/conf_to_src.c:
        Include strings_def.h
        Fixed copyright
      strings/ctype-big5.c:
        Include strings_def.h
      strings/ctype-bin.c:
        Include strings_def.h
      strings/ctype-cp932.c:
        Include strings_def.h
      strings/ctype-czech.c:
        Include strings_def.h
      strings/ctype-euc_kr.c:
        Include strings_def.h
      strings/ctype-eucjpms.c:
        Include strings_def.h
      strings/ctype-extra.c:
        Include strings_def.h
      strings/ctype-gbk.c:
        Include strings_def.h
      strings/ctype-latin1.c:
        Include strings_def.h
      strings/ctype-mb.c:
        Include strings_def.h
      strings/ctype-simple.c:
        Include strings_def.h
      strings/ctype-sjis.c:
        Include strings_def.h
      strings/ctype-tis620.c:
        Include strings_def.h
      strings/ctype-uca.c:
        Include strings_def.h
      strings/ctype-ucs2.c:
        Include strings_def.h
      strings/ctype-ujis.c:
        Include strings_def.h
      strings/ctype-utf8.c:
        Include strings_def.h
      strings/ctype-win1250ch.c:
        Include strings_def.h
      strings/ctype.c:
        Include strings_def.h
      strings/decimal.c:
        Include strings_def.h
      strings/do_ctype.c:
        Include strings_def.h
      strings/int2str.c:
        Include strings_def.h
      strings/is_prefix.c:
        Include strings_def.h
      strings/llstr.c:
        Include strings_def.h
      strings/longlong2str.c:
        Include strings_def.h
      strings/longlong2str_asm.c:
        Include strings_def.h
      strings/my_strchr.c:
        Include strings_def.h
      strings/my_strtoll10.c:
        Include strings_def.h
      strings/my_vsnprintf.c:
        Include strings_def.h
      strings/r_strinstr.c:
        Include strings_def.h
      strings/str2int.c:
        Include strings_def.h
      strings/str_alloc.c:
        Include strings_def.h
      strings/str_test.c:
        Include strings_def.h
        Fixed compiler warnings
      strings/strappend.c:
        Include strings_def.h
      strings/strcend.c:
        Include strings_def.h
      strings/strcont.c:
        Include strings_def.h
      strings/strend.c:
        Include strings_def.h
      strings/strfill.c:
        Include strings_def.h
      strings/strinstr.c:
        Include strings_def.h
      strings/strmake.c:
        Include strings_def.h
      strings/strmov.c:
        Include strings_def.h
      strings/strmov_overlapp.c:
        Include strings_def.h
      strings/strnlen.c:
        Include strings_def.h
      strings/strnmov.c:
        Include strings_def.h
      strings/strstr.c:
        Include strings_def.h
      strings/strto.c:
        Include strings_def.h
      strings/strtod.c:
        Include strings_def.h
      strings/strtol.c:
        Include strings_def.h
      strings/strtoll.c:
        Include strings_def.h
      strings/strtoul.c:
        Include strings_def.h
      strings/strtoull.c:
        Include strings_def.h
      strings/strxmov.c:
        Include strings_def.h
      strings/strxnmov.c:
        Include strings_def.h
      strings/uctypedump.c:
        Include strings_def.h
        Fixed compiler warnings
        Removed double include of m_ctype.h
      strings/udiv.c:
        Include strings_def.h
      strings/xml.c:
        Include strings_def.h
      785695e7
  6. 26 Jan, 2011 5 commits
    • Michael Widenius's avatar
      Better fix for mysql_test.cc::do_remove_files_wildcard · c46305ab
      Michael Widenius authored
      client/mysqltest.cc:
        Better fix for do_remove_files_wildcard
      c46305ab
    • Sergei Golubchik's avatar
      fixes for solaris 10 · 4e17ec5a
      Sergei Golubchik authored
      configure.in:
        * don't use assembler when building with native linker and --with-embedded.
          Embedded uses PIC and our assembler sources aren't PIC
        * workaround for OpenSolaris Bug 6611808
      extra/libevent/devpoll.c:
        compiler warning
      extra/yassl/src/buffer.cpp:
        include config.h first to make sure that _FILE_OFFSET_BITS is defined
        before including system headers
      extra/yassl/taocrypt/benchmark/benchmark.cpp:
        include config.h first to make sure that _FILE_OFFSET_BITS is defined
        before including system headers
      extra/yassl/taocrypt/test/test.cpp:
        include config.h first to make sure that _FILE_OFFSET_BITS is defined
        before including system headers
      include/my_pthread.h:
        workaround for OpenSolaris Bug 6611808
      4e17ec5a
    • Michael Widenius's avatar
      Use _ma_set_fatal_error() in Aria also for HA_ERR_WRONG_IN_RECORD, to be able... · fe36d2a0
      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.
      fe36d2a0
    • Michael Widenius's avatar
      Fixed bugs found by buildbot: · 69fe020f
      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
      69fe020f
    • Sergei Golubchik's avatar
      fix "./configure --with-debug" builds · d3135162
      Sergei Golubchik authored
      (without CFLAGS=-DSAFEMALLOC).
      d3135162
  7. 25 Jan, 2011 1 commit
  8. 24 Jan, 2011 1 commit
    • Michael Widenius's avatar
      Aria issues: · 26565ae1
      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)
      26565ae1
  9. 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. · ab3e7f9f
      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
      ab3e7f9f
    • Michael Widenius's avatar
      Fixed some mysql-test-run failures and compile warnings/errors · 70575456
      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)
      70575456
  10. 18 Jan, 2011 1 commit
  11. 14 Jan, 2011 3 commits
  12. 12 Jan, 2011 8 commits
    • Georgi Kodinov's avatar
      merge · 7f9ce73d
      Georgi Kodinov authored
      7f9ce73d
    • Michael Widenius's avatar
      Merge with 5.1 · d0e8dbc4
      Michael Widenius authored
      d0e8dbc4
    • Michael Widenius's avatar
      Fix for LP#697610 ha_index_prev(uchar*): Assertion `inited==INDEX' failed with... · 21332120
      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
      21332120
    • Alexey Botchkov's avatar
      Bug #57321 crashes and valgrind errors from spatial types · 33c78e32
      Alexey Botchkov authored
              Item_func_spatial_collection::fix_length_and_dec didn't call parent's method, so
              the maybe_null was set to '0' after it. But in this case the result was
              just NULL, that caused wrong behaviour.
      
      per-file comments:
        mysql-test/r/gis.result
      Bug #57321 crashes and valgrind errors from spatial types 
              test result updated.
      
        mysql-test/t/gis.test
      Bug #57321 crashes and valgrind errors from spatial types 
              test case added.
        sql/item_geofunc.h
      Bug #57321 crashes and valgrind errors from spatial types 
              Item_func_geometry::fix_length_and_dec() called in
              Item_func_spatial_collection::fix_length_and_dec().
      33c78e32
    • Dmitry Lenev's avatar
      Fix for bug #58499 "DEFINER-security view selecting from · 599457ae
      Dmitry Lenev authored
      INVOKER-security view access check wrong".
      
      When privilege checks were done for tables used from an 
      INVOKER-security view which in its turn was used from 
      a DEFINER-security view connection's active security
      context was incorrectly used instead of security context
      with privileges of the second view's creator.
      
      This meant that users which had enough rights to access
      the DEFINER-security view and as result were supposed to 
      be able successfully access it were unable to do so in 
      cases when they didn't have privileges on underlying tables 
      of the INVOKER-security view.
      
      This problem was caused by the fact that for INVOKER-security
      views TABLE_LIST::security_ctx member for underlying tables
      were set to 0 even in cases when particular view was used from 
      another DEFINER-security view. This meant that when checks of
      privileges on these underlying tables was done in
      setup_tables_and_check_access() active connection security 
      context was used instead of context corresponding to the 
      creator of caller view.
      
      This fix addresses the problem by ensuring that underlying
      tables of an INVOKER-security view inherit security context
      from the view and thus correct security context is used for
      privilege checks on underlying tables in cases when such view 
      is used from another view with DEFINER-security.
      
      mysql-test/r/view_grant.result:
        Added coverage for various combinations of DEFINER and
        INVOKER-security views, including test for bug #58499
        "DEFINER-security view selecting from INVOKER-security
        view access check wrong".
      mysql-test/t/view_grant.test:
        Added coverage for various combinations of DEFINER and
        INVOKER-security views, including test for bug #58499
        "DEFINER-security view selecting from INVOKER-security
        view access check wrong".
      sql/sql_view.cc:
        When opening a non-suid view ensure that its underlying 
        tables will get the same security context as use for
        checking privileges on the view, i.e. security context
        of view invoker. This context can be different from the
        security context which is currently active for connection 
        in cases when this non-suid view is used from a view with
        suid security. Inheriting security context in such situation
        allows correctly apply privileges of creator of suid view
        in checks for tables of non-suid view (since in this 
        situation creator/definer of suid view serves as invoker
        for non-suid view).
      599457ae
    • Oystein Grovlen's avatar
      Bug#59211: Select Returns Different Value for min(year) Function · 651313bf
      Oystein Grovlen authored
      get_year_value() contains code to convert 2-digits year to
      4-digits.  The fix for Bug#49910 added a check on the size of
      the underlying field so that this conversion is not done for
      YEAR(4) values. (Since otherwise one would convert invalid
      YEAR(4) values to valid ones.)
      
      The existing check does not work when Item_cache is used, since
      it is not detected when the cache is based on a Field.  The
      reported change in behavior is due to Bug#58030 which added
      extra cached items in min/max computations.
      
      The elegant solution would be to implement
      Item_cache::real_item() to return the underlying Item.
      However, some side effects are observed (change in explain
      output) that indicates that such a change is not straight-
      forward, and definitely not appropriate for an MRU.
      
      Instead, a Item_cache::field() method has been added in order
      to get access to the underlying field.  (This field() method
      eliminates the need for Item_cache::eq_def() used in
      test_if_ref(), but in order to limit the scope of this fix,
      that code has been left as is.)
      
      
      mysql-test/r/type_year.result:
        Added test case for Bug#59211.
      mysql-test/t/type_year.test:
        Added test case for Bug#59211.
      sql/item.h:
        Added function Item_cache::field() to get access to the
        underlying Field of a cached field Value.
      sql/item_cmpfunc.cc:
        Also check underlying fields of Item_cache, not just Item_Field,
        when checking whether the value is of type YEAR(4) or not.
      651313bf
    • Martin Hansson's avatar
      Bug#58207: invalid memory reads when using default column value and · 3c5662c1
      Martin Hansson authored
      tmptable needed
      
      The function DEFAULT() works by modifying the the data buffer pointers (often
      referred to as 'record' or 'table record') of its argument. This modification
      is done during name resolution (fix_fields().) Unfortunately, the same
      modification is done when creating a temporary table, because default values
      need to propagate to the new table.
      
      Fixed by skipping the pointer modification for fields that are arguments to
      the DEFAULT function.
      3c5662c1
    • Sergey Petrunya's avatar
      Merge BUG#675118 into maria-5.1 · 6bc209c2
      Sergey Petrunya authored
      6bc209c2
  13. 11 Jan, 2011 5 commits
    • Michael Widenius's avatar
      Fixed bug in Maria page cache that caused assert if block->request != 0 in free_block() · 3e77b1da
      Michael Widenius authored
      
      storage/maria/ma_pagecache.c:
        - Ensure that we write also the last buffer in flush if buffer overflows.
        - Don't set PCBLOCK_IN_FLUSH if we don't flush the page
        - Added some new safety asserts.
      3e77b1da
    • Michael Widenius's avatar
      Allow one to decrease page-buffer-size down to 1M (from 128M) for maria_read_log · 713999a4
      Michael Widenius authored
      Don't allow too low value of pagecache_buffer_size for mysqld
      
      storage/maria/ha_maria.cc:
        Don't allow too low value of pagecache_buffer_size (as it will stop mysqld from starting)
      storage/maria/maria_read_log.c:
        Allow one to decrease page-buffer-size down to 1M (from 128M)
      713999a4
    • Dmitry Shulga's avatar
      Fixed Bug#58887 - server not throwing "Packet too large" error · 0fd846ba
      Dmitry Shulga authored
      if max_allowed_packet >= 16M.
      
      This bug was introduced by patch for bug#42503.
      
      This patch restores behaviour that there was before patch
      for bug#42503 was applied.
      
      sql/net_serv.cc:
        Restored original right condition.
      0fd846ba
    • Davi Arnaut's avatar
      Bug#42054: SELECT CURDATE() is returning bad value · c4c94ea0
      Davi Arnaut authored
      The problem from a user point of view was that on Solaris the
      time related functions (e.g. NOW(), SYSDATE(), etc) would always
      return a fixed time.
      
      This bug was happening due to a logic in the time retrieving
      wrapper function which would only call the time() function every
      half second. This interval between calls would be calculated
      using the gethrtime() and the logic relied on the fact that time
      returned by it is monotonic.
      
      Unfortunately, due to bugs in the gethrtime() implementation,
      there are some cases where the time returned by it can drift
      (See Solaris bug id 6600939), potentially causing the interval
      calculation logic to fail.
      
      The solution is to retrieve the correct time whenever a drift in
      the time returned by gethrtime() is detected. That is, do not
      use the cached time whenever the values (previous and current)
      returned by gethrtime() are not monotonically increasing.
      
      mysys/my_getsystime.c:
        Do not used the cached time if gethrtime is not monotonic.
      c4c94ea0
    • Michael Widenius's avatar
      Allow smaller size for page-buffer-size · a008186f
      Michael Widenius authored
      storage/maria/maria_read_log.c:
        Allow smaller size for page-buffer-size (down to 1M)
        Sorted options for --help
      a008186f