An error occurred fetching the project authors.
  1. 04 Sep, 2007 2 commits
    • unknown's avatar
      Added undo of deleted row · 044c4103
      unknown authored
      Added part of undo of update row
      Extended ma_test1 for recovery testing
      Some bug fixes
      
      
      storage/maria/ha_maria.cc:
        Ignore 'state.split' in case of block records
      storage/maria/ma_bitmap.c:
        Added return value for _ma_bitmap_find_place() for how much data we should put on head page
      storage/maria/ma_blockrec.c:
        Added undo of deleted row.
        - Added logging of CLR_END records in write_block_record()
        - Split ma_write_init_block_record() to two functions to get better code reuse
        - Added _ma_apply_undo_row_delete()
        - Added ma_get_length()
        
        Added 'empty' prototype for undo_row_update()
        
        Fixed bug when moving data withing a head/tail page.
        Fixed bug when reading a page with bigger LSN but of different type than was expected.
        Store undo_lsn first in CLR_END record
        
        Simplified some code by adding local variables.
        Changed log format for UNDO_ROW_DELETE to store total length of used blobs
      storage/maria/ma_blockrec.h:
        Added prototypes for undo code.
      storage/maria/ma_pagecache.c:
        Allow plain page to change to LSN page (needed in recovery to apply UNDO)
      storage/maria/ma_recovery.c:
        Added undo handling of UNDO_ROW_DELETE and UNDO_ROW_UPDATE
      storage/maria/ma_test1.c:
        Extended --test-undo option to allow us to die after insert or after delete.
        Fixed bug in printing key values when using -v
      storage/maria/maria_def.h:
        Moved some variables around to be getter alignment
        Added length_buff buffer to be used during undo handling
      044c4103
    • unknown's avatar
      Added UNDO handling of insert during recovery · 03437ea0
      unknown authored
      storage/maria/ma_blockrec.c:
        Added UNDO handling of insert during recovery
        To do this, I also had to add write locking of tail pages during undo phase (As we need to access the same page twice if extents are split over two pages)
        Another way to handle the undo of insert would be to store the extent information as part of the UNDO_INSERT block.
      storage/maria/ma_blockrec.h:
        Added new prototype
      storage/maria/ma_loghandler.c:
        Changed type of CLR_END (to avoid crash in log handler)
        Removed not used variable
      storage/maria/ma_loghandler.h:
        Added TRN argument to record_execute_in_undo_phase()
      storage/maria/ma_pagecache.c:
        Hack for undo phase of recovery.  During REDO we work with PLAIN pages, but UNDO works with LSN pages, which caused an abort when trying to access a cached page.
      storage/maria/ma_recovery.c:
        Added execution of UNDO_ROW_INSERT
      storage/maria/ma_test1.c:
        Added option --test-undo for testing recovery with undo
      storage/maria/maria_read_log.c:
        Added processing of undos
      03437ea0
  2. 03 Sep, 2007 1 commit
    • unknown's avatar
      Fixed several bugs found by running *.test with maria engine · 5183a4b0
      unknown authored
      Renamed HA_EXTRA_PREAPRE_FOR_DELETE to HA_EXTRA_PERPARE_FOR_DROP
      Added HA_EXTRA_PREPARE_FOR_RENAME (as we in the code before used HA_EXTRA_PREPARE_FOR_DELETE also for renames which confused things)
      Allow multiple write locks for same page by same file handle
      Don't write table state if table is not changed
      
      
      include/my_base.h:
        Renamed HA_EXTRA_PREAPRE_FOR_DELETE to HA_EXTRA_PERPARE_FOR_DROP
        Added HA_EXTRA_PREPARE_FOR_RENAME (as we in the code before used HA_EXTRA_PREPARE_FOR_DELETE also for renames which confused things)
      mysql-test/r/maria.result:
        More tests of things that failed in other tests
      mysql-test/t/maria.test:
        More tests of things that failed in other tests
      sql/ha_partition.cc:
        HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
        Use HA_EXTRA_PREPARE_FOR_RENAME for renames
      sql/ha_partition.h:
        HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
        Use HA_EXTRA_PREPARE_FOR_RENAME for renames
      sql/lock.cc:
        Fixed comment
      sql/sql_table.cc:
        Fixed wrong usage of HA_EXTRA_PREAPRE_FOR_DELETE
      storage/maria/ha_maria.cc:
        Added missing _ma_renable_logging_for_table()  (When using with ALTER TABLE + repair index)
        Enabled fast generation of index
      storage/maria/ma_bitmap.c:
        Fixed bug when resetting full pages when page was a tail page
      storage/maria/ma_blockrec.c:
        Fixed several bugs found by running *.test with maria engine:
        During update we keep old changed pages locked with a write lock to be able to reuse them.
        - Fixed bug with allocated but not used tail part
        - Fixed bug with blob that only had tail part
        - Fixed bug when update reused a page (needed multiple write locks for same page)
        - Fixed bug when first extent was a tail block
      storage/maria/ma_check.c:
        Better error message when bitmap is destroyed
      storage/maria/ma_close.c:
        Only write status if file was changed.
        Fixed bug when maria_chk -e file_name changed the file.
      storage/maria/ma_dynrec.c:
        Removed not used argument to _ma_state_info_read_dsk
      storage/maria/ma_extra.c:
        HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
        Use HA_EXTRA_PREPARE_FOR_RENAME for renames
        Only ignore flushing of pages for DROP (not rename)
      storage/maria/ma_locking.c:
        Removed not used argument to _ma_state_info_read_dsk
      storage/maria/ma_open.c:
        Removed not used argument to _ma_state_info_read_dsk
      storage/maria/ma_pagecache.c:
        Allow multiple write locks for same page by same file handle
        (Not yet complete, Sanja will fix)
      storage/maria/ma_recovery.c:
        HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
      storage/maria/maria_def.h:
        Removed not used argument to _ma_state_info_read_dsk
      storage/myisam/mi_extra.c:
        HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
        Use HA_EXTRA_PREPARE_FOR_RENAME for renames
        Only ignore flushing of pages for DROP (not rename)
      storage/myisammrg/ha_myisammrg.cc:
        HA_EXTRA_PREPARE_FOR_DELETE -> HA_EXTRA_PREPARE_FOR_DROP
        Use HA_EXTRA_PREPARE_FOR_RENAME for renames
      5183a4b0
  3. 31 Aug, 2007 1 commit
    • unknown's avatar
      Generalized the way update and redo extends the size of a directory record. · 2cc2f3e7
      unknown authored
      storage/maria/ma_blockrec.c:
        Generalized the way update and redo extends the size of a directory record.
        This will (for now) ensure that data files are idenitical after normal run and after a apply-log run.
      storage/maria/ma_open.c:
        Disabled reservation of transid on rows (for now) as these are not yet used.
        (I had to disable this as otherwise update thougth rows had grown in size when they hadn't and we had thus different row sizes on update and redo, which caused different block information)
      storage/maria/ma_test1.c:
        Added comment
      storage/maria/ma_test2.c:
        Do commit on error/abort
      storage/maria/ma_test_all.sh:
        Some more testing (to cover a bug that was not found in previous runs)
      storage/maria/ma_test_recovery:
        More tests
      2cc2f3e7
  4. 29 Aug, 2007 2 commits
    • unknown's avatar
      WL#3072 Maria recovery · e27890ca
      unknown authored
      * create page cache before initializing engine and not after, because
      Maria's recovery needs a page cache
      * make the creation of a bitmap page more crash-resistent
      * bugfix (see ma_blockrec.c)
      * back to old way: create an 8k bitmap page when creating table
      * preparations for the UNDO phase: recreate TRNs
      * preparations for Checkpoint: list of dirty pages, testing
      of rec_lsn to know if page should be skipped during Recovery
      (unused in this patch as no Checkpoint module pushed yet)
      * maria_chk tags repaired table with a special LSN
      * reworking all around in ma_recovery.c (less duplication)
      
      
      mysys/my_realloc.c:
        noted an issue in my_realloc()
      sql/mysqld.cc:
        page cache needs to be created before engines are initialized,
        because Maria's initialization may do a recovery which needs
        the page cache.
      storage/maria/ha_maria.cc:
        update to new prototype
      storage/maria/ma_bitmap.c:
        when creating the first bitmap page we used chsize to 8192 bytes then 
        pwrite (overwrite) the last 2 bytes (8191-8192). If crash between
        the two operations, this leaves a bitmap page full without its end
        marker. A later recovery may try to read this page and find it
        exists and misses a marker and conclude it's corrupted and fail.
        Changing the chsize to only 8190 bytes: recovery will then find
        the page is too short and recreate it entirely.
      storage/maria/ma_blockrec.c:
        Fix for a bug: when executing a REDO, if the data page is created,
        data_file_length was increased before _ma_bitmap_set():
        _ma_bitmap_set() called _ma_read_bitmap_page() which, due to the
        increased data_file_length, expected to find a bitmap page on disk
        with a correct end marker; if the bitmap page didn't exist already
        in fact, this failed. Fixed by increasing data_file_length only after
        _ma_read_bitmap_page() has created the new bitmap page correctly.
        This bug could happen every time a REDO is about creating a new
        bitmap page.
      storage/maria/ma_check.c:
        empty data file has a bitmap page
      storage/maria/ma_control_file.c:
        useless parameter to ma_control_file_create_or_open(), just
        test if this is recovery.
      storage/maria/ma_control_file.h:
        new prototype
      storage/maria/ma_create.c:
        Back to how it was before: maria_create() creates an 8k bitmap page.
        Thus (bugfix) data_file_length needs to reflect this instead of being 0.
      storage/maria/ma_loghandler.c:
        as ma_test1 and ma_test2 now use real transactions and not
        dummy_transaction_object, REDO for INSERT/UPDATE/DELETE are always
        about real transactions, can assert this.
        A function for Recovery to assign a short id to a table.
      storage/maria/ma_loghandler.h:
        new function
      storage/maria/ma_loghandler_lsn.h:
        maria_chk tags repaired tables with this LSN
      storage/maria/ma_open.c:
        * enforce that DMLs on transactional tables use real transactions
        and not dummy_transaction_object.
        * test if table was repaired with maria_chk (which has to been
        seen as an import of an external table into the server), test
        validity of create_rename_lsn (header corruption detection)
        * comments.
      storage/maria/ma_recovery.c:
        * preparations for the UNDO phase: recreate TRNs
        * preparations for Checkpoint: list of dirty pages, testing
        of rec_lsn to know if page should be skipped during Recovery
        (unused in this patch as no Checkpoint module pushed yet)
        * reworking all around (less duplication)
      storage/maria/ma_recovery.h:
        a parameter to say if the UNDO phase should be skipped
      storage/maria/maria_chk.c:
        tag repaired tables with a special LSN
      storage/maria/maria_read_log.c:
        * update to new prototype
        * no UNDO phase in maria_read_log for now
      storage/maria/trnman.c:
        * a function for Recovery to create a transaction (TRN), needed
        in the UNDO phase
        * a function for Recovery to grab an existing transaction, needed
        in the UNDO phase (rollback all existing transactions)
      storage/maria/trnman_public.h:
        new functions
      e27890ca
    • unknown's avatar
      Added maria_commit() and maria_begin() to be used with external tests · f7b766c0
      unknown authored
      Now ma_test1 -M -T and ma_test2 -M -T produces readable, applyable logs
      
      Note: The .MAD file is not binary identical after applying redo compare to a an original file.
      (This is becasue we don't have full information which function called PURGE_REDO_BLOCKS).
      To verify if a file was correctly applied, we now instead compare row checksums
      
      
      BitKeeper/etc/ignore:
        added storage/maria/tmp/*
      include/maria.h:
        Added maria_commit() and maria_begin() to be used with external tests
      storage/maria/ha_maria.cc:
        Ensure maria_def. is read in C mode
      storage/maria/ma_blockrec.c:
        Fixed redo handling.
        _ma_apply_redo_purge_blocks() updated to handle any number of purged blocks
        Removed code to make data file idenitcal after redo (can't easily be done). See changeset comments
        
        Now ma_test1 -M -T and ma_test2 -M -T produces readable, applyable logs
      storage/maria/ma_commit.c:
        More DBUG statements
        Moved variable declaration to start of function (portability fix)
        Added helper functions 'maria_commit()' and 'maria_begin()'
      storage/maria/ma_loghandler.c:
        Fixed wrong REDO_PURGE_BLOCKS initialization
      storage/maria/ma_recovery.c:
        Added UNDO_ROW_UPDATE
        Removed wrong setting of lsn (there was no lsn at the used position)
        Fixed REDO_PURGE_BLOCKS to handle any number of blocks
      storage/maria/ma_test1.c:
        Added transaction support (via maria_begin() & maria_commit()) to get a log that can be applied with maria_read_log
      storage/maria/ma_test2.c:
        Added transaction support (via maria_begin() & maria_commit()) to get a log that can be applied with maria_read_log
      storage/maria/ma_test_recovery:
        Create temporary files in maria/tmp
        Verify files with checksums instead of byte comparisons
      storage/maria/maria_chk.c:
        When using with -dss we only get  filename, records and checksum.
        This is useful to do a quick comparision if a files is identical to another one.
      storage/maria/maria_def.h:
        Added ma_commit()
      storage/maria/maria_read_log.c:
        Added --help
      f7b766c0
  5. 21 Aug, 2007 1 commit
    • unknown's avatar
      Fixes for bugs found by maria.test and event*tests: · a8d94b4a
      unknown authored
      Fixed bug when doing rnd_read followed by update.
      Don't duplicate error messages in log
      Initialize transaction object properly. Fixed failure in event*tests when running with maria
      
      
      mysql-test/mysql-test-run.pl:
        Removed warning when running with --external
      mysql-test/r/maria.result:
        Added back disabled test
        Verified that the result changes are correct
      mysql-test/t/maria.test:
        Added back disabled test
      sql/handler.cc:
        More debugging.
        Simple style change
      sql/sql_class.cc:
        Initialize transaction object properly. Fixed failure in event*tests when running with maria
      storage/maria/ha_maria.cc:
        More dbug info
      storage/maria/ma_blockrec.c:
        Removed not needed line
      storage/maria/ma_rrnd.c:
        Removed not used code
        Ensure that cur_row.lastpos is always set when reading record with rnd. (Fixes failure in maria.test)
      storage/maria/maria_def.h:
        Don't call maria_print_error() except with EXTRA_DEBUG
        (Removes duplicate error messages when somethings goes wrong)
      a8d94b4a
  6. 02 Aug, 2007 1 commit
    • unknown's avatar
      WL#3072 Maria checkpoint · 91f03a4d
      unknown authored
      Preparation: for the two-checkpoint rule we will flush all pages
      which have block->rec_lsn <= last_checkpoint_lsn. Pages with
      rec_lsn not yet set (i.e. ==0) were dirtied very recently and so should
      not be flushed (otherwise it's not efficient: we should try to let
      a page be modified several times in memory before we flush it to disk).
      To make this easy, "block->rec_lsn not yet set" is now expressed
      with block->rec_lsn==LSN_MAX, not block->rec_lsn==0 anymore.
      It is easier this way because LSN_MAX>last_checkpoint_lsn whereas
      0<=last_checkpoint_lsn.
      
      
      storage/maria/ma_blockrec.c:
        typo
      storage/maria/ma_loghandler.c:
        typo
      storage/maria/ma_loghandler_lsn.h:
        LSN_MAX
      storage/maria/ma_pagecache.c:
        "block->rec_lsn not yet set" is now expressed by block->rec_lsn==LSN_MAX,
        not block_rec_lsn==0.
      91f03a4d
  7. 01 Aug, 2007 1 commit
    • unknown's avatar
      WL#3072 Maria recovery: · 372b4ed4
      unknown authored
      preparation to enable recoverability of the table's state, more exactly
      info->state->checksum. This will require that info->state->checksum
      be updated in a inwrite_hook when writing an UNDO record, thus
      info->cur_row.checksum needs to be accessible to inwrite_hook, so we
      make translog_write_record() accept a MARIA_HA* (info) instead of
      MARIA_SHARE* (info->s); with this, we will be able to access
      info->cur_row.checksum. Old code which needed the MARIA_SHARE
      can derive it from MARIA_HA. Fix for typos and compiler warnings.
      
      
      storage/maria/ma_blockrec.c:
        fix for new loghandler API. Removing strange lines (how could gcc
        accept that?)
      storage/maria/ma_check.c:
        fix for new loghandler API
      storage/maria/ma_delete_all.c:
        fix for new loghandler API
      storage/maria/ma_loghandler.c:
        functions now take a MARIA_HA in argument, this is more powerful
        than a MARIA_SHARE (MARIA_SHARE can be derived from MARIA_HA, not
        the other way around). MARIA_HA will be needed to allow recoverability
        of the table's state.
        Fixing wrong DBUG_PRINT ('i' is not the id).
        When writing the LOGREC_FILE_ID, we don't have a MARIA_HA around,
        so we cannot ask translog_write_record() to store the id for us;
        we thus store the file's id by ourselves. Alternative would have been
        to pass MARIA_HA to translog_assign_id_to_share() but I didn't like it.
      storage/maria/ma_loghandler.h:
        new loghandler API
      storage/maria/tablockman.c:
        fix for compiler warning (intptr is int on my machine)
      372b4ed4
  8. 26 Jul, 2007 2 commits
    • unknown's avatar
      post-merge fixes, and fixes for some of the 16 compiler warnings · 662002fc
      unknown authored
      found in pushbuild on sapsrv1. Some not fixed as not repeatable
      on my machine (32/64 bit issue?).
      Fixes for some test failures:
      - "maria-connect" now passes;
      - "maria": after fixing the obvious reasons for failures, the test
      went further and hit a more complex issues: difference in the output
      of EXPLAIN output; not fixed;
      - "ps_maria" still crashes in assertion
      mysqld: ha_maria.cc:1627: virtual int ha_maria::index_read(uchar*, const uchar*, uint, ha_rkey_function): Ass
      ertion `inited == INDEX' failed, as already observable in pushbuild.
      All this might just be due to an incomplete merge of MyISAM changes
      into Maria when 5.1 was last merged to mysql-maria.
      
      
      include/my_global.h:
        temporary fix until next merge of 5.1; without this it does not build
      mysql-test/r/maria-connect.result:
        position changed
      mysql-test/t/maria-connect.test:
        If one wants to use the binlog it has to ask for it.
        1582 is not used for dup entry error anymore (it was in older 5.1).
        Size of first event in binlog was increased by 4 (when the new type
        of event "gap" was added).
      mysql-test/t/maria.test:
        1582 not used anymore in this case
      storage/maria/ha_maria.cc:
        engine now has to say what binlogging it supports
      storage/maria/ma_blockrec.c:
        fix for compiler warnings ("comparison is always true" or "always
        false")
      storage/maria/ma_loghandler.c:
        fix for compiler warnings (comparing char* to uchar*)
      storage/maria/ma_packrec.c:
        fix for compiler warning (fix simply merged from MyISAM)
      storage/maria/ma_pagecache.c:
        info_check_pin() was not used so gave a compiler warning.
      storage/maria/ma_pagecache.h:
        fixing typo from the last 5.1->maria merge.
      storage/maria/ma_recovery.c:
        my_free() has a void* argument, so why cast. byte->uchar.
      storage/maria/ma_search.c:
        fix for compiler warning (fix simply merged from MyISAM)
      storage/maria/maria_read_log.c:
        gptr->uchar*
      storage/maria/trnman.c:
        probable fix for warning found in pushbuild (but not on my machine):
        storage/maria/trnman.c: 142
         passing argument 6 of \u2018lf_hash_init\u2019 from incompatible pointer type
        on sapsrv1.
      662002fc
    • unknown's avatar
      WL#3072 - Maria recovery · 6bbca54d
      unknown authored
      Unit test for recovery: runs ma_test1 and ma_test2 (both only with
      INSERTs and DELETEs; UPDATEs disabled as not handled by recovery)
      then moves the tables elswhere; recreates tables from the log, and
      compares and fails if there is a difference. Passes now.
      Most of maria_read_log.c moved to ma_recovery.c, as it will be re-used
      for recovery-from-ha_maria.
      Bugfixes of applying of REDO_INSERT, REDO_PURGE_ROW.
      Applying of REDO_PURGE_BLOCKS, REDO_DELETE_ALL, REDO_DROP_TABLE,
      UNDO_ROW_INSERT (in REDO phase only, i.e. just doing records++),
      UNDO_ROW_DELETE, UNDO_ROW_PURGE.
      Code cleanups.
      Monty: please look for "QQ". Sanja: please look for "Sanja".
      Future tasks: recovery of the bitmap (easy), recovery of the state
      (make it idempotent), more REDOs (Monty to work on
      REDO_UPDATE?), UNDO phase...
      Pushing this cset as it looks safe, contains test and bugfixes which
      will help Monty implement applying of REDO_UPDATE.
      
      
      sql/handler.cc:
        typo
      storage/maria/Makefile.am:
        Adding ma_test_recovery (which ma_test_all invokes, and which can
        also be run alone). Most of maria_read_log.c moved to ma_recovery.c
      storage/maria/ha_maria.cc:
        comments
      storage/maria/ma_bitmap.c:
        fixing comments. 2 -> sizeof(maria_bitmap_marker).
        Bitmap-related part of _ma_initialize_datafile() moves in bitmap module.
        Now putting the "bm" signature when creating the first bitmap page
        (it used to happen only at next open, but that
        caused an annoying difference when testing Recovery if the original
        run didn't open the table, and it looks more
        logical like this: it goes to disk only with its signature correct);
        see the "QQ" comment towards the _ma_initialize_data_file() call
        in ma_create.c for more).
        When reading a bitmap page, verify its signature (happens when normally
        using the table or when CHECKing it; not when REPAIRing it).
      storage/maria/ma_blockrec.c:
        * no need to sync the data file if table is not transactional
        * Comments, code cleanup (log-related data moved to log-related code
        block, int5store->page_store).
        * Store the table's short id into LOGREC_UNDO_ROW_PURGE, like we
        do for other records (though this record will soon be replaced
        with a CLR).
        * If "page" is 1 it means the page which extends from byte
        page*block_size+1 to (page+1)*block_size (byte number 1 being
        the first byte of the file). The last byte of the file is
        data_file_length (same convention).
        A new page needs to be created if the last byte of the page is
        beyond the last byte of the file, i.e.
         (page+1)*block_size+1 > data_file_length, so we correct the test
        (bug found when testing log applying for ma_test1 -M -T --skip-update).
        * update the page's LSN when removing a row from it during
        execution of a REDO_PURGE_ROW record (bug found when testing log
        applying for ma_test1 -M -T --skip-update).
        * applying of REDO_PURGE_BLOCKs (limited to a one-page range for now).
      storage/maria/ma_blockrec.h:
        new functions. maria_bitmap_marker does not need to be exported.
      storage/maria/ma_close.c:
        we can always flush the table's state when closing the last instance
        of the table. And it is needed for maria_read_log (as it does
        not use maria_lock_database()).
      storage/maria/ma_control_file.c:
        when in Recovery, some assertions should not be used.
      storage/maria/ma_control_file.h:
        double-inclusion safe
      storage/maria/ma_create.c:
        during recovery, don't log records. Comments.
        Moving the creation of the first bitmap page to ma_bitmap.c
      storage/maria/ma_delete_table.c:
        during recovery, don't log records. Log the end-zero of the dropped
        table's name, so that recovery can use the string in place without
        extending it to fit an end zero.
      storage/maria/ma_loghandler.c:
        * inwrite_rec_hook also needs access to the MARIA_SHARE, like
        prewrite_rec_hook. This will be needed to update
        share->records_diff (in the upcoming patch "recovery of the state").
        * LOG_DESC::record_ends_group changed to an enum.
        * LOG_DESC for LOGREC_REDO_PURGE_BLOCKS and LOGREC_UNDO_ROW_PURGE
        corrected
        * Sanja please see the @todo LOG BUG
        * avoiding DBUG_RETURN(func()) as it gives confusing debug traces.
      storage/maria/ma_loghandler.h:
        - log write hooks called while the log's lock is held (inwrite_rec_hook)
        now need the MARIA_SHARE, like prewrite_rec_hook already had
        - instead of a bool saying if this record's type ends groups or not,
        we refine: it may not end a group, it may end a group, or it may
        be a group in itself. Imagine that we had a physical write failure
        to a table before we log the UNDO, we still end up in
        external_lock(F_UNLCK) and then we log a COMMIT: we don't want
        to consider this COMMIT as ending the group of REDOs (don't want
        to execute those REDOs during Recovery), that's why we say "COMMIT
        is a group in itself, it aborts any previous group". This also
        gives one more sanity check in maria_read_log.
      storage/maria/ma_recovery.c:
        New Recovery code, replacing the old pseudocode.
        Most of maria_read_log moved here.
        Call-able from ha_maria, but not enabled yet.
        Compared to the previous version of maria_read_log, some bugs have
        been fixed, debugging output can go to stdout or a disk file (for now
        it's useful for me, later it can be changed), execution of
        REDO_DROP_TABLE, REDO_DELETE_ALL, REDO_PURGE_BLOCKS has been added. Duplicate code
        has been factored into functions. We abort an unfinished group
        of records if we see a record which is a group in itself (like COMMIT).
        No need for maria_panic() after a bug (which caused tables to not
        be closed) was fixed; if there is yet another bug I prefer to see it.
        When opening a table for Recovery, set data_file_length
        and key_file_length to their real physical value (these are the
        easiest state members to restore :). Warn us if the last page
        was truncated (but Recovery handles it).
        MARIA_SHARE::state::state::records is now partly recovered (not
        idempotent, but works if recreating tables from scracth).
        When applying a REDO to a page, stamp it with the UNDO's LSN
        (current_group_end_lsn), not with the REDO's LSN; it makes
        the table more identical to the original table (easier to compare
        the two tables in the end).
        Big thing missing: some types of REDOs are not handled,
        and the UNDO phase does not exist (missing functions to execute UNDOs
        to actually rollback). So for now tests are only inserting/deleting
        a few 100 rows, closing the table and seeing if the log is applied ok;
        it works. UPDATE not handled.
      storage/maria/ma_recovery.h:
        new functions: ma_recover() for recovery from inside ha_maria;
        _ma_apply_log() for maria_read_log (ma_recover() calls _ma_apply_log()).
        Btw, we need to not use the word "recover" for REPAIR/maria_chk anymore.
      storage/maria/ma_rename.c:
        don't write log records during recovery
      storage/maria/ma_test2.c:
        - fail if maria_info() or other subtests find some wrong information
        - new option -g to skip updates.
        - init the translog before creating the table, so that log applying
        can work.
        - in "#if 0" you'll see some fixed bugs (will be removed).
      storage/maria/ma_test_all.sh:
        cleanup files. Test log applying.
      storage/maria/maria_read_log.c:
        most of the logic moves to ma_recovery.c to be shared between
        maria_read_log and recovery-from-inside-mysqld.
        See ma_recovery.c for additional changes made to the moved code.
      storage/maria/ma_test_recovery:
        unit test for Recovery. Tests insert and delete,
        REDO_UPDATE not yet coded.
        Script is called from ma_test_all. Can run standalone.
      6bbca54d
  9. 04 Jul, 2007 2 commits
    • unknown's avatar
      Maria: correcting assertions (should be enforced only in multi-threaded · 3a1c7c91
      unknown authored
      mode) so ma_test_all works again; more error detection in ma_test_all;
      maria_control renamed to maria_log_control (Monty's suggestion,
      so that a "rm maria_log*" removes all log-related files). Disabling
      failing wrong assertion.
      
      
      storage/maria/ma_blockrec.c:
        disabling assertion which fails because cur_block is a
        local variable not initialized
      storage/maria/ma_check.c:
        comment
      storage/maria/ma_control_file.h:
        control file renamed
      storage/maria/ma_loghandler.c:
        assertions needed only in multi-threaded mode (ma_test1 and ma_test2
        are single-threaded, it's ok for them to use dummy_transaction_object
        with transactional tables: trn->rec_lsn can be set without interfering
        with other threads).
      storage/maria/ma_test_all.sh:
        got caught by failures in some ma_test1 runs, which I didn't see
        because ma_test_all returned 0 and I didn't scroll up in the window;
        now using "set -e" to avoid that. Also testing that
        we get the errors and warnings we expect.
      storage/maria/unittest/Makefile.am:
        maria_control renamed
      3a1c7c91
    • unknown's avatar
      Fixed bytes to uchar and gptr to uchar* · 6ed46be7
      unknown authored
      6ed46be7
  10. 03 Jul, 2007 3 commits
    • unknown's avatar
      After merge fixes · a898a7b6
      unknown authored
      Note that ma_test_all doesn't work for the moment.
      (ma_test1 -s -M -T fails because it uses the dummy_transaction_object)
      
      
      storage/maria/ma_blockrec.c:
        After merge fixes
      a898a7b6
    • unknown's avatar
      Implement applying of REDO entries for · 85da5133
      unknown authored
      - LOGREC_REDO_INSERT_ROW_HEAD
      - LOGREC_REDO_INSERT_ROW_TAIL
      - LOGREC_REDO_PURGE_ROW_HEAD
      - LOGREC_REDO_PURGE_ROW_TAIL
      
      
      sql/sql_yacc.yy:
        Fixed typo in previous push
      storage/maria/ma_bitmap.c:
        Ensure we flush the new bitmap on close
      storage/maria/ma_blockrec.c:
        Implement applying of REDO entries for
        - LOGREC_REDO_INSERT_ROW_HEAD
        - LOGREC_REDO_INSERT_ROW_TAIL
        - LOGREC_REDO_PURGE_ROW_HEAD
        - LOGREC_REDO_PURGE_ROW_TAIL
        Split some functions into subfunctions to be able to reuse code
      storage/maria/ma_blockrec.h:
        Added prototypes for REDO applying functions
      storage/maria/ma_loghandler.h:
        Safety fix
      storage/maria/ma_loghandler_lsn.h:
        Avoid compiler warnings
      storage/maria/maria_read_log.c:
        Added hocks for:
        - REDO_INSERT_ROW_HEAD
        - REDO_INSERT_ROW_TAIL
        - REDO_PURGE_ROW_HEAD
        - REDO_PURGE_ROW_TAIL
        
        Added dummy hooks for:
        - UNDO_ROW_INSERT
        - UNDO_ROW_DELETE
        
        Changed to use maria_pagecache instead of own pagecache (fixed problem with unitialized share->pagecache)
        Use maria_panic() at end to ensure that all files are closed properly.
        Fixed option handling for --debug
      85da5133
    • unknown's avatar
      Maria: · 38812255
      unknown authored
      * Don't modify share->base.born_transactional; now it is a value carved
      in stone at creation time. share->now_transactional is what can be
      modified: it starts at born_transactional, can become false during
      ALTER TABLE (when we want no logging), and restored later.
      * Not resetting create_rename_lsn to 0 during delete_all or repair.
      * when we temporarily disable transactionality, we also change
      the page type to PAGECACHE_PLAIN_PAGE: it bypasses some work in the
      page cache (optimization), and avoids assertions related to LSNs.
      * Disable INSERT DELAYED for transactional tables, because
      durability could not be guaranteed (insertion may even not happen)
      
      
      mysys/mf_keycache.c:
        comment
      storage/maria/ha_maria.cc:
        * a transactional table cannot do INSERT DELAYED
        * ha_maria::save_transactional not needed anymore, as now instead
        we don't modify MARIA_SHARE::MARIA_BASE_INFO::born_transactional
        (born_transactional plays the role of save_transactional), and modify
        MARIA_SHARE::now_transactional.
        * REPAIR_TABLE log record is now logged by maria_repair()
        * comment why we rely on born_transactional to know if we should
        skipping a transaction.
        * putting together two if()s which test for F_UNLCK
      storage/maria/ha_maria.h:
        ha_maria::save_transactional not needed anymore (moved to the C layer)
      storage/maria/ma_blockrec.c:
        * For the block record's code (writing/updating/deleting records),
        all that counts is now_transactional, not born_transactional.
        * As we now set the page type to PAGECACHE_PLAIN_PAGE for tables
        which have now_transactional==FALSE, pagecache will not expect
        a meaningful LSN for them in pagecache_unlock_by_link(), so
        we can pass it LSN_IMPOSSIBLE.
      storage/maria/ma_check.c:
        * writing LOGREC_REPAIR_TABLE moves from ha_maria::repair()
        to maria_repair(), sounds cleaner (less functions to export).
        * when opening a table during REPAIR, don't use the realpath-ed name,
        as this may fail if the table has symlinked files (maria_open()
        would try to find the data and index file in the directory
        of unique_file_name, it would fail if data and index files are in
        different dirs); use the unresolved name, open_file_name, which is
        the argument which was passed to the maria_open() which created 'info'.
      storage/maria/ma_close.c:
        assert that when a statement is done with a table, it cleans up
      storage/maria/ma_create.c:
        new name
      storage/maria/ma_delete_all.c:
        * using now_transactional
        * no reason to reset create_rename_lsn during delete_all (a bug);
        also no reason to do it during repair: it was put there because
        a positive create_rename_lsn caused a call to check_and_set_lsn()
        which asserted in DBUG_ASSERT(block->type == PAGECACHE_LSN_PAGE);
        first solution was to use LSN_IMPOSSIBLE in _ma_unpin_all_pages() if
        not transactional; but then in the case of ALTER TABLE, with
        transactionality temporarily disabled, it asserted in
        DBUG_ASSERT(LSN_VALID(lsn)) in pagecache_fwrite() (PAGECACHE_LSN_PAGE
        page with zero LSN - bad). The additional solution is to use
        PAGECACHE_PLAIN_PAGE when we disable transactionality temporarily: this
        avoids checks on the LSN, and also bypasses (optimization) the "flush
        log up to LSN" call when the pagecache flushes our page (in other
        words, no WAL needed).
      storage/maria/ma_delete_table.c:
        use now_transactional
      storage/maria/ma_locking.c:
        assert that when a statement is done with a table, it cleans up.
      storage/maria/ma_loghandler.c:
        * now_transactional should be used to test if we want a log record.
        * Assertions to make sure dummy_transaction_object is not spoilt
        by its many users.
      storage/maria/ma_open.c:
        base.transactional -> base.born_transactional
      storage/maria/ma_pagecache.c:
        missing name for page's type. Comment for future.
      storage/maria/ma_rename.c:
        use now_transactional
      storage/maria/maria_chk.c:
        use born_transactional
      storage/maria/maria_def.h:
        MARIA_BASE_INFO::transactional renamed to born_transactional.
        MARIA_SHARE::now_transactional introduced.
        _ma_repair_write_log_record() is made local to ma_check.c.
        Macros to temporarily disable, and re-enable, transactionality for a
        table.
      storage/maria/maria_read_log.c:
        assertions and using the new macros. Adding a forgotten resetting
        when we finally close all tables.
      38812255
  11. 02 Jul, 2007 1 commit
    • unknown's avatar
      Merged with mysql-5.1 main tree. · 631ecaab
      unknown authored
      BUILD/compile-pentium-debug-max:
        Added definition after macro was removed from main tree. This will
        be fixed back in main tree later.
      631ecaab
  12. 01 Jul, 2007 1 commit
    • unknown's avatar
      Fixed REPAIR/CHECK/ANALYZE TABLE for tables with new BLOCK-ROW format. · d6f2fda6
      unknown authored
      Fixed maria_chk to repair BLOCK-ROW tables.
      Added CREATE options ROW_FORMAT=PAGE & TRANSACTIONAL= 0|1
      More DBUG information in a lot of functions
      Some minor code cleanups
      Enable handler errors earlier for better clear text error messages at handler startup / standalone usage.
      Don't print NULL strings in my_create_with_symlink();  Fixes core dump when used with --debug
      
      
      include/maria.h:
        Added extra variables needed for REPAIR with BLOCK records
      include/my_base.h:
        Added argument for opening copy of maria table without a shared object
      include/my_handler.h:
        Prototypes for my_handler_error_register() & my_handler_error_unregister()
      include/pagecache.h:
        Added PAGECACHE_READ_UNKNOWN_PAGE
      mysql-test/include/ps_conv.inc:
        Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
      mysql-test/r/maria.result:
        Moved some things to maria-connect.test
        Updared results as REPAIR now works
        Added tests for creation option TRANSACTIONAL
      mysql-test/r/ps_2myisam.result:
        Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
      mysql-test/r/ps_3innodb.result:
        Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
      mysql-test/r/ps_4heap.result:
        Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
      mysql-test/r/ps_5merge.result:
        Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
      mysql-test/r/ps_7ndb.result:
        Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
      mysql-test/r/ps_maria.result:
        Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
      mysql-test/t/maria.test:
        Moved some things to maria-connect.test
        Updared results as REPAIR now works
        Added tests for creation option TRANSACTIONAL
      mysys/mf_iocache.c:
        More debugging
      mysys/mf_tempfile.c:
        Added missing close()
      mysys/my_error.c:
        init_glob_errs() is now done in my_init()
      mysys/my_handler.c:
        Added functions to initialize handler error messages
      mysys/my_init.c:
        Moevd init_glob_errs() here.
      mysys/my_open.c:
        More comments
        More debugging
        Code cleanup (join multiple code paths) and indentation fixes. No change in logic.
      mysys/my_symlink2.c:
        Don't print NULL strings
      sql/handler.cc:
        Added printing of PAGE row type
        Moved out initializing of handler errors to allow handler to give better error messages at startup
      sql/handler.h:
        ROW_TYPE_PAGES -> ROW_TYPE_PAGE
      sql/lex.h:
        Added 'PAGE' and 'TRANSACTIONAL'
      sql/mysqld.cc:
        Initialize handler error messages early to get better error messages from handler startup
      sql/sql_show.cc:
        ROW_TYPE_PAGES -> ROW_TYPE_PAGE
      sql/sql_table.cc:
        Removed not needed initializer
      sql/sql_yacc.yy:
        Added CREATE options ROW_FORMAT=PAGE and TRANSACTIONAL=[0|1]
      sql/table.cc:
        Store transactional flag in .frm
        More comments
      sql-bench/example:
        Better example
      sql/table.h:
        Added transactional table option
      storage/maria/ha_maria.cc:
        More debug information
        Enable REPAIR
        Detect usage of TRANSACTIONAL table option
      storage/maria/ma_bitmap.c:
        More comments (from Guilhem)
      storage/maria/ma_blockrec.c:
        SANITY_CHECK -> SANITY_CHECKS (fixed typo)
        Write out pages on delete even if there is no rows. (Fixed problem with REPAIR)
        Removed some ASSERTS to runtime checks (for better REPAIR)
        Fixed bug when scanning rows
        More DBUG information
      storage/maria/ma_check.c:
        Partial rewrite to allow REPAIR of BLOCK/PAGE format.
        Repair of BLOCK format rows is for now only done with 'maria_repair()' (= repair through key cache)
        The new logic to repair rows with BLOCK format is:
        
        - Create new, unrelated MARIA_HA of the table
        - Create new datafile and associate it with new handler
        - Reset all statistic information in new handler
        - Copy all data to new handler with normal write operations
        - Move state of new handler to old handler
        - Close new handler
        - Close data file in old handler
        - Rename old data file to new data file.
        - Reopen data file in old handler
      storage/maria/ma_close.c:
        REmoved not needed block
      storage/maria/ma_create.c:
        Swap arguments to _ma_initialize_data_file()
      storage/maria/ma_delete_all.c:
        Split maria_delete_all_rows() to two functions to allow REPAIR to easily reset all status information.
      storage/maria/ma_dynrec.c:
        Added checksum argument to _ma_rec_check (multi-thread fix)
      storage/maria/ma_info.c:
        Indentation fix
      storage/maria/ma_init.c:
        Register error message to get better error message on init and when using as standalone module.
      storage/maria/ma_loghandler.c:
        Fixed typo that disabled some error detection by valgrind
      storage/maria/ma_open.c:
        Added 'calc_check_checksum()'
        Don't log things during repair
        Added option HA_OPEN_COPY to allow one to open a Maria table with an independent share (required by REPAIR)
      storage/maria/ma_pagecache.c:
        Fixed some compiler warnings
        Added support for PAGECACHE_READ_UNKNOWN_PAGE (used for scanning file without knowing page types)
      storage/maria/ma_test_all.sh:
        More test of REPAIR
      storage/maria/ma_update.c:
        Optimized checksum code
      storage/maria/maria_chk.c:
        Use DBUG_SET_INITIAL() to get DBUG to work with --parallel-repair
        Ensure we always use maria_repair() for BLOCK format (for now)
        More DBUG information
      storage/maria/maria_def.h:
        For now, always run with more checkings (SANITY_CHECKS)
        Added share->calc_check_checksum to be used with REPAIR / CHECK table.
        Swaped arguments to _ma_initialize_data_file()
      storage/myisam/ft_stopwords.c:
        Added DBUG information
      mysql-test/r/maria-connect.result:
        New BitKeeper file ``mysql-test/r/maria-connect.result''
      mysql-test/t/maria-connect.test:
        New BitKeeper file ``mysql-test/t/maria-connect.test''
      d6f2fda6
  13. 26 Jun, 2007 1 commit
    • unknown's avatar
      WL#3072 Maria Recovery · adac9798
      unknown authored
      - new program maria_read_log to display and apply log records
      found in a Maria log (see file's revision comment)
      - minor, misc fixes
      
      
      storage/maria/Makefile.am:
        new program maria_read_log
      storage/maria/ha_maria.cc:
        create control file if missing
      storage/maria/ma_blockrec.c:
        0 -> LSN_IMPOSSIBLE; comments
      storage/maria/ma_checkpoint.h:
        preparations for Checkpoint module
      storage/maria/ma_close.c:
        comment
      storage/maria/ma_control_file.c:
        renaming constants.
        Possibility to say "open control file but don't create it if it's
        missing" (used by maria_read_log which does not want to create
        anything)
      storage/maria/ma_control_file.h:
        renaming constants
      storage/maria/ma_create.c:
        I had duplicated "linkname" and "linkname_ptr", now I see it's not
        needed, reverting. Indeed those variables don't contain interesting
        information; fixing log record accordingly (the links are in
        ci->data/index_file_name). Storing keystart in log record is needed,
        to know at which size we must extend the file if we replay
        LOGREC_CREATE_TABLE.
      storage/maria/ma_loghandler.c:
        some structures need to be known to maria_read_log.c, taking
        them to ma_loghandler.h
      storage/maria/ma_loghandler.h:
        we have page_store, adding page_korr.
        translog_lock() made public, because Checkpoint will need it (to
        write to control file).
        Some structures moved from ma_loghandler.c because maria_read_log.c
        needs them (needs to know the execute-in-REDO-phase hooks of each
        record).
      storage/maria/ma_loghandler_lsn.h:
        constants defined in ma_control_file.h serve everywhere,
        and they relate to LSNs, so putting them in ma_loghandler_lsn.h.
        Stronger constraints in LSN_VALID().
      storage/maria/ma_pagecache.c:
        renaming constants
      storage/maria/ma_recovery.h:
        copyright
      storage/maria/ma_test1.c:
        new prototype
      storage/maria/ma_test2.c:
        new prototype
      storage/maria/trnman_public.h:
        double-inclusion safe
      storage/maria/unittest/ma_control_file-t.c:
        constants renamed, new prototype
      storage/maria/unittest/ma_test_loghandler-t.c:
        constants renamed, new prototype
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        constants renamed, new prototype
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        constants renamed, new prototype
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        constants renamed, new prototype
      storage/myisam/mi_close.c:
        comment
      storage/maria/maria_read_log.c:
        program to read and print log records from a Maria transaction log,
        and optionally apply them to tables. Very basic, early version.
        Should serve as a base for Recovery's code. Designed to be idempotent.
        Create a log by running maria.test, then cd to var/master-data
        and run "maria_read_log --only-display" to see info about records;
        run "maria_read_log --display-and-apply" to also apply the records
        to tables (it's more interesting if you first wipe out the
        tables in var/master-data/test, to see how they get re-created).
        Only a few records are handled by now: LONG_TRANSACTION_ID,
        COMMIT, FILE_ID, REDO_CREATE_TABLE; place is ready for
        REDO_INSERT_ROW_HEAD where I could use Monty's help (search for
        "Monty" in the file). Note: changes to the index pages, index's header
        and bitmap pages are not properly logged yet, so don't expect
        the program to work with that.
      adac9798
  14. 22 Jun, 2007 1 commit
    • unknown's avatar
      - WL#3239 "log CREATE TABLE in Maria" · 1a962591
      unknown authored
      - WL#3240 "log DROP TABLE in Maria"
      - similarly, log RENAME TABLE, REPAIR/OPTIMIZE TABLE, and
      DELETE no_WHERE_clause (== the DELETE which just truncates the files)
      - create_rename_lsn added to MARIA_SHARE's state
      - all these operations (except DROP TABLE) also update the table's
      create_rename_lsn, which is needed for the correctness of
      Recovery (see function comment of _ma_repair_write_log_record()
      in ma_check.c)
      - write a COMMIT record when transaction commits.
      - don't log REDOs/UNDOs if this is an internal temporary table
      like inside ALTER TABLE (I expect this to be a big win). There was
      already no logging for user-created "CREATE TEMPORARY" tables.
      - don't fsync files/directories if the table is not transactional
      - in translog_write_record(), autogenerate a 2-byte-id for the table
      and log the "id->name" pair (LOGREC_FILE_ID); log
      LOGREC_LONG_TRANSACTION_ID; automatically store
      the table's 2-byte-id in any log record.
      - preparations for Checkpoint: translog_get_horizon(); pausing Checkpoint
      when some dirty pages are unknown; capturing trn->rec_lsn,
      trn->first_undo_lsn for Checkpoint and log's low-water-mark computing.
      - assertions, comments.
      
      
      storage/maria/Makefile.am:
        more files to build
      storage/maria/ha_maria.cc:
        - logging a REPAIR log record if REPAIR/OPTIMIZE was successful.
        - ha_maria::data_file_type does not have to be set in every info()
        call, just do it once in open().
        - if caller said that transactionality can be disabled (like if
        caller is ALTER TABLE) i.e. thd->transaction.on==FALSE, then we
        temporarily disable transactionality of the table in external_lock();
        that will ensure that no REDOs/UNDOs are logged for this possibly
        massive write operation (they are not needed, as if any write fails,
        the table will be dropped). We re-enable in external_lock(F_UNLCK),
        which in ALTER TABLE happens before the tmp table replaces the original
        one (which is good, as thus the final table will have a REDO RENAME
        and a correct create_rename_lsn).
        - when we commit we also have to write a log record, so
        trnman_commit_trn() calls become ma_commit() calls
        - at end of engine's initialization, we are potentially entering a
        multi-threaded dangerous world (clients are going to be accepted)
        and so some assertions of mutex-owning become enforceable, for that
        we set maria_multi_threaded=TRUE (see ma_control_file.c)
      storage/maria/ha_maria.h:
        new member ha_maria::save_transactional (see also ha_maria.cc)
      storage/maria/ma_blockrec.c:
        - fixing comments according to discussion with Monty
        - if a table is transactional but temporarily non-transactional
        (like in ALTER TABLE), we need to give a sensible LSN to the pages
        (and, if we give 0, pagecache asserts).
        - translog_write_record() now takes care of storing the share's
        2-byte-id in the log record
      storage/maria/ma_blockrec.h:
        fixing comment according to discussion with Monty
      storage/maria/ma_check.c:
        When REPAIR/OPTIMIZE modify the data/index file, if this is a
        transactional table, they must sync it; if they remove files or rename
        files, they must sync the directory, so that everything is durable.
        This is just applying to REPAIR/OPTIMIZE the logic already implemented
        in CREATE/DROP/RENAME a few months ago.
        Adding a function to write a LOGREC_REPAIR_TABLE at end of
        REPAIR/OPTIMIZE (called only by ha_maria, not by maria_chk), and
        to update the table's create_rename_lsn.
      storage/maria/ma_close.c:
        fix for a future bug
      storage/maria/ma_control_file.c:
        ensuring that if Maria is running in multi-threaded mode, anybody
        wanting to write to the control file and update
        last_checkpoint_lsn/last_logno owns the log's lock.
      storage/maria/ma_control_file.h:
        see ma_control_file.c
      storage/maria/ma_create.c:
        when creating a table:
        - sync it and its directory only if this is a transactional table
        and there is a log (no point in syncing in maria_chk)
        - decouple the two uses of linkname/linkname_ptr (for index file and
        for data file) into more variables, as we need to know all links
        until the moment we write the LOGREC_CREATE_TABLE.
        - set share.data_file_type early so that _ma_initialize_data_file()
        knows it (Monty's bugfix so that a table always has at least a bitmap
        page when it is created; so data-file is not 0 bytes anymore).
        - log a LOGREC_CREATE_TABLE; it contains the bytes which we have
        just written to the index file's header. Update table's
        create_rename_lsn.
        - syncing of kfile had been bugified in a previous merge, correcting
        - syncing of dfile is now needed as it's not empty anymore
        - in _ma_initialize_data_file(), use share's block_size and not the
        global one. This is a gratuitous change, both variables are equal,
        just that I find it more future-proof to use share-bound variable
        rather than global one.
      storage/maria/ma_delete_all.c:
        log a LOGREC_DELETE_ALL record when doing ma_delete_all_rows();
        update create_rename_lsn then.
      storage/maria/ma_delete_table.c:
        - logging LOGREC_DROP_TABLE; knowing if this is needed, requires
        knowing if the table is transactional, which requires opening the
        table.
        - we need to sync directories only if the table is transactional
      storage/maria/ma_extra.c:
        questions
      storage/maria/ma_init.c:
        when maria_end() is called, engine is not multithreaded
      storage/maria/ma_loghandler.c:
        - translog_inited has to be visible to ma_create() (see how it is used
        in ma_create())
        - checkpoint record will be a single record, not three
        - no REDO for TRUNCATE (TRUNCATE calls ma_create() internally so will
        log a REDO_CREATE)
        - adding REDO for DELETE no_WHERE_clause (fast DELETE of all rows by
        truncating the files), REPAIR.
        - MY_WAIT_IF_FULL to wait&retry if a log write hits a full disk
        - in translog_write_record(), if MARIA_SHARE does not yet have a
        2-byte-id, generate one for it and log LOGREC_FILE_ID; automatically
        store this short id into log records.
        - in translog_write_record(), if transaction has not logged its
        long trid, log LOGREC_LONG_TRANSACTION_ID.
        - For Checkpoint, we need to know the current end-of-log: adding
        translog_get_horizon().
        - For Control File, adding an assertion that the thread owns the
        log's lock (control file is protected by this lock)
      storage/maria/ma_loghandler.h:
        Changes in log records (see ma_loghandler.c).
        new prototypes, new functions.
      storage/maria/ma_loghandler_lsn.h:
        adding a type LSN_WITH_FLAGS especially for TRN::first_undo_lsn,
        where the most significant byte is used for flags.
      storage/maria/ma_open.c:
        storing the create_rename_lsn in the index file's header (in the
        state, precisely) and retrieving it from there.
      storage/maria/ma_pagecache.c:
        - my set_if_bigger was wrong, correcting it
        - if the first_in_switch list is not empty, it means that
        changed_blocks misses some dirty pages, so Checkpoint cannot run and
        needs to wait. A variable missing_blocks_in_changed_list is added to
        tell that (should it be named missing_blocks_in_changed_blocks?)
        - pagecache_collect_changed_blocks_with_lsn() now also tells the
        minimum rec_lsn (needed for low-water mark computation).
      storage/maria/ma_pagecache.h:
        see ma_pagecache.c
      storage/maria/ma_panic.c:
        comment
      storage/maria/ma_range.c:
        comment
      storage/maria/ma_rename.c:
        - logging LOGREC_RENAME_TABLE; knowing if this is needed, requires
        knowing if the table is transactional, which requires opening the
        table.
        - update create_rename_lsn
        - we need to sync directories only if the table is transactional
      storage/maria/ma_static.c:
        comment
      storage/maria/ma_test_all.sh:
        - tip for Valgrind-ing ma_test_all
        - do "export maria_path=somepath" before calling ma_test_all,
        if you want to run ma_test_all out of storage/maria (useful
        to have parallel runs, like one normal and one Valgrind, they
        must not use the same tables so need to run in different directories)
      storage/maria/maria_def.h:
        - state now contains, in memory and on disk, the create_rename_lsn
        - share now contains a 2-byte-id
      storage/maria/trnman.c:
        preparations for Checkpoint: capture trn->rec_lsn, trn->first_undo_lsn;
        minimum first_undo_lsn needed to know log's low-water-mark
      storage/maria/trnman.h:
        using most significant byte of first_undo_lsn to hold miscellaneous
        flags, for now TRANSACTION_LOGGED_LONG_ID.
        dummy_transaction_object is already declared in ma_static.c.
      storage/maria/trnman_public.h:
        dummy_transaction_object was declared in all files including
        trnman_public.h, while in fact it's a single object.
        new prototype
      storage/maria/unittest/ma_test_loghandler-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        update for new prototype
      storage/maria/ma_commit.c:
        function which wraps:
        - writing a LOGREC_COMMIT record (==commit on disk)
        - calling trnman_commit_trn() (=commit in memory)
      storage/maria/ma_commit.h:
        new header file
      .tree-is-private:
        this file is now needed to keep our tree private (don't push it
        to public trees). When 5.1 is merged into mysql-maria, we can abandon
        our maria-specific post-commit trigger; .tree_is_private will take
        care of keeping commit mails private. Don't push this file to public
        trees.
      1a962591
  15. 19 Jun, 2007 1 commit
    • unknown's avatar
      Monty's fix for Maria's table scan sometimes not seeing all rows; · fd9bd580
      unknown authored
      without the fix, only 896 rows were inserted into t2 in maria-big.test.
      
      
      storage/maria/ma_blockrec.c:
        due to wrong test we were skipping some rows when scanning
      mysql-test/r/maria-big.result:
        result for new test
      mysql-test/t/maria-big.test:
        test for a bug where we missed some rows when scanning
      fd9bd580
  16. 11 Jun, 2007 1 commit
    • unknown's avatar
      - moving pagecache.h from include/ to storage/maria as it is Maria- · 704b39a1
      unknown authored
      specific
      - adding TRN::first_undo_lsn, needed to know when a log can be deleted;
      this variable must be set under log's mutex and that leads to setting
      TRN::rec_lsn, TRN::undo_lsn and TRN::first_undo_lsn in a
      inwrite_rec_hook; adding implementation of one hook for REDOs and one
      for UNDOs. Thus translog_write_record() always uses TRN and so does
      not need a short_id argument, can find it from TRN.
      - Monty's patch for the last Valgrind error in the tree.
      - Log handler's unit tests fail but Sanja says it's known
      
      
      include/Makefile.am:
        pagecache.h moved and renamed
      include/maria.h:
        pagecache.h moved and renamed
      sql/handler.h:
        pagecache.h moved and renamed
      storage/maria/Makefile.am:
        pagecache.h moved and renamed
      storage/maria/ha_maria.cc:
        adding an assertion which sounds logical
      storage/maria/ma_blockrec.c:
        trn->rec_lsn and trn->undo_lsn are now set via hooks inside the log
        record's writing; this allows to also set trn->first_undo_lsn
        needed to compute the log's low-water mark.
        The PAGERANGE_STORE_SIZE -> PAGE_STORE_SIZE is Monty's fix to a
        Valgrind error.
      storage/maria/ma_loghandler.c:
        "tcb" renamed to "trn". Log handler now knows what is a transaction,
        and finds short_id from trn. trn's rec_lsn, undo_lsn, first_undo_lsn
        are now set by some inwrite_rec_hookS (one for REDOs, one for UNDOs).
        The HAVE_purify blocks are Monty's fix to a Valgrind error.
      storage/maria/ma_loghandler.h:
        Log handler functions use TRN, that needs a forward declaration
      storage/maria/ma_pagecache.c:
        pagecache.h was moved and renamed
      storage/maria/ma_pagecache.h:
        pagecache.h was moved and renamed
      storage/maria/ma_pagecaches.c:
        pagecache.h was moved and renamed
      storage/maria/trnman.c:
        initializing some members of TRN.
      storage/maria/trnman.h:
        TRN::first_undo_lsn needed for log's low-water mark calculation
        (which will serve to know which logs can be deleted)
      storage/maria/unittest/ma_test_loghandler-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/test_file.h:
        pagecache.h was moved and renamed
      704b39a1
  17. 09 Jun, 2007 1 commit
    • unknown's avatar
      Fixed compiler warnings · fdfb5148
      unknown authored
      Fixed bug in ma_dbug.c that gave valgrind warning (only relevant when using --debug)
      Fixed bug in blob logging (Fixes valgrind warning)
      maria_getint() -> maria_data_on_page()
      
      
      mysys/safemalloc.c:
        Added debug function to print out where a piece of memory was allocated
      sql/opt_range.cc:
        Remove DBUG_PRINT of unitailized memory
      storage/maria/ma_blockrec.c:
        Fixed bug in blob logging
      storage/maria/ma_check.c:
        Fixed compiler warning
      storage/maria/ma_dbug.c:
        Added missed end++; Caused usage of unitialized memory for nullable keys that was not NULL
      storage/maria/ma_delete.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_init.c:
        Added header file to get rid of warning
      storage/maria/ma_key.c:
        More debugging
      storage/maria/ma_loghandler.c:
        Removed some wrong ';' to get rid of compiler errors when compiling without debugging
        Indentation fixes
        Removed not needed 'break's
        Fixed some compiler warnings
        Added code to detect logging of unitialized memory
      storage/maria/ma_page.c:
        maria_getint() -> maria_data_on_page()
        Clear rest of index page before writing when used with valgrind
        (Fixes warning of writing pages with unitialized data)
      storage/maria/ma_range.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_index.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_index.h:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_key.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_split.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_search.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_test1.c:
        Fixed compiler warning
      storage/maria/ma_write.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/maria_chk.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/maria_def.h:
        maria_getint() -> maria_data_on_page()
      storage/maria/unittest/ma_pagecache_consist.c:
        Fixed compiler warning
      storage/maria/unittest/ma_pagecache_single.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler-t.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Fixed compiler warning
      storage/myisam/mi_dbug.c:
        Added missed end++; Caused usage of unitialized memory for nullable keys that was not NULL
      fdfb5148
  18. 07 Jun, 2007 1 commit
    • unknown's avatar
      fix for memory leak in _ma_scan_init_block_record() (Valgrind error): · f5f2a8a1
      unknown authored
      make Maria support multiple calls to rnd_init() without an rnd_end()
      call in between.
      
      
      storage/maria/ma_blockrec.c:
        as explained in sql/handler.h, multiple calls to rnd_init() without
        a rnd_end() in between, are possible, and engine must be prepared to
        that. So in _ma_scan_init_block_record(), we allocate a buffer
        only if we have not yet one.
      f5f2a8a1
  19. 06 Jun, 2007 1 commit
    • unknown's avatar
      rec_lsn (first REDO LSN( is now given to the page cache on unpinning · 42cde8a7
      unknown authored
      Added maria_clone(), needed by future REPAIR code
      
      
      storage/maria/unittest/ma_pagecache_consist.c:
        Change mode to -rw-rw-r--
      storage/maria/unittest/lockman-t.c:
        Change mode to -rw-rw-r--
      storage/maria/unittest/lockman1-t.c:
        Change mode to -rw-rw-r--
      storage/maria/unittest/lockman2-t.c:
        Change mode to -rw-rw-r--
      storage/maria/unittest/trnman-t.c:
        Change mode to -rw-rw-r--
      include/maria.h:
        Added prototype for maria_clone (for future)
      storage/maria/ha_maria.cc:
        Move filename to share structure
      storage/maria/ma_blockrec.c:
        rec_lsn (first REDO LSN( is now given to the page cache on unpinning
        Removed impossible lock handling in get_head_or_tail_page()
        Changed calls ot translog_write_record() to remember rec_lsn
        Removed some logging in csse of not transactions
      storage/maria/ma_delete.c:
        info->filename -> info->s->open_file_name
      storage/maria/ma_loghandler.c:
        Indentation fixes
      storage/maria/ma_open.c:
        Added maria_clone(), needed by future REPAIR code
      storage/maria/ma_packrec.c:
        Fixed typo in comment
      storage/maria/ma_pagecache.c:
        Added comment.
        Allow setting REC_LSN in case of read lock
      storage/maria/ma_update.c:
        info->filename -> info->s->open_file_name
      storage/maria/ma_write.c:
        info->filename -> info->s->open_file_name
      storage/maria/maria_def.h:
        info->filename -> info->s->open_file_name
        Added have_rtree to simplify test in ma_clone()
      storage/maria/maria_ftdump.c:
        info->filename -> info->s->open_file_name
      storage/maria/maria_pack.c:
        info->filename -> info->s->open_file_name
      storage/maria/trnman.h:
        Added rec_lsn
      42cde8a7
  20. 05 Jun, 2007 2 commits
    • unknown's avatar
      Fixes to get maria.test and ps_maria.test to work · 4423b8bf
      unknown authored
      storage/maria/ma_blockrec.c:
        Reset undo_lsn if not transactional table
        (Avoids assert() when checking LSN in pagecache code)
      storage/maria/ma_create.c:
        Don't convert simple FIXED size tables to BLOCK format.
      storage/maria/trnman.c:
        Reset undo_lsn
      4423b8bf
    • unknown's avatar
      postmerge changes · ef00dbaa
      unknown authored
      ef00dbaa
  21. 04 Jun, 2007 1 commit
    • unknown's avatar
      Fixed that ma_test_all works with -T (simple transaction/logging support) · ffe437be
      unknown authored
      Some fixes from Sanja
      
      
      BitKeeper/etc/ignore:
        added storage/maria/maria_log.*
      include/pagecache.h:
        Always have enum PAGECACHE_EMPTY_PAGE available
        (Simpler code)
      storage/maria/ma_bitmap.c:
        Reset 'debugging' bitmap when creating new one (fixes valgrind warning)
      storage/maria/ma_blockrec.c:
        Removed duplicate (wrong) initialization
        Reset not initialized variable
      storage/maria/ma_check.c:
        Use right page type
        (Patch from Sanja)
      storage/maria/ma_init.c:
        Reset logging in maria_end()
        (Fixes memory leak)
      storage/maria/ma_loghandler.c:
        Add missing copyright header
        Added checking of duplicate calls or calls without init to translog_destroy()
        Don't lock mutex before destroying them (not needed as you can't use a destroyed mutex anyway)
      storage/maria/ma_pagecache.c:
        Added extra page type text
        Trivial indentation fixes
      storage/maria/ma_test1.c:
        Added transaction setup
        (Patch from Sanja)
      storage/maria/ma_test2.c:
        Added transaction setup
        (Patch from Sanja)
      ffe437be
  22. 29 May, 2007 1 commit
    • unknown's avatar
      This patch is a collection of patches from from Sanja, Sergei and Monty. · 8f39541e
      unknown authored
      Added logging and pinning of pages to block format.
      Integration of transaction manager, log handler.
      Better page cache intergration
      Split trnman.h into two files, so that we don't have to include my_atomic.h into C++ programs.
      Renaming of structures, more comments, more debugging etc.
      Fixed problem with small head block + long varchar.
      Added extra argument to delete_record() and update_record() (needed for UNDO logging)
      Small changes to interface of pagecache and log handler.
      Change initialization of log_record_type_descriptors to not be depending on enum order.
      Use array of LEX_STRING's to send data to log handler
      Added 'dummy' transaction option to MARIA_INFO so that we can always assume 'trn' exists.
      
      
      include/lf.h:
        Interface fixes
        Rename of structures
        (Patch from Sergei via Sanja)
      include/my_atomic.h:
        More comments
      include/my_global.h:
        Added MY_ERRPTR
      include/pagecache.h:
        Added undo LSN when unlocking pages
      mysql-test/r/maria.result:
        Updated results
      mysql-test/t/maria.test:
        Added autocommit around lock tables
        (Patch from Sanja)
      mysys/lf_alloc-pin.c:
        Post-review fixes, simple optimizations
        More comments
        Struct slot renames
        Check amount of memory on stack
        (Patch from Sergei)
      mysys/lf_dynarray.c:
        More comments
      mysys/lf_hash.c:
        More comments
        After review fixes
        (Patch from Sergei)
      storage/maria/ha_maria.cc:
        Split trnman.h into two files, so that we don't have to include my_atomic.h into the .cc program.
        (Temporary fix to avoid bug in gcc)
        Move out all deferencing of the transaction structure.
        Transaction manager integrated (Patch from Sergei)
      storage/maria/ha_maria.h:
        Added prototype for start_stmt()
      storage/maria/lockman.c:
        Function call rename
      storage/maria/ma_bitmap.c:
        Mark deleted pages free from page cache
      storage/maria/ma_blockrec.c:
        Offset -> rownr
        More debugging
        Fixed problem with small head block + long varchar
        Added logging of changed pages
        Added logging of undo (Including only loggging of changed fields in case of update)
        Added pinning/unpinning of all changed pages
        More comments
        Added free_full_pages() as the same code was used in several places.
        fill_rows_parts() renamed as fill_insert_undo_parts()
        offset -> rownr
        Added some optimization of not transactional tables
        _ma_update_block_record() has new parameter, as we need original row to do efficent undo for update
      storage/maria/ma_blockrec.h:
        Added ROW_EXTENTS_ON_STACK
        Changed prototype for update and delete of row
      storage/maria/ma_check.c:
        Added original row to delete_record() call
      storage/maria/ma_control_file.h:
        Added ifdefs for C++
      storage/maria/ma_delete.c:
        Added original row to delete_record() call
        (Needed for efficent undo logging)
      storage/maria/ma_dynrec.c:
        Added extra argument to delete_record() and update_record()
        Removed not used variable
      storage/maria/ma_init.c:
        Initialize log handler
      storage/maria/ma_loghandler.c:
        Removed not used variable
        Change initialization of log_record_type_descriptors to not be depending on enum order
        Use array of LEX_STRING's to send data to log handler
      storage/maria/ma_loghandler.h:
        New defines
        Use array of LEX_STRING's to send data to log handler
      storage/maria/ma_open.c:
        Added 'dummy' transaction option to MARIA_INFO so that we can always assume 'trn' exists.
        Store in MARIA_SHARE->page_type if pages will have up to date LSN's
      storage/maria/ma_pagecache.c:
        Don't decrease number of readers when using pagecache_write()/pagecache_read()
        In pagecache_write() decrement request count if page was left pinned
        Added pagecache_delete_pages()
        Removed some casts
        Make trace output consistent with rest of code
        Simplify calling of DBUG_ASSERT(0)
        Only update LSN if the LSN is bigger than what's already on the page
        Added LSN parameter pagecache_unpin_page(), pagecache_unpin(), and pagecache_unlock()
        (Part of patch from Sanja)
      storage/maria/ma_static.c:
        Added 'dummy' transaction option to MARIA_INFO so that we can always assume 'trn' exists.
        Added default page cache
      storage/maria/ma_statrec.c:
        Added extra argument to delete_record() and update_record()
      storage/maria/ma_test1.c:
        Added option -T for transactions
      storage/maria/ma_test2.c:
        Added option -T for transactions
      storage/maria/ma_test_all.sh:
        Test with transactions
      storage/maria/ma_update.c:
        Changed prototype for update of row
      storage/maria/maria_def.h:
        Changed prototype for update & delete of row as block records need to access the old row
        Store in MARIA_SHARE->page_type if pages will have up to date LSN's
        Added MARIA_MAX_TREE_LEVELS to allow us to calculate the number of possible pinned pages we may need.
        Removed not used 'empty_bits_buffer'
        Added pointer to transaction object
        Added array for pinned pages
        Added log_row_parts array for logging of field data.
        Added MARIA_PINNED_PAGE to store pinned pages
      storage/maria/trnman.c:
        Added accessor functions to transaction object
        Added missing DBUG_RETURN()
        More debugging
        More comments
        Changed // comment of code to #ifdef NOT_USED
        Transaction manager integrated.
        Post review fixes
        Part of patch originally from Sergei
      storage/maria/trnman.h:
        Split trnman.h into two files, so that we don't have to include my_atomic.h into the .cc program.
        (Temporary fix to avoid bug in gcc)
      storage/maria/unittest/ma_pagecache_single.c:
        Added missing argument
        Added SKIP_BIG_TESTS
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/trnman-t.c:
        Stack overflow detection
        (Patch from Sergei)
      unittest/unit.pl:
        Command-line options --big and --verbose
        (Patch from Sergei)
      unittest/mytap/tap.c:
        Detect --big
        (Patch from Sergei)
      unittest/mytap/tap.h:
        Skip_big_tests and SKIP_BIG_TESTS
        (Patch from Sergei)
      storage/maria/trnman_public.h:
        New BitKeeper file ``storage/maria/trnman_public.h''
      8f39541e
  23. 25 Apr, 2007 1 commit
  24. 19 Apr, 2007 2 commits
    • unknown's avatar
      After merge fixes · 6686a3ee
      unknown authored
      Read blocks through page cache in check_block_record()
      Don't read first bitmap on ma_open()
      Don't require that a files block_size is equal to maria_block_size, if page cache is not setup yet.
      Changed ma_test1, ma_test2, maria_chk and maria_pack to always create a page cache.
      The above fixes so that ma_test_all now works again
      
      
      
      BitKeeper/etc/ignore:
        added storage/maria/unittest/ma_pagecache_consist_1k-t-big storage/maria/unittest/ma_pagecache_consist_1kHC-t-big storage/maria/unittest/ma_pagecache_consist_1kRD-t-big storage/maria/unittest/ma_pagecache_consist_1kWR-t-big storage/maria/unittest/ma_pagecache_consist_64k-t-big storage/maria/unittest/ma_pagecache_consist_64kHC-t-big storage/maria/unittest/ma_pagecache_consist_64kRD-t-big storage/maria/unittest/ma_pagecache_consist_64kWR-t-big storage/maria/unittest/ma_pagecache_single_64k-t-big
      include/maria.h:
        Added MARIA_MIN_PAGE_CACHE_SIZE
      include/pagecache.h:
        Filedescriptors should be of type File
      storage/maria/ma_bitmap.c:
        After merge fixes
        Create dummy bitmap on startup (can't read first bitmap becasue page cache may not be set up yet)
      storage/maria/ma_blockrec.c:
        After merge fixes
      storage/maria/ma_check.c:
        Use page cache to read rows-in-block rows.
        Don't initialize page cache; It's now done in maria_chk
      storage/maria/ma_dynrec.c:
        Trivial code reorganization
      storage/maria/ma_open.c:
        Don't give error for conflicting block size if page cache is not initalized.
        (Needed for maria_chk to be able to work on tables with different page sizes)
        After merge fixes
      storage/maria/ma_page.c:
        Fix compiler warning
        Remove net needed asserts (Guranteed by ma_create())
      storage/maria/ma_pagecache.c:
        Allow one to create a page cache with just one block
        (For trivail scan of table)
        Trivial code simplication
      storage/maria/ma_test1.c:
        Always create a page cache (Maria now requires a page cache to work)
      storage/maria/ma_test2.c:
        Always create a page cache (Maria now requires a page cache to work)
      storage/maria/maria_chk.c:
        Remove command line options --maria_block_size and --pagecache_block_size.
        Set the global maria_block_size from the data file. This allows maria_chk to work with tables of different block sizes.
        Simply DESCRIPT handling; Allows us to remove one indentation level in maria_chk().
        Always initialize page cache if we are doing check/repair.
        (Most of the patch is reindentation of the code)
      storage/maria/maria_def.h:
        After merge fix
      storage/maria/maria_pack.c:
        Set maria_block_size based on the files block_size.
        Initalize page cache (needed for getting rows-in-blocks to works)
      6686a3ee
    • unknown's avatar
      Fixes after review of guilhem of block record patch · eb7d9500
      unknown authored
      Short overview:
      Changed a lot of variable, functions, defines and struct elements to use more readable names
      More comments (mostly function and structure slot comments)
      
      Other things:
      Changed 'USE_WHOLE_KEY' to a big number to not interfer with long keys
      Ensure that tail block are at least of size 'MIN_TAIL_SIZE'
      Allow longer keys and key parts than before (don't limit Maria interface by HA_MAX_KEY_LENGTH)
      Use ma_chsize() to write initial bitmap page
      Added checking if using file with wrong block_size
      Added issing types to type_names[] (for maria_chk -d)
      Added maria_max_key_length()
      
      
      include/maria.h:
        Changed maria_portable_size_char_ptr to portable_size_char_ptr and moved it to my_handler.h
        Removed not used variable maria_delay_rec_write.
        More comments
      include/my_handler.h:
        Added portable_sizeof_char_ptr
      include/myisam.h:
        Changed mi_portable_size_char_ptr to portable_size_char_ptr and moved it to my_handler.h
      mysql-test/r/maria.result:
        Fix results when we now have a longer key length
      mysql-test/t/maria.test:
        More tests
      mysys/my_pread.c:
        Code cleanup
      sql/net_serv.cc:
        Changed warning to note (as in main 5.1 tree) to avoid not critical failing tests
      sql/sql_select.cc:
        Use portable_sizeof_char_ptr
      storage/maria/ha_maria.cc:
        Added max_supported_key_length(), as this is not a trival function anymore
      storage/maria/ha_maria.h:
        Moved max_supported_key_length(), as this is not a trival function anymore
      storage/maria/ma_bitmap.c:
        Lots of new comments
        Added maria_bitmap_marker[] to mark 2 last bytes of each bitmap (for corruption detection)
        Trivial code changes (based on review comments)
      storage/maria/ma_blockrec.c:
        More code comments
        Renamed _block_row() functions to _block_record()
        Trivial code changes, based on review comments
        Moved Code from maria_close() to _ma_end_block_record()
        Some function renames to make things more understandable
        DIR_ENTRY_OFFSET -> DIR_COUNT_OFFSET
        keybuff_used -> keyread_buff_used
        ma_recordpos_to_offset -> ma_recordpos_to_dir_entry
        Changed some 'rec' named variables to 'column'.
        Ensure that tail block are at least of size 'MIN_TAIL_SIZE'
      storage/maria/ma_blockrec.h:
        More comments
        DIRCOUNT_SIZE -> DIR_COUNT_SIZE
        Added define for maira_bitmap_marker[]
        ma_recordpos_to_offset -> ma_recordpos_to_dir_entry
        xxx_block_row() -> xxx_block_record()
        Made _ma_read_bitmap_page() static
      storage/maria/ma_check.c:
        More comments
        ma_recordpos_to_offset() -> ma_recordpos_to_dir_entry()
        DIR_ENTRY_OFFSET -> DIR_COUNT_OFFSET
        rec variables -> column variables
        recdef -> columndef
      storage/maria/ma_checksum.c:
        rec -> column
        Avoid an 'if' in _ma_checksum() for the common case
      storage/maria/ma_close.c:
        Moved resetting of info->dfile to ma_end_once_block_record()
      storage/maria/ma_create.c:
        Some variable changes to make things more readable:
        recinfo -> columndef
        rec -> column
        rec_end -> end_column
        record_type -> datafile_type
        ma_recinfo_write() -> ma_columndef_write()
        Fixed wrong setting of 'data_file_length'; Now max_rows should be calculated correctly
        New check if too long key.
        Use ma_chsize() to write bitmap page.
      storage/maria/ma_delete.c:
        keybuff_used -> keyread_buff_used
      storage/maria/ma_dynrec.c:
        rec -> columndef
        rec_length -> column_length
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
        Better comment for _ma_read_rnd_dynamic_record()
      storage/maria/ma_ft_eval.c:
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/maria/ma_ft_test1.c:
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/maria/ma_ft_update.c:
        keybuff_used -> keyread_buff_used
      storage/maria/ma_info.c:
        More comments
      storage/maria/ma_open.c:
        Added checking if using file with wrong block_size
        New checking of max_key_length
        rec -> columndef
        _ma_recinfo_write -> _ma_columndef_write
        Don't change block_size (as this is checked in ma_create())
        More comments
      storage/maria/ma_packrec.c:
        Trivial code changes
        rec -> columndef
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/maria/ma_page.c:
        keybuff_used -> keyread_buff_used
      storage/maria/ma_rkey.c:
        Removed not needded empty line
      storage/maria/ma_rrnd.c:
        Removed not used variable
      storage/maria/ma_rt_index.c:
        keybuff_used -> keyread_buff_used
      storage/maria/ma_search.c:
        keybuff_used -> keyread_buff_used
        Trivial code changes
      storage/maria/ma_sp_test.c:
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/maria/ma_test1.c:
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/maria/ma_test2.c:
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/maria/ma_update.c:
        Updated comment
      storage/maria/ma_write.c:
        keybuff_used -> keyread_buff_used
      storage/maria/maria_chk.c:
        Added missing types to type_names[]
        Removed not used variable
        rec -> columndef
        Replaced some numbers with define flags
      storage/maria/maria_def.h:
        More comments
        Added 'MARIA_INDEX_MIN_OVERHEAD_SIZE'
        rec -> columndef
        keybuff_used -> keyread_buff_used
        _ma_recinfo_write -> _ma_culumndef_write
        _ma_recinfo_read -> _ma_columndef_read
        Changed 'USE_WHOLE_KEY' to a big number to not interfer with long keys
        Added maria_max_key_length()
      storage/maria/maria_pack.c:
        Updated message strings
        rec -> columndef
        maria_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
        More comments
      storage/myisam/ft_eval.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/ft_test1.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/mi_checksum.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/mi_create.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/mi_dynrec.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/mi_open.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/mi_packrec.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/mi_rkey.c:
        Unlock mutex also in case of error
      storage/myisam/mi_test1.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/mi_test2.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/myisampack.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      storage/myisam/sp_test.c:
        mi_portable_sizeof_char_ptr -> portable_sizeof_char_ptr
      support-files/magic:
        Fixed typo
      eb7d9500
  25. 18 Apr, 2007 1 commit
    • unknown's avatar
      Postmerge fixes. · 92e99ce4
      unknown authored
      added forgoten file.
      
      The patch broke maria.test (will be fixed later)
      
      
      sql/handler.cc:
        Pagecache block should be equal maria block.
      sql/mysqld.cc:
        parameters Fixed.
      storage/maria/ma_bitmap.c:
        fixed typo.
      storage/maria/ma_blockrec.c:
        fixed typo.
      storage/maria/ma_delete_all.c:
        fixed typo.
      storage/maria/ma_page.c:
        fixed typo.
      storage/maria/ma_pagecache.c:
        pin/lock debugging protection activated by default.
      storage/maria/ma_pagecaches.c:
        parameters Fixed.
      storage/maria/ma_preload.c:
        fixed typo.
      mysys/my_safehash.c:
        New BitKeeper file ``mysys/my_safehash.c''
      92e99ce4
  26. 12 Apr, 2007 1 commit
    • unknown's avatar
      Enabled ps_maria.test · bd65a4f5
      unknown authored
      Fixed bug in field-is-zero detection
      Fixed bug in truncate file (datafile was not properly initialized)
      
      
      mysql-test/t/disabled.def:
        Enable ps_maria
      storage/maria/ma_bitmap.c:
        Added reset of bitmap (for truncate)
      storage/maria/ma_blockrec.c:
        Fixed bug in zero detection
      storage/maria/ma_blockrec.h:
        New prototype
      storage/maria/ma_create.c:
        Moved initialzation of datafile to separate function
      storage/maria/ma_delete_all.c:
        Added initializtion of data file
      storage/maria/maria_def.h:
        New prototype
      bd65a4f5
  27. 06 Apr, 2007 1 commit
    • unknown's avatar
      After merge fixes · 1a392bf6
      unknown authored
      Fixed test for row based replication
      
      
      mysql-test/mysql-test-run.pl:
        After merge fix
      mysql-test/r/maria.result:
        Fixed test for row based replication
      mysql-test/t/maria.test:
        Fixed test for row based replication
      storage/maria/ha_maria.cc:
        After merge fix
      storage/maria/ma_blockrec.c:
        Better to clear whole page, as 'length' may be bigger than what we need.
      storage/maria/ma_loghandler.c:
        Fix compiler warning
        Removed access to not initialized memory
      storage/maria/ma_open.c:
        Remove wrong (not needed) test
      1a392bf6
  28. 05 Apr, 2007 1 commit
    • unknown's avatar
      Fixed that maria.test works · 0abffa05
      unknown authored
      BUILD/SETUP.sh:
        Update from 5.1
      include/maria.h:
        Moved structs into size order
      mysql-test/include/varchar.inc:
        Fixed error numbers (as in 5.1)
      mysql-test/mysql-test-run.pl:
        Updated from 5.1
        Create a dummy mysql.err file if using --valgrind --debug
      mysql-test/lib/init_db.sql:
        Update from 5.1
      mysql-test/lib/mtr_cases.pl:
        Update from 5.1
      mysql-test/lib/mtr_diff.pl:
        Update from 5.1
      mysql-test/lib/mtr_gcov.pl:
        Update from 5.1
      mysql-test/lib/mtr_gprof.pl:
        Update from 5.1
      mysql-test/lib/mtr_im.pl:
        Update from 5.1
      mysql-test/lib/mtr_io.pl:
        Update from 5.1
      mysql-test/lib/mtr_match.pl:
        Update from 5.1
      mysql-test/lib/mtr_misc.pl:
        Update from 5.1
      mysql-test/lib/mtr_process.pl:
        Update from 5.1
      mysql-test/lib/mtr_report.pl:
        Update from 5.1
      mysql-test/lib/mtr_stress.pl:
        Update from 5.1
      mysql-test/lib/mtr_timer.pl:
        Update from 5.1
      mysql-test/lib/mtr_unique.pl:
        Update from 5.1
      mysql-test/r/maria.result:
        Updated results. The reason for the new results are:
        
        - Maria doesn't support REPAIR TABLE or OPTIMIZE table yet
        - Some statistics information is different, so MySQL prefers index reads instead of table scans
        - No support for concurrent writes in the default BLOCK_RECORD mode
        - No support for different KEY_BLOCK sizes (will not be fixed)
      mysql-test/t/disabled.def:
        Enable maria test
      mysql-test/t/maria.test:
        No support for concurrent writes in the default BLOCK_RECORD mode
        No support for different KEY_BLOCK sizes (will not be fixed)
      mysql-test/t/myisam.test:
        Fix to be able to run with --extern
      mysql-test/t/query_cache_notembedded.test:
        Fix to be able to run with --extern
      sql/filesort.cc:
        Fixed compiler warning
      sql/handler.cc:
        Use new error message (as in 5.1)
      sql/share/errmsg.txt:
        Update error messages (as in 5.1)
      sql/slave.cc:
        Fixed compiler warning
      sql/slave.h:
        Fixed compiler warning
      sql/sql_table.cc:
        Fixed compiler warning
      storage/maria/ha_maria.cc:
        Added better scan_time()
        Disble REPAIR on BLOCK_RECORD tables
        Added rnd_end() to free memory after scan
        Don't pack numerical primary keys
        Don't allow fast alter table if row type changes
      storage/maria/ha_maria.h:
        Added get_row_type(), scan_time() and rnd_end()
      BitKeeper/etc/ignore:
        Added storage/maria/unittest/mf_pagecache_consist_1k-t-big storage/maria/unittest/mf_pagecache_consist_1kHC-t-big storage/maria/unittest/mf_pagecache_consist_1kRD-t-big storage/maria/unittest/mf_pagecache_consist_1kWR-t-big storage/maria/unittest/mf_pagecache_consist_64k-t-big storage/maria/unittest/mf_pagecache_consist_64kHC-t-big storage/maria/unittest/mf_pagecache_consist_64kRD-t-big storage/maria/unittest/mf_pagecache_consist_64kWR-t-big storage/maria/unittest/mf_pagecache_single_64k-t-big to the ignore list
      storage/maria/ma_bitmap.c:
        Fixed some bugs found with maria.test
        Added more DBUG_PRINT and some more comments
      storage/maria/ma_blockrec.c:
        Fixed some bugs found with maria.test
        Simplified code
        More comments
      storage/maria/ma_blockrec.h:
        Added DBUG_ASSERT()
      storage/maria/ma_check.c:
        Don't check record data links with block_records
        Update state.changed properly
      storage/maria/ma_checksum.c:
        Fixed bug in checksum handling (only first field was calculated)
      storage/maria/ma_create.c:
        Set rec->fill_length properly
        Added extra testing needed for BLOCK_RECORD
        Fixed bug in unlock of not locked mutex
        Fixed memory leak
      storage/maria/ma_delete.c:
        Update state.changed
      storage/maria/ma_delete_all.c:
        Update state.changed
      storage/maria/ma_extra.c:
        Disable caching of rows if we are using BLOCK_RECORD
        (scan_init will enable caching of rows when using BLOCK_RECORD)
      storage/maria/ma_info.c:
        Added data_file_type
      storage/maria/ma_search.c:
        Fixed bug with signed bytes
      storage/maria/ma_test2.c:
        Fixed wrong pointer handling (caused crash on 64 bit machines)
      storage/maria/ma_write.c:
        Added DBUG_ statements
      storage/maria/maria_def.h:
        Added STATE_NOT_OPTIMIZED_ROWS
      storage/myisam/mi_create.c:
        Fixed bug with unlocking of not locked mutex (in case of error condition)
      storage/myisam/mi_test2.c:
        Fixed wrong pointer handling (caused crash on 64 bit machines)
      0abffa05
  29. 04 Apr, 2007 1 commit
    • unknown's avatar
      Pagecache integration for review. · 39d64a1d
      unknown authored
      storage/maria/unittest/ma_pagecache_single.c:
        Rename: storage/maria/unittest/mf_pagecache_single.c -> storage/maria/unittest/ma_pagecache_single.c
      include/maria.h:
        Pagecache integration.
      include/myisamchk.h:
        Pagecache integration.
      include/pagecache.h:
        removed WRITE_NOW mode
        Pagecache parameters management.
      mysys/Makefile.am:
        Safe hash procedures moved to the separate file.
        Pagecache moved to maria engine directory.
      mysys/mf_keycaches.c:
        Safe hash procedures moved to the separate file.
      sql/handler.cc:
        Pageccahe integration.
      sql/handler.h:
        Pagecache integration.
      sql/mysql_priv.h:
        pagecache integration
      sql/mysqld.cc:
        pagecache integration
      sql/set_var.cc:
        Pagecache integration.
      sql/set_var.h:
        Pagecache integration.
      storage/maria/Makefile.am:
        Pagecache integration and moving to maria engine directory.
      storage/maria/ha_maria.cc:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_bitmap.c:
        Pagecache integration.
      storage/maria/ma_blockrec.c:
        Pagecache integration.
      storage/maria/ma_check.c:
        File changed on PAGECCAHE_FILE.
        Pagecache integration.
      storage/maria/ma_close.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_delete_all.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_dynrec.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_extra.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_info.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_keycache.c:
        Pagecache integration.
      storage/maria/ma_locking.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_loghandler.c:
        Assert added.
      storage/maria/ma_loghandler.h:
        extern specifier added.
      storage/maria/ma_open.c:
        Pagecache integration.
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_packrec.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_page.c:
        Pagecache integration.
      storage/maria/ma_pagecache.c:
        Pagecache renamed and moved to the maria directory.
        BLOCK_* defines renamed to avoid conflict with BLOCK_ERROR defined in maria_def.h
      storage/maria/ma_panic.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_preload.c:
        Pagecache integration.
        File changed on PAGECCAHE_FILE.
      storage/maria/ma_static.c:
        Pagecache integration.
      storage/maria/ma_test1.c:
        Pagecache integration.
      storage/maria/ma_test2.c:
        Pagecache integration.
      storage/maria/ma_test3.c:
        Pagecache integration.
      storage/maria/ma_write.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/maria_chk.c:
        Pagecache integration.
        File changed on PAGECCAHE_FILE.
      storage/maria/maria_def.h:
        Pagecache integration.
        File changed on PAGECCAHE_FILE.
      storage/maria/maria_ftdump.c:
        Pagecache integration.
      storage/maria/maria_pack.c:
        File changed on PAGECCAHE_FILE.
      storage/maria/unittest/Makefile.am:
        Pagecache moved to the maria directory.
      storage/maria/unittest/ma_pagecache_consist.c:
        fixed using uninitialized variable
      storage/maria/ma_pagecaches.c:
        New BitKeeper file ``storage/maria/ma_pagecaches.c''
      mysys/my_safehash.h:
        New BitKeeper file ``mysys/my_safehash.h''
      39d64a1d
  30. 02 Mar, 2007 1 commit
    • unknown's avatar
      GPL license update (same change as was done for all files in 5.1). · 46922b51
      unknown authored
      storage/maria/Makefile.am:
        GPL license update
      storage/maria/ft_maria.c:
        GPL license update
      storage/maria/ha_maria.cc:
        GPL license update
      storage/maria/ha_maria.h:
        GPL license update
      storage/maria/lockman.c:
        GPL license update
      storage/maria/lockman.h:
        GPL license update
      storage/maria/ma_bitmap.c:
        GPL license update
      storage/maria/ma_blockrec.c:
        GPL license update
      storage/maria/ma_blockrec.h:
        GPL license update
      storage/maria/ma_cache.c:
        GPL license update
      storage/maria/ma_changed.c:
        GPL license update
      storage/maria/ma_check.c:
        GPL license update
      storage/maria/ma_checkpoint.c:
        GPL license update
      storage/maria/ma_checkpoint.h:
        GPL license update
      storage/maria/ma_checksum.c:
        GPL license update
      storage/maria/ma_close.c:
        GPL license update
      storage/maria/ma_control_file.c:
        GPL license update
      storage/maria/ma_control_file.h:
        GPL license update
      storage/maria/ma_create.c:
        GPL license update
      storage/maria/ma_dbug.c:
        GPL license update
      storage/maria/ma_delete.c:
        GPL license update
      storage/maria/ma_delete_all.c:
        GPL license update
      storage/maria/ma_delete_table.c:
        GPL license update
      storage/maria/ma_dynrec.c:
        GPL license update
      storage/maria/ma_extra.c:
        GPL license update
      storage/maria/ma_ft_boolean_search.c:
        GPL license update
      storage/maria/ma_ft_eval.c:
        GPL license update
      storage/maria/ma_ft_eval.h:
        GPL license update
      storage/maria/ma_ft_nlq_search.c:
        GPL license update
      storage/maria/ma_ft_parser.c:
        GPL license update
      storage/maria/ma_ft_stem.c:
        GPL license update
      storage/maria/ma_ft_test1.c:
        GPL license update
      storage/maria/ma_ft_test1.h:
        GPL license update
      storage/maria/ma_ft_update.c:
        GPL license update
      storage/maria/ma_ftdefs.h:
        GPL license update
      storage/maria/ma_fulltext.h:
        GPL license update
      storage/maria/ma_info.c:
        GPL license update
      storage/maria/ma_init.c:
        GPL license update
      storage/maria/ma_key.c:
        GPL license update
      storage/maria/ma_keycache.c:
        GPL license update
      storage/maria/ma_least_recently_dirtied.c:
        GPL license update
      storage/maria/ma_least_recently_dirtied.h:
        GPL license update
      storage/maria/ma_locking.c:
        GPL license update
      storage/maria/ma_open.c:
        GPL license update
      storage/maria/ma_packrec.c:
        GPL license update
      storage/maria/ma_page.c:
        GPL license update
      storage/maria/ma_panic.c:
        GPL license update
      storage/maria/ma_preload.c:
        GPL license update
      storage/maria/ma_range.c:
        GPL license update
      storage/maria/ma_recovery.c:
        GPL license update
      storage/maria/ma_recovery.h:
        GPL license update
      storage/maria/ma_rename.c:
        GPL license update
      storage/maria/ma_rfirst.c:
        GPL license update
      storage/maria/ma_rkey.c:
        GPL license update
      storage/maria/ma_rlast.c:
        GPL license update
      storage/maria/ma_rnext.c:
        GPL license update
      storage/maria/ma_rnext_same.c:
        GPL license update
      storage/maria/ma_rprev.c:
        GPL license update
      storage/maria/ma_rrnd.c:
        GPL license update
      storage/maria/ma_rsame.c:
        GPL license update
      storage/maria/ma_rsamepos.c:
        GPL license update
      storage/maria/ma_rt_index.c:
        GPL license update
      storage/maria/ma_rt_index.h:
        GPL license update
      storage/maria/ma_rt_key.c:
        GPL license update
      storage/maria/ma_rt_key.h:
        GPL license update
      storage/maria/ma_rt_mbr.c:
        GPL license update
      storage/maria/ma_rt_mbr.h:
        GPL license update
      storage/maria/ma_rt_split.c:
        GPL license update
      storage/maria/ma_rt_test.c:
        GPL license update
      storage/maria/ma_scan.c:
        GPL license update
      storage/maria/ma_search.c:
        GPL license update
      storage/maria/ma_sort.c:
        GPL license update
      storage/maria/ma_sp_defs.h:
        GPL license update
      storage/maria/ma_sp_key.c:
        GPL license update
      storage/maria/ma_sp_test.c:
        GPL license update
      storage/maria/ma_static.c:
        GPL license update
      storage/maria/ma_statrec.c:
        GPL license update
      storage/maria/ma_test1.c:
        GPL license update
      storage/maria/ma_test2.c:
        GPL license update
      storage/maria/ma_test3.c:
        GPL license update
      storage/maria/ma_unique.c:
        GPL license update
      storage/maria/ma_update.c:
        GPL license update
      storage/maria/ma_write.c:
        GPL license update
      storage/maria/maria_chk.c:
        GPL license update
      storage/maria/maria_def.h:
        GPL license update
      storage/maria/maria_ftdump.c:
        GPL license update
      storage/maria/maria_pack.c:
        GPL license update
      storage/maria/tablockman.c:
        GPL license update
      storage/maria/tablockman.h:
        GPL license update
      storage/maria/trnman.c:
        GPL license update
      storage/maria/trnman.h:
        GPL license update
      46922b51
  31. 26 Jan, 2007 1 commit
    • unknown's avatar
      After merge fixes · 7412f0fa
      unknown authored
      Removed compiler warnings
      Fixed clashing function name in maria
      Disable maria tests from MySQL level for now
      
      
      BitKeeper/deleted/.del-ha_maria.cc:
        Rename: libmysqld/ha_maria.cc -> BitKeeper/deleted/.del-ha_maria.cc
      BitKeeper/etc/ignore:
        added libmysqld/ha_maria.cc
        ---
        added storage/maria/unittest/maria_control unittest/maria_control
        ---
        added *.Tpo
        ---
        added unittest/page_cache_test_file_1
        ---
        added unittest/pagecache_debug.log
        ---
        added unittest/mysys/mf_pagecache_consist_1k-t-big unittest/mysys/mf_pagecache_consist_1kHC-t-big unittest/mysys/mf_pagecache_consist_1kRD-t-big unittest/mysys/mf_pagecache_consist_1kWR-t-big unittest/mysys/mf_pagecache_consist_64k-t-big unittest/mysys/mf_pagecache_consist_64kHC-t-big unittest/mysys/mf_pagecache_consist_64kRD-t-big unittest/mysys/mf_pagecache_consist_64kWR-t-big
        ---
        added unittest/mysys/mf_pagecache_single_64k-t-big
      Makefile.am:
        Don't run 'test-unit' by default (takes too long time)
      client/mysqldump.c:
        Fixed compiler warning
      include/lf.h:
        Remove compiler warnings about not used require_pins constant
      include/pagecache.h:
        LSN should be of type ulonglong
        (This fixes some compiler warnings)
      mysql-test/r/events_logs_tests.result:
        Make test predictable
      mysql-test/r/view.result:
        Make test results predictable
      mysql-test/t/disabled.def:
        Disable maria tests for a while
      mysql-test/t/events_logs_tests.test:
        Make test predictable
      mysql-test/t/view.test:
        Make test results predictable
      mysys/lf_alloc-pin.c:
        #warning ->QQ
      mysys/lf_hash.c:
        #warning ->QQ
        Removed compiler warnings
      mysys/mf_pagecache.c:
        Removed compiler warnings
      mysys/my_rename.c:
        Removed compiler warnings
      plugin/daemon_example/daemon_example.c:
        Remove compiler warning
      sql/ha_ndbcluster.cc:
        Remove compiler warning
      sql/udf_example.c:
        Remove compiler warning
      storage/maria/lockman.c:
        Changed #warnings to QQ comment
        Removed compiler warnings
      storage/maria/ma_blockrec.c:
        Removed compiler warnings
      storage/maria/ma_check.c:
        After merge fixes
      storage/maria/ma_key.c:
        After merge fixes
      storage/maria/ma_packrec.c:
        After merge fixes
      storage/maria/ma_rkey.c:
        After merge fixes
      storage/maria/ma_sort.c:
        After merge fixes
      storage/maria/ma_sp_defs.h:
        Rename clashing function name
      storage/maria/ma_sp_key.c:
        Rename clashing function name
      storage/maria/ma_test_all.res:
        New test results
      storage/maria/ma_unique.c:
        Fixed compiler warning
      storage/maria/tablockman.c:
        #warning -> QQ
      storage/maria/tablockman.h:
        #warning -> QQ
      storage/maria/trnman.c:
        #warning -> QQ
      storage/maria/unittest/lockman2-t.c:
        Removed compiler warnings
      storage/maria/unittest/ma_control_file-t.c:
        Removed warning for 'maria_control' file not found
      storage/maria/unittest/trnman-t.c:
        Removed compiler warnings
      storage/ndb/src/mgmapi/mgmapi.cpp:
        Remove compiler warnings
      unittest/mysys/mf_pagecache_consist.c:
        Removed compiler warnings
      unittest/mysys/my_atomic-t.c:
        Removed compiler warnings
      7412f0fa
  32. 18 Jan, 2007 1 commit
    • unknown's avatar
      Implementation of rows-in-block · 345959c6
      unknown authored
      - Fixes some things missed in myisam->maria port
      - Moved variables that holds the state for the current row to 'cur_row'
      - Changed most uchar * to byte * to be able to remove a lot of casts
      - Removed RAID support
      - Added CHECK for rows-in-block
      - Added allocate_dynamic() for easier usage of dynamic rows when we know how many entries we will need
      - Reorder columns after CREATE for more optimal row storage (for rows-in-block)
      - Removed flag 'RRND_PRESERVER_LASTINX' (not needed)
      - Extended ma_test_all.sh to test more completely all row formats
      - New structs and variables to hold rows-in-block and bitmap information
      - Added org_data_file_type in header to allow easy restore of old record format when doing maria_pack / maria_chk -u
      - More virtual functions to handle different row types
      - Pointer to row is now MARIA_RECORD_POS instead of my_off_t
      - New header signature for MARIA index files
      - Fixed bugs in ma_test1.c and ma_test2.c
      - All key and row blocks are now of same size
      - We now only have one link chain for deleted key blocks
      
      
      include/m_string.h:
        Define bzero_if_purify
      include/maria.h:
        Implementation of rows-in-block
      include/my_base.h:
        Implementation of rows-in-block
      include/my_handler.h:
        Cleanup macros
        Added size_to_store_key_length()
      include/my_sys.h:
        Added 'allocate_dynamic()'
      include/myisamchk.h:
        Implementation of rows-in-block
      mysys/array.c:
        Added allocate_dynamic()
      mysys/mf_keycache.c:
        Moved DBUG_ENTER to it's right position
      mysys/my_pread.c:
        Ensure my_errno is always set
      sql/filesort.cc:
        Fixed some compiler warnings
      sql/gen_lex_hash.cc:
        Removed not needed 'inline'
      sql/ha_maria.cc:
        Implementation of rows-in-block
        Fixed compiler warnings
      sql/mysqld.cc:
        Fixed setting of wrong variable
      sql/uniques.cc:
        Fixed compiler warnings
      storage/maria/Makefile.am:
        Implementation of rows-in-block
      storage/maria/ma_check.c:
        Removed RAID functions
        Added support for CHECK of rows-in-blocks rows
      storage/maria/ma_checksum.c:
        Implementation of rows-in-block
      storage/maria/ma_close.c:
        Implementation of rows-in-block
      storage/maria/ma_create.c:
        Implementation of rows-in-block:
        - Reorder columns
        - All key blocks are now of same size
        - Removed old RAID support
      storage/maria/ma_dbug.c:
        Implementation of rows-in-block
      storage/maria/ma_delete.c:
        Implementation of rows-in-block
      storage/maria/ma_delete_all.c:
        Implementation of rows-in-block
      storage/maria/ma_dynrec.c:
        info->rec_buff is now allocated through _ma_alloc_buffer()
        Use new info->cur_row structure
      storage/maria/ma_extra.c:
        Implementation of rows-in-block
      storage/maria/ma_ft_boolean_search.c:
        Removed compiler warnings
        Indentation fixes
      storage/maria/ma_ft_nlq_search.c:
        Removed compiler warnings
        Indentation fixes
      storage/maria/ma_ft_update.c:
        Removed some casts
      storage/maria/ma_fulltext.h:
        Changed pointer type
      storage/maria/ma_info.c:
        Implementation of rows-in-block
        More general _ma_report_error()
      storage/maria/ma_init.c:
        Implementation of rows-in-block
      storage/maria/ma_key.c:
        Implementation of rows-in-block
        Removed some casts
      storage/maria/ma_keycache.c:
        Fixed DBUG entry
      storage/maria/ma_locking.c:
        Implementation of rows-in-block
      storage/maria/ma_open.c:
        Implementation of rows-in-block
      storage/maria/ma_packrec.c:
        Indentation fixes
        Changed uchar * to byte * to make it possible to remove some casts
      storage/maria/ma_page.c:
        Implementation of rows-in-block
      storage/maria/ma_range.c:
        Implementation of rows-in-block
      storage/maria/ma_rfirst.c:
        Implementation of rows-in-block
      storage/maria/ma_rkey.c:
        Implementation of rows-in-block
        Indentation fixes
      storage/maria/ma_rlast.c:
        Implementation of rows-in-block
      storage/maria/ma_rnext.c:
        Implementation of rows-in-block
      storage/maria/ma_rnext_same.c:
        Implementation of rows-in-block
      storage/maria/ma_rprev.c:
        Implementation of rows-in-block
      storage/maria/ma_rrnd.c:
        Implementation of rows-in-block
        Removed flag 'RRND_PRESERVER_LASTINX', by not resetting lastinx (This is reset by maria_scan_init())
      storage/maria/ma_rsame.c:
        Implementation of rows-in-block
      storage/maria/ma_rsamepos.c:
        Implementation of rows-in-block
      storage/maria/ma_rt_index.c:
        Implementation of rows-in-block
      storage/maria/ma_rt_index.h:
        Implementation of rows-in-block
      storage/maria/ma_rt_key.c:
        Implementation of rows-in-block
      storage/maria/ma_rt_key.h:
        Implementation of rows-in-block
      storage/maria/ma_rt_mbr.c:
        Implementation of rows-in-block
      storage/maria/ma_rt_mbr.h:
        Implementation of rows-in-block
      storage/maria/ma_rt_split.c:
        Implementation of rows-in-block
      storage/maria/ma_rt_test.c:
        Indentation fix
      storage/maria/ma_scan.c:
        Implementation of rows-in-block
        Added 'maria_scan_end()'
      storage/maria/ma_search.c:
        Implementation of rows-in-block
      storage/maria/ma_sort.c:
        Indentation fixes
        uchar -> byte to be able to remove some casts
      storage/maria/ma_sp_defs.h:
        uchar * -> byte *
      storage/maria/ma_sp_key.c:
        uchar * -> byte *
      storage/maria/ma_sp_test.c:
        Indentation fixes
      storage/maria/ma_static.c:
        New header signature for MARIA
      storage/maria/ma_statrec.c:
        int -> my_bool functions
        my_off_t -> MARIA_RECORD_POS
        Fixed argument order for _ma_read_static_record()
      storage/maria/ma_test1.c:
        Implementation of rows-in-block
        Fixed some bugs in VARCHAR and BLOB testing
      storage/maria/ma_test2.c:
        Implementation of rows-in-block
        Fixed bug in BLOB testing
      storage/maria/ma_test3.c:
        Implementation of rows-in-block
      storage/maria/ma_test_all.sh:
        Run all tests with dynamic, static and block row formats
        (For the moment we skip REPAIR test of rows-in-block as this is not yet implemented)
      storage/maria/ma_unique.c:
        Implementation of rows-in-block
      storage/maria/ma_update.c:
        Implementation of rows-in-block
      storage/maria/ma_write.c:
        Implementation of rows-in-block
        Write of row is split into two parts, as rows-in-block format require us to do write of row before keys (to get row position) in contrast to all other row formats
      storage/maria/maria_chk.c:
        Implementation of rows-in-block
      storage/maria/maria_def.h:
        Implementation of rows-in-block
        - New structs and variables to hold rows-in-block and bitmap information
        - Added org_data_file_type in header to allow easy restore of old record format when doing maria_pack / maria_chk -u
        - More virtual functions to handle different row types
        - Pointer to row is now MARIA_RECORD_POS instead of my_off_t
        - uchar -> byte for many parameters to avoid casts
      storage/maria/maria_ftdump.c:
        Implementation of rows-in-block
      storage/maria/maria_pack.c:
        Implementation of rows-in-block
      storage/myisam/mi_check.c:
        Added new row types into switch to avoid compiler warnings
        Added some casts to avoid warnings after changing type of lastkey and buff
      storage/myisam/mi_create.c:
        Fix that 'pack_fields' is calculated correctly
      storage/myisam/mi_rsamepos.c:
        Implementation of rows-in-block
      storage/myisam/mi_test2.c:
        Fixed wrong printf
      storage/myisam/sort.c:
        uchar * -> byte *
      support-files/magic:
        Added support for Maria files
        Fided wrong entry's for MyISAM files
      storage/maria/ma_bitmap.c:
        New BitKeeper file ``storage/maria/ma_bitmap.c''
      storage/maria/ma_blockrec.c:
        New BitKeeper file ``storage/maria/ma_blockrec.c''
      storage/maria/ma_blockrec.h:
        New BitKeeper file ``storage/maria/ma_blockrec.h''
      345959c6