• unknown's avatar
    Fixed several bugs in page CRC handling · 30d3d8d3
    unknown authored
    - Ignore CRC errors in REDO for potential new pages
    - Ignore CRC errors when repairing tables
    - Don't do readcheck callback on read error
    - Set my_errno to HA_ERR_WRONG_CRC if we find page with wrong CRC
    - Check index page for length before calculating CRC to catch bad pages
    Fixed bugs where we used wrong file descriptor to read/write bitmaps
    Fixed wrong hash key in 'files_in_flush'
    Fixed wrong lock method when writing bitmap
    Fixed some wrong printf statements in check/repair that caused core dumps
    Fixed argument to translog_page_validator that cause reading of log files to fail
    Store number of bytes used for delete-linked key pages to be able to use standard index CRC for deleted key pages.
    Use fast 'dummy' pagecheck callbacks for temporary tables
    Don't die silently if flush finds pinned pages
    Give error (for now) if one tries to create a transactional table with fulltext or spatial keys
    Removed some not needed calls to pagecache_file_init()
    Added checking of pagecache checksums to ma_test1 and ma_test2
    More DBUG
    Fixed some DBUG_PRINT to be in line with rest of the code
    
    
    include/my_base.h:
      Added HA_ERR_INTERNAL_ERROR (used for flush with pinned pages) and HA_ERR_WRONG_CRC
    mysql-test/r/binlog_unsafe.result:
      Added missing DROP VIEW statement
    mysql-test/r/maria.result:
      Added TRANSACTIONAL=0 when testing with fulltext keys
      Added test that verifies we can't yet create transactional test with fulltext or spatial keys
    mysql-test/r/ps_maria.result:
      Added TRANSACTIONAL=0 when testing with fulltext keys
    mysql-test/t/binlog_unsafe.test:
      Added missing DROP VIEW statement
    mysql-test/t/maria.test:
      Added TRANSACTIONAL=0 when testing with fulltext keys
      Added test that verifies we can't yet create transactional test with fulltext or spatial keys
    mysql-test/t/ps_maria.test:
      Added TRANSACTIONAL=0 when testing with fulltext keys
    mysys/my_fopen.c:
      Fd: -> fd:
    mysys/my_handler.c:
      Added new error messages
    mysys/my_lock.c:
      Fd: -> fd:
    mysys/my_pread.c:
      Fd: -> fd:
    mysys/my_read.c:
      Fd: -> fd:
    mysys/my_seek.c:
      Fd: -> fd:
    mysys/my_sync.c:
      Fd: -> fd:
    mysys/my_write.c:
      Fd: -> fd:
    sql/mysqld.cc:
      Fixed wrong argument to my_uuid_init()
    sql/sql_plugin.cc:
      Unified DBUG_PRINT (for convert-dbug-for-diff)
    storage/maria/ma_bitmap.c:
      Fixed wrong lock method when writing bitmap
      Fixed valgrind error
      Use fast  'dummy' pagecheck callbacks for temporary tables
      Faster bitmap handling for non transational tables
    storage/maria/ma_blockrec.c:
      Fixed that bitmap reading is done with the correct filehandle
      Handle reading of pages with wrong CRC when page contect doesn't matter
      Use the page buffer also when we get WRONG CRC or FILE_TOO_SHORT. (Faster and fixed a couple of bugs)
    storage/maria/ma_check.c:
      Split long strings for readablity
      Fixed some wrong printf statements that caused core dumps
      Use bitmap.file for bitmaps
      Ignore pages with wrong CRC
    storage/maria/ma_close.c:
      More DBUG_PRINT
    storage/maria/ma_create.c:
      Give error (for now) if one tries to create a crash safe table with fulltext or spatial keys
    storage/maria/ma_key_recover.c:
      Ignore HA_ERR_WRONG_CRC for new pages
      info->s  ->  share
      Store number of bytes used for delete-linked key pages to be able to use standard index CRC for deleted key pages.
    storage/maria/ma_loghandler.c:
      Fixed argument to translog_page_validator()
    storage/maria/ma_open.c:
      Removed old VMS specific code
      Added function to setup pagecache callbacks
      Moved code around to set 'share->temporary' early
      Removed some not needed calls to pagecache_file_init()
    storage/maria/ma_page.c:
      Store number of bytes used for delete-linked key pages to be able to use standard index CRC for deleted key pages.
    storage/maria/ma_pagecache.c:
      Don't do readcheck callback on read error
      Reset PCBLOCK_ERROR in pagecache_unlock_by_link() if we write page
      Set my_errno to HA_ER_INTERNAL_ERROR if flush() finds pinned pages
      Don't die silently if flush finds pinned pages.
      Use correct file descriptor when flushing pages
      Fixed wrong hash key in 'files_in_flush';  This must be the file descriptor, not the PAGECACHE_FILE as there may be several PAGECACHE_FILE for same file descriptor
      More DBUG_PRINT
    storage/maria/ma_pagecrc.c:
      Removed inline from not tiny static function
      Set my_errno to HA_ERR_WRONG_CRC if we find page with wrong CRC
      (Otherwise my_errno may be 0, and a lot of other code will be confused)
      CRCerror -> error (to keep code uniform)
      Print crc with %lu, as in my_checksum()
      uchar* -> uchar *
      Check index page for length before calculating CRC to catch bad pages
      Added 'dummy' crc_check and filler functions that are used for temporary tables
    storage/maria/ma_recovery.c:
      More DBUG
      More message to users to give information what phase failed
      Better error message if recovery failed
    storage/maria/ma_test1.c:
      Added checking of page checksums (combined with 'c' to not have to add more test runs)
    storage/maria/ma_test2.c:
      Added checking of page checksums (combined with 'c' to not have to add more test runs)
    storage/maria/maria_chk.c:
      Fixed wrong argument to _ma_check_print_error()
    storage/maria/maria_def.h:
      Added format information to _ma_check_print_xxxx functions
      uchar* -> uchar *
    30d3d8d3
maria_chk.c 63.3 KB