mariadb/storage/innobase/include/mtr0mtr.h
unknown 0da158aa2f Applied InnoDB 5.1 snapshot ss787.
Bugs fixed:
- Bug #20791    valgrind errors in InnoDB
  Remove Valgrind warning of Bug #20791 : in new database
  creation, we read the doublewrite buffer magic number from
  uninitialized memory; the code worked because it was extremely
  unlikely that the memory would contain the magic number
- Bug #21784    DROP TABLE crashes 5.1.12-pre if concurrent
  queries on the table
  remove update_thd() in ::store_lock()


Also includes numerous coding style fixes, etc.  See file-level
comments for details.


sql/ha_innodb.cc:
  Applied InnoDB 5.1 snapshot ss787.
  
    r755:
    Merge a patch from MySQL AB (Mats Kindal):
  
    Lock and unlock prepare_commit_mutex under the same conditions.
  
    r782:
    Fix bug #21784 of a crash in DROP TABLE with concurrent queries on the table
storage/innobase/Makefile.am:
  Applied InnoDB 5.1 snapshot ss787.
  
    r772:
    Merge changes from MySQL AB:
  
    ChangeSet
      2006/08/23 13:59:16-07:00 brian@zim.(none)
      This patch removes need for a innodb to have its own configure.
storage/innobase/btr/btr0btr.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/btr/btr0cur.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r761:
    btr_cur_search_to_nth_level(): Document where cursor is left at in
    PAGE_CUR_LE searches.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/btr/btr0pcur.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/btr/btr0sea.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/buf/buf0buf.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/buf/buf0flu.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/buf/buf0lru.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
storage/innobase/buf/buf0rea.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/data/data0data.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r743:
    dfield_print_raw(): Make static.  Print at most 1000 bytes to avoid
    excessive space usage of the error log.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/data/data0type.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/dict/dict0boot.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/dict/dict0crea.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/dict/dict0dict.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
  
    r767:
    Remove dict_col_t::aux, which was only used when copying an index definition
    to the data dictionary cache.
storage/innobase/dict/dict0load.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/dict/dict0mem.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/eval/eval0eval.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/eval/eval0proc.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/fil/fil0fil.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/fsp/fsp0fsp.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/fut/fut0lst.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/ha/ha0ha.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/ibuf/ibuf0ibuf.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r735:
    Remove all traces of the obsolete concept of replicate spaces.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/include/btr0btr.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/btr0cur.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/btr0cur.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/btr0pcur.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/buf0buf.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/buf0buf.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/buf0flu.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/buf0rea.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/data0data.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r743:
    dfield_print_raw(): Make static.  Print at most 1000 bytes to avoid
    excessive space usage of the error log.
storage/innobase/include/data0data.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/data0type.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/dict0boot.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/dict0dict.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/dict0mem.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r767:
    Remove dict_col_t::aux, which was only used when copying an index definition
    to the data dictionary cache.
storage/innobase/include/eval0eval.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/fut0lst.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/ibuf0ibuf.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/lock0lock.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/log0log.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/log0recv.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r735:
    Remove all traces of the obsolete concept of replicate spaces.
storage/innobase/include/mach0data.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/mem0mem.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/include/mtr0log.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/mtr0mtr.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/os0file.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/page0cur.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/page0page.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
storage/innobase/include/que0que.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/read0read.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/rem0cmp.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/rem0rec.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/include/row0mysql.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/row0purge.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/row0row.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r777:
    Remove unused code.
  
    row_build(): Remove type==ROW_COPY_ALSO_EXTERNALS, because it is never
    passed.
storage/innobase/include/row0row.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/row0sel.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/row0sel.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/row0undo.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/row0upd.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/sync0rw.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/sync0rw.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/sync0sync.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/sync0sync.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/trx0rec.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/trx0rseg.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/include/trx0sys.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/include/trx0trx.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/trx0trx.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/trx0undo.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/trx0undo.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/trx0xa.h:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/univ.i:
  Applied InnoDB 5.1 snapshot ss787.
  
    r772:
    Merge changes from MySQL AB:
  
    ChangeSet
      2006/08/23 13:59:16-07:00 brian@zim.(none)·
      This patch removes need for a innodb to have its own configure.·
  
    univ.i: Replace ../ib_config.h with config.h.
  
    r777:
    Remove unused code.
  
    univ.i: Do not #define YYDEBUG, because it is only useful for debugging
    the grammar of the Bison-generated InnoDB SQL parser.
storage/innobase/include/ut0byte.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/include/ut0rnd.ic:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/lock/lock0lock.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/log/log0log.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/log/log0recv.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r735:
    Remove all traces of the obsolete concept of replicate spaces.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/mem/mem0dbg.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/mem/mem0mem.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/mem/mem0pool.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/mtr/mtr0log.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/mtr/mtr0mtr.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/os/os0file.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/os/os0proc.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/os/os0sync.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/os/os0thread.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/page/page0cur.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/page/page0page.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r761:
    btr_cur_search_to_nth_level(): Document where cursor is left at in
    PAGE_CUR_LE searches.
  
    r762:
    page_validate(): Add missing space to error print, for real this time,
    following an error in r761.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/pars/pars0opt.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/pars/pars0pars.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/que/que0que.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/read/read0read.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/rem/rem0cmp.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/rem/rem0rec.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/row/row0ins.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/row/row0mysql.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/row/row0purge.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/row/row0row.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
  
    r777:
    Remove unused code.
  
    row_build(): Remove type==ROW_COPY_ALSO_EXTERNALS, because it is never
    passed.
storage/innobase/row/row0sel.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/row/row0uins.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/row/row0umod.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/row/row0undo.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/row/row0upd.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/row/row0vers.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/srv/srv0srv.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r741:
    srv_master_thread(): Add OS_THREAD_DUMMY_RETURN to get rid of a compiler
    warning "no return value from a function returning non-void".
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
  
    r780:
    Add a warning comment above the place where we set srv_main_thread_op_info
    to "waiting for server activity" that mentions that this string should not
    be changed.
storage/innobase/srv/srv0start.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/sync/sync0arr.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/sync/sync0rw.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/sync/sync0sync.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/thr/thr0loc.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/trx/trx0purge.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/trx/trx0rec.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r735:
    Remove all traces of the obsolete concept of replicate spaces.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/trx/trx0roll.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/trx/trx0rseg.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/trx/trx0sys.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/trx/trx0trx.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/trx/trx0undo.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/ut/ut0byte.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/ut/ut0dbg.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r764:
    Split lines before an opening parenthesis, not after one.
  
    Replace some printf(...) in debug builds with fprintf(stderr, ...).
storage/innobase/ut/ut0mem.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/ut/ut0ut.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
  
    r765:
    Split lines before binary operators, not after them.
storage/innobase/ut/ut0vec.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
storage/innobase/ut/ut0wqueue.c:
  Applied InnoDB 5.1 snapshot ss787.
  
    r763:
    Reindent the code base (except for ha_innodb.{cc,h} and generated parser
    and lexer files).
2006-09-05 03:52:15 +02:00

345 lines
12 KiB
C

/******************************************************
Mini-transaction buffer
(c) 1995 Innobase Oy
Created 11/26/1995 Heikki Tuuri
*******************************************************/
#ifndef mtr0mtr_h
#define mtr0mtr_h
#include "univ.i"
#include "mem0mem.h"
#include "dyn0dyn.h"
#include "buf0types.h"
#include "sync0rw.h"
#include "ut0byte.h"
#include "mtr0types.h"
#include "page0types.h"
/* Logging modes for a mini-transaction */
#define MTR_LOG_ALL 21 /* default mode: log all operations
modifying disk-based data */
#define MTR_LOG_NONE 22 /* log no operations */
/*#define MTR_LOG_SPACE 23 */ /* log only operations modifying
file space page allocation data
(operations in fsp0fsp.* ) */
#define MTR_LOG_SHORT_INSERTS 24 /* inserts are logged in a shorter
form */
/* Types for the mlock objects to store in the mtr memo; NOTE that the
first 3 values must be RW_S_LATCH, RW_X_LATCH, RW_NO_LATCH */
#define MTR_MEMO_PAGE_S_FIX RW_S_LATCH
#define MTR_MEMO_PAGE_X_FIX RW_X_LATCH
#define MTR_MEMO_BUF_FIX RW_NO_LATCH
#define MTR_MEMO_MODIFY 54
#define MTR_MEMO_S_LOCK 55
#define MTR_MEMO_X_LOCK 56
/* Log item types: we have made them to be of the type 'byte'
for the compiler to warn if val and type parameters are switched
in a call to mlog_write_ulint. NOTE! For 1 - 8 bytes, the
flag value must give the length also! */
#define MLOG_SINGLE_REC_FLAG 128 /* if the mtr contains only
one log record for one page,
i.e., write_initial_log_record
has been called only once,
this flag is ORed to the type
of that first log record */
#define MLOG_1BYTE (1) /* one byte is written */
#define MLOG_2BYTES (2) /* 2 bytes ... */
#define MLOG_4BYTES (4) /* 4 bytes ... */
#define MLOG_8BYTES (8) /* 8 bytes ... */
#define MLOG_REC_INSERT ((byte)9) /* record insert */
#define MLOG_REC_CLUST_DELETE_MARK ((byte)10) /* mark clustered index record
deleted */
#define MLOG_REC_SEC_DELETE_MARK ((byte)11) /* mark secondary index record
deleted */
#define MLOG_REC_UPDATE_IN_PLACE ((byte)13) /* update of a record,
preserves record field sizes */
#define MLOG_REC_DELETE ((byte)14) /* delete a record from a
page */
#define MLOG_LIST_END_DELETE ((byte)15) /* delete record list end on
index page */
#define MLOG_LIST_START_DELETE ((byte)16) /* delete record list start on
index page */
#define MLOG_LIST_END_COPY_CREATED ((byte)17) /* copy record list end to a
new created index page */
#define MLOG_PAGE_REORGANIZE ((byte)18) /* reorganize an index page */
#define MLOG_PAGE_CREATE ((byte)19) /* create an index page */
#define MLOG_UNDO_INSERT ((byte)20) /* insert entry in an undo
log */
#define MLOG_UNDO_ERASE_END ((byte)21) /* erase an undo log
page end */
#define MLOG_UNDO_INIT ((byte)22) /* initialize a page in an
undo log */
#define MLOG_UNDO_HDR_DISCARD ((byte)23) /* discard an update undo log
header */
#define MLOG_UNDO_HDR_REUSE ((byte)24) /* reuse an insert undo log
header */
#define MLOG_UNDO_HDR_CREATE ((byte)25) /* create an undo log header */
#define MLOG_REC_MIN_MARK ((byte)26) /* mark an index record as the
predefined minimum record */
#define MLOG_IBUF_BITMAP_INIT ((byte)27) /* initialize an ibuf bitmap
page */
/*#define MLOG_FULL_PAGE ((byte)28) full contents of a page */
#define MLOG_INIT_FILE_PAGE ((byte)29) /* this means that a file page
is taken into use and the prior
contents of the page should be
ignored: in recovery we must
not trust the lsn values stored
to the file page */
#define MLOG_WRITE_STRING ((byte)30) /* write a string to a page */
#define MLOG_MULTI_REC_END ((byte)31) /* if a single mtr writes
log records for several pages,
this log record ends the
sequence of these records */
#define MLOG_DUMMY_RECORD ((byte)32) /* dummy log record used to
pad a log block full */
#define MLOG_FILE_CREATE ((byte)33) /* log record about an .ibd
file creation */
#define MLOG_FILE_RENAME ((byte)34) /* log record about an .ibd
file rename */
#define MLOG_FILE_DELETE ((byte)35) /* log record about an .ibd
file deletion */
#define MLOG_COMP_REC_MIN_MARK ((byte)36) /* mark a compact index record
as the predefined minimum
record */
#define MLOG_COMP_PAGE_CREATE ((byte)37) /* create a compact
index page */
#define MLOG_COMP_REC_INSERT ((byte)38) /* compact record insert */
#define MLOG_COMP_REC_CLUST_DELETE_MARK ((byte)39)
/* mark compact clustered index
record deleted */
#define MLOG_COMP_REC_SEC_DELETE_MARK ((byte)40)/* mark compact secondary index
record deleted; this log
record type is redundant, as
MLOG_REC_SEC_DELETE_MARK is
independent of the record
format. */
#define MLOG_COMP_REC_UPDATE_IN_PLACE ((byte)41)/* update of a compact record,
preserves record field sizes */
#define MLOG_COMP_REC_DELETE ((byte)42) /* delete a compact record
from a page */
#define MLOG_COMP_LIST_END_DELETE ((byte)43) /* delete compact record list
end on index page */
#define MLOG_COMP_LIST_START_DELETE ((byte)44) /* delete compact record list
start on index page */
#define MLOG_COMP_LIST_END_COPY_CREATED ((byte)45)
/* copy compact record list end
to a new created index page */
#define MLOG_COMP_PAGE_REORGANIZE ((byte)46) /* reorganize an index page */
#define MLOG_BIGGEST_TYPE ((byte)46) /* biggest value (used in
asserts) */
/*******************************************************************
Starts a mini-transaction and creates a mini-transaction handle
and buffer in the memory buffer given by the caller. */
UNIV_INLINE
mtr_t*
mtr_start(
/*======*/
/* out: mtr buffer which also acts as
the mtr handle */
mtr_t* mtr); /* in: memory buffer for the mtr buffer */
/*******************************************************************
Starts a mini-transaction and creates a mini-transaction handle
and buffer in the memory buffer given by the caller. */
mtr_t*
mtr_start_noninline(
/*================*/
/* out: mtr buffer which also acts as
the mtr handle */
mtr_t* mtr); /* in: memory buffer for the mtr buffer */
/*******************************************************************
Commits a mini-transaction. */
void
mtr_commit(
/*=======*/
mtr_t* mtr); /* in: mini-transaction */
/**************************************************************
Sets and returns a savepoint in mtr. */
UNIV_INLINE
ulint
mtr_set_savepoint(
/*==============*/
/* out: savepoint */
mtr_t* mtr); /* in: mtr */
/**************************************************************
Releases the latches stored in an mtr memo down to a savepoint.
NOTE! The mtr must not have made changes to buffer pages after the
savepoint, as these can be handled only by mtr_commit. */
void
mtr_rollback_to_savepoint(
/*======================*/
mtr_t* mtr, /* in: mtr */
ulint savepoint); /* in: savepoint */
/**************************************************************
Releases the (index tree) s-latch stored in an mtr memo after a
savepoint. */
UNIV_INLINE
void
mtr_release_s_latch_at_savepoint(
/*=============================*/
mtr_t* mtr, /* in: mtr */
ulint savepoint, /* in: savepoint */
rw_lock_t* lock); /* in: latch to release */
/*******************************************************************
Gets the logging mode of a mini-transaction. */
UNIV_INLINE
ulint
mtr_get_log_mode(
/*=============*/
/* out: logging mode: MTR_LOG_NONE, ... */
mtr_t* mtr); /* in: mtr */
/*******************************************************************
Changes the logging mode of a mini-transaction. */
UNIV_INLINE
ulint
mtr_set_log_mode(
/*=============*/
/* out: old mode */
mtr_t* mtr, /* in: mtr */
ulint mode); /* in: logging mode: MTR_LOG_NONE, ... */
/************************************************************
Reads 1 - 4 bytes from a file page buffered in the buffer pool. */
ulint
mtr_read_ulint(
/*===========*/
/* out: value read */
byte* ptr, /* in: pointer from where to read */
ulint type, /* in: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES */
mtr_t* mtr); /* in: mini-transaction handle */
/************************************************************
Reads 8 bytes from a file page buffered in the buffer pool. */
dulint
mtr_read_dulint(
/*============*/
/* out: value read */
byte* ptr, /* in: pointer from where to read */
mtr_t* mtr); /* in: mini-transaction handle */
/*************************************************************************
This macro locks an rw-lock in s-mode. */
#define mtr_s_lock(B, MTR) mtr_s_lock_func((B), __FILE__, __LINE__,\
(MTR))
/*************************************************************************
This macro locks an rw-lock in x-mode. */
#define mtr_x_lock(B, MTR) mtr_x_lock_func((B), __FILE__, __LINE__,\
(MTR))
/*************************************************************************
NOTE! Use the macro above!
Locks a lock in s-mode. */
UNIV_INLINE
void
mtr_s_lock_func(
/*============*/
rw_lock_t* lock, /* in: rw-lock */
const char* file, /* in: file name */
ulint line, /* in: line number */
mtr_t* mtr); /* in: mtr */
/*************************************************************************
NOTE! Use the macro above!
Locks a lock in x-mode. */
UNIV_INLINE
void
mtr_x_lock_func(
/*============*/
rw_lock_t* lock, /* in: rw-lock */
const char* file, /* in: file name */
ulint line, /* in: line number */
mtr_t* mtr); /* in: mtr */
/*******************************************************
Releases an object in the memo stack. */
void
mtr_memo_release(
/*=============*/
mtr_t* mtr, /* in: mtr */
void* object, /* in: object */
ulint type); /* in: object type: MTR_MEMO_S_LOCK, ... */
/**************************************************************
Checks if memo contains the given item. */
UNIV_INLINE
ibool
mtr_memo_contains(
/*==============*/
/* out: TRUE if contains */
mtr_t* mtr, /* in: mtr */
void* object, /* in: object to search */
ulint type); /* in: type of object */
/*************************************************************
Prints info of an mtr handle. */
void
mtr_print(
/*======*/
mtr_t* mtr); /* in: mtr */
/*######################################################################*/
#define MTR_BUF_MEMO_SIZE 200 /* number of slots in memo */
/*******************************************************************
Returns the log object of a mini-transaction buffer. */
UNIV_INLINE
dyn_array_t*
mtr_get_log(
/*========*/
/* out: log */
mtr_t* mtr); /* in: mini-transaction */
/*******************************************************
Pushes an object to an mtr memo stack. */
UNIV_INLINE
void
mtr_memo_push(
/*==========*/
mtr_t* mtr, /* in: mtr */
void* object, /* in: object */
ulint type); /* in: object type: MTR_MEMO_S_LOCK, ... */
/* Type definition of a mini-transaction memo stack slot. */
typedef struct mtr_memo_slot_struct mtr_memo_slot_t;
struct mtr_memo_slot_struct{
ulint type; /* type of the stored object (MTR_MEMO_S_LOCK, ...) */
void* object; /* pointer to the object */
};
/* Mini-transaction handle and buffer */
struct mtr_struct{
ulint state; /* MTR_ACTIVE, MTR_COMMITTING, MTR_COMMITTED */
dyn_array_t memo; /* memo stack for locks etc. */
dyn_array_t log; /* mini-transaction log */
ibool modifications;
/* TRUE if the mtr made modifications to
buffer pool pages */
ulint n_log_recs;
/* count of how many page initial log records
have been written to the mtr log */
ulint log_mode; /* specifies which operations should be
logged; default value MTR_LOG_ALL */
dulint start_lsn;/* start lsn of the possible log entry for
this mtr */
dulint end_lsn;/* end lsn of the possible log entry for
this mtr */
ulint magic_n;
};
#define MTR_MAGIC_N 54551
#define MTR_ACTIVE 12231
#define MTR_COMMITTING 56456
#define MTR_COMMITTED 34676
#ifndef UNIV_NONINL
#include "mtr0mtr.ic"
#endif
#endif