diff options
author | unknown <monty@donna.mysql.com> | 2001-02-17 14:19:19 +0200 |
---|---|---|
committer | unknown <monty@donna.mysql.com> | 2001-02-17 14:19:19 +0200 |
commit | 2662b59306ef0cd495fa6e2edf7129e58a11393a (patch) | |
tree | bfe39951a73e906579ab819bf5198ad8f3a64a36 /innobase/include/dict0boot.ic | |
parent | 66de55a56bdcf2f7a9c0c4f8e19b3e761475e202 (diff) | |
download | mariadb-git-2662b59306ef0cd495fa6e2edf7129e58a11393a.tar.gz |
Added Innobase to source distribution
Docs/manual.texi:
Added Innobase documentation
configure.in:
Incremented version
include/my_base.h:
Added option for Innobase
myisam/mi_check.c:
cleanup
mysql-test/t/bdb.test:
cleanup
mysql-test/t/innobase.test:
Extended with new tests from bdb.test
mysql-test/t/merge.test:
Added test of SHOW create
mysys/my_init.c:
Fix for UNIXWARE 7
scripts/mysql_install_db.sh:
Always write how to start mysqld
scripts/safe_mysqld.sh:
Fixed type
sql/ha_innobase.cc:
Update to new version
sql/ha_innobase.h:
Update to new version
sql/handler.h:
Added 'update_table_comment()' and 'append_create_info()'
sql/sql_delete.cc:
Fixes for Innobase
sql/sql_select.cc:
Fixes for Innobase
sql/sql_show.cc:
Append create information (for MERGE tables)
sql/sql_update.cc:
Fixes for Innobase
Diffstat (limited to 'innobase/include/dict0boot.ic')
-rw-r--r-- | innobase/include/dict0boot.ic | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/innobase/include/dict0boot.ic b/innobase/include/dict0boot.ic new file mode 100644 index 00000000000..8f1e214701f --- /dev/null +++ b/innobase/include/dict0boot.ic @@ -0,0 +1,124 @@ +/****************************************************** +Data dictionary creation and booting + +(c) 1996 Innobase Oy + +Created 4/18/1996 Heikki Tuuri +*******************************************************/ + +/************************************************************************** +Writes the current value of the row id counter to the dictionary header file +page. */ + +void +dict_hdr_flush_row_id(void); +/*=======================*/ + + +/************************************************************************** +Gets a pointer to the dictionary header and x-latches its page. */ +UNIV_INLINE +dict_hdr_t* +dict_hdr_get( +/*=========*/ + /* out: pointer to the dictionary header, + page x-latched */ + mtr_t* mtr) /* in: mtr */ +{ + dict_hdr_t* header; + + ut_ad(mtr); + + header = DICT_HDR + buf_page_get(DICT_HDR_SPACE, DICT_HDR_PAGE_NO, + RW_X_LATCH, mtr); + buf_page_dbg_add_level(header, SYNC_DICT_HEADER); + + return(header); +} + +/************************************************************************** +Returns a new table, index, or tree id. */ +UNIV_INLINE +dulint +dict_hdr_get_new_id( +/*================*/ + /* out: the new id */ + ulint type) /* in: DICT_HDR_ROW_ID, ... */ +{ + dict_hdr_t* dict_hdr; + dulint id; + mtr_t mtr; + + ut_ad((type == DICT_HDR_TABLE_ID) || (type == DICT_HDR_INDEX_ID) + || (type == DICT_HDR_MIX_ID)); + + mtr_start(&mtr); + + dict_hdr = dict_hdr_get(&mtr); + + id = mtr_read_dulint(dict_hdr + type, MLOG_8BYTES, &mtr); + + id = ut_dulint_add(id, 1); + + mlog_write_dulint(dict_hdr + type, id, MLOG_8BYTES, &mtr); + + mtr_commit(&mtr); + + return(id); +} + +/************************************************************************** +Returns a new row id. */ +UNIV_INLINE +dulint +dict_sys_get_new_row_id(void) +/*=========================*/ + /* out: the new id */ +{ + dulint id; + + mutex_enter(&(dict_sys->mutex)); + + id = dict_sys->row_id; + + if (0 == (ut_dulint_get_low(id) % DICT_HDR_ROW_ID_WRITE_MARGIN)) { + + dict_hdr_flush_row_id(); + } + + UT_DULINT_INC(dict_sys->row_id); + + mutex_exit(&(dict_sys->mutex)); + + return(id); +} + +/************************************************************************** +Reads a row id from a record or other 6-byte stored form. */ +UNIV_INLINE +dulint +dict_sys_read_row_id( +/*=================*/ + /* out: row id */ + byte* field) /* in: record field */ +{ + ut_ad(DATA_ROW_ID_LEN == 6); + + return(mach_read_from_6(field)); +} + +/************************************************************************** +Writes a row id to a record or other 6-byte stored form. */ +UNIV_INLINE +void +dict_sys_write_row_id( +/*==================*/ + byte* field, /* in: record field */ + dulint row_id) /* in: row id */ +{ + ut_ad(DATA_ROW_ID_LEN == 6); + + mach_write_to_6(field, row_id); +} + + |