3124 Jimmy Yang 2010-06-24
Moved fix for Bug#54044 to security branch. Undo revno:3116
removed:
mysql-test/suite/innodb/r/innodb_bug54044.result
mysql-test/suite/innodb/t/innodb_bug54044.test
modified:
storage/innobase/handler/ha_innodb.cc
3123 Sunny Bains 2010-06-25
Fix bug#54583. This change reverses r1530 by getting rid of a bogus assertion
and clarifies the invariant in dict_table_get_on_id().
In Mar 2007 Marko observed a crash during recovery, the crash resulted from
an UNDO operation on a system table. His solution was to acquire an X lock on
the data dictionary, this in hindsight was an overkill. It is unclear what
caused the crash, current hypothesis is that it was a memory corruption.
The X lock results in performance issues by when undoing changes due to
rollback during normal operation on regular tables.
Why the change is safe:
======================
The InnoDB code has changed since the original X lock change was made. In the
new code we always lock the data dictionary in X mode during startup when
UNDOing operations on the system tables (this is a given). This ensures that
the crash Marko observed cannot happen as long as all transactions that update
the system tables follow the standard rules by setting the appropriate DICT_OP
flag when writing the log records when they make the changes.
If transactions violate the above mentioned rule then during recovery (at
startup) the rollback code (see trx0roll.c) will not acquire the X lock
and we will see the crash again. This will however be a different bug.
modified:
storage/innobase/dict/dict0dict.c
storage/innobase/include/sync0sync.h
storage/innobase/row/row0undo.c
3122 Marko Mäkelnodb:
------------------------------------------------------------
revno: 3523
revision-id: marko.makela@stripped
parent: jimmy.yang@strippedaax6u
committer: Marko Mäkelä <marko.makela@oracle.com>
branch nick: 5.1-innodb
timestamp: Thu 2010-06-24 13:46:20 +0300
message:
Bug#54679: alter table causes compressed row_format to revert to compact
ha_innobase::create(): Add the local variable row_type = form->s->row_type.
Adjust it to ROW_TYPE_COMPRESSED when ROW_FORMAT is not specified or inherited
but KEY_BLOCK_SIZE is. Observe the inherited ROW_FORMAT even when it is not
explicitly specified.
innodb_bug54679.test: New test, to test the bug and to ensure that there are
no regressions. (The only difference in the test result without the patch
applied is that the first ALTER TABLE changes ROW_FORMAT to Compact.)
added:
mysql-test/suite/innodb/r/innodb_bug54679.result
mysql-test/suite/innodb/t/innodb_bug54679.test
modified:
storage/innobase/handler/ha_innodb.cc
3121 Marko Mäkelä 2010-06-24
trx_undo_parse_page_header(): Silence a bogus warning.
modified:
storage/innobase/trx/trx0undo.c
3120 Marko Mäkelä 2010-06-24
After-review cleanup of Bug#57428: replace the dulint struct with a 64-bit int
trx_undo_build_roll_ptr(): Clarify the assertion on is_insert being 0 or 1.
TRX_SYS_FILE_FORMAT_TAG: Remove "extra" space after period in the comment.
See also http://desktoppub.about.com/cs/typespacing/a/onetwospaces.htm
modified:
storage/innobase/include/trx0sys.h
storage/innobase/include/trx0undo.ic
3119 Marko Mäkelä 2010-06-24
mach_ull_parse_compressed(): Move to .ic file to silence a GCC warning
about trx_id being possibly uninitialized in trx_undo_parse_page_header().
The warning remains when UNIV_DEBUG or UNIV_MUST_NOT_INLINE is enabled.
modified:
storage/innobase/include/mach0data.h
storage/innobase/include/mach0data.ic
storage/innobase/mach/mach0data.c
3118 Marko Mäkelä 2010-06-24
ut_ull_create(): Fix a typo in ut_ad(): ULINT32_MASK instead of ULINT32_MAX.
modified:
storage/innobase/include/ut0byte.ic
3117 Marko Mäkelä 2010-06-23
Bug#54728: Replace the dulint struct with a 64-bit integer.
modified:
storage/innobase/btr/btr0btr.c
storage/innobase/btr/btr0cur.c
storage/innobase/btr/btr0sea.c
storage/innobase/buf/buf0buf.c
storage/innobase/buf/buf0flu.c
storage/innobase/buf/buf0lru.c
storage/innobase/data/data0data.c
storage/innobase/dict/dict0boot.c
storage/innobase/dict/dict0crea.c
storage/innobase/dict/dict0dict.c
storage/innobase/dict/dict0load.c
storage/innobase/fil/fil0fil.c
storage/innobase/fsp/fsp0fsp.c
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/i_s.cc
storage/innobase/ibuf/ibuf0ibuf.c
storage/innobase/include/btr0btr.h
storage/innobase/include/btr0btr.ic
storage/innobase/include/data0data.h
storage/innobase/include/data0data.ic
storage/innobase/include/data0type.h
storage/innobase/include/dict0boot.h
storage/innobase/include/dict0boot.ic
storage/innobase/include/dict0dict.h
storage/innobase/include/dict0dict.ic
storage/innobase/include/dict0load.h
storage/innobase/include/dict0mem.h
storage/innobase/include/dict0types.h
storage/innobase/include/fil0fil.h
storage/innobase/include/lock0lock.h
storage/innobase/include/mach0data.h
storage/innobase/include/mach0data.ic
storage/innobase/include/mtr0log.h
storage/innobase/include/mtr0log.ic
storage/innobase/include/mtr0mtr.h
storage/innobase/include/page0page.h
storage/innobase/include/page0page.ic
storage/innobase/include/pars0pars.h
storage/innobase/include/que0que.h
storage/innobase/include/read0read.h
storage/innobase/include/read0read.ic
storage/innobase/include/rem0rec.h
storage/innobase/include/rem0rec.ic
storage/innobase/include/row0upd.h
storage/innobase/include/srv0srv.h
storage/innobase/include/trx0i_s.h
storage/innobase/include/trx0rec.h
storage/innobase/include/trx0rec.ic
storage/innobase/include/trx0sys.h
storage/innobase/include/trx0sys.ic
storage/innobase/include/trx0trx.h
storage/innobase/include/trx0trx.ic
storage/innobase/include/trx0types.h
storage/innobase/include/trx0undo.h
storage/innobase/include/trx0undo.ic
storage/innobase/include/univ.i
storage/innobase/include/ut0byte.h
storage/innobase/include/ut0byte.ic
storage/innobase/include/ut0rnd.h
storage/innobase/include/ut0rnd.ic
storage/innobase/lock/lock0lock.c
storage/innobase/log/log0log.c
storage/innobase/log/log0recv.c
storage/innobase/mach/mach0data.c
storage/innobase/mtr/mtr0log.c
storage/innobase/mtr/mtr0mtr.c
storage/innobase/page/page0page.c
storage/innobase/page/page0zip.c
storage/innobase/pars/pars0pars.c
storage/innobase/read/read0read.c
storage/innobase/row/row0ins.c
storage/innobase/row/row0merge.c
storage/innobase/row/row0mysql.c
storage/innobase/row/row0purge.c
storage/innobase/row/row0sel.c
storage/innobase/row/row0uins.c
storage/innobase/row/row0umod.c
storage/innobase/row/row0undo.c
storage/innobase/row/row0upd.c
storage/innobase/row/row0vers.c
storage/innobase/trx/trx0i_s.c
storage/innobase/trx/trx0purge.c
storage/innobase/trx/trx0rec.c
storage/innobase/trx/trx0roll.c
storage/innobase/trx/trx0rseg.c
storage/innobase/trx/trx0sys.c
storage/innobase/trx/trx0trx.c
storage/innobase/trx/trx0undo.c
storage/innobase/ut/ut0byte.c
3116 Jimmy Yang 2010-06-23
Merge Bug#54044 fix from mysql-5.1-innodb:
------------------------------------------------------------
revno: 3520
committer: Jimmy Yang <jimmy.yang@stripped>
branch nick: mysql-5.1-innodb
timestamp: Tue 2010-06-22 19:04:31 -0700
message:
Fix bug #54044, Create temporary tables and using innodb crashes. Screen
out NULL type columns, and return without creating the table.
rb://378 approved by Marko
------------------------------------------------------------
added:
mysql-test/suite/innodb/r/innodb_bug54044.result
mysql-test/suite/innodb/t/innodb_bug54044.test
modified:
storage/innobase/handler/ha_innodb.cc
3115 Vasil Dimov 2010-06-23
Enable InnoDB's UNIV_DEBUG if MySQL's WITH_DEBUG[_FULL] is defined
This will make PB2 test InnoDB with UNIV_DEBUG on its *_debug platforms
Discussed with: Marko (on IRC)
modified:
storage/innobase/CMakeLists.txt
=== added file 'mysql-test/suite/innodb/r/innodb_bug54679.result'
--- a/mysql-test/suite/innodb/r/innodb_bug54679.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb/r/innodb_bug54679.result revid:jimmy.yang@stripped20-ps44ileuontw6hn3
@@ -0,0 +1,91 @@
+SET GLOBAL innodb_file_format='Barracuda';
+SET GLOBAL innodb_file_per_table=ON;
+SET innodb_strict_mode=ON;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed row_format=COMPRESSED
+ALTER TABLE bug54679 ADD COLUMN b INT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed row_format=COMPRESSED
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compact
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed KEY_BLOCK_SIZE=1
+ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Redundant row_format=REDUNDANT
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed row_format=REDUNDANT KEY_BLOCK_SIZE=2
+SET GLOBAL innodb_file_format=Antelope;
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
+Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
+Error 1005 Can't create table 'test.bug54679' (errno: 1478)
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+SET GLOBAL innodb_file_format=Barracuda;
+SET GLOBAL innodb_file_per_table=OFF;
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
+Error 1005 Can't create table 'test.bug54679' (errno: 1478)
+SET GLOBAL innodb_file_per_table=ON;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+DROP TABLE bug54679;
+SET GLOBAL innodb_file_format=Antelope;
+SET GLOBAL innodb_file_format_max=Antelope;
+SET GLOBAL innodb_file_per_table=0;
=== added file 'mysql-test/suite/innodb/t/innodb_bug54679.test'
--- a/mysql-test/suite/innodb/t/innodb_bug54679.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb/t/innodb_bug54679.test revid:jimmy.yang@stripped00625051420-ps44ileuontw6hn3
@@ -0,0 +1,97 @@
+# Test Bug #54679 alter table causes compressed row_format to revert to compact
+
+--source include/have_innodb.inc
+
+let $file_format=`select @@innodb_file_format`;
+let $file_format_max=`select @@innodb_file_format_max`;
+let $file_per_table=`select @@innodb_file_per_table`;
+SET GLOBAL innodb_file_format='Barracuda';
+SET GLOBAL innodb_file_per_table=ON;
+SET innodb_strict_mode=ON;
+
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+# The ROW_FORMAT of the table should be preserved when it is not specified
+# in ALTER TABLE.
+ALTER TABLE bug54679 ADD COLUMN b INT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+DROP TABLE bug54679;
+
+# Check that the ROW_FORMAT conversion to/from COMPRESSED works.
+
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+# KEY_BLOCK_SIZE implies COMPRESSED.
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+# This prevents other than REDUNDANT or COMPACT ROW_FORMAT for new tables.
+SET GLOBAL innodb_file_format=Antelope;
+
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+DROP TABLE bug54679;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+
+SET GLOBAL innodb_file_format=Barracuda;
+# This will prevent ROW_FORMAT=COMPRESSED, because the system tablespace
+# cannot be compressed.
+SET GLOBAL innodb_file_per_table=OFF;
+
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+DROP TABLE bug54679;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+SET GLOBAL innodb_file_per_table=ON;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+DROP TABLE bug54679;
+
+EVAL SET GLOBAL innodb_file_format=$file_format;
+EVAL SET GLOBAL innodb_file_format_max=$file_format_max;
+EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
=== modified file 'storage/innobase/btr/btr0btr.c'
--- a/storage/innobase/btr/btr0btr.c revid:vasil.dimov@stripped
+++ b/storage/innobase/btr/btr0btr.c revid:jimmy.yang@stripped0100625051420-ps44ileuontw6hn3
@@ -737,7 +737,7 @@ btr_create(
ulint space, /*!< in: space where created */
ulint zip_size,/*!< in: compressed page size in bytes
or 0 for uncompressed pages */
- dulint index_id,/*!< in: index id */
+ index_id_t index_id,/*!< in: index id */
dict_index_t* index, /*!< in: index */
mtr_t* mtr) /*!< in: mini-transaction handle */
{
@@ -1020,7 +1020,7 @@ btr_page_reorganize_low(
/* In crash recovery, dict_index_is_sec_or_ibuf() always
returns TRUE, even for clustered indexes. max_trx_id is
unused in clustered index pages. */
- ut_ad(!ut_dulint_is_zero(max_trx_id) || recovery);
+ ut_ad(max_trx_id != 0 || recovery);
}
if (UNIV_LIKELY_NULL(page_zip)
@@ -2883,7 +2883,7 @@ btr_discard_only_page_on_level(
ibuf_reset_free_bits(block);
if (page_is_leaf(buf_block_get_frame(block))) {
- ut_a(!ut_dulint_is_zero(max_trx_id));
+ ut_a(max_trx_id);
page_set_max_trx_id(block,
buf_block_get_page_zip(block),
max_trx_id, mtr);
=== modified file 'storage/innobase/btr/btr0cur.c'
--- a/storage/innobase/btr/btr0cur.c revid:vasil.dimov@stripped-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/btr/btr0cur.c revid:jimmy.yang@strippeds44ileuontw6hn3
@@ -660,7 +660,7 @@ retry_page_get:
buf_block_dbg_add_level(block, SYNC_TREE_NODE);
}
- ut_ad(0 == ut_dulint_cmp(index->id, btr_page_get_index_id(page)));
+ ut_ad(index->id == btr_page_get_index_id(page));
if (UNIV_UNLIKELY(height == ULINT_UNDEFINED)) {
/* We are in the root node */
@@ -854,8 +854,7 @@ btr_cur_open_at_index_side_func(
RW_NO_LATCH, NULL, BUF_GET,
file, line, mtr);
page = buf_block_get_frame(block);
- ut_ad(0 == ut_dulint_cmp(index->id,
- btr_page_get_index_id(page)));
+ ut_ad(index->id == btr_page_get_index_id(page));
block->check_index_page_at_flush = TRUE;
@@ -975,8 +974,7 @@ btr_cur_open_at_rnd_pos_func(
RW_NO_LATCH, NULL, BUF_GET,
file, line, mtr);
page = buf_block_get_frame(block);
- ut_ad(0 == ut_dulint_cmp(index->id,
- btr_page_get_index_id(page)));
+ ut_ad(index->id == btr_page_get_index_id(page));
if (height == ULINT_UNDEFINED) {
/* We are in the root node */
@@ -1135,7 +1133,7 @@ btr_cur_trx_report(
const char* op) /*!< in: operation */
{
fprintf(stderr, "Trx with id " TRX_ID_FMT " going to ",
- TRX_ID_PREP_PRINTF(trx->id));
+ (ullint) trx->id);
fputs(op, stderr);
dict_index_name_print(stderr, trx, index);
putc('\n', stderr);
@@ -1826,7 +1824,7 @@ btr_cur_update_in_place(
page_zip_des_t* page_zip;
ulint err;
rec_t* rec;
- roll_ptr_t roll_ptr = ut_dulint_zero;
+ roll_ptr_t roll_ptr = 0;
trx_t* trx;
ulint was_delete_marked;
mem_heap_t* heap = NULL;
=== modified file 'storage/innobase/btr/btr0sea.c'
--- a/storage/innobase/btr/btr0sea.c revid:vasil.dimov@strippede4bbn3gf1py6260h
+++ b/storage/innobase/btr/btr0sea.c revid:jimmy.yang@stripped
@@ -523,9 +523,9 @@ btr_search_update_hash_ref(
buf_block_t* block, /*!< in: buffer block where cursor positioned */
btr_cur_t* cursor) /*!< in: cursor */
{
- ulint fold;
- rec_t* rec;
- dulint index_id;
+ ulint fold;
+ rec_t* rec;
+ index_id_t index_id;
ut_ad(cursor->flag == BTR_CUR_HASH_FAIL);
#ifdef UNIV_SYNC_DEBUG
@@ -830,7 +830,7 @@ btr_search_guess_on_hash(
buf_block_t* block;
rec_t* rec;
ulint fold;
- dulint index_id;
+ index_id_t index_id;
#ifdef notdefined
btr_cur_t cursor2;
btr_pcur_t pcur;
@@ -922,8 +922,7 @@ btr_search_guess_on_hash(
is positioned on. We cannot look at the next of the previous
record to determine if our guess for the cursor position is
right. */
- if (UNIV_EXPECT
- (ut_dulint_cmp(index_id, btr_page_get_index_id(block->frame)), 0)
+ if (UNIV_UNLIKELY(index_id != btr_page_get_index_id(block->frame))
|| !btr_search_check_guess(cursor,
has_search_latch,
tuple, mode, mtr)) {
@@ -1028,7 +1027,7 @@ btr_search_drop_page_hash_index(
const rec_t* rec;
ulint fold;
ulint prev_fold;
- dulint index_id;
+ index_id_t index_id;
ulint n_cached;
ulint n_recs;
ulint* folds;
@@ -1088,7 +1087,7 @@ retry:
index_id = btr_page_get_index_id(page);
- ut_a(0 == ut_dulint_cmp(index_id, index->id));
+ ut_a(index_id == index->id);
prev_fold = 0;
@@ -1245,7 +1244,7 @@ btr_search_build_page_hash_index(
rec_t* next_rec;
ulint fold;
ulint next_fold;
- dulint index_id;
+ index_id_t index_id;
ulint n_cached;
ulint n_recs;
ulint* folds;
@@ -1498,7 +1497,7 @@ btr_search_update_hash_on_delete(
buf_block_t* block;
rec_t* rec;
ulint fold;
- dulint index_id;
+ index_id_t index_id;
ibool found;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
mem_heap_t* heap = NULL;
@@ -1604,7 +1603,7 @@ btr_search_update_hash_on_insert(
rec_t* rec;
rec_t* ins_rec;
rec_t* next_rec;
- dulint index_id;
+ index_id_t index_id;
ulint fold;
ulint ins_fold;
ulint next_fold = 0; /* remove warning (??? bug ???) */
@@ -1784,6 +1783,7 @@ btr_search_validate(void)
= buf_block_align(node->data);
const buf_block_t* hash_block;
buf_pool_t* buf_pool;
+ index_id_t page_index_id;
buf_pool = buf_pool_from_bpage((buf_page_t*) block);
@@ -1828,12 +1828,15 @@ btr_search_validate(void)
+ (block->curr_n_bytes > 0),
&heap);
- if (!block->is_hashed || node->fold
- != rec_fold((rec_t*)(node->data),
- offsets,
- block->curr_n_fields,
- block->curr_n_bytes,
- btr_page_get_index_id(block->frame))) {
+ page_index_id = btr_page_get_index_id(block->frame);
+
+ if (UNIV_UNLIKELY
+ (!block->is_hashed || node->fold
+ != rec_fold((rec_t*)(node->data),
+ offsets,
+ block->curr_n_fields,
+ block->curr_n_bytes,
+ page_index_id))) {
const page_t* page = block->frame;
ok = FALSE;
@@ -1843,21 +1846,17 @@ btr_search_validate(void)
" InnoDB: Error in an adaptive hash"
" index pointer to page %lu\n"
"InnoDB: ptr mem address %p"
- " index id %lu %lu,"
+ " index id %llu,"
" node fold %lu, rec fold %lu\n",
(ulong) page_get_page_no(page),
node->data,
- (ulong) ut_dulint_get_high(
- btr_page_get_index_id(page)),
- (ulong) ut_dulint_get_low(
- btr_page_get_index_id(page)),
+ (ullint) page_index_id,
(ulong) node->fold,
(ulong) rec_fold((rec_t*)(node->data),
offsets,
block->curr_n_fields,
block->curr_n_bytes,
- btr_page_get_index_id(
- page)));
+ page_index_id));
fputs("InnoDB: Record ", stderr);
rec_print_new(stderr, (rec_t*)node->data,
=== modified file 'storage/innobase/buf/buf0buf.c'
--- a/storage/innobase/buf/buf0buf.c revid:vasil.dimov@stripped
+++ b/storage/innobase/buf/buf0buf.c revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -522,7 +522,9 @@ buf_page_is_corrupted(
ib_uint64_t current_lsn;
if (log_peek_lsn(¤t_lsn)
- && current_lsn < mach_read_ull(read_buf + FIL_PAGE_LSN)) {
+ && UNIV_UNLIKELY
+ (current_lsn
+ < mach_read_from_8(read_buf + FIL_PAGE_LSN))) {
ut_print_timestamp(stderr);
fprintf(stderr,
@@ -538,7 +540,7 @@ buf_page_is_corrupted(
"InnoDB: for more information.\n",
(ulong) mach_read_from_4(read_buf
+ FIL_PAGE_OFFSET),
- mach_read_ull(read_buf + FIL_PAGE_LSN),
+ mach_read_from_8(read_buf + FIL_PAGE_LSN),
current_lsn);
}
}
@@ -735,17 +737,15 @@ buf_page_print(
#endif /* !UNIV_HOTBACKUP */
switch (fil_page_get_type(read_buf)) {
+ index_id_t index_id;
case FIL_PAGE_INDEX:
+ index_id = btr_page_get_index_id(read_buf);
fprintf(stderr,
"InnoDB: Page may be an index page where"
- " index id is %lu %lu\n",
- (ulong) ut_dulint_get_high(
- btr_page_get_index_id(read_buf)),
- (ulong) ut_dulint_get_low(
- btr_page_get_index_id(read_buf)));
+ " index id is %llu\n",
+ (ullint) index_id);
#ifndef UNIV_HOTBACKUP
- index = dict_index_find_on_id_low(
- btr_page_get_index_id(read_buf));
+ index = dict_index_find_on_id_low(index_id);
if (index) {
fputs("InnoDB: (", stderr);
dict_index_name_print(stderr, NULL, index);
@@ -4461,12 +4461,12 @@ buf_print_instance(
/*===============*/
buf_pool_t* buf_pool)
{
- dulint* index_ids;
+ index_id_t* index_ids;
ulint* counts;
ulint size;
ulint i;
ulint j;
- dulint id;
+ index_id_t id;
ulint n_found;
buf_chunk_t* chunk;
dict_index_t* index;
@@ -4475,7 +4475,7 @@ buf_print_instance(
size = buf_pool->curr_size;
- index_ids = mem_alloc(sizeof(dulint) * size);
+ index_ids = mem_alloc(size * sizeof *index_ids);
counts = mem_alloc(sizeof(ulint) * size);
buf_pool_mutex_enter(buf_pool);
@@ -4530,8 +4530,7 @@ buf_print_instance(
while (j < n_found) {
- if (ut_dulint_cmp(index_ids[j],
- id) == 0) {
+ if (index_ids[j] == id) {
counts[j]++;
break;
@@ -4554,8 +4553,8 @@ buf_print_instance(
index = dict_index_get_if_in_cache(index_ids[i]);
fprintf(stderr,
- "Block count for index %lu in buffer is about %lu",
- (ulong) ut_dulint_get_low(index_ids[i]),
+ "Block count for index %llu in buffer is about %lu",
+ (ullint) index_ids[i],
(ulong) counts[i]);
if (index) {
=== modified file 'storage/innobase/buf/buf0flu.c'
--- a/storage/innobase/buf/buf0flu.c revid:vasil.dimov@stripped
+++ b/storage/innobase/buf/buf0flu.c revid:jimmy.yang@stripped00625051420-ps44ileuontw6hn3
@@ -982,8 +982,8 @@ buf_flush_init_for_writing(
case FIL_PAGE_TYPE_ZBLOB:
case FIL_PAGE_TYPE_ZBLOB2:
case FIL_PAGE_INDEX:
- mach_write_ull(page_zip->data
- + FIL_PAGE_LSN, newest_lsn);
+ mach_write_to_8(page_zip->data
+ + FIL_PAGE_LSN, newest_lsn);
memset(page_zip->data + FIL_PAGE_FILE_FLUSH_LSN, 0, 8);
mach_write_to_4(page_zip->data
+ FIL_PAGE_SPACE_OR_CHKSUM,
@@ -1005,10 +1005,10 @@ buf_flush_init_for_writing(
}
/* Write the newest modification lsn to the page header and trailer */
- mach_write_ull(page + FIL_PAGE_LSN, newest_lsn);
+ mach_write_to_8(page + FIL_PAGE_LSN, newest_lsn);
- mach_write_ull(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM,
- newest_lsn);
+ mach_write_to_8(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM,
+ newest_lsn);
/* Store the new formula checksum */
@@ -1096,8 +1096,8 @@ buf_flush_write_block_low(
ut_a(mach_read_from_4(frame + FIL_PAGE_SPACE_OR_CHKSUM)
== page_zip_calc_checksum(frame, zip_size));
}
- mach_write_ull(frame + FIL_PAGE_LSN,
- bpage->newest_modification);
+ mach_write_to_8(frame + FIL_PAGE_LSN,
+ bpage->newest_modification);
memset(frame + FIL_PAGE_FILE_FLUSH_LSN, 0, 8);
break;
case BUF_BLOCK_FILE_PAGE:
=== modified file 'storage/innobase/buf/buf0lru.c'
--- a/storage/innobase/buf/buf0lru.c revid:vasil.dimov@stripped100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/buf/buf0lru.c revid:jimmy.yang@strippedileuontw6hn3
@@ -2278,19 +2278,17 @@ buf_LRU_print_instance(
case BUF_BLOCK_FILE_PAGE:
frame = buf_block_get_frame((buf_block_t*) bpage);
fprintf(stderr, "\ntype %lu"
- " index id %lu\n",
+ " index id %llu\n",
(ulong) fil_page_get_type(frame),
- (ulong) ut_dulint_get_low(
- btr_page_get_index_id(frame)));
+ (ullint) btr_page_get_index_id(frame));
break;
case BUF_BLOCK_ZIP_PAGE:
frame = bpage->zip.data;
fprintf(stderr, "\ntype %lu size %lu"
- " index id %lu\n",
+ " index id %llu\n",
(ulong) fil_page_get_type(frame),
(ulong) buf_page_get_zip_size(bpage),
- (ulong) ut_dulint_get_low(
- btr_page_get_index_id(frame)));
+ (ullint) btr_page_get_index_id(frame));
break;
default:
=== modified file 'storage/innobase/data/data0data.c'
--- a/storage/innobase/data/data0data.c revid:vasil.dimov@stripped6260h
+++ b/storage/innobase/data/data0data.c revid:jimmy.yang@stripped
@@ -367,7 +367,7 @@ dfield_print_also_hex(
prtype = dtype_get_prtype(dfield_get_type(dfield));
switch (dtype_get_mtype(dfield_get_type(dfield))) {
- dulint id;
+ ib_id_t id;
case DATA_INT:
switch (len) {
ulint val;
@@ -417,22 +417,16 @@ dfield_print_also_hex(
case 6:
id = mach_read_from_6(data);
- fprintf(stderr, "{%lu %lu}",
- ut_dulint_get_high(id),
- ut_dulint_get_low(id));
+ fprintf(stderr, "%llu", (ullint) id);
break;
case 7:
id = mach_read_from_7(data);
- fprintf(stderr, "{%lu %lu}",
- ut_dulint_get_high(id),
- ut_dulint_get_low(id));
+ fprintf(stderr, "%llu", (ullint) id);
break;
case 8:
id = mach_read_from_8(data);
- fprintf(stderr, "{%lu %lu}",
- ut_dulint_get_high(id),
- ut_dulint_get_low(id));
+ fprintf(stderr, "%llu", (ullint) id);
break;
default:
goto print_hex;
@@ -444,29 +438,25 @@ dfield_print_also_hex(
case DATA_TRX_ID:
id = mach_read_from_6(data);
- fprintf(stderr, "trx_id " TRX_ID_FMT,
- TRX_ID_PREP_PRINTF(id));
+ fprintf(stderr, "trx_id " TRX_ID_FMT, (ullint) id);
break;
case DATA_ROLL_PTR:
id = mach_read_from_7(data);
- fprintf(stderr, "roll_ptr {%lu %lu}",
- ut_dulint_get_high(id), ut_dulint_get_low(id));
+ fprintf(stderr, "roll_ptr " TRX_ID_FMT, (ullint) id);
break;
case DATA_ROW_ID:
id = mach_read_from_6(data);
- fprintf(stderr, "row_id {%lu %lu}",
- ut_dulint_get_high(id), ut_dulint_get_low(id));
+ fprintf(stderr, "row_id " TRX_ID_FMT, (ullint) id);
break;
default:
- id = mach_dulint_read_compressed(data);
+ id = mach_ull_read_compressed(data);
- fprintf(stderr, "mix_id {%lu %lu}",
- ut_dulint_get_high(id), ut_dulint_get_low(id));
+ fprintf(stderr, "mix_id " TRX_ID_FMT, (ullint) id);
}
break;
=== modified file 'storage/innobase/dict/dict0boot.c'
--- a/storage/innobase/dict/dict0boot.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/dict/dict0boot.c revid:jimmy.yang@stripped1420-ps44ileuontw6hn3
@@ -67,12 +67,15 @@ UNIV_INTERN
void
dict_hdr_get_new_id(
/*================*/
- dulint* table_id, /*!< out: table id (not assigned if NULL) */
- dulint* index_id, /*!< out: index id (not assigned if NULL) */
- ulint* space_id) /*!< out: space id (not assigned if NULL) */
+ table_id_t* table_id, /*!< out: table id
+ (not assigned if NULL) */
+ index_id_t* index_id, /*!< out: index id
+ (not assigned if NULL) */
+ ulint* space_id) /*!< out: space id
+ (not assigned if NULL) */
{
dict_hdr_t* dict_hdr;
- dulint id;
+ ib_id_t id;
mtr_t mtr;
mtr_start(&mtr);
@@ -80,16 +83,16 @@ dict_hdr_get_new_id(
dict_hdr = dict_hdr_get(&mtr);
if (table_id) {
- id = mtr_read_dulint(dict_hdr + DICT_HDR_TABLE_ID, &mtr);
- id = ut_dulint_add(id, 1);
- mlog_write_dulint(dict_hdr + DICT_HDR_TABLE_ID, id, &mtr);
+ id = mach_read_from_8(dict_hdr + DICT_HDR_TABLE_ID);
+ id++;
+ mlog_write_ull(dict_hdr + DICT_HDR_TABLE_ID, id, &mtr);
*table_id = id;
}
if (index_id) {
- id = mtr_read_dulint(dict_hdr + DICT_HDR_INDEX_ID, &mtr);
- id = ut_dulint_add(id, 1);
- mlog_write_dulint(dict_hdr + DICT_HDR_INDEX_ID, id, &mtr);
+ id = mach_read_from_8(dict_hdr + DICT_HDR_INDEX_ID);
+ id++;
+ mlog_write_ull(dict_hdr + DICT_HDR_INDEX_ID, id, &mtr);
*index_id = id;
}
@@ -114,7 +117,7 @@ dict_hdr_flush_row_id(void)
/*=======================*/
{
dict_hdr_t* dict_hdr;
- dulint id;
+ row_id_t id;
mtr_t mtr;
ut_ad(mutex_own(&(dict_sys->mutex)));
@@ -125,7 +128,7 @@ dict_hdr_flush_row_id(void)
dict_hdr = dict_hdr_get(&mtr);
- mlog_write_dulint(dict_hdr + DICT_HDR_ROW_ID, id, &mtr);
+ mlog_write_ull(dict_hdr + DICT_HDR_ROW_ID, id, &mtr);
mtr_commit(&mtr);
}
@@ -157,14 +160,14 @@ dict_hdr_create(
/* Start counting row, table, index, and tree ids from
DICT_HDR_FIRST_ID */
- mlog_write_dulint(dict_header + DICT_HDR_ROW_ID,
- ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr);
+ mlog_write_ull(dict_header + DICT_HDR_ROW_ID,
+ DICT_HDR_FIRST_ID, mtr);
- mlog_write_dulint(dict_header + DICT_HDR_TABLE_ID,
- ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr);
+ mlog_write_ull(dict_header + DICT_HDR_TABLE_ID,
+ DICT_HDR_FIRST_ID, mtr);
- mlog_write_dulint(dict_header + DICT_HDR_INDEX_ID,
- ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr);
+ mlog_write_ull(dict_header + DICT_HDR_INDEX_ID,
+ DICT_HDR_FIRST_ID, mtr);
mlog_write_ulint(dict_header + DICT_HDR_MAX_SPACE_ID,
0, MLOG_4BYTES, mtr);
@@ -273,11 +276,9 @@ dict_boot(void)
..._MARGIN, it will immediately be updated to the disk-based
header. */
- dict_sys->row_id = ut_dulint_add(
- ut_dulint_align_up(mtr_read_dulint(dict_hdr + DICT_HDR_ROW_ID,
- &mtr),
- DICT_HDR_ROW_ID_WRITE_MARGIN),
- DICT_HDR_ROW_ID_WRITE_MARGIN);
+ dict_sys->row_id = DICT_HDR_ROW_ID_WRITE_MARGIN
+ + ut_uint64_align_up(mach_read_from_8(dict_hdr + DICT_HDR_ROW_ID),
+ DICT_HDR_ROW_ID_WRITE_MARGIN);
/* Insert into the dictionary cache the descriptions of the basic
system tables */
=== modified file 'storage/innobase/dict/dict0crea.c'
--- a/storage/innobase/dict/dict0crea.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/dict/dict0crea.c revid:jimmy.yang@stripped51420-ps44ileuontw6hn3
@@ -578,7 +578,7 @@ dict_build_index_def_step(
ins_node_set_new_row(node->ind_def, row);
/* Note that the index was created by this transaction. */
- index->trx_id = (ib_uint64_t) ut_conv_dulint_to_longlong(trx->id);
+ index->trx_id = trx->id;
return(DB_SUCCESS);
}
@@ -749,7 +749,7 @@ dict_truncate_index_tree(
ibool drop = !space;
ulint zip_size;
ulint type;
- dulint index_id;
+ index_id_t index_id;
rec_t* rec;
const byte* ptr;
ulint len;
@@ -842,7 +842,7 @@ create:
for (index = UT_LIST_GET_FIRST(table->indexes);
index;
index = UT_LIST_GET_NEXT(indexes, index)) {
- if (!ut_dulint_cmp(index->id, index_id)) {
+ if (index->id == index_id) {
root_page_no = btr_create(type, space, zip_size,
index_id, index, mtr);
index->page = (unsigned int) root_page_no;
@@ -852,10 +852,9 @@ create:
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB: Index %lu %lu of table %s is missing\n"
+ " InnoDB: Index %llu of table %s is missing\n"
"InnoDB: from the data dictionary during TRUNCATE!\n",
- ut_dulint_get_high(index_id),
- ut_dulint_get_low(index_id),
+ (ullint) index_id,
table->name);
return(FIL_NULL);
@@ -1107,7 +1106,7 @@ dict_create_index_step(
if (node->state == INDEX_ADD_TO_CACHE) {
- dulint index_id = node->index->id;
+ index_id_t index_id = node->index->id;
err = dict_index_add_to_cache(
node->table, node->index, FIL_NULL,
=== modified file 'storage/innobase/dict/dict0dict.c'
--- a/storage/innobase/dict/dict0dict.c revid:vasil.dimov@stripped3100249-e4bbn3gf1py6260h
+++ b/storage/innobase/dict/dict0dict.c revid:jimmy.yang@strippedeuontw6hn3
@@ -256,8 +256,8 @@ dict_mutex_exit_for_mysql(void)
/** Get the mutex that protects index->stat_n_diff_key_vals[] */
#define GET_INDEX_STAT_MUTEX(index) \
- (&dict_index_stat_mutex[ut_fold_dulint(index->id) \
- % DICT_INDEX_STAT_MUTEX_SIZE])
+ (&dict_index_stat_mutex[ut_fold_ull(index->id) \
+ % DICT_INDEX_STAT_MUTEX_SIZE])
/**********************************************************************//**
Lock the appropriate mutex to protect index->stat_n_diff_key_vals[].
@@ -425,14 +425,14 @@ dict_index_t*
dict_index_get_on_id_low(
/*=====================*/
dict_table_t* table, /*!< in: table */
- dulint id) /*!< in: index id */
+ index_id_t id) /*!< in: index id */
{
dict_index_t* index;
index = dict_table_get_first_index(table);
while (index) {
- if (0 == ut_dulint_cmp(id, index->id)) {
+ if (id == index->id) {
/* Found */
return(index);
@@ -574,20 +574,18 @@ UNIV_INTERN
dict_table_t*
dict_table_get_on_id(
/*=================*/
- dulint table_id, /*!< in: table id */
- trx_t* trx) /*!< in: transaction handle */
+ table_id_t table_id, /*!< in: table id */
+ trx_t* trx) /*!< in: transaction handle */
{
dict_table_t* table;
- if (ut_dulint_cmp(table_id, DICT_FIELDS_ID) <= 0
+ if (table_id <= DICT_FIELDS_ID
|| trx->dict_operation_lock_mode == RW_X_LATCH) {
- /* It is a system table which will always exist in the table
- cache: we avoid acquiring the dictionary mutex, because
- if we are doing a rollback to handle an error in TABLE
- CREATE, for example, we already have the mutex! */
- ut_ad(mutex_own(&(dict_sys->mutex))
- || trx->dict_operation_lock_mode == RW_X_LATCH);
+ /* Note: An X latch implies that the transaction
+ already owns the dictionary mutex. */
+
+ ut_ad(mutex_own(&dict_sys->mutex));
return(dict_table_get_on_id_low(table_id));
}
@@ -800,7 +798,7 @@ dict_table_add_to_cache(
table->cached = TRUE;
fold = ut_fold_string(table->name);
- id_fold = ut_fold_dulint(table->id);
+ id_fold = ut_fold_ull(table->id);
row_len = 0;
for (i = 0; i < table->n_def; i++) {
@@ -842,7 +840,7 @@ dict_table_add_to_cache(
dict_table_t* table2;
HASH_SEARCH(id_hash, dict_sys->table_id_hash, id_fold,
dict_table_t*, table2, ut_ad(table2->cached),
- ut_dulint_cmp(table2->id, table->id) == 0);
+ table2->id == table->id);
ut_a(table2 == NULL);
#ifdef UNIV_DEBUG
@@ -877,7 +875,7 @@ UNIV_INTERN
dict_index_t*
dict_index_find_on_id_low(
/*======================*/
- dulint id) /*!< in: index id */
+ index_id_t id) /*!< in: index id */
{
dict_table_t* table;
dict_index_t* index;
@@ -888,7 +886,7 @@ dict_index_find_on_id_low(
index = dict_table_get_first_index(table);
while (index) {
- if (0 == ut_dulint_cmp(id, index->id)) {
+ if (id == index->id) {
/* Found */
return(index);
@@ -1144,7 +1142,7 @@ void
dict_table_change_id_in_cache(
/*==========================*/
dict_table_t* table, /*!< in/out: table object already in cache */
- dulint new_id) /*!< in: new id to set */
+ table_id_t new_id) /*!< in: new id to set */
{
ut_ad(table);
ut_ad(mutex_own(&(dict_sys->mutex)));
@@ -1153,12 +1151,12 @@ dict_table_change_id_in_cache(
/* Remove the table from the hash table of id's */
HASH_DELETE(dict_table_t, id_hash, dict_sys->table_id_hash,
- ut_fold_dulint(table->id), table);
+ ut_fold_ull(table->id), table);
table->id = new_id;
/* Add the table back to the hash table */
HASH_INSERT(dict_table_t, id_hash, dict_sys->table_id_hash,
- ut_fold_dulint(table->id), table);
+ ut_fold_ull(table->id), table);
}
/**********************************************************************//**
@@ -1214,7 +1212,7 @@ dict_table_remove_from_cache(
HASH_DELETE(dict_table_t, name_hash, dict_sys->table_hash,
ut_fold_string(table->name), table);
HASH_DELETE(dict_table_t, id_hash, dict_sys->table_id_hash,
- ut_fold_dulint(table->id), table);
+ ut_fold_ull(table->id), table);
/* Remove table from LRU list of tables */
UT_LIST_REMOVE(table_LRU, dict_sys->table_LRU, table);
@@ -2476,8 +2474,7 @@ dict_table_get_index_by_max_id(
/* We found a matching index, select
the index with the higher id*/
- if (!found
- || ut_dulint_cmp(index->id, found->id) > 0) {
+ if (!found || index->id > found->id) {
found = index;
}
@@ -3965,7 +3962,7 @@ UNIV_INTERN
dict_index_t*
dict_index_get_if_in_cache_low(
/*===========================*/
- dulint index_id) /*!< in: index id */
+ index_id_t index_id) /*!< in: index id */
{
ut_ad(mutex_own(&(dict_sys->mutex)));
@@ -3980,7 +3977,7 @@ UNIV_INTERN
dict_index_t*
dict_index_get_if_in_cache(
/*=======================*/
- dulint index_id) /*!< in: index id */
+ index_id_t index_id) /*!< in: index id */
{
dict_index_t* index;
@@ -4376,12 +4373,11 @@ dict_table_print_low(
fprintf(stderr,
"--------------------------------------\n"
- "TABLE: name %s, id %lu %lu, flags %lx, columns %lu,"
+ "TABLE: name %s, id %llu, flags %lx, columns %lu,"
" indexes %lu, appr.rows %lu\n"
" COLUMNS: ",
table->name,
- (ulong) ut_dulint_get_high(table->id),
- (ulong) ut_dulint_get_low(table->id),
+ (ullint) table->id,
(ulong) table->flags,
(ulong) table->n_cols,
(ulong) UT_LIST_GET_LEN(table->indexes),
@@ -4470,14 +4466,13 @@ dict_index_print_low(
}
fprintf(stderr,
- " INDEX: name %s, id %lu %lu, fields %lu/%lu,"
+ " INDEX: name %s, id %llu, fields %lu/%lu,"
" uniq %lu, type %lu\n"
" root page %lu, appr.key vals %lu,"
" leaf pages %lu, size pages %lu\n"
" FIELDS: ",
index->name,
- (ulong) ut_dulint_get_high(index->id),
- (ulong) ut_dulint_get_low(index->id),
+ (ullint) index->id,
(ulong) index->n_user_defined_cols,
(ulong) index->n_fields,
(ulong) index->n_uniq,
@@ -4849,8 +4844,7 @@ dict_table_get_index_on_name_and_min_id(
while (index != NULL) {
if (ut_strcmp(index->name, name) == 0) {
- if (!min_index
- || ut_dulint_cmp(index->id, min_index->id) < 0) {
+ if (!min_index || index->id < min_index->id) {
min_index = index;
}
=== modified file 'storage/innobase/dict/dict0load.c'
--- a/storage/innobase/dict/dict0load.c revid:vasil.dimov@stripped
+++ b/storage/innobase/dict/dict0load.c revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -364,7 +364,7 @@ dict_process_sys_indexes_rec(
mem_heap_t* heap, /*!< in/out: heap memory */
const rec_t* rec, /*!< in: current SYS_INDEXES rec */
dict_index_t* index, /*!< out: index to be filled */
- dulint* table_id) /*!< out: index table id */
+ table_id_t* table_id) /*!< out: index table id */
{
const char* err_msg;
byte* buf;
@@ -390,7 +390,7 @@ dict_process_sys_columns_rec(
mem_heap_t* heap, /*!< in/out: heap memory */
const rec_t* rec, /*!< in: current SYS_COLUMNS rec */
dict_col_t* column, /*!< out: dict_col_t to be filled */
- dulint* table_id, /*!< out: table id */
+ table_id_t* table_id, /*!< out: table id */
const char** col_name) /*!< out: column name */
{
const char* err_msg;
@@ -414,8 +414,8 @@ dict_process_sys_fields_rec(
dict_field_t* sys_field, /*!< out: dict_field_t to be
filled */
ulint* pos, /*!< out: Field position */
- dulint* index_id, /*!< out: current index id */
- dulint last_id) /*!< in: previous index id */
+ index_id_t* index_id, /*!< out: current index id */
+ index_id_t last_id) /*!< in: previous index id */
{
byte* buf;
byte* last_index_id;
@@ -789,7 +789,7 @@ dict_load_column_low(
for temporary storage */
dict_col_t* column, /*!< out: dict_column_t to fill,
or NULL if table != NULL */
- dulint* table_id, /*!< out: table id */
+ table_id_t* table_id, /*!< out: table id */
const char** col_name, /*!< out: column name */
const rec_t* rec) /*!< in: SYS_COLUMNS record */
{
@@ -819,8 +819,7 @@ err_len:
if (table_id) {
*table_id = mach_read_from_8(field);
- } else if (UNIV_UNLIKELY(ut_dulint_cmp(table->id,
- mach_read_from_8(field)))) {
+ } else if (UNIV_UNLIKELY(table->id != mach_read_from_8(field))) {
return("SYS_COLUMNS.TABLE_ID mismatch");
}
@@ -1199,7 +1198,7 @@ dict_load_index_low(
ulint len;
ulint name_len;
char* name_buf;
- dulint id;
+ index_id_t id;
ulint n_fields;
ulint type;
ulint space;
@@ -1316,19 +1315,11 @@ dict_load_indexes(
dfield_t* dfield;
const rec_t* rec;
byte* buf;
- ibool is_sys_table;
mtr_t mtr;
ulint error = DB_SUCCESS;
ut_ad(mutex_own(&(dict_sys->mutex)));
- if ((ut_dulint_get_high(table->id) == 0)
- && (ut_dulint_get_low(table->id) < DICT_HDR_FIRST_ID)) {
- is_sys_table = TRUE;
- } else {
- is_sys_table = FALSE;
- }
-
mtr_start(&mtr);
sys_indexes = dict_table_get_low("SYS_INDEXES");
@@ -1414,7 +1405,7 @@ corrupted:
" is not clustered!\n", stderr);
goto corrupted;
- } else if (is_sys_table
+ } else if (table->id < DICT_HDR_FIRST_ID
&& (dict_index_is_clust(index)
|| ((table == dict_sys->sys_tables)
&& !strcmp("ID_IND", index->name)))) {
@@ -1774,7 +1765,7 @@ UNIV_INTERN
dict_table_t*
dict_load_table_on_id(
/*==================*/
- dulint table_id) /*!< in: table id */
+ table_id_t table_id) /*!< in: table id */
{
byte id_buf[8];
btr_pcur_t pcur;
@@ -1837,7 +1828,7 @@ dict_load_table_on_id(
ut_ad(len == 8);
/* Check if the table id in record is the one searched for */
- if (ut_dulint_cmp(table_id, mach_read_from_8(field)) != 0) {
+ if (table_id != mach_read_from_8(field)) {
btr_pcur_close(&pcur);
mtr_commit(&mtr);
=== modified file 'storage/innobase/fil/fil0fil.c'
--- a/storage/innobase/fil/fil0fil.c revid:vasil.dimov@strippedh
+++ b/storage/innobase/fil/fil0fil.c revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -1705,7 +1705,7 @@ fil_write_lsn_and_arch_no_to_file(
fil_read(TRUE, 0, 0, sum_of_sizes, 0, UNIV_PAGE_SIZE, buf, NULL);
- mach_write_ull(buf + FIL_PAGE_FILE_FLUSH_LSN, lsn);
+ mach_write_to_8(buf + FIL_PAGE_FILE_FLUSH_LSN, lsn);
fil_write(TRUE, 0, 0, sum_of_sizes, 0, UNIV_PAGE_SIZE, buf, NULL);
@@ -1799,7 +1799,7 @@ fil_read_flushed_lsn_and_arch_log_no(
os_file_read(data_file, buf, 0, 0, UNIV_PAGE_SIZE);
- flushed_lsn = mach_read_ull(buf + FIL_PAGE_FILE_FLUSH_LSN);
+ flushed_lsn = mach_read_from_8(buf + FIL_PAGE_FILE_FLUSH_LSN);
ut_free(buf2);
@@ -2850,7 +2850,7 @@ fil_reset_too_high_lsns(
/* We have to read the file flush lsn from the header of the file */
- flush_lsn = mach_read_ull(page + FIL_PAGE_FILE_FLUSH_LSN);
+ flush_lsn = mach_read_from_8(page + FIL_PAGE_FILE_FLUSH_LSN);
if (current_lsn >= flush_lsn) {
/* Ok */
@@ -2898,7 +2898,7 @@ fil_reset_too_high_lsns(
goto func_exit;
}
- if (mach_read_ull(page + FIL_PAGE_LSN) > current_lsn) {
+ if (mach_read_from_8(page + FIL_PAGE_LSN) > current_lsn) {
/* We have to reset the lsn */
if (zip_size) {
@@ -2940,7 +2940,7 @@ fil_reset_too_high_lsns(
goto func_exit;
}
- mach_write_ull(page + FIL_PAGE_FILE_FLUSH_LSN, current_lsn);
+ mach_write_to_8(page + FIL_PAGE_FILE_FLUSH_LSN, current_lsn);
success = os_file_write(filepath, file, page, 0, 0,
zip_size ? zip_size : UNIV_PAGE_SIZE);
=== modified file 'storage/innobase/fsp/fsp0fsp.c'
--- a/storage/innobase/fsp/fsp0fsp.c revid:vasil.dimov@stripped9-e4bbn3gf1py6260h
+++ b/storage/innobase/fsp/fsp0fsp.c revid:jimmy.yang@stripped3
@@ -127,9 +127,8 @@ typedef byte fseg_inode_t;
#define FSEG_ARR_OFFSET (FSEG_PAGE_DATA + FLST_NODE_SIZE)
/*-------------------------------------*/
-#define FSEG_ID 0 /* 8 bytes of segment id: if this is
- ut_dulint_zero, it means that the
- header is unused */
+#define FSEG_ID 0 /* 8 bytes of segment id: if this is 0,
+ it means that the header is unused */
#define FSEG_NOT_FULL_N_USED 8
/* number of used segment pages in
the FSEG_NOT_FULL list */
@@ -999,11 +998,11 @@ fsp_header_init(
flst_init(header + FSP_SEG_INODES_FULL, mtr);
flst_init(header + FSP_SEG_INODES_FREE, mtr);
- mlog_write_dulint(header + FSP_SEG_ID, ut_dulint_create(0, 1), mtr);
+ mlog_write_ull(header + FSP_SEG_ID, 1, mtr);
if (space == 0) {
fsp_fill_free_list(FALSE, space, header, mtr);
btr_create(DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF,
- 0, 0, ut_dulint_add(DICT_IBUF_ID_MIN, space),
+ 0, 0, DICT_IBUF_ID_MIN + space,
dict_ind_redundant, mtr);
} else {
fsp_fill_free_list(TRUE, space, header, mtr);
@@ -1841,7 +1840,7 @@ fsp_seg_inode_page_find_used(
inode = fsp_seg_inode_page_get_nth_inode(
page, i, zip_size, mtr);
- if (!ut_dulint_is_zero(mach_read_from_8(inode + FSEG_ID))) {
+ if (mach_read_from_8(inode + FSEG_ID)) {
/* This is used */
ut_ad(mach_read_from_4(inode + FSEG_MAGIC_N)
@@ -1872,7 +1871,7 @@ fsp_seg_inode_page_find_free(
inode = fsp_seg_inode_page_get_nth_inode(
page, i, zip_size, mtr);
- if (ut_dulint_is_zero(mach_read_from_8(inode + FSEG_ID))) {
+ if (!mach_read_from_8(inode + FSEG_ID)) {
/* This is unused */
return(i);
@@ -1931,7 +1930,7 @@ fsp_alloc_seg_inode_page(
inode = fsp_seg_inode_page_get_nth_inode(page, i,
zip_size, mtr);
- mlog_write_dulint(inode + FSEG_ID, ut_dulint_zero, mtr);
+ mlog_write_ull(inode + FSEG_ID, 0, mtr);
}
flst_add_last(space_header + FSP_SEG_INODES_FREE,
@@ -1998,7 +1997,7 @@ fsp_alloc_seg_inode(
page + FSEG_INODE_PAGE_NODE, mtr);
}
- ut_ad(ut_dulint_is_zero(mach_read_from_8(inode + FSEG_ID))
+ ut_ad(!mach_read_from_8(inode + FSEG_ID)
|| mach_read_from_4(inode + FSEG_MAGIC_N) == FSEG_MAGIC_N_VALUE);
return(inode);
}
@@ -2036,7 +2035,7 @@ fsp_free_seg_inode(
page + FSEG_INODE_PAGE_NODE, mtr);
}
- mlog_write_dulint(inode + FSEG_ID, ut_dulint_zero, mtr);
+ mlog_write_ull(inode + FSEG_ID, 0, mtr);
mlog_write_ulint(inode + FSEG_MAGIC_N, 0xfa051ce3, MLOG_4BYTES, mtr);
if (ULINT_UNDEFINED
@@ -2073,8 +2072,7 @@ fseg_inode_try_get(
inode = fut_get_ptr(space, zip_size, inode_addr, RW_X_LATCH, mtr);
- if (UNIV_UNLIKELY
- (ut_dulint_is_zero(mach_read_from_8(inode + FSEG_ID)))) {
+ if (UNIV_UNLIKELY(!mach_read_from_8(inode + FSEG_ID))) {
inode = NULL;
} else {
@@ -2249,7 +2247,7 @@ fseg_create_general(
ulint zip_size;
fsp_header_t* space_header;
fseg_inode_t* inode;
- dulint seg_id;
+ ib_id_t seg_id;
buf_block_t* block = 0; /* remove warning */
fseg_header_t* header = 0; /* remove warning */
rw_lock_t* latch;
@@ -2303,12 +2301,11 @@ fseg_create_general(
/* Read the next segment id from space header and increment the
value in space header */
- seg_id = mtr_read_dulint(space_header + FSP_SEG_ID, mtr);
+ seg_id = mach_read_from_8(space_header + FSP_SEG_ID);
- mlog_write_dulint(space_header + FSP_SEG_ID, ut_dulint_add(seg_id, 1),
- mtr);
+ mlog_write_ull(space_header + FSP_SEG_ID, seg_id + 1, mtr);
- mlog_write_dulint(inode + FSEG_ID, seg_id, mtr);
+ mlog_write_ull(inode + FSEG_ID, seg_id, mtr);
mlog_write_ulint(inode + FSEG_NOT_FULL_N_USED, 0, MLOG_4BYTES, mtr);
flst_init(inode + FSEG_FREE, mtr);
@@ -2460,7 +2457,7 @@ fseg_fill_free_list(
{
xdes_t* descr;
ulint i;
- dulint seg_id;
+ ib_id_t seg_id;
ulint reserved;
ulint used;
@@ -2497,10 +2494,10 @@ fseg_fill_free_list(
xdes_set_state(descr, XDES_FSEG, mtr);
- seg_id = mtr_read_dulint(inode + FSEG_ID, mtr);
+ seg_id = mach_read_from_8(inode + FSEG_ID);
ut_ad(mach_read_from_4(inode + FSEG_MAGIC_N)
== FSEG_MAGIC_N_VALUE);
- mlog_write_dulint(descr + XDES_ID, seg_id, mtr);
+ mlog_write_ull(descr + XDES_ID, seg_id, mtr);
flst_add_last(inode + FSEG_FREE, descr + XDES_FLST_NODE, mtr);
hint += FSP_EXTENT_SIZE;
@@ -2524,7 +2521,7 @@ fseg_alloc_free_extent(
mtr_t* mtr) /*!< in: mtr */
{
xdes_t* descr;
- dulint seg_id;
+ ib_id_t seg_id;
fil_addr_t first;
ut_ad(!((page_offset(inode) - FSEG_ARR_OFFSET) % FSEG_INODE_SIZE));
@@ -2545,10 +2542,10 @@ fseg_alloc_free_extent(
return(NULL);
}
- seg_id = mtr_read_dulint(inode + FSEG_ID, mtr);
+ seg_id = mach_read_from_8(inode + FSEG_ID);
xdes_set_state(descr, XDES_FSEG, mtr);
- mlog_write_dulint(descr + XDES_ID, seg_id, mtr);
+ mlog_write_ull(descr + XDES_ID, seg_id, mtr);
flst_add_last(inode + FSEG_FREE, descr + XDES_FLST_NODE, mtr);
/* Try to fill the segment free list */
@@ -2583,7 +2580,7 @@ fseg_alloc_free_page_low(
{
fsp_header_t* space_header;
ulint space_size;
- dulint seg_id;
+ ib_id_t seg_id;
ulint used;
ulint reserved;
xdes_t* descr; /*!< extent of the hinted page */
@@ -2599,9 +2596,9 @@ fseg_alloc_free_page_low(
ut_ad(mach_read_from_4(seg_inode + FSEG_MAGIC_N)
== FSEG_MAGIC_N_VALUE);
ut_ad(!((page_offset(seg_inode) - FSEG_ARR_OFFSET) % FSEG_INODE_SIZE));
- seg_id = mtr_read_dulint(seg_inode + FSEG_ID, mtr);
+ seg_id = mach_read_from_8(seg_inode + FSEG_ID);
- ut_ad(!ut_dulint_is_zero(seg_id));
+ ut_ad(seg_id);
reserved = fseg_n_reserved_pages_low(seg_inode, &used, mtr);
@@ -2619,8 +2616,7 @@ fseg_alloc_free_page_low(
/* In the big if-else below we look for ret_page and ret_descr */
/*-------------------------------------------------------------*/
if ((xdes_get_state(descr, mtr) == XDES_FSEG)
- && (0 == ut_dulint_cmp(mtr_read_dulint(descr + XDES_ID,
- mtr), seg_id))
+ && mach_read_from_8(descr + XDES_ID) == seg_id
&& (xdes_get_bit(descr, XDES_FREE_BIT,
hint % FSP_EXTENT_SIZE, mtr) == TRUE)) {
@@ -2642,7 +2638,7 @@ fseg_alloc_free_page_low(
ut_a(ret_descr == descr);
xdes_set_state(ret_descr, XDES_FSEG, mtr);
- mlog_write_dulint(ret_descr + XDES_ID, seg_id, mtr);
+ mlog_write_ull(ret_descr + XDES_ID, seg_id, mtr);
flst_add_last(seg_inode + FSEG_FREE,
ret_descr + XDES_FLST_NODE, mtr);
@@ -2671,8 +2667,7 @@ fseg_alloc_free_page_low(
}
/*-----------------------------------------------------------*/
} else if ((xdes_get_state(descr, mtr) == XDES_FSEG)
- && (0 == ut_dulint_cmp(mtr_read_dulint(descr + XDES_ID,
- mtr), seg_id))
+ && mach_read_from_8(descr + XDES_ID) == seg_id
&& (!xdes_is_full(descr, mtr))) {
/* 4. We can take the page from the same extent as the
@@ -3243,8 +3238,8 @@ fseg_free_page_low(
xdes_t* descr;
ulint not_full_n_used;
ulint state;
- dulint descr_id;
- dulint seg_id;
+ ib_id_t descr_id;
+ ib_id_t seg_id;
ulint i;
ut_ad(seg_inode && mtr);
@@ -3303,20 +3298,18 @@ crash:
/* If we get here, the page is in some extent of the segment */
- descr_id = mtr_read_dulint(descr + XDES_ID, mtr);
- seg_id = mtr_read_dulint(seg_inode + FSEG_ID, mtr);
+ descr_id = mach_read_from_8(descr + XDES_ID);
+ seg_id = mach_read_from_8(seg_inode + FSEG_ID);
#if 0
fprintf(stderr,
"InnoDB: InnoDB is freeing space %lu page %lu,\n"
- "InnoDB: which belongs to descr seg %lu %lu\n"
- "InnoDB: segment %lu %lu.\n",
+ "InnoDB: which belongs to descr seg %llu\n"
+ "InnoDB: segment %llu.\n",
(ulong) space, (ulong) page,
- (ulong) ut_dulint_get_high(descr_id),
- (ulong) ut_dulint_get_low(descr_id),
- (ulong) ut_dulint_get_high(seg_id),
- (ulong) ut_dulint_get_low(seg_id));
+ (ullint) descr_id,
+ (ullint) seg_id);
#endif /* 0 */
- if (0 != ut_dulint_cmp(descr_id, seg_id)) {
+ if (UNIV_UNLIKELY(descr_id != seg_id)) {
fputs("InnoDB: Dump of the tablespace extent descriptor: ",
stderr);
ut_print_buf(stderr, descr, 40);
@@ -3328,13 +3321,11 @@ crash:
"InnoDB: Serious error: InnoDB is trying to"
" free space %lu page %lu,\n"
"InnoDB: which does not belong to"
- " segment %lu %lu but belongs\n"
- "InnoDB: to segment %lu %lu.\n",
+ " segment %llu but belongs\n"
+ "InnoDB: to segment %llu.\n",
(ulong) space, (ulong) page,
- (ulong) ut_dulint_get_high(descr_id),
- (ulong) ut_dulint_get_low(descr_id),
- (ulong) ut_dulint_get_high(seg_id),
- (ulong) ut_dulint_get_low(seg_id));
+ (ullint) descr_id,
+ (ullint) seg_id);
goto crash;
}
@@ -3423,8 +3414,7 @@ fseg_free_extent(
descr = xdes_get_descriptor(space, zip_size, page, mtr);
ut_a(xdes_get_state(descr, mtr) == XDES_FSEG);
- ut_a(0 == ut_dulint_cmp(mtr_read_dulint(descr + XDES_ID, mtr),
- mtr_read_dulint(seg_inode + FSEG_ID, mtr)));
+ ut_a(!memcmp(descr + XDES_ID, seg_inode + FSEG_ID, 8));
ut_ad(mach_read_from_4(seg_inode + FSEG_MAGIC_N)
== FSEG_MAGIC_N_VALUE);
@@ -3684,7 +3674,7 @@ fseg_validate_low(
mtr_t* mtr2) /*!< in: mtr */
{
ulint space;
- dulint seg_id;
+ ib_id_t seg_id;
mtr_t mtr;
xdes_t* descr;
fil_addr_t node_addr;
@@ -3696,7 +3686,7 @@ fseg_validate_low(
space = page_get_space_id(page_align(inode));
- seg_id = mtr_read_dulint(inode + FSEG_ID, mtr2);
+ seg_id = mach_read_from_8(inode + FSEG_ID);
n_used = mtr_read_ulint(inode + FSEG_NOT_FULL_N_USED,
MLOG_4BYTES, mtr2);
flst_validate(inode + FSEG_FREE, mtr2);
@@ -3719,8 +3709,7 @@ fseg_validate_low(
ut_a(xdes_get_n_used(descr, &mtr) == 0);
ut_a(xdes_get_state(descr, &mtr) == XDES_FSEG);
- ut_a(!ut_dulint_cmp(mtr_read_dulint(descr + XDES_ID, &mtr),
- seg_id));
+ ut_a(mach_read_from_8(descr + XDES_ID) == seg_id);
node_addr = flst_get_next_addr(descr + XDES_FLST_NODE, &mtr);
mtr_commit(&mtr);
@@ -3744,8 +3733,7 @@ fseg_validate_low(
ut_a(xdes_get_n_used(descr, &mtr) > 0);
ut_a(xdes_get_n_used(descr, &mtr) < FSP_EXTENT_SIZE);
ut_a(xdes_get_state(descr, &mtr) == XDES_FSEG);
- ut_a(!ut_dulint_cmp(mtr_read_dulint(descr + XDES_ID, &mtr),
- seg_id));
+ ut_a(mach_read_from_8(descr + XDES_ID) == seg_id);
n_used2 += xdes_get_n_used(descr, &mtr);
@@ -3770,8 +3758,7 @@ fseg_validate_low(
ut_a(xdes_get_n_used(descr, &mtr) == FSP_EXTENT_SIZE);
ut_a(xdes_get_state(descr, &mtr) == XDES_FSEG);
- ut_a(!ut_dulint_cmp(mtr_read_dulint(descr + XDES_ID, &mtr),
- seg_id));
+ ut_a(mach_read_from_8(descr + XDES_ID) == seg_id);
node_addr = flst_get_next_addr(descr + XDES_FLST_NODE, &mtr);
mtr_commit(&mtr);
@@ -3822,8 +3809,6 @@ fseg_print_low(
mtr_t* mtr) /*!< in: mtr */
{
ulint space;
- ulint seg_id_low;
- ulint seg_id_high;
ulint n_used;
ulint n_frag;
ulint n_free;
@@ -3832,7 +3817,7 @@ fseg_print_low(
ulint reserved;
ulint used;
ulint page_no;
- dulint d_var;
+ ib_id_t seg_id;
ut_ad(mtr_memo_contains_page(mtr, inode, MTR_MEMO_PAGE_X_FIX));
space = page_get_space_id(page_align(inode));
@@ -3840,10 +3825,7 @@ fseg_print_low(
reserved = fseg_n_reserved_pages_low(inode, &used, mtr);
- d_var = mtr_read_dulint(inode + FSEG_ID, mtr);
-
- seg_id_low = ut_dulint_get_low(d_var);
- seg_id_high = ut_dulint_get_high(d_var);
+ seg_id = mach_read_from_8(inode + FSEG_ID);
n_used = mtr_read_ulint(inode + FSEG_NOT_FULL_N_USED,
MLOG_4BYTES, mtr);
@@ -3853,11 +3835,11 @@ fseg_print_low(
n_full = flst_get_len(inode + FSEG_FULL, mtr);
fprintf(stderr,
- "SEGMENT id %lu %lu space %lu; page %lu;"
+ "SEGMENT id %llu space %lu; page %lu;"
" res %lu used %lu; full ext %lu\n"
"fragm pages %lu; free extents %lu;"
" not full extents %lu: pages %lu\n",
- (ulong) seg_id_high, (ulong) seg_id_low,
+ (ullint) seg_id,
(ulong) space, (ulong) page_no,
(ulong) reserved, (ulong) used, (ulong) n_full,
(ulong) n_frag, (ulong) n_free, (ulong) n_not_full,
@@ -4059,8 +4041,7 @@ fsp_validate(
seg_inode = fsp_seg_inode_page_get_nth_inode(
seg_inode_page, n, zip_size, &mtr);
- ut_a(!ut_dulint_is_zero(
- mach_read_from_8(seg_inode + FSEG_ID)));
+ ut_a(mach_read_from_8(seg_inode + FSEG_ID) != 0);
fseg_validate_low(seg_inode, &mtr);
descr_count += flst_get_len(seg_inode + FSEG_FREE,
@@ -4105,8 +4086,7 @@ fsp_validate(
seg_inode = fsp_seg_inode_page_get_nth_inode(
seg_inode_page, n, zip_size, &mtr);
- if (!ut_dulint_is_zero(
- mach_read_from_8(seg_inode + FSEG_ID))) {
+ if (mach_read_from_8(seg_inode + FSEG_ID)) {
fseg_validate_low(seg_inode, &mtr);
descr_count += flst_get_len(
@@ -4168,11 +4148,9 @@ fsp_print(
ulint n_free;
ulint n_free_frag;
ulint n_full_frag;
- ulint seg_id_low;
- ulint seg_id_high;
+ ib_id_t seg_id;
ulint n;
ulint n_segs = 0;
- dulint d_var;
mtr_t mtr;
mtr_t mtr2;
@@ -4202,21 +4180,18 @@ fsp_print(
n_free_frag = flst_get_len(header + FSP_FREE_FRAG, &mtr);
n_full_frag = flst_get_len(header + FSP_FULL_FRAG, &mtr);
- d_var = mtr_read_dulint(header + FSP_SEG_ID, &mtr);
-
- seg_id_low = ut_dulint_get_low(d_var);
- seg_id_high = ut_dulint_get_high(d_var);
+ seg_id = mach_read_from_8(header + FSP_SEG_ID);
fprintf(stderr,
"FILE SPACE INFO: id %lu\n"
"size %lu, free limit %lu, free extents %lu\n"
"not full frag extents %lu: used pages %lu,"
" full frag extents %lu\n"
- "first seg id not used %lu %lu\n",
+ "first seg id not used %llu\n",
(ulong) space,
(ulong) size, (ulong) free_limit, (ulong) n_free,
(ulong) n_free_frag, (ulong) frag_n_used, (ulong) n_full_frag,
- (ulong) seg_id_high, (ulong) seg_id_low);
+ (ullint) seg_id);
mtr_commit(&mtr);
@@ -4246,8 +4221,7 @@ fsp_print(
seg_inode = fsp_seg_inode_page_get_nth_inode(
seg_inode_page, n, zip_size, &mtr);
- ut_a(!ut_dulint_is_zero(
- mach_read_from_8(seg_inode + FSEG_ID)));
+ ut_a(mach_read_from_8(seg_inode + FSEG_ID) != 0);
fseg_print_low(seg_inode, &mtr);
n_segs++;
@@ -4284,8 +4258,7 @@ fsp_print(
seg_inode = fsp_seg_inode_page_get_nth_inode(
seg_inode_page, n, zip_size, &mtr);
- if (!ut_dulint_is_zero(
- mach_read_from_8(seg_inode + FSEG_ID))) {
+ if (mach_read_from_8(seg_inode + FSEG_ID)) {
fseg_print_low(seg_inode, &mtr);
n_segs++;
=== modified file 'storage/innobase/handler/ha_innodb.cc'
--- a/storage/innobase/handler/ha_innodb.cc revid:vasil.dimov@stripped100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/handler/ha_innodb.cc revid:jimmy.yang@stripped20-ps44ileuontw6hn3
@@ -2967,9 +2967,9 @@ innobase_close_connection(
global_system_variables.log_warnings) {
sql_print_warning(
"MySQL is closing a connection that has an active "
- "InnoDB transaction. %lu row modifications will "
+ "InnoDB transaction. %llu row modifications will "
"roll back.",
- (ulong) trx->undo_no.low);
+ (ullint) trx->undo_no);
}
innobase_rollback_trx(trx);
@@ -6649,6 +6649,7 @@ ha_innobase::create(
const ulint file_format = srv_file_format;
const char* stmt;
size_t stmt_len;
+ enum row_type row_type;
DBUG_ENTER("ha_innobase::create");
@@ -6769,94 +6770,94 @@ ha_innobase::create(
}
}
- if (create_info->used_fields & HA_CREATE_USED_ROW_FORMAT) {
- if (flags) {
- /* KEY_BLOCK_SIZE was specified. */
- if (form->s->row_type != ROW_TYPE_COMPRESSED) {
- /* ROW_FORMAT other than COMPRESSED
- ignores KEY_BLOCK_SIZE. It does not
- make sense to reject conflicting
- KEY_BLOCK_SIZE and ROW_FORMAT, because
- such combinations can be obtained
- with ALTER TABLE anyway. */
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ignoring KEY_BLOCK_SIZE=%lu"
- " unless ROW_FORMAT=COMPRESSED.",
- create_info->key_block_size);
- flags = 0;
- }
- } else {
- /* No KEY_BLOCK_SIZE */
- if (form->s->row_type == ROW_TYPE_COMPRESSED) {
- /* ROW_FORMAT=COMPRESSED without
- KEY_BLOCK_SIZE implies half the
- maximum KEY_BLOCK_SIZE. */
- flags = (DICT_TF_ZSSIZE_MAX - 1)
- << DICT_TF_ZSSIZE_SHIFT
- | DICT_TF_COMPACT
- | DICT_TF_FORMAT_ZIP
- << DICT_TF_FORMAT_SHIFT;
+ row_type = form->s->row_type;
+
+ if (flags) {
+ /* KEY_BLOCK_SIZE was specified. */
+ if (!(create_info->used_fields & HA_CREATE_USED_ROW_FORMAT)) {
+ /* ROW_FORMAT was not specified;
+ default to ROW_FORMAT=COMPRESSED */
+ row_type = ROW_TYPE_COMPRESSED;
+ } else if (row_type != ROW_TYPE_COMPRESSED) {
+ /* ROW_FORMAT other than COMPRESSED
+ ignores KEY_BLOCK_SIZE. It does not
+ make sense to reject conflicting
+ KEY_BLOCK_SIZE and ROW_FORMAT, because
+ such combinations can be obtained
+ with ALTER TABLE anyway. */
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ignoring KEY_BLOCK_SIZE=%lu"
+ " unless ROW_FORMAT=COMPRESSED.",
+ create_info->key_block_size);
+ flags = 0;
+ }
+ } else {
+ /* No KEY_BLOCK_SIZE */
+ if (row_type == ROW_TYPE_COMPRESSED) {
+ /* ROW_FORMAT=COMPRESSED without
+ KEY_BLOCK_SIZE implies half the
+ maximum KEY_BLOCK_SIZE. */
+ flags = (DICT_TF_ZSSIZE_MAX - 1)
+ << DICT_TF_ZSSIZE_SHIFT
+ | DICT_TF_COMPACT
+ | DICT_TF_FORMAT_ZIP
+ << DICT_TF_FORMAT_SHIFT;
#if DICT_TF_ZSSIZE_MAX < 1
# error "DICT_TF_ZSSIZE_MAX < 1"
#endif
- }
}
+ }
- switch (form->s->row_type) {
- const char* row_format_name;
- case ROW_TYPE_REDUNDANT:
- break;
- case ROW_TYPE_COMPRESSED:
- case ROW_TYPE_DYNAMIC:
- row_format_name
- = form->s->row_type == ROW_TYPE_COMPRESSED
- ? "COMPRESSED"
- : "DYNAMIC";
-
- if (!srv_file_per_table) {
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ROW_FORMAT=%s"
- " requires innodb_file_per_table.",
- row_format_name);
- } else if (file_format < DICT_TF_FORMAT_ZIP) {
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ROW_FORMAT=%s"
- " requires innodb_file_format >"
- " Antelope.",
- row_format_name);
- } else {
- flags |= DICT_TF_COMPACT
- | (DICT_TF_FORMAT_ZIP
- << DICT_TF_FORMAT_SHIFT);
- break;
- }
+ switch (row_type) {
+ const char* row_format_name;
+ case ROW_TYPE_REDUNDANT:
+ break;
+ case ROW_TYPE_COMPRESSED:
+ case ROW_TYPE_DYNAMIC:
+ row_format_name
+ = row_type == ROW_TYPE_COMPRESSED
+ ? "COMPRESSED"
+ : "DYNAMIC";
- /* fall through */
- case ROW_TYPE_NOT_USED:
- case ROW_TYPE_FIXED:
- default:
- push_warning(thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: assuming ROW_FORMAT=COMPACT.");
- case ROW_TYPE_DEFAULT:
- case ROW_TYPE_COMPACT:
- flags = DICT_TF_COMPACT;
+ if (!srv_file_per_table) {
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ROW_FORMAT=%s"
+ " requires innodb_file_per_table.",
+ row_format_name);
+ } else if (file_format < DICT_TF_FORMAT_ZIP) {
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ROW_FORMAT=%s"
+ " requires innodb_file_format >"
+ " Antelope.",
+ row_format_name);
+ } else {
+ flags |= DICT_TF_COMPACT
+ | (DICT_TF_FORMAT_ZIP
+ << DICT_TF_FORMAT_SHIFT);
break;
}
- } else if (!flags) {
- /* No KEY_BLOCK_SIZE or ROW_FORMAT specified:
- use ROW_FORMAT=COMPACT by default. */
+
+ /* fall through */
+ case ROW_TYPE_NOT_USED:
+ case ROW_TYPE_FIXED:
+ default:
+ push_warning(thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: assuming ROW_FORMAT=COMPACT.");
+ case ROW_TYPE_DEFAULT:
+ case ROW_TYPE_COMPACT:
flags = DICT_TF_COMPACT;
+ break;
}
/* Look for a primary key */
=== modified file 'storage/innobase/handler/i_s.cc'
--- a/storage/innobase/handler/i_s.cc revid:vasil.dimov@stripped20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/handler/i_s.cc revid:jimmy.yang@strippeds44ileuontw6hn3
@@ -1973,16 +1973,13 @@ i_s_dict_fill_sys_tables(
dict_table_t* table, /*!< in: table */
TABLE* table_to_fill) /*!< in/out: fill this table */
{
- longlong table_id;
Field** fields;
DBUG_ENTER("i_s_dict_fill_sys_tables");
fields = table_to_fill->field;
- table_id = ut_conv_dulint_to_longlong(table->id);
-
- OK(fields[SYS_TABLE_ID]->store(table_id, TRUE));
+ OK(fields[SYS_TABLE_ID]->store(longlong(table->id), TRUE));
OK(field_store_string(fields[SYS_TABLE_NAME], table->name));
@@ -2238,16 +2235,13 @@ i_s_dict_fill_sys_tablestats(
dict_table_t* table, /*!< in: table */
TABLE* table_to_fill) /*!< in/out: fill this table */
{
- longlong table_id;
Field** fields;
DBUG_ENTER("i_s_dict_fill_sys_tablestats");
fields = table_to_fill->field;
- table_id = ut_conv_dulint_to_longlong(table->id);
-
- OK(fields[SYS_TABLESTATS_ID]->store(table_id, TRUE));
+ OK(fields[SYS_TABLESTATS_ID]->store(longlong(table->id), TRUE));
OK(field_store_string(fields[SYS_TABLESTATS_NAME], table->name));
@@ -2495,27 +2489,22 @@ int
i_s_dict_fill_sys_indexes(
/*======================*/
THD* thd, /*!< in: thread */
- dulint tableid, /*!< in: table id */
+ table_id_t table_id, /*!< in: table id */
dict_index_t* index, /*!< in: populated dict_index_t
struct with index info */
TABLE* table_to_fill) /*!< in/out: fill this table */
{
- longlong table_id;
- longlong index_id;
Field** fields;
DBUG_ENTER("i_s_dict_fill_sys_indexes");
fields = table_to_fill->field;
- table_id = ut_conv_dulint_to_longlong(tableid);
- index_id = ut_conv_dulint_to_longlong(index->id);
-
- OK(fields[SYS_INDEX_ID]->store(index_id, TRUE));
+ OK(fields[SYS_INDEX_ID]->store(longlong(index->id), TRUE));
OK(field_store_string(fields[SYS_INDEX_NAME], index->name));
- OK(fields[SYS_INDEX_TABLE_ID]->store(table_id, TRUE));
+ OK(fields[SYS_INDEX_TABLE_ID]->store(longlong(table_id), TRUE));
OK(fields[SYS_INDEX_TYPE]->store(index->type));
@@ -2564,7 +2553,7 @@ i_s_sys_indexes_fill_table(
/* Process each record in the table */
while (rec) {
const char* err_msg;;
- dulint table_id;
+ table_id_t table_id;
dict_index_t index_rec;
/* Populate a dict_index_t structure with information from
@@ -2737,22 +2726,19 @@ int
i_s_dict_fill_sys_columns(
/*======================*/
THD* thd, /*!< in: thread */
- dulint tableid, /*!< in: table ID */
+ table_id_t table_id, /*!< in: table ID */
const char* col_name, /*!< in: column name */
dict_col_t* column, /*!< in: dict_col_t struct holding
more column information */
TABLE* table_to_fill) /*!< in/out: fill this table */
{
- longlong table_id;
Field** fields;
DBUG_ENTER("i_s_dict_fill_sys_columns");
fields = table_to_fill->field;
- table_id = ut_conv_dulint_to_longlong(tableid);
-
- OK(fields[SYS_COLUMN_TABLE_ID]->store(table_id, TRUE));
+ OK(fields[SYS_COLUMN_TABLE_ID]->store(longlong(table_id), TRUE));
OK(field_store_string(fields[SYS_COLUMN_NAME], col_name));
@@ -2803,7 +2789,7 @@ i_s_sys_columns_fill_table(
while (rec) {
const char* err_msg;
dict_col_t column_rec;
- dulint table_id;
+ table_id_t table_id;
/* populate a dict_col_t structure with information from
a SYS_COLUMNS row */
@@ -2948,21 +2934,18 @@ int
i_s_dict_fill_sys_fields(
/*=====================*/
THD* thd, /*!< in: thread */
- dulint indexid, /*!< in: index id for the field */
+ index_id_t index_id, /*!< in: index id for the field */
dict_field_t* field, /*!< in: table */
ulint pos, /*!< in: Field position */
TABLE* table_to_fill) /*!< in/out: fill this table */
{
- longlong index_id;
Field** fields;
DBUG_ENTER("i_s_dict_fill_sys_fields");
fields = table_to_fill->field;
- index_id = ut_conv_dulint_to_longlong(indexid);
-
- OK(fields[SYS_FIELD_INDEX_ID]->store(index_id, TRUE));
+ OK(fields[SYS_FIELD_INDEX_ID]->store(longlong(index_id), TRUE));
OK(field_store_string(fields[SYS_FIELD_NAME], field->name));
@@ -2988,7 +2971,7 @@ i_s_sys_fields_fill_table(
btr_pcur_t pcur;
const rec_t* rec;
mem_heap_t* heap;
- dulint last_id;
+ index_id_t last_id;
mtr_t mtr;
DBUG_ENTER("i_s_sys_fields_fill_table");
@@ -3005,14 +2988,14 @@ i_s_sys_fields_fill_table(
/* will save last index id so that we know whether we move to
the next index. This is used to calculate prefix length */
- last_id = ut_dulint_create(0, 0);
+ last_id = 0;
rec = dict_startscan_system(&pcur, &mtr, SYS_FIELDS);
while (rec) {
ulint pos;
const char* err_msg;
- dulint index_id;
+ index_id_t index_id;
dict_field_t field_rec;
/* Populate a dict_field_t structure with information from
=== modified file 'storage/innobase/ibuf/ibuf0ibuf.c'
--- a/storage/innobase/ibuf/ibuf0ibuf.c revid:vasil.dimov@stripped-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/ibuf/ibuf0ibuf.c revid:jimmy.yang@stripped0-ps44ileuontw6hn3
@@ -565,7 +565,7 @@ ibuf_init_at_db_start(void)
dict_mem_table_add_col(table, heap, "DUMMY_COLUMN", DATA_BINARY, 0, 0);
- table->id = ut_dulint_add(DICT_IBUF_ID_MIN, IBUF_SPACE_ID);
+ table->id = DICT_IBUF_ID_MIN + IBUF_SPACE_ID;
dict_table_add_to_cache(table, heap);
mem_heap_free(heap);
@@ -576,7 +576,7 @@ ibuf_init_at_db_start(void)
dict_mem_index_add_field(index, "DUMMY_COLUMN", 0);
- index->id = ut_dulint_add(DICT_IBUF_ID_MIN, IBUF_SPACE_ID);
+ index->id = DICT_IBUF_ID_MIN + IBUF_SPACE_ID;
error = dict_index_add_to_cache(table, index,
FSP_IBUF_TREE_ROOT_PAGE_NO, FALSE);
=== modified file 'storage/innobase/include/btr0btr.h'
--- a/storage/innobase/include/btr0btr.h revid:vasil.dimov@stripped
+++ b/storage/innobase/include/btr0btr.h revid:jimmy.yang@stripped20100625051420-ps44ileuontw6hn3
@@ -130,7 +130,7 @@ btr_page_get(
Gets the index id field of a page.
@return index id */
UNIV_INLINE
-dulint
+index_id_t
btr_page_get_index_id(
/*==================*/
const page_t* page); /*!< in: index page */
@@ -226,7 +226,7 @@ btr_create(
ulint space, /*!< in: space where created */
ulint zip_size,/*!< in: compressed page size in bytes
or 0 for uncompressed pages */
- dulint index_id,/*!< in: index id */
+ index_id_t index_id,/*!< in: index id */
dict_index_t* index, /*!< in: index */
mtr_t* mtr); /*!< in: mini-transaction handle */
/************************************************************//**
=== modified file 'storage/innobase/include/btr0btr.ic'
--- a/storage/innobase/include/btr0btr.ic revid:vasil.dimov@stripped0623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/btr0btr.ic revid:jimmy.yang@strippeds44ileuontw6hn3
@@ -86,7 +86,7 @@ btr_page_set_index_id(
page_t* page, /*!< in: page to be created */
page_zip_des_t* page_zip,/*!< in: compressed page whose uncompressed
part will be updated, or NULL */
- dulint id, /*!< in: index id */
+ index_id_t id, /*!< in: index id */
mtr_t* mtr) /*!< in: mtr */
{
if (UNIV_LIKELY_NULL(page_zip)) {
@@ -95,8 +95,7 @@ btr_page_set_index_id(
page + (PAGE_HEADER + PAGE_INDEX_ID),
8, mtr);
} else {
- mlog_write_dulint(page + (PAGE_HEADER + PAGE_INDEX_ID),
- id, mtr);
+ mlog_write_ull(page + (PAGE_HEADER + PAGE_INDEX_ID), id, mtr);
}
}
#endif /* !UNIV_HOTBACKUP */
@@ -105,7 +104,7 @@ btr_page_set_index_id(
Gets the index id field of a page.
@return index id */
UNIV_INLINE
-dulint
+index_id_t
btr_page_get_index_id(
/*==================*/
const page_t* page) /*!< in: index page */
=== modified file 'storage/innobase/include/data0data.h'
--- a/storage/innobase/include/data0data.h revid:vasil.dimov@stripped9-e4bbn3gf1py6260h
+++ b/storage/innobase/include/data0data.h revid:jimmy.yang@strippedntw6hn3
@@ -309,7 +309,7 @@ dtuple_fold(
ulint n_fields,/*!< in: number of complete fields to fold */
ulint n_bytes,/*!< in: number of bytes to fold in an
incomplete last field */
- dulint tree_id)/*!< in: index tree id */
+ index_id_t tree_id)/*!< in: index tree id */
__attribute__((pure));
/*******************************************************************//**
Sets types of fields binary in a tuple. */
=== modified file 'storage/innobase/include/data0data.ic'
--- a/storage/innobase/include/data0data.ic revid:vasil.dimov@stripped9-e4bbn3gf1py6260h
+++ b/storage/innobase/include/data0data.ic revid:jimmy.yang@strippedontw6hn3
@@ -518,7 +518,7 @@ dtuple_fold(
ulint n_fields,/*!< in: number of complete fields to fold */
ulint n_bytes,/*!< in: number of bytes to fold in an
incomplete last field */
- dulint tree_id)/*!< in: index tree id */
+ index_id_t tree_id)/*!< in: index tree id */
{
const dfield_t* field;
ulint i;
@@ -530,7 +530,7 @@ dtuple_fold(
ut_ad(tuple->magic_n == DATA_TUPLE_MAGIC_N);
ut_ad(dtuple_check_typed(tuple));
- fold = ut_fold_dulint(tree_id);
+ fold = ut_fold_ull(tree_id);
for (i = 0; i < n_fields; i++) {
field = dtuple_get_nth_field(tuple, i);
=== modified file 'storage/innobase/include/data0type.h'
--- a/storage/innobase/include/data0type.h revid:vasil.dimov@strippedy6260h
+++ b/storage/innobase/include/data0type.h revid:jimmy.yang@stripped
@@ -128,7 +128,7 @@ columns, and for them the precise type i
/* Precise data types for system columns and the length of those columns;
NOTE: the values must run from 0 up in the order given! All codes must
be less than 256 */
-#define DATA_ROW_ID 0 /* row id: a dulint */
+#define DATA_ROW_ID 0 /* row id: a 48-bit integer */
#define DATA_ROW_ID_LEN 6 /* stored length for row id */
#define DATA_TRX_ID 1 /* transaction id: 6 bytes */
=== modified file 'storage/innobase/include/dict0boot.h'
--- a/storage/innobase/include/dict0boot.h revid:vasil.dimov@stripped100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/dict0boot.h revid:jimmy.yang@stripped0-ps44ileuontw6hn3
@@ -51,32 +51,35 @@ UNIV_INTERN
void
dict_hdr_get_new_id(
/*================*/
- dulint* table_id, /*!< out: table id (not assigned if NULL) */
- dulint* index_id, /*!< out: index id (not assigned if NULL) */
- ulint* space_id); /*!< out: space id (not assigned if NULL) */
+ table_id_t* table_id, /*!< out: table id
+ (not assigned if NULL) */
+ index_id_t* index_id, /*!< out: index id
+ (not assigned if NULL) */
+ ulint* space_id); /*!< out: space id
+ (not assigned if NULL) */
/**********************************************************************//**
Returns a new row id.
@return the new id */
UNIV_INLINE
-dulint
+row_id_t
dict_sys_get_new_row_id(void);
/*=========================*/
/**********************************************************************//**
Reads a row id from a record or other 6-byte stored form.
@return row id */
UNIV_INLINE
-dulint
+row_id_t
dict_sys_read_row_id(
/*=================*/
- byte* field); /*!< in: record field */
+ const byte* field); /*!< in: record 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 */
+ byte* field, /*!< in: record field */
+ row_id_t row_id);/*!< in: row id */
/*****************************************************************//**
Initializes the data dictionary memory structures when the database is
started. This function is also called when the data dictionary is created. */
@@ -97,12 +100,12 @@ dict_create(void);
#define DICT_HDR_PAGE_NO FSP_DICT_HDR_PAGE_NO
/* The ids for the basic system tables and their indexes */
-#define DICT_TABLES_ID ut_dulint_create(0, 1)
-#define DICT_COLUMNS_ID ut_dulint_create(0, 2)
-#define DICT_INDEXES_ID ut_dulint_create(0, 3)
-#define DICT_FIELDS_ID ut_dulint_create(0, 4)
+#define DICT_TABLES_ID 1
+#define DICT_COLUMNS_ID 2
+#define DICT_INDEXES_ID 3
+#define DICT_FIELDS_ID 4
/* The following is a secondary index on SYS_TABLES */
-#define DICT_TABLE_IDS_ID ut_dulint_create(0, 5)
+#define DICT_TABLE_IDS_ID 5
#define DICT_HDR_FIRST_ID 10 /* the ids for tables etc. start
from this number, except for basic
@@ -110,7 +113,7 @@ dict_create(void);
indexes; ibuf tables and indexes are
assigned as the id the number
DICT_IBUF_ID_MIN plus the space id */
-#define DICT_IBUF_ID_MIN ut_dulint_create(0xFFFFFFFFUL, 0)
+#define DICT_IBUF_ID_MIN 0xFFFFFFFF00000000ULL
/* The offset of the dictionary header on the page */
#define DICT_HDR FSEG_PAGE_DATA
=== modified file 'storage/innobase/include/dict0boot.ic'
--- a/storage/innobase/include/dict0boot.ic revid:vasil.dimov@strippedpy6260h
+++ b/storage/innobase/include/dict0boot.ic revid:jimmy.yang@stripped
@@ -36,22 +36,22 @@ dict_hdr_flush_row_id(void);
Returns a new row id.
@return the new id */
UNIV_INLINE
-dulint
+row_id_t
dict_sys_get_new_row_id(void)
/*=========================*/
{
- dulint id;
+ row_id_t id;
mutex_enter(&(dict_sys->mutex));
id = dict_sys->row_id;
- if (0 == (ut_dulint_get_low(id) % DICT_HDR_ROW_ID_WRITE_MARGIN)) {
+ if (0 == (id % DICT_HDR_ROW_ID_WRITE_MARGIN)) {
dict_hdr_flush_row_id();
}
- UT_DULINT_INC(dict_sys->row_id);
+ dict_sys->row_id++;
mutex_exit(&(dict_sys->mutex));
@@ -62,10 +62,10 @@ dict_sys_get_new_row_id(void)
Reads a row id from a record or other 6-byte stored form.
@return row id */
UNIV_INLINE
-dulint
+row_id_t
dict_sys_read_row_id(
/*=================*/
- byte* field) /*!< in: record field */
+ const byte* field) /*!< in: record field */
{
#if DATA_ROW_ID_LEN != 6
# error "DATA_ROW_ID_LEN != 6"
@@ -80,8 +80,8 @@ UNIV_INLINE
void
dict_sys_write_row_id(
/*==================*/
- byte* field, /*!< in: record field */
- dulint row_id) /*!< in: row id */
+ byte* field, /*!< in: record field */
+ row_id_t row_id) /*!< in: row id */
{
#if DATA_ROW_ID_LEN != 6
# error "DATA_ROW_ID_LEN != 6"
=== modified file 'storage/innobase/include/dict0dict.h'
--- a/storage/innobase/include/dict0dict.h revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/dict0dict.h revid:jimmy.yang@stripped5051420-ps44ileuontw6hn3
@@ -75,8 +75,8 @@ UNIV_INTERN
dict_table_t*
dict_table_get_on_id(
/*=================*/
- dulint table_id, /*!< in: table id */
- trx_t* trx); /*!< in: transaction handle */
+ table_id_t table_id, /*!< in: table id */
+ trx_t* trx); /*!< in: transaction handle */
/********************************************************************//**
Decrements the count of open MySQL handles to a table. */
UNIV_INTERN
@@ -277,7 +277,7 @@ void
dict_table_change_id_in_cache(
/*==========================*/
dict_table_t* table, /*!< in/out: table object already in cache */
- dulint new_id);/*!< in: new id to set */
+ table_id_t new_id);/*!< in: new id to set */
/**********************************************************************//**
Adds a foreign key constraint object to the dictionary cache. May free
the object if there already is an object with the same identifier in.
@@ -397,7 +397,7 @@ dict_index_t*
dict_index_get_on_id_low(
/*=====================*/
dict_table_t* table, /*!< in: table */
- dulint index_id); /*!< in: index id */
+ index_id_t index_id); /*!< in: index id */
/**********************************************************************//**
Checks if a table is in the dictionary cache.
@return table, NULL if not found */
@@ -423,7 +423,7 @@ UNIV_INLINE
dict_table_t*
dict_table_get_on_id_low(
/*=====================*/
- dulint table_id); /*!< in: table id */
+ table_id_t table_id); /*!< in: table id */
/**********************************************************************//**
Find an index that is equivalent to the one passed in and is not marked
for deletion.
@@ -710,7 +710,7 @@ UNIV_INTERN
dict_index_t*
dict_index_find_on_id_low(
/*======================*/
- dulint id); /*!< in: index id */
+ index_id_t id); /*!< in: index id */
/**********************************************************************//**
Adds an index to the dictionary cache.
@return DB_SUCCESS, DB_TOO_BIG_RECORD, or DB_CORRUPTION */
@@ -901,7 +901,7 @@ UNIV_INTERN
dict_index_t*
dict_index_get_if_in_cache_low(
/*===========================*/
- dulint index_id); /*!< in: index id */
+ index_id_t index_id); /*!< in: index id */
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
/**********************************************************************//**
Returns an index object if it is found in the dictionary cache.
@@ -910,7 +910,7 @@ UNIV_INTERN
dict_index_t*
dict_index_get_if_in_cache(
/*=======================*/
- dulint index_id); /*!< in: index id */
+ index_id_t index_id); /*!< in: index id */
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
#ifdef UNIV_DEBUG
/**********************************************************************//**
@@ -1135,7 +1135,7 @@ struct dict_sys_struct{
and DROP TABLE, as well as reading
the dictionary data for a table from
system tables */
- dulint row_id; /*!< the next row id to assign;
+ row_id_t row_id; /*!< the next row id to assign;
NOTE that at a checkpoint this
must be written to the dict system
header and flushed to a file; in
=== modified file 'storage/innobase/include/dict0dict.ic'
--- a/storage/innobase/include/dict0dict.ic revid:vasil.dimov@stripped
+++ b/storage/innobase/include/dict0dict.ic revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -780,7 +780,7 @@ UNIV_INLINE
dict_table_t*
dict_table_get_on_id_low(
/*=====================*/
- dulint table_id) /*!< in: table id */
+ table_id_t table_id) /*!< in: table id */
{
dict_table_t* table;
ulint fold;
@@ -788,11 +788,11 @@ dict_table_get_on_id_low(
ut_ad(mutex_own(&(dict_sys->mutex)));
/* Look for the table name in the hash table */
- fold = ut_fold_dulint(table_id);
+ fold = ut_fold_ull(table_id);
HASH_SEARCH(id_hash, dict_sys->table_id_hash, fold,
dict_table_t*, table, ut_ad(table->cached),
- !ut_dulint_cmp(table->id, table_id));
+ table->id == table_id);
if (table == NULL) {
table = dict_load_table_on_id(table_id);
}
=== modified file 'storage/innobase/include/dict0load.h'
--- a/storage/innobase/include/dict0load.h revid:vasil.dimov@stripped-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/dict0load.h revid:jimmy.yang@stripped1420-ps44ileuontw6hn3
@@ -111,7 +111,7 @@ dict_load_column_low(
for temporary storage */
dict_col_t* column, /*!< out: dict_column_t to fill,
or NULL if table != NULL */
- dulint* table_id, /*!< out: table id */
+ table_id_t* table_id, /*!< out: table id */
const char** col_name, /*!< out: column name */
const rec_t* rec); /*!< in: SYS_COLUMNS record */
/********************************************************************//**
@@ -174,7 +174,7 @@ UNIV_INTERN
dict_table_t*
dict_load_table_on_id(
/*==================*/
- dulint table_id); /*!< in: table id */
+ table_id_t table_id); /*!< in: table id */
/********************************************************************//**
This function is called when the database is booted.
Loads system table index definitions except for the clustered index which
@@ -256,7 +256,7 @@ dict_process_sys_indexes_rec(
const rec_t* rec, /*!< in: current SYS_INDEXES rec */
dict_index_t* index, /*!< out: dict_index_t to be
filled */
- dulint* table_id); /*!< out: table id */
+ table_id_t* table_id); /*!< out: table id */
/********************************************************************//**
This function parses a SYS_COLUMNS record and populate a dict_column_t
structure with the information from the record.
@@ -268,7 +268,7 @@ dict_process_sys_columns_rec(
mem_heap_t* heap, /*!< in/out: heap memory */
const rec_t* rec, /*!< in: current SYS_COLUMNS rec */
dict_col_t* column, /*!< out: dict_col_t to be filled */
- dulint* table_id, /*!< out: table id */
+ table_id_t* table_id, /*!< out: table id */
const char** col_name); /*!< out: column name */
/********************************************************************//**
This function parses a SYS_FIELDS record and populate a dict_field_t
@@ -283,8 +283,8 @@ dict_process_sys_fields_rec(
dict_field_t* sys_field, /*!< out: dict_field_t to be
filled */
ulint* pos, /*!< out: Field position */
- dulint* index_id, /*!< out: current index id */
- dulint last_id); /*!< in: previous index id */
+ index_id_t* index_id, /*!< out: current index id */
+ index_id_t last_id); /*!< in: previous index id */
/********************************************************************//**
This function parses a SYS_FOREIGN record and populate a dict_foreign_t
structure with the information from the record. For detail information
=== modified file 'storage/innobase/include/dict0mem.h'
--- a/storage/innobase/include/dict0mem.h revid:vasil.dimov@stripped
+++ b/storage/innobase/include/dict0mem.h revid:jimmy.yang@strippedm-20100625051420-ps44ileuontw6hn3
@@ -293,7 +293,7 @@ struct dict_field_struct{
/** Data structure for an index. Most fields will be
initialized to 0, NULL or FALSE in dict_mem_index_create(). */
struct dict_index_struct{
- dulint id; /*!< id of the index */
+ index_id_t id; /*!< id of the index */
mem_heap_t* heap; /*!< memory heap */
const char* name; /*!< index name */
const char* table_name;/*!< table name */
@@ -349,7 +349,7 @@ struct dict_index_struct{
/* @} */
rw_lock_t lock; /*!< read-write lock protecting the
upper levels of the index tree */
- ib_uint64_t trx_id; /*!< id of the transaction that created this
+ trx_id_t trx_id; /*!< id of the transaction that created this
index, or 0 if the index existed
when InnoDB was started up */
#endif /* !UNIV_HOTBACKUP */
@@ -414,7 +414,7 @@ a foreign key constraint is enforced, th
/** Data structure for a database table. Most fields will be
initialized to 0, NULL or FALSE in dict_mem_table_create(). */
struct dict_table_struct{
- dulint id; /*!< id of the table */
+ table_id_t id; /*!< id of the table */
mem_heap_t* heap; /*!< memory heap */
char* name; /*!< table name */
const char* dir_path_of_temp_table;/*!< NULL or the directory path
=== modified file 'storage/innobase/include/dict0types.h'
--- a/storage/innobase/include/dict0types.h revid:vasil.dimov@stripped
+++ b/storage/innobase/include/dict0types.h revid:jimmy.yang@strippedom-20100625051420-ps44ileuontw6hn3
@@ -45,4 +45,7 @@ typedef struct tab_node_struct tab_node
#define DICT_HDR_SPACE 0 /* the SYSTEM tablespace */
#define DICT_HDR_PAGE_NO FSP_DICT_HDR_PAGE_NO
+typedef ib_id_t table_id_t;
+typedef ib_id_t index_id_t;
+
#endif
=== modified file 'storage/innobase/include/fil0fil.h'
--- a/storage/innobase/include/fil0fil.h revid:vasil.dimov@stripped623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/fil0fil.h revid:jimmy.yang@stripped4ileuontw6hn3
@@ -26,6 +26,7 @@ Created 10/25/1995 Heikki Tuuri
#ifndef fil0fil_h
#define fil0fil_h
+#include "univ.i"
#include "dict0types.h"
#include "ut0byte.h"
#include "os0file.h"
=== modified file 'storage/innobase/include/lock0lock.h'
--- a/storage/innobase/include/lock0lock.h revid:vasil.dimov@stripped3gf1py6260h
+++ b/storage/innobase/include/lock0lock.h revid:jimmy.yang@stripped
@@ -670,7 +670,7 @@ lock_get_type(
Gets the id of the transaction owning a lock.
@return transaction id */
UNIV_INTERN
-ullint
+trx_id_t
lock_get_trx_id(
/*============*/
const lock_t* lock); /*!< in: lock */
@@ -699,7 +699,7 @@ lock_get_type_str(
Gets the id of the table on which the lock is.
@return id of the table */
UNIV_INTERN
-ullint
+table_id_t
lock_get_table_id(
/*==============*/
const lock_t* lock); /*!< in: lock */
=== modified file 'storage/innobase/include/mach0data.h'
--- a/storage/innobase/include/mach0data.h revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/mach0data.h revid:jimmy.yang@stripped25051420-ps44ileuontw6hn3
@@ -166,14 +166,14 @@ UNIV_INLINE
void
mach_write_to_6(
/*============*/
- byte* b, /*!< in: pointer to 6 bytes where to store */
- dulint n); /*!< in: dulint integer to be stored */
+ byte* b, /*!< in: pointer to 6 bytes where to store */
+ ib_uint64_t id); /*!< in: 48-bit integer */
/********************************************************//**
The following function is used to fetch data from 6 consecutive
bytes. The most significant byte is at the lowest address.
-@return dulint integer */
+@return 48-bit integer */
UNIV_INLINE
-dulint
+ib_uint64_t
mach_read_from_6(
/*=============*/
const byte* b) /*!< in: pointer to 6 bytes */
@@ -185,14 +185,14 @@ UNIV_INLINE
void
mach_write_to_7(
/*============*/
- byte* b, /*!< in: pointer to 7 bytes where to store */
- dulint n); /*!< in: dulint integer to be stored */
+ byte* b, /*!< in: pointer to 7 bytes where to store */
+ ib_uint64_t n); /*!< in: 56-bit integer */
/********************************************************//**
The following function is used to fetch data from 7 consecutive
bytes. The most significant byte is at the lowest address.
-@return dulint integer */
+@return 56-bit integer */
UNIV_INLINE
-dulint
+ib_uint64_t
mach_read_from_7(
/*=============*/
const byte* b) /*!< in: pointer to 7 bytes */
@@ -204,88 +204,69 @@ UNIV_INLINE
void
mach_write_to_8(
/*============*/
- byte* b, /*!< in: pointer to 8 bytes where to store */
- dulint n); /*!< in: dulint integer to be stored */
-/*******************************************************//**
-The following function is used to store data in 8 consecutive
-bytes. We store the most significant byte to the lowest address. */
-UNIV_INLINE
-void
-mach_write_ull(
-/*===========*/
byte* b, /*!< in: pointer to 8 bytes where to store */
ib_uint64_t n); /*!< in: 64-bit integer to be stored */
/********************************************************//**
The following function is used to fetch data from 8 consecutive
bytes. The most significant byte is at the lowest address.
-@return dulint integer */
-UNIV_INLINE
-dulint
-mach_read_from_8(
-/*=============*/
- const byte* b) /*!< in: pointer to 8 bytes */
- __attribute__((nonnull, pure));
-/********************************************************//**
-The following function is used to fetch data from 8 consecutive
-bytes. The most significant byte is at the lowest address.
@return 64-bit integer */
UNIV_INLINE
ib_uint64_t
-mach_read_ull(
-/*==========*/
+mach_read_from_8(
+/*=============*/
const byte* b) /*!< in: pointer to 8 bytes */
__attribute__((nonnull, pure));
/*********************************************************//**
-Writes a dulint in a compressed form (5..9 bytes).
+Writes a 64-bit integer in a compressed form (5..9 bytes).
@return size in bytes */
UNIV_INLINE
ulint
-mach_dulint_write_compressed(
-/*=========================*/
- byte* b, /*!< in: pointer to memory where to store */
- dulint n); /*!< in: dulint integer to be stored */
+mach_ull_write_compressed(
+/*======================*/
+ byte* b, /*!< in: pointer to memory where to store */
+ ib_uint64_t n); /*!< in: 64-bit integer to be stored */
/*********************************************************//**
-Returns the size of a dulint when written in the compressed form.
+Returns the size of a 64-bit integer when written in the compressed form.
@return compressed size in bytes */
UNIV_INLINE
ulint
-mach_dulint_get_compressed_size(
-/*============================*/
- dulint n); /*!< in: dulint integer to be stored */
-/*********************************************************//**
-Reads a dulint in a compressed form.
-@return read dulint */
-UNIV_INLINE
-dulint
-mach_dulint_read_compressed(
-/*========================*/
+mach_ull_get_compressed_size(
+/*=========================*/
+ ib_uint64_t n); /*!< in: 64-bit integer to be stored */
+/*********************************************************//**
+Reads a 64-bit integer in a compressed form.
+@return the value read */
+UNIV_INLINE
+ib_uint64_t
+mach_ull_read_compressed(
+/*=====================*/
const byte* b) /*!< in: pointer to memory from where to read */
__attribute__((nonnull, pure));
/*********************************************************//**
-Writes a dulint in a compressed form (1..11 bytes).
+Writes a 64-bit integer in a compressed form (1..11 bytes).
@return size in bytes */
UNIV_INLINE
ulint
-mach_dulint_write_much_compressed(
-/*==============================*/
- byte* b, /*!< in: pointer to memory where to store */
- dulint n); /*!< in: dulint integer to be stored */
+mach_ull_write_much_compressed(
+/*===========================*/
+ byte* b, /*!< in: pointer to memory where to store */
+ ib_uint64_t n); /*!< in: 64-bit integer to be stored */
/*********************************************************//**
-Returns the size of a dulint when written in the compressed form.
+Returns the size of a 64-bit integer when written in the compressed form.
@return compressed size in bytes */
UNIV_INLINE
ulint
-mach_dulint_get_much_compressed_size(
-/*=================================*/
- dulint n) /*!< in: dulint integer to be stored */
+mach_ull_get_much_compressed_size(
+/*==============================*/
+ ib_uint64_t n) /*!< in: 64-bit integer to be stored */
__attribute__((const));
/*********************************************************//**
-Reads a dulint in a compressed form.
-@return read dulint */
+Reads a 64-bit integer in a compressed form.
+@return the value read */
UNIV_INLINE
-dulint
-mach_dulint_read_much_compressed(
-/*=============================*/
+ib_uint64_t
+mach_ull_read_much_compressed(
+/*==========================*/
const byte* b) /*!< in: pointer to memory from where to read */
__attribute__((nonnull, pure));
/*********************************************************//**
@@ -299,15 +280,17 @@ mach_parse_compressed(
byte* end_ptr,/*!< in: pointer to end of the buffer */
ulint* val); /*!< out: read value */
/*********************************************************//**
-Reads a dulint in a compressed form if the log record fully contains it.
-@return pointer to end of the stored field, NULL if not complete */
-UNIV_INTERN
+Reads a 64-bit integer in a compressed form
+if the log record fully contains it.
+@return pointer to end of the stored field, NULL if not complete */
+UNIV_INLINE
byte*
-mach_dulint_parse_compressed(
-/*=========================*/
- byte* ptr, /*!< in: pointer to buffer from where to read */
- byte* end_ptr,/*!< in: pointer to end of the buffer */
- dulint* val); /*!< out: read value */
+mach_ull_parse_compressed(
+/*======================*/
+ byte* ptr, /*!< in: pointer to buffer from where to read */
+ byte* end_ptr,/*!< in: pointer to end of the buffer */
+ ib_uint64_t* val) /*!< out: read value */
+ __attribute__((nonnull, pure));
#ifndef UNIV_HOTBACKUP
/*********************************************************//**
Reads a double. It is stored in a little-endian format.
=== modified file 'storage/innobase/include/mach0data.ic'
--- a/storage/innobase/include/mach0data.ic revid:vasil.dimov@stripped3100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/mach0data.ic revid:jimmy.yang@stripped44ileuontw6hn3
@@ -280,22 +280,6 @@ UNIV_INLINE
void
mach_write_to_8(
/*============*/
- byte* b, /*!< in: pointer to 8 bytes where to store */
- dulint n) /*!< in: dulint integer to be stored */
-{
- ut_ad(b);
-
- mach_write_to_4(b, ut_dulint_get_high(n));
- mach_write_to_4(b + 4, ut_dulint_get_low(n));
-}
-
-/*******************************************************//**
-The following function is used to store data in 8 consecutive
-bytes. We store the most significant byte to the lowest address. */
-UNIV_INLINE
-void
-mach_write_ull(
-/*===========*/
byte* b, /*!< in: pointer to 8 bytes where to store */
ib_uint64_t n) /*!< in: 64-bit integer to be stored */
{
@@ -308,32 +292,11 @@ mach_write_ull(
/********************************************************//**
The following function is used to fetch data from 8 consecutive
bytes. The most significant byte is at the lowest address.
-@return dulint integer */
-UNIV_INLINE
-dulint
-mach_read_from_8(
-/*=============*/
- const byte* b) /*!< in: pointer to 8 bytes */
-{
- ulint high;
- ulint low;
-
- ut_ad(b);
-
- high = mach_read_from_4(b);
- low = mach_read_from_4(b + 4);
-
- return(ut_dulint_create(high, low));
-}
-
-/********************************************************//**
-The following function is used to fetch data from 8 consecutive
-bytes. The most significant byte is at the lowest address.
@return 64-bit integer */
UNIV_INLINE
ib_uint64_t
-mach_read_ull(
-/*==========*/
+mach_read_from_8(
+/*=============*/
const byte* b) /*!< in: pointer to 8 bytes */
{
ib_uint64_t ull;
@@ -351,34 +314,28 @@ UNIV_INLINE
void
mach_write_to_7(
/*============*/
- byte* b, /*!< in: pointer to 7 bytes where to store */
- dulint n) /*!< in: dulint integer to be stored */
+ byte* b, /*!< in: pointer to 7 bytes where to store */
+ ib_uint64_t n) /*!< in: 56-bit integer */
{
ut_ad(b);
- mach_write_to_3(b, ut_dulint_get_high(n));
- mach_write_to_4(b + 3, ut_dulint_get_low(n));
+ mach_write_to_3(b, (ulint) (n >> 32));
+ mach_write_to_4(b + 3, (ulint) n);
}
/********************************************************//**
The following function is used to fetch data from 7 consecutive
bytes. The most significant byte is at the lowest address.
-@return dulint integer */
+@return 56-bit integer */
UNIV_INLINE
-dulint
+ib_uint64_t
mach_read_from_7(
/*=============*/
const byte* b) /*!< in: pointer to 7 bytes */
{
- ulint high;
- ulint low;
-
ut_ad(b);
- high = mach_read_from_3(b);
- low = mach_read_from_4(b + 3);
-
- return(ut_dulint_create(high, low));
+ return(ut_ull_create(mach_read_from_3(b), mach_read_from_4(b + 3)));
}
/*******************************************************//**
@@ -388,162 +345,196 @@ UNIV_INLINE
void
mach_write_to_6(
/*============*/
- byte* b, /*!< in: pointer to 6 bytes where to store */
- dulint n) /*!< in: dulint integer to be stored */
+ byte* b, /*!< in: pointer to 6 bytes where to store */
+ ib_uint64_t n) /*!< in: 48-bit integer */
{
ut_ad(b);
- mach_write_to_2(b, ut_dulint_get_high(n));
- mach_write_to_4(b + 2, ut_dulint_get_low(n));
+ mach_write_to_2(b, (ulint) (n >> 32));
+ mach_write_to_4(b + 2, (ulint) n);
}
/********************************************************//**
The following function is used to fetch data from 6 consecutive
bytes. The most significant byte is at the lowest address.
-@return dulint integer */
+@return 48-bit integer */
UNIV_INLINE
-dulint
+ib_uint64_t
mach_read_from_6(
/*=============*/
const byte* b) /*!< in: pointer to 6 bytes */
{
- ulint high;
- ulint low;
-
ut_ad(b);
- high = mach_read_from_2(b);
- low = mach_read_from_4(b + 2);
-
- return(ut_dulint_create(high, low));
+ return(ut_ull_create(mach_read_from_2(b), mach_read_from_4(b + 2)));
}
/*********************************************************//**
-Writes a dulint in a compressed form (5..9 bytes).
+Writes a 64-bit integer in a compressed form (5..9 bytes).
@return size in bytes */
UNIV_INLINE
ulint
-mach_dulint_write_compressed(
-/*=========================*/
- byte* b, /*!< in: pointer to memory where to store */
- dulint n) /*!< in: dulint integer to be stored */
+mach_ull_write_compressed(
+/*======================*/
+ byte* b, /*!< in: pointer to memory where to store */
+ ib_uint64_t n) /*!< in: 64-bit integer to be stored */
{
ulint size;
ut_ad(b);
- size = mach_write_compressed(b, ut_dulint_get_high(n));
- mach_write_to_4(b + size, ut_dulint_get_low(n));
+ size = mach_write_compressed(b, (ulint) (n >> 32));
+ mach_write_to_4(b + size, (ulint) n);
return(size + 4);
}
/*********************************************************//**
-Returns the size of a dulint when written in the compressed form.
+Returns the size of a 64-bit integer when written in the compressed form.
@return compressed size in bytes */
UNIV_INLINE
ulint
-mach_dulint_get_compressed_size(
-/*============================*/
- dulint n) /*!< in: dulint integer to be stored */
+mach_ull_get_compressed_size(
+/*=========================*/
+ ib_uint64_t n) /*!< in: 64-bit integer to be stored */
{
- return(4 + mach_get_compressed_size(ut_dulint_get_high(n)));
+ return(4 + mach_get_compressed_size((ulint) (n >> 32)));
}
/*********************************************************//**
-Reads a dulint in a compressed form.
-@return read dulint */
+Reads a 64-bit integer in a compressed form.
+@return the value read */
UNIV_INLINE
-dulint
-mach_dulint_read_compressed(
-/*========================*/
+ib_uint64_t
+mach_ull_read_compressed(
+/*=====================*/
const byte* b) /*!< in: pointer to memory from where to read */
{
- ulint high;
- ulint low;
- ulint size;
+ ib_uint64_t n;
+ ulint size;
ut_ad(b);
- high = mach_read_compressed(b);
+ n = (ib_uint64_t) mach_read_compressed(b);
- size = mach_get_compressed_size(high);
+ size = mach_get_compressed_size((ulint) n);
- low = mach_read_from_4(b + size);
+ n <<= 32;
+ n |= (ib_uint64_t) mach_read_from_4(b + size);
- return(ut_dulint_create(high, low));
+ return(n);
}
/*********************************************************//**
-Writes a dulint in a compressed form (1..11 bytes).
+Writes a 64-bit integer in a compressed form (1..11 bytes).
@return size in bytes */
UNIV_INLINE
ulint
-mach_dulint_write_much_compressed(
-/*==============================*/
- byte* b, /*!< in: pointer to memory where to store */
- dulint n) /*!< in: dulint integer to be stored */
+mach_ull_write_much_compressed(
+/*===========================*/
+ byte* b, /*!< in: pointer to memory where to store */
+ ib_uint64_t n) /*!< in: 64-bit integer to be stored */
{
ulint size;
ut_ad(b);
- if (ut_dulint_get_high(n) == 0) {
- return(mach_write_compressed(b, ut_dulint_get_low(n)));
+ if (!(n >> 32)) {
+ return(mach_write_compressed(b, (ulint) n));
}
*b = (byte)0xFF;
- size = 1 + mach_write_compressed(b + 1, ut_dulint_get_high(n));
+ size = 1 + mach_write_compressed(b + 1, (ulint) (n >> 32));
- size += mach_write_compressed(b + size, ut_dulint_get_low(n));
+ size += mach_write_compressed(b + size, (ulint) n & 0xFFFFFFFF);
return(size);
}
/*********************************************************//**
-Returns the size of a dulint when written in the compressed form.
+Returns the size of a 64-bit integer when written in the compressed form.
@return compressed size in bytes */
UNIV_INLINE
ulint
-mach_dulint_get_much_compressed_size(
-/*=================================*/
- dulint n) /*!< in: dulint integer to be stored */
+mach_ull_get_much_compressed_size(
+/*==============================*/
+ ib_uint64_t n) /*!< in: 64-bit integer to be stored */
{
- if (0 == ut_dulint_get_high(n)) {
- return(mach_get_compressed_size(ut_dulint_get_low(n)));
+ if (!(n >> 32)) {
+ return(mach_get_compressed_size((ulint) n));
}
- return(1 + mach_get_compressed_size(ut_dulint_get_high(n))
- + mach_get_compressed_size(ut_dulint_get_low(n)));
+ return(1 + mach_get_compressed_size((ulint) (n >> 32))
+ + mach_get_compressed_size((ulint) n & ULINT32_MASK));
}
/*********************************************************//**
-Reads a dulint in a compressed form.
-@return read dulint */
+Reads a 64-bit integer in a compressed form.
+@return the value read */
UNIV_INLINE
-dulint
-mach_dulint_read_much_compressed(
-/*=============================*/
+ib_uint64_t
+mach_ull_read_much_compressed(
+/*==========================*/
const byte* b) /*!< in: pointer to memory from where to read */
{
- ulint high;
- ulint low;
- ulint size;
+ ib_uint64_t n;
+ ulint size;
ut_ad(b);
if (*b != (byte)0xFF) {
- high = 0;
+ n = 0;
size = 0;
} else {
- high = mach_read_compressed(b + 1);
+ n = (ib_uint64_t) mach_read_compressed(b + 1);
+
+ size = 1 + mach_get_compressed_size((ulint) n);
+ n <<= 32;
+ }
+
+ n |= mach_read_compressed(b + size);
+
+ return(n);
+}
+
+/*********************************************************//**
+Reads a 64-bit integer in a compressed form
+if the log record fully contains it.
+@return pointer to end of the stored field, NULL if not complete */
+UNIV_INLINE
+byte*
+mach_ull_parse_compressed(
+/*======================*/
+ byte* ptr, /* in: pointer to buffer from where to read */
+ byte* end_ptr,/* in: pointer to end of the buffer */
+ ib_uint64_t* val) /* out: read value */
+{
+ ulint size;
+
+ ut_ad(ptr);
+ ut_ad(end_ptr);
+ ut_ad(val);
+
+ if (end_ptr < ptr + 5) {
+
+ return(NULL);
+ }
+
+ *val = mach_read_compressed(ptr);
+
+ size = mach_get_compressed_size((ulint) *val);
+
+ ptr += size;
+
+ if (end_ptr < ptr + 4) {
- size = 1 + mach_get_compressed_size(high);
+ return(NULL);
}
- low = mach_read_compressed(b + size);
+ *val <<= 32;
+ *val |= mach_read_from_4(ptr);
- return(ut_dulint_create(high, low));
+ return(ptr + 4);
}
#ifndef UNIV_HOTBACKUP
/*********************************************************//**
=== modified file 'storage/innobase/include/mtr0log.h'
--- a/storage/innobase/include/mtr0log.h revid:vasil.dimov@stripped
+++ b/storage/innobase/include/mtr0log.h revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -47,11 +47,11 @@ Writes 8 bytes to a file page buffered i
Writes the corresponding log record to the mini-transaction log. */
UNIV_INTERN
void
-mlog_write_dulint(
-/*==============*/
- byte* ptr, /*!< in: pointer where to write */
- dulint val, /*!< in: value to write */
- mtr_t* mtr); /*!< in: mini-transaction handle */
+mlog_write_ull(
+/*===========*/
+ byte* ptr, /*!< in: pointer where to write */
+ ib_uint64_t val, /*!< in: value to write */
+ mtr_t* mtr); /*!< in: mini-transaction handle */
/********************************************************//**
Writes a string to a file page buffered in the buffer pool. Writes the
corresponding log record to the mini-transaction log. */
@@ -125,13 +125,13 @@ mlog_catenate_ulint_compressed(
mtr_t* mtr, /*!< in: mtr */
ulint val); /*!< in: value to write */
/********************************************************//**
-Catenates a compressed dulint to mlog. */
+Catenates a compressed 64-bit integer to mlog. */
UNIV_INLINE
void
-mlog_catenate_dulint_compressed(
-/*============================*/
- mtr_t* mtr, /*!< in: mtr */
- dulint val); /*!< in: value to write */
+mlog_catenate_ull_compressed(
+/*=========================*/
+ mtr_t* mtr, /*!< in: mtr */
+ ib_uint64_t val); /*!< in: value to write */
/********************************************************//**
Opens a buffer to mlog. It must be closed with mlog_close.
@return buffer, NULL if log mode MTR_LOG_NONE */
@@ -183,7 +183,7 @@ mlog_parse_initial_log_record(
ulint* space, /*!< out: space id */
ulint* page_no);/*!< out: page number */
/********************************************************//**
-Parses a log record written by mlog_write_ulint or mlog_write_dulint.
+Parses a log record written by mlog_write_ulint or mlog_write_ull.
@return parsed record end, NULL if not a complete record */
UNIV_INTERN
byte*
=== modified file 'storage/innobase/include/mtr0log.ic'
--- a/storage/innobase/include/mtr0log.ic revid:vasil.dimov@stripped249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/mtr0log.ic revid:jimmy.yang@strippedontw6hn3
@@ -142,13 +142,13 @@ mlog_catenate_ulint_compressed(
}
/********************************************************//**
-Catenates a compressed dulint to mlog. */
+Catenates a compressed 64-bit integer to mlog. */
UNIV_INLINE
void
-mlog_catenate_dulint_compressed(
-/*============================*/
- mtr_t* mtr, /*!< in: mtr */
- dulint val) /*!< in: value to write */
+mlog_catenate_ull_compressed(
+/*=========================*/
+ mtr_t* mtr, /*!< in: mtr */
+ ib_uint64_t val) /*!< in: value to write */
{
byte* log_ptr;
@@ -160,7 +160,7 @@ mlog_catenate_dulint_compressed(
return;
}
- log_ptr += mach_dulint_write_compressed(log_ptr, val);
+ log_ptr += mach_ull_write_compressed(log_ptr, val);
mlog_close(mtr, log_ptr);
}
=== modified file 'storage/innobase/include/mtr0mtr.h'
--- a/storage/innobase/include/mtr0mtr.h revid:vasil.dimov@stripped60h
+++ b/storage/innobase/include/mtr0mtr.h revid:jimmy.yang@stripped
@@ -264,15 +264,6 @@ mtr_read_ulint(
const 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.
-@return value read */
-UNIV_INTERN
-dulint
-mtr_read_dulint(
-/*============*/
- const byte* ptr, /*!< in: pointer from where to read */
- mtr_t* mtr); /*!< in: mini-transaction handle */
#ifndef UNIV_HOTBACKUP
/*********************************************************************//**
This macro locks an rw-lock in s-mode. */
=== modified file 'storage/innobase/include/page0page.h'
--- a/storage/innobase/include/page0page.h revid:vasil.dimov@stripped00249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/page0page.h revid:jimmy.yang@strippedleuontw6hn3
@@ -66,7 +66,7 @@ typedef byte page_header_t;
direction */
#define PAGE_N_RECS 16 /* number of user records on the page */
#define PAGE_MAX_TRX_ID 18 /* highest id of a trx which may have modified
- a record on the page; a dulint; defined only
+ a record on the page; trx_id_t; defined only
in secondary indexes and in the insert buffer
tree; NOTE: this may be modified only
when the thread has an x-latch to the page,
=== modified file 'storage/innobase/include/page0page.ic'
--- a/storage/innobase/include/page0page.ic revid:vasil.dimov@stripped
+++ b/storage/innobase/include/page0page.ic revid:jimmy.yang@stripped
@@ -94,11 +94,10 @@ page_update_max_trx_id(
TRUE for the dummy indexes constructed during redo log
application). In that case, PAGE_MAX_TRX_ID is unused,
and trx_id is usually zero. */
- ut_ad(!ut_dulint_is_zero(trx_id) || recv_recovery_is_on());
+ ut_ad(trx_id || recv_recovery_is_on());
ut_ad(page_is_leaf(buf_block_get_frame(block)));
- if (ut_dulint_cmp(page_get_max_trx_id(buf_block_get_frame(block)),
- trx_id) < 0) {
+ if (page_get_max_trx_id(buf_block_get_frame(block)) < trx_id) {
page_set_max_trx_id(block, page_zip, trx_id, mtr);
}
=== modified file 'storage/innobase/include/pars0pars.h'
--- a/storage/innobase/include/pars0pars.h revid:vasil.dimov@stripped20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/pars0pars.h revid:jimmy.yang@stripped420-ps44ileuontw6hn3
@@ -520,35 +520,18 @@ pars_info_add_int4_literal(
Equivalent to:
char buf[8];
-mach_write_ull(buf, val);
-pars_info_add_literal(info, name, buf, 8, DATA_INT, 0);
-
-except that the buffer is dynamically allocated from the info struct's
-heap. */
-UNIV_INTERN
-void
-pars_info_add_uint64_literal(
-/*=========================*/
- pars_info_t* info, /*!< in: info struct */
- const char* name, /*!< in: name */
- ib_uint64_t val); /*!< in: value */
-
-/****************************************************************//**
-Equivalent to:
-
-char buf[8];
mach_write_to_8(buf, val);
-pars_info_add_literal(info, name, buf, 8, DATA_BINARY, 0);
+pars_info_add_literal(info, name, buf, 8, DATA_FIXBINARY, 0);
except that the buffer is dynamically allocated from the info struct's
heap. */
UNIV_INTERN
void
-pars_info_add_dulint_literal(
-/*=========================*/
+pars_info_add_ull_literal(
+/*======================*/
pars_info_t* info, /*!< in: info struct */
const char* name, /*!< in: name */
- dulint val); /*!< in: value */
+ ib_uint64_t val); /*!< in: value */
/****************************************************************//**
Add user function. */
UNIV_INTERN
=== modified file 'storage/innobase/include/que0que.h'
--- a/storage/innobase/include/que0que.h revid:vasil.dimov@strippedy6260h
+++ b/storage/innobase/include/que0que.h revid:jimmy.yang@stripped
@@ -421,9 +421,6 @@ struct que_fork_struct{
ibool cur_on_row; /*!< TRUE if cursor is on a row, i.e.,
it is not before the first row or
after the last row */
- dulint n_inserts; /*!< number of rows inserted */
- dulint n_updates; /*!< number of rows updated */
- dulint n_deletes; /*!< number of rows deleted */
sel_node_t* last_sel_node; /*!< last executed select node, or NULL
if none */
UT_LIST_NODE_T(que_fork_t)
=== modified file 'storage/innobase/include/read0read.h'
--- a/storage/innobase/include/read0read.h revid:vasil.dimov@stripped100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/read0read.h revid:jimmy.yang@stripped0-ps44ileuontw6hn3
@@ -43,8 +43,7 @@ read_view_t*
read_view_open_now(
/*===============*/
trx_id_t cr_trx_id, /*!< in: trx_id of creating
- transaction, or ut_dulint_zero
- used in purge */
+ transaction, or 0 used in purge */
mem_heap_t* heap); /*!< in: memory heap from which
allocated */
/*********************************************************************//**
@@ -56,8 +55,7 @@ read_view_t*
read_view_oldest_copy_or_open_new(
/*==============================*/
trx_id_t cr_trx_id, /*!< in: trx_id of creating
- transaction, or ut_dulint_zero
- used in purge */
+ transaction, or 0 used in purge */
mem_heap_t* heap); /*!< in: memory heap from which
allocated */
/*********************************************************************//**
@@ -125,7 +123,7 @@ read should not see the modifications to
struct read_view_struct{
ulint type; /*!< VIEW_NORMAL, VIEW_HIGH_GRANULARITY */
- undo_no_t undo_no;/*!< ut_dulint_zero or if type is
+ undo_no_t undo_no;/*!< 0 or if type is
VIEW_HIGH_GRANULARITY
transaction undo_no when this high-granularity
consistent read view was created */
@@ -156,7 +154,7 @@ struct read_view_struct{
that is, up_limit_id and low_limit_id. */
trx_id_t creator_trx_id;
/*!< trx id of creating transaction, or
- ut_dulint_zero used in purge */
+ 0 used in purge */
UT_LIST_NODE_T(read_view_t) view_list;
/*!< List of read views in trx_sys */
};
=== modified file 'storage/innobase/include/read0read.ic'
--- a/storage/innobase/include/read0read.ic revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/read0read.ic revid:jimmy.yang@stripped0625051420-ps44ileuontw6hn3
@@ -64,15 +64,14 @@ read_view_sees_trx_id(
trx_id_t trx_id) /*!< in: trx id */
{
ulint n_ids;
- int cmp;
ulint i;
- if (ut_dulint_cmp(trx_id, view->up_limit_id) < 0) {
+ if (trx_id < view->up_limit_id) {
return(TRUE);
}
- if (ut_dulint_cmp(trx_id, view->low_limit_id) >= 0) {
+ if (trx_id >= view->low_limit_id) {
return(FALSE);
}
@@ -85,12 +84,11 @@ read_view_sees_trx_id(
n_ids = view->n_trx_ids;
for (i = 0; i < n_ids; i++) {
+ trx_id_t view_trx_id
+ = read_view_get_nth_trx_id(view, n_ids - i - 1);
- cmp = ut_dulint_cmp(
- trx_id,
- read_view_get_nth_trx_id(view, n_ids - i - 1));
- if (cmp <= 0) {
- return(cmp < 0);
+ if (trx_id <= view_trx_id) {
+ return(trx_id != view_trx_id);
}
}
=== modified file 'storage/innobase/include/rem0rec.h'
--- a/storage/innobase/include/rem0rec.h revid:vasil.dimov@stripped49-e4bbn3gf1py6260h
+++ b/storage/innobase/include/rem0rec.h revid:jimmy.yang@strippedtw6hn3
@@ -659,7 +659,7 @@ rec_fold(
fields to fold */
ulint n_bytes, /*!< in: number of bytes to fold
in an incomplete last field */
- dulint tree_id) /*!< in: index tree id */
+ index_id_t tree_id) /*!< in: index tree id */
__attribute__((pure));
#endif /* !UNIV_HOTBACKUP */
/*********************************************************//**
=== modified file 'storage/innobase/include/rem0rec.ic'
--- a/storage/innobase/include/rem0rec.ic revid:vasil.dimov@strippedpy6260h
+++ b/storage/innobase/include/rem0rec.ic revid:jimmy.yang@stripped
@@ -1594,7 +1594,7 @@ rec_fold(
fields to fold */
ulint n_bytes, /*!< in: number of bytes to fold
in an incomplete last field */
- dulint tree_id) /*!< in: index tree id */
+ index_id_t tree_id) /*!< in: index tree id */
{
ulint i;
const byte* data;
@@ -1618,7 +1618,7 @@ rec_fold(
n_bytes = 0;
}
- fold = ut_fold_dulint(tree_id);
+ fold = ut_fold_ull(tree_id);
for (i = 0; i < n_fields; i++) {
data = rec_get_nth_field(rec, offsets, i, &len);
=== modified file 'storage/innobase/include/row0upd.h'
--- a/storage/innobase/include/row0upd.h revid:vasil.dimov@strippedy6260h
+++ b/storage/innobase/include/row0upd.h revid:jimmy.yang@stripped
@@ -132,7 +132,7 @@ row_upd_index_entry_sys_field(
them */
dict_index_t* index, /*!< in: clustered index */
ulint type, /*!< in: DATA_TRX_ID or DATA_ROLL_PTR */
- dulint val); /*!< in: value to write */
+ ib_uint64_t val); /*!< in: value to write */
/*********************************************************************//**
Creates an update node for a query graph.
@return own: update node */
=== modified file 'storage/innobase/include/srv0srv.h'
--- a/storage/innobase/include/srv0srv.h revid:vasil.dimov@stripped
+++ b/storage/innobase/include/srv0srv.h revid:jimmy.yang@strippedom-20100625051420-ps44ileuontw6hn3
@@ -161,9 +161,9 @@ is 5% of the max where max is srv_io_cap
#define PCT_IO(p) ((ulong) (srv_io_capacity * ((double) p / 100.0)))
#ifdef UNIV_LOG_ARCHIVE
-extern ibool srv_log_archive_on;
-extern ibool srv_archive_recovery;
-extern dulint srv_archive_recovery_limit_lsn;
+extern ibool srv_log_archive_on;
+extern ibool srv_archive_recovery;
+extern ib_uint64_t srv_archive_recovery_limit_lsn;
#endif /* UNIV_LOG_ARCHIVE */
extern char* srv_file_flush_method_str;
=== modified file 'storage/innobase/include/sync0sync.h'
--- a/storage/innobase/include/sync0sync.h revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/sync0sync.h revid:jimmy.yang@stripped20100625051420-ps44ileuontw6hn3
@@ -621,7 +621,7 @@ or row lock! */
#define SYNC_FILE_FORMAT_TAG 1200 /* Used to serialize access to the
file format tag */
#define SYNC_DICT_OPERATION 1001 /* table create, drop, etc. reserve
- this in X-mode, implicit or backround
+ this in X-mode; implicit or backround
operations purge, rollback, foreign
key checks reserve this in S-mode */
#define SYNC_DICT 1000
=== modified file 'storage/innobase/include/trx0i_s.h'
--- a/storage/innobase/include/trx0i_s.h revid:vasil.dimov@stripped9-e4bbn3gf1py6260h
+++ b/storage/innobase/include/trx0i_s.h revid:jimmy.yang@strippedw6hn3
@@ -30,6 +30,7 @@ Created July 17, 2007 Vasil Dimov
#include "univ.i"
#include "trx0types.h"
+#include "dict0types.h"
#include "ut0ut.h"
/** The maximum amount of memory that can be consumed by innodb_trx,
@@ -95,7 +96,7 @@ struct i_s_hash_chain_struct {
/** This structure represents INFORMATION_SCHEMA.innodb_locks row */
struct i_s_locks_row_struct {
- ullint lock_trx_id; /*!< transaction identifier */
+ trx_id_t lock_trx_id; /*!< transaction identifier */
const char* lock_mode; /*!< lock mode from
lock_get_mode_str() */
const char* lock_type; /*!< lock type from
@@ -116,7 +117,7 @@ struct i_s_locks_row_struct {
/** The following are auxiliary and not included in the table */
/* @{ */
- ullint lock_table_id;
+ table_id_t lock_table_id;
/*!< table identifier from
lock_get_table_id */
i_s_hash_chain_t hash_chain; /*!< hash table chain node for
@@ -126,10 +127,10 @@ struct i_s_locks_row_struct {
/** This structure represents INFORMATION_SCHEMA.innodb_trx row */
struct i_s_trx_row_struct {
- ullint trx_id; /*!< transaction identifier */
- const char* trx_state; /*!< transaction state from
- trx_get_que_state_str() */
- ib_time_t trx_started; /*!< trx_struct::start_time */
+ trx_id_t trx_id; /*!< transaction identifier */
+ const char* trx_state; /*!< transaction state from
+ trx_get_que_state_str() */
+ ib_time_t trx_started; /*!< trx_struct::start_time */
const i_s_locks_row_t* requested_lock_row;
/*!< pointer to a row
in innodb_locks if trx
=== modified file 'storage/innobase/include/trx0rec.h'
--- a/storage/innobase/include/trx0rec.h revid:vasil.dimov@stripped
+++ b/storage/innobase/include/trx0rec.h revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -108,7 +108,7 @@ trx_undo_rec_get_pars(
ibool* updated_extern, /*!< out: TRUE if we updated an
externally stored fild */
undo_no_t* undo_no, /*!< out: undo log record number */
- dulint* table_id); /*!< out: table id */
+ table_id_t* table_id); /*!< out: table id */
/*******************************************************************//**
Builds a row reference from an undo log record.
@return pointer to remaining part of undo record */
@@ -227,7 +227,7 @@ trx_undo_report_row_operation(
index, otherwise NULL */
roll_ptr_t* roll_ptr); /*!< out: rollback pointer to the
inserted undo log record,
- ut_dulint_zero if BTR_NO_UNDO_LOG
+ 0 if BTR_NO_UNDO_LOG
flag was specified */
/******************************************************************//**
Copies an undo record to heap. This function can be called if we know that
=== modified file 'storage/innobase/include/trx0rec.ic'
--- a/storage/innobase/include/trx0rec.ic revid:vasil.dimov@stripped
+++ b/storage/innobase/include/trx0rec.ic revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -78,7 +78,7 @@ trx_undo_rec_get_undo_no(
ptr = undo_rec + 3;
- return(mach_dulint_read_much_compressed(ptr));
+ return(mach_ull_read_much_compressed(ptr));
}
/**********************************************************************//**
@@ -90,7 +90,7 @@ trx_undo_rec_get_offset(
/*====================*/
undo_no_t undo_no) /*!< in: undo no read from node */
{
- return (3 + mach_dulint_get_much_compressed_size(undo_no));
+ return (3 + mach_ull_get_much_compressed_size(undo_no));
}
/***********************************************************************//**
=== modified file 'storage/innobase/include/trx0sys.h'
--- a/storage/innobase/include/trx0sys.h revid:vasil.dimov@stripped20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/trx0sys.h revid:jimmy.yang@stripped0-ps44ileuontw6hn3
@@ -568,11 +568,16 @@ FIL_PAGE_ARCH_LOG_NO_OR_SPACE_NO. */
(TRX_SYS_PAGE_NO of TRX_SYS_SPACE) */
#define TRX_SYS_FILE_FORMAT_TAG (UNIV_PAGE_SIZE - 16)
-/** Contents of TRX_SYS_FILE_FORMAT_TAG when valid. The file format
+/** Contents of TRX_SYS_FILE_FORMAT_TAG when valid. The file format
identifier is added to this constant. */
#define TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_LOW 3645922177UL
/** Contents of TRX_SYS_FILE_FORMAT_TAG+4 when valid */
#define TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_HIGH 2745987765UL
+/** Contents of TRX_SYS_FILE_FORMAT_TAG when valid. The file format
+identifier is added to this 64-bit constant. */
+#define TRX_SYS_FILE_FORMAT_TAG_MAGIC_N \
+ ((ib_uint64_t) TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_HIGH << 32 \
+ | TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_LOW)
/* @} */
/** Doublewrite control struct */
=== modified file 'storage/innobase/include/trx0sys.ic'
--- a/storage/innobase/include/trx0sys.ic revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/trx0sys.ic revid:jimmy.yang@stripped5051420-ps44ileuontw6hn3
@@ -266,7 +266,7 @@ trx_get_on_id(
trx = UT_LIST_GET_FIRST(trx_sys->trx_list);
while (trx != NULL) {
- if (0 == ut_dulint_cmp(trx_id, trx->id)) {
+ if (trx_id == trx->id) {
return(trx);
}
@@ -315,12 +315,12 @@ trx_is_active(
ut_ad(mutex_own(&(kernel_mutex)));
- if (ut_dulint_cmp(trx_id, trx_list_get_min_trx_id()) < 0) {
+ if (trx_id < trx_list_get_min_trx_id()) {
return(FALSE);
}
- if (ut_dulint_cmp(trx_id, trx_sys->max_trx_id) >= 0) {
+ if (UNIV_UNLIKELY(trx_id >= trx_sys->max_trx_id)) {
/* There must be corruption: we return TRUE because this
function is only called by lock_clust_rec_some_has_impl()
@@ -359,15 +359,12 @@ trx_sys_get_new_trx_id(void)
Thus trx id values will not overlap when the database is
repeatedly started! */
- if (ut_dulint_get_low(trx_sys->max_trx_id)
- % TRX_SYS_TRX_ID_WRITE_MARGIN == 0) {
+ if ((ulint) trx_sys->max_trx_id % TRX_SYS_TRX_ID_WRITE_MARGIN == 0) {
trx_sys_flush_max_trx_id();
}
- id = trx_sys->max_trx_id;
-
- UT_DULINT_INC(trx_sys->max_trx_id);
+ id = trx_sys->max_trx_id++;
return(id);
}
=== modified file 'storage/innobase/include/trx0trx.h'
--- a/storage/innobase/include/trx0trx.h revid:vasil.dimov@stripped20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/trx0trx.h revid:jimmy.yang@stripped0-ps44ileuontw6hn3
@@ -408,30 +408,20 @@ Calculates the "weight" of a transaction
is estimated as the number of altered rows + the number of locked rows.
@param t transaction
@return transaction weight */
-#define TRX_WEIGHT(t) \
- ut_dulint_add((t)->undo_no, UT_LIST_GET_LEN((t)->trx_locks))
+#define TRX_WEIGHT(t) ((t)->undo_no + UT_LIST_GET_LEN((t)->trx_locks))
/*******************************************************************//**
Compares the "weight" (or size) of two transactions. Transactions that
have edited non-transactional tables are considered heavier than ones
that have not.
-@return <0, 0 or >0; similar to strcmp(3) */
+@return TRUE if weight(a) >= weight(b) */
UNIV_INTERN
-int
-trx_weight_cmp(
-/*===========*/
+ibool
+trx_weight_ge(
+/*==========*/
const trx_t* a, /*!< in: the first transaction to be compared */
const trx_t* b); /*!< in: the second transaction to be compared */
-/*******************************************************************//**
-Retrieves transacion's id, represented as unsigned long long.
-@return transaction's id */
-UNIV_INLINE
-ullint
-trx_get_id(
-/*=======*/
- const trx_t* trx); /*!< in: transaction */
-
/* Maximum length of a string that can be returned by
trx_get_que_state_str(). */
#define TRX_QUE_STATE_STR_MAX_LEN 12 /* "ROLLING BACK" */
@@ -555,8 +545,8 @@ struct trx_struct{
max trx id when the transaction is
moved to COMMITTED_IN_MEMORY state */
ib_uint64_t commit_lsn; /*!< lsn at the time of the commit */
- trx_id_t table_id; /*!< Table to drop iff dict_operation
- is TRUE, or ut_dulint_zero. */
+ table_id_t table_id; /*!< Table to drop iff dict_operation
+ is TRUE, or 0. */
/*------------------------------*/
void* mysql_thd; /*!< MySQL thread handle corresponding
to this trx, or NULL */
=== modified file 'storage/innobase/include/trx0trx.ic'
--- a/storage/innobase/include/trx0trx.ic revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/trx0trx.ic revid:jimmy.yang@stripped100625051420-ps44ileuontw6hn3
@@ -69,18 +69,6 @@ trx_get_error_info(
}
/*******************************************************************//**
-Retrieves transacion's id, represented as unsigned long long.
-@return transaction's id */
-UNIV_INLINE
-ullint
-trx_get_id(
-/*=======*/
- const trx_t* trx) /*!< in: transaction */
-{
- return((ullint)ut_conv_dulint_to_longlong(trx->id));
-}
-
-/*******************************************************************//**
Retrieves transaction's que state in a human readable string. The string
should not be free()'d or modified.
@return string in the data segment */
=== modified file 'storage/innobase/include/trx0types.h'
--- a/storage/innobase/include/trx0types.h revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/trx0types.h revid:jimmy.yang@stripped0625051420-ps44ileuontw6hn3
@@ -28,10 +28,7 @@ Created 3/26/1996 Heikki Tuuri
#include "ut0byte.h"
-/** prepare trx_t::id for being printed via printf(3) */
-#define TRX_ID_PREP_PRINTF(id) (ullint) ut_conv_dulint_to_longlong(id)
-
-/** printf(3) format used for printing TRX_ID_PRINTF_PREP() */
+/** printf(3) format used for printing DB_TRX_ID and other system fields */
#define TRX_ID_FMT "%llX"
/** maximum length that a formatted trx_t::id could take, not including
@@ -81,12 +78,14 @@ enum trx_rb_ctx {
in crash recovery */
};
+/** Row identifier (DB_ROW_ID, DATA_ROW_ID) */
+typedef ib_id_t row_id_t;
/** Transaction identifier (DB_TRX_ID, DATA_TRX_ID) */
-typedef dulint trx_id_t;
+typedef ib_id_t trx_id_t;
/** Rollback pointer (DB_ROLL_PTR, DATA_ROLL_PTR) */
-typedef dulint roll_ptr_t;
+typedef ib_id_t roll_ptr_t;
/** Undo number */
-typedef dulint undo_no_t;
+typedef ib_id_t undo_no_t;
/** Transaction savepoint */
typedef struct trx_savept_struct trx_savept_t;
=== modified file 'storage/innobase/include/trx0undo.h'
--- a/storage/innobase/include/trx0undo.h revid:vasil.dimov@stripped9-e4bbn3gf1py6260h
+++ b/storage/innobase/include/trx0undo.h revid:jimmy.yang@strippedtw6hn3
@@ -383,7 +383,7 @@ struct trx_undo_struct{
XID xid; /*!< X/Open XA transaction
identification */
ibool dict_operation; /*!< TRUE if a dict operation trx */
- dulint table_id; /*!< if a dict operation, then the table
+ table_id_t table_id; /*!< if a dict operation, then the table
id */
trx_rseg_t* rseg; /*!< rseg where the undo log belongs */
/*-----------------------------*/
=== modified file 'storage/innobase/include/trx0undo.ic'
--- a/storage/innobase/include/trx0undo.ic revid:vasil.dimov@stripped0h
+++ b/storage/innobase/include/trx0undo.ic revid:jimmy.yang@stripped
@@ -39,16 +39,19 @@ trx_undo_build_roll_ptr(
ulint page_no, /*!< in: page number */
ulint offset) /*!< in: offset of the undo entry within page */
{
+ roll_ptr_t roll_ptr;
#if DATA_ROLL_PTR_LEN != 7
# error "DATA_ROLL_PTR_LEN != 7"
#endif
+ ut_ad(is_insert == 0 || is_insert == 1);
ut_ad(rseg_id < TRX_SYS_N_RSEGS);
+ ut_ad(offset < 65536);
- return(ut_dulint_create(is_insert * 128 * 256 * 256
- + rseg_id * 256 * 256
- + (page_no / 256) / 256,
- (page_no % (256 * 256)) * 256 * 256
- + offset));
+ roll_ptr = (roll_ptr_t) is_insert << 55
+ | (roll_ptr_t) rseg_id << 48
+ | (roll_ptr_t) page_no << 16
+ | offset;
+ return(roll_ptr);
}
/***********************************************************************//**
@@ -64,24 +67,20 @@ trx_undo_decode_roll_ptr(
ulint* offset) /*!< out: offset of the undo
entry within page */
{
- ulint low;
- ulint high;
#if DATA_ROLL_PTR_LEN != 7
# error "DATA_ROLL_PTR_LEN != 7"
#endif
#if TRUE != 1
# error "TRUE != 1"
#endif
- high = ut_dulint_get_high(roll_ptr);
- low = ut_dulint_get_low(roll_ptr);
-
- *offset = low % (256 * 256);
-
- *is_insert = high / (256 * 256 * 128); /* TRUE == 1 */
- *rseg_id = (high / (256 * 256)) % 128;
-
- *page_no = (high % (256 * 256)) * 256 * 256
- + (low / 256) / 256;
+ ut_ad(roll_ptr < (1ULL << 56));
+ *offset = (ulint) roll_ptr & 0xFFFF;
+ roll_ptr >>= 16;
+ *page_no = (ulint) roll_ptr & 0xFFFFFFFF;
+ roll_ptr >>= 32;
+ *rseg_id = (ulint) roll_ptr & 0x7F;
+ roll_ptr >>= 7;
+ *is_insert = (ibool) roll_ptr; /* TRUE==1 */
}
/***********************************************************************//**
@@ -93,16 +92,14 @@ trx_undo_roll_ptr_is_insert(
/*========================*/
roll_ptr_t roll_ptr) /*!< in: roll pointer */
{
- ulint high;
#if DATA_ROLL_PTR_LEN != 7
# error "DATA_ROLL_PTR_LEN != 7"
#endif
#if TRUE != 1
# error "TRUE != 1"
#endif
- high = ut_dulint_get_high(roll_ptr);
-
- return(high / (256 * 256 * 128));
+ ut_ad(roll_ptr < (1ULL << 56));
+ return((ibool) (roll_ptr >> 55));
}
#endif /* !UNIV_HOTBACKUP */
=== modified file 'storage/innobase/include/univ.i'
--- a/storage/innobase/include/univ.i revid:vasil.dimov@stripped
+++ b/storage/innobase/include/univ.i revid:jimmy.yang@strippedm-20100625051420-ps44ileuontw6hn3
@@ -371,8 +371,10 @@ typedef unsigned long long int ullint;
/* The 'undefined' value for a ulint */
#define ULINT_UNDEFINED ((ulint)(-1))
+/** The bitmask of 32-bit unsigned integer */
+#define ULINT32_MASK 0xFFFFFFFF
/* The undefined 32-bit unsigned integer */
-#define ULINT32_UNDEFINED 0xFFFFFFFF
+#define ULINT32_UNDEFINED ULINT32_MASK
/* Maximum value for a ulint */
#define ULINT_MAX ((ulint)(-2))
@@ -380,6 +382,9 @@ typedef unsigned long long int ullint;
/* Maximum value for ib_uint64_t */
#define IB_ULONGLONG_MAX ((ib_uint64_t) (~0ULL))
+/** The generic InnoDB system object identifier data type */
+typedef ib_uint64_t ib_id_t;
+
/* This 'ibool' type is used within Innobase. Remember that different included
headers may define 'bool' differently. Do not assume that 'bool' is a ulint! */
#define ibool ulint
=== modified file 'storage/innobase/include/ut0byte.h'
--- a/storage/innobase/include/ut0byte.h revid:vasil.dimov@strippedpy6260h
+++ b/storage/innobase/include/ut0byte.h revid:jimmy.yang@stripped
@@ -27,145 +27,22 @@ Created 1/20/1994 Heikki Tuuri
#define ut0byte_h
-#include "univ.i"
-
-/** Pair of ulint integers. */
-typedef struct dulint_struct dulint;
-/** Type definition for a 64-bit unsigned integer, which works also
-in 32-bit machines. NOTE! Access the fields only with the accessor
-functions. This definition appears here only for the compiler to
-know the size of a dulint. */
-struct dulint_struct{
- ulint high; /*!< most significant 32 bits */
- ulint low; /*!< least significant 32 bits */
-};
-
-/** Zero value for a dulint */
-extern const dulint ut_dulint_zero;
-/** Maximum value for a dulint */
-extern const dulint ut_dulint_max;
+#include "univ.i"
/*******************************************************//**
-Creates a 64-bit dulint out of two ulints.
+Creates a 64-bit integer out of two 32-bit integers.
@return created dulint */
UNIV_INLINE
-dulint
-ut_dulint_create(
-/*=============*/
- ulint high, /*!< in: high-order 32 bits */
- ulint low); /*!< in: low-order 32 bits */
-/*******************************************************//**
-Gets the high-order 32 bits of a dulint.
-@return 32 bits in ulint */
-UNIV_INLINE
-ulint
-ut_dulint_get_high(
-/*===============*/
- dulint d); /*!< in: dulint */
-/*******************************************************//**
-Gets the low-order 32 bits of a dulint.
-@return 32 bits in ulint */
-UNIV_INLINE
-ulint
-ut_dulint_get_low(
-/*==============*/
- dulint d); /*!< in: dulint */
-/*******************************************************//**
-Converts a dulint (a struct of 2 ulints) to ib_int64_t, which is a 64-bit
-integer type.
-@return value in ib_int64_t type */
-UNIV_INLINE
-ib_int64_t
-ut_conv_dulint_to_longlong(
-/*=======================*/
- dulint d); /*!< in: dulint */
-/*******************************************************//**
-Tests if a dulint is zero.
-@return TRUE if zero */
-UNIV_INLINE
-ibool
-ut_dulint_is_zero(
-/*==============*/
- dulint a); /*!< in: dulint */
-/*******************************************************//**
-Compares two dulints.
-@return -1 if a < b, 0 if a == b, 1 if a > b */
-UNIV_INLINE
-int
-ut_dulint_cmp(
-/*==========*/
- dulint a, /*!< in: dulint */
- dulint b); /*!< in: dulint */
-/*******************************************************//**
-Calculates the max of two dulints.
-@return max(a, b) */
-UNIV_INLINE
-dulint
-ut_dulint_get_max(
-/*==============*/
- dulint a, /*!< in: dulint */
- dulint b); /*!< in: dulint */
-/*******************************************************//**
-Calculates the min of two dulints.
-@return min(a, b) */
-UNIV_INLINE
-dulint
-ut_dulint_get_min(
-/*==============*/
- dulint a, /*!< in: dulint */
- dulint b); /*!< in: dulint */
-/*******************************************************//**
-Adds a ulint to a dulint.
-@return sum a + b */
-UNIV_INLINE
-dulint
-ut_dulint_add(
+ib_uint64_t
+ut_ull_create(
/*==========*/
- dulint a, /*!< in: dulint */
- ulint b); /*!< in: ulint */
-/*******************************************************//**
-Subtracts a ulint from a dulint.
-@return a - b */
-UNIV_INLINE
-dulint
-ut_dulint_subtract(
-/*===============*/
- dulint a, /*!< in: dulint */
- ulint b); /*!< in: ulint, b <= a */
-/*******************************************************//**
-Subtracts a dulint from another. NOTE that the difference must be positive
-and smaller that 4G.
-@return a - b */
-UNIV_INLINE
-ulint
-ut_dulint_minus(
-/*============*/
- dulint a, /*!< in: dulint; NOTE a must be >= b and at most
- 2 to power 32 - 1 greater */
- dulint b); /*!< in: dulint */
-/********************************************************//**
-Rounds a dulint downward to a multiple of a power of 2.
-@return rounded value */
-UNIV_INLINE
-dulint
-ut_dulint_align_down(
-/*=================*/
- dulint n, /*!< in: number to be rounded */
- ulint align_no); /*!< in: align by this number which must be a
- power of 2 */
-/********************************************************//**
-Rounds a dulint upward to a multiple of a power of 2.
-@return rounded value */
-UNIV_INLINE
-dulint
-ut_dulint_align_up(
-/*===============*/
- dulint n, /*!< in: number to be rounded */
- ulint align_no); /*!< in: align by this number which must be a
- power of 2 */
+ ulint high, /*!< in: high-order 32 bits */
+ ulint low) /*!< in: low-order 32 bits */
+ __attribute__((const));
+
/********************************************************//**
-Rounds a dulint downward to a multiple of a power of 2.
+Rounds a 64-bit integer downward to a multiple of a power of 2.
@return rounded value */
UNIV_INLINE
ib_uint64_t
@@ -184,34 +61,6 @@ ut_uint64_align_up(
ib_uint64_t n, /*!< in: number to be rounded */
ulint align_no); /*!< in: align by this number
which must be a power of 2 */
-/*******************************************************//**
-Increments a dulint variable by 1. */
-#define UT_DULINT_INC(D)\
-{\
- if ((D).low == 0xFFFFFFFFUL) {\
- (D).high = (D).high + 1;\
- (D).low = 0;\
- } else {\
- (D).low = (D).low + 1;\
- }\
-}
-/*******************************************************//**
-Tests if two dulints are equal. */
-#define UT_DULINT_EQ(D1, D2) (((D1).low == (D2).low)\
- && ((D1).high == (D2).high))
-#ifdef notdefined
-/************************************************************//**
-Sort function for dulint arrays. */
-UNIV_INTERN
-void
-ut_dulint_sort(
-/*===========*/
- dulint* arr, /*!< in/out: array to be sorted */
- dulint* aux_arr,/*!< in/out: auxiliary array (same size as arr) */
- ulint low, /*!< in: low bound of sort interval, inclusive */
- ulint high); /*!< in: high bound of sort interval, noninclusive */
-#endif /* notdefined */
-
/*********************************************************//**
The following function rounds up a pointer to the nearest aligned address.
@return aligned pointer */
=== modified file 'storage/innobase/include/ut0byte.ic'
--- a/storage/innobase/include/ut0byte.ic revid:vasil.dimov@strippedm-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/include/ut0byte.ic revid:jimmy.yang@stripped1420-ps44ileuontw6hn3
@@ -24,260 +24,22 @@ Created 5/30/1994 Heikki Tuuri
*******************************************************************/
/*******************************************************//**
-Creates a 64-bit dulint out of two ulints.
+Creates a 64-bit integer out of two 32-bit integers.
@return created dulint */
UNIV_INLINE
-dulint
-ut_dulint_create(
-/*=============*/
+ib_uint64_t
+ut_ull_create(
+/*==========*/
ulint high, /*!< in: high-order 32 bits */
ulint low) /*!< in: low-order 32 bits */
{
- dulint res;
-
- ut_ad(high <= 0xFFFFFFFF);
- ut_ad(low <= 0xFFFFFFFF);
-
- res.high = high;
- res.low = low;
-
- return(res);
-}
-
-/*******************************************************//**
-Gets the high-order 32 bits of a dulint.
-@return 32 bits in ulint */
-UNIV_INLINE
-ulint
-ut_dulint_get_high(
-/*===============*/
- dulint d) /*!< in: dulint */
-{
- return(d.high);
-}
-
-/*******************************************************//**
-Gets the low-order 32 bits of a dulint.
-@return 32 bits in ulint */
-UNIV_INLINE
-ulint
-ut_dulint_get_low(
-/*==============*/
- dulint d) /*!< in: dulint */
-{
- return(d.low);
-}
-
-/*******************************************************//**
-Converts a dulint (a struct of 2 ulints) to ib_int64_t, which is a 64-bit
-integer type.
-@return value in ib_int64_t type */
-UNIV_INLINE
-ib_int64_t
-ut_conv_dulint_to_longlong(
-/*=======================*/
- dulint d) /*!< in: dulint */
-{
- return((ib_int64_t)d.low
- + (((ib_int64_t)d.high) << 32));
-}
-
-/*******************************************************//**
-Tests if a dulint is zero.
-@return TRUE if zero */
-UNIV_INLINE
-ibool
-ut_dulint_is_zero(
-/*==============*/
- dulint a) /*!< in: dulint */
-{
- if ((a.low == 0) && (a.high == 0)) {
-
- return(TRUE);
- }
-
- return(FALSE);
-}
-
-/*******************************************************//**
-Compares two dulints.
-@return -1 if a < b, 0 if a == b, 1 if a > b */
-UNIV_INLINE
-int
-ut_dulint_cmp(
-/*==========*/
- dulint a, /*!< in: dulint */
- dulint b) /*!< in: dulint */
-{
- if (a.high > b.high) {
- return(1);
- } else if (a.high < b.high) {
- return(-1);
- } else if (a.low > b.low) {
- return(1);
- } else if (a.low < b.low) {
- return(-1);
- } else {
- return(0);
- }
-}
-
-/*******************************************************//**
-Calculates the max of two dulints.
-@return max(a, b) */
-UNIV_INLINE
-dulint
-ut_dulint_get_max(
-/*==============*/
- dulint a, /*!< in: dulint */
- dulint b) /*!< in: dulint */
-{
- if (ut_dulint_cmp(a, b) > 0) {
-
- return(a);
- }
-
- return(b);
-}
-
-/*******************************************************//**
-Calculates the min of two dulints.
-@return min(a, b) */
-UNIV_INLINE
-dulint
-ut_dulint_get_min(
-/*==============*/
- dulint a, /*!< in: dulint */
- dulint b) /*!< in: dulint */
-{
- if (ut_dulint_cmp(a, b) > 0) {
-
- return(b);
- }
-
- return(a);
-}
-
-/*******************************************************//**
-Adds a ulint to a dulint.
-@return sum a + b */
-UNIV_INLINE
-dulint
-ut_dulint_add(
-/*==========*/
- dulint a, /*!< in: dulint */
- ulint b) /*!< in: ulint */
-{
- if (0xFFFFFFFFUL - b >= a.low) {
- a.low += b;
-
- return(a);
- }
-
- a.low = a.low - (0xFFFFFFFFUL - b) - 1;
-
- a.high++;
-
- return(a);
-}
-
-/*******************************************************//**
-Subtracts a ulint from a dulint.
-@return a - b */
-UNIV_INLINE
-dulint
-ut_dulint_subtract(
-/*===============*/
- dulint a, /*!< in: dulint */
- ulint b) /*!< in: ulint, b <= a */
-{
- if (a.low >= b) {
- a.low -= b;
-
- return(a);
- }
-
- b -= a.low + 1;
-
- a.low = 0xFFFFFFFFUL - b;
-
- ut_ad(a.high > 0);
-
- a.high--;
-
- return(a);
-}
-
-/*******************************************************//**
-Subtracts a dulint from another. NOTE that the difference must be positive
-and smaller that 4G.
-@return a - b */
-UNIV_INLINE
-ulint
-ut_dulint_minus(
-/*============*/
- dulint a, /*!< in: dulint; NOTE a must be >= b and at most
- 2 to power 32 - 1 greater */
- dulint b) /*!< in: dulint */
-{
- ulint diff;
-
- if (a.high == b.high) {
- ut_ad(a.low >= b.low);
-
- return(a.low - b.low);
- }
-
- ut_ad(a.high == b.high + 1);
-
- diff = (ulint)(0xFFFFFFFFUL - b.low);
- diff += 1 + a.low;
-
- ut_ad(diff > a.low);
-
- return(diff);
-}
-
-/********************************************************//**
-Rounds a dulint downward to a multiple of a power of 2.
-@return rounded value */
-UNIV_INLINE
-dulint
-ut_dulint_align_down(
-/*=================*/
- dulint n, /*!< in: number to be rounded */
- ulint align_no) /*!< in: align by this number which must be a
- power of 2 */
-{
- ulint low, high;
-
- ut_ad(align_no > 0);
- ut_ad(((align_no - 1) & align_no) == 0);
-
- low = ut_dulint_get_low(n);
- high = ut_dulint_get_high(n);
-
- low = low & ~(align_no - 1);
-
- return(ut_dulint_create(high, low));
-}
-
-/********************************************************//**
-Rounds a dulint upward to a multiple of a power of 2.
-@return rounded value */
-UNIV_INLINE
-dulint
-ut_dulint_align_up(
-/*===============*/
- dulint n, /*!< in: number to be rounded */
- ulint align_no) /*!< in: align by this number which must be a
- power of 2 */
-{
- return(ut_dulint_align_down(ut_dulint_add(n, align_no - 1), align_no));
+ ut_ad(high <= ULINT32_MASK);
+ ut_ad(low <= ULINT32_MASK);
+ return(((ib_uint64_t) high) << 32 | low);
}
/********************************************************//**
-Rounds ib_uint64_t downward to a multiple of a power of 2.
+Rounds a 64-bit integer downward to a multiple of a power of 2.
@return rounded value */
UNIV_INLINE
ib_uint64_t
=== modified file 'storage/innobase/include/ut0rnd.h'
--- a/storage/innobase/include/ut0rnd.h revid:vasil.dimov@strippedpy6260h
+++ b/storage/innobase/include/ut0rnd.h revid:jimmy.yang@stripped
@@ -97,13 +97,13 @@ ut_fold_ulint_pair(
ulint n2) /*!< in: ulint */
__attribute__((const));
/*************************************************************//**
-Folds a dulint.
+Folds a 64-bit integer.
@return folded value */
UNIV_INLINE
ulint
-ut_fold_dulint(
-/*===========*/
- dulint d) /*!< in: dulint */
+ut_fold_ull(
+/*========*/
+ ib_uint64_t d) /*!< in: 64-bit integer */
__attribute__((const));
/*************************************************************//**
Folds a character string ending in the null character.
=== modified file 'storage/innobase/include/ut0rnd.ic'
--- a/storage/innobase/include/ut0rnd.ic revid:vasil.dimov@stripped6260h
+++ b/storage/innobase/include/ut0rnd.ic revid:jimmy.yang@stripped
@@ -173,16 +173,16 @@ ut_fold_ulint_pair(
}
/*************************************************************//**
-Folds a dulint.
+Folds a 64-bit integer.
@return folded value */
UNIV_INLINE
ulint
-ut_fold_dulint(
-/*===========*/
- dulint d) /*!< in: dulint */
+ut_fold_ull(
+/*========*/
+ ib_uint64_t d) /*!< in: 64-bit integer */
{
- return(ut_fold_ulint_pair(ut_dulint_get_low(d),
- ut_dulint_get_high(d)));
+ return(ut_fold_ulint_pair((ulint) d & ULINT32_MASK,
+ (ulint) (d >> 32)));
}
/*************************************************************//**
=== modified file 'storage/innobase/lock/lock0lock.c'
--- a/storage/innobase/lock/lock0lock.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/lock/lock0lock.c revid:jimmy.yang@stripped100625051420-ps44ileuontw6hn3
@@ -468,7 +468,7 @@ lock_check_trx_id_sanity(
/* A sanity check: the trx_id in rec must be smaller than the global
trx id counter */
- if (ut_dulint_cmp(trx_id, trx_sys->max_trx_id) >= 0) {
+ if (UNIV_UNLIKELY(trx_id >= trx_sys->max_trx_id)) {
ut_print_timestamp(stderr);
fputs(" InnoDB: Error: transaction id associated"
" with record\n",
@@ -481,8 +481,7 @@ lock_check_trx_id_sanity(
" global trx id counter " TRX_ID_FMT "!\n"
"InnoDB: The table is corrupt. You have to do"
" dump + drop + reimport.\n",
- TRX_ID_PREP_PRINTF(trx_id),
- TRX_ID_PREP_PRINTF(trx_sys->max_trx_id));
+ (ullint) trx_id, (ullint) trx_sys->max_trx_id);
is_ok = FALSE;
}
@@ -556,9 +555,9 @@ lock_sec_rec_cons_read_sees(
}
max_trx_id = page_get_max_trx_id(page_align(rec));
- ut_ad(!ut_dulint_is_zero(max_trx_id));
+ ut_ad(max_trx_id);
- return(ut_dulint_cmp(max_trx_id, view->up_limit_id) < 0);
+ return(max_trx_id < view->up_limit_id);
}
/*********************************************************************//**
@@ -1594,8 +1593,7 @@ lock_sec_rec_some_has_impl_off_kernel(
max trx id to the log, and therefore during recovery, this value
for a page may be incorrect. */
- if (!(ut_dulint_cmp(page_get_max_trx_id(page),
- trx_list_get_min_trx_id()) >= 0)
+ if (page_get_max_trx_id(page) < trx_list_get_min_trx_id()
&& !recv_recovery_is_on()) {
return(NULL);
@@ -1820,8 +1818,8 @@ lock_rec_enqueue_waiting(
#ifdef UNIV_DEBUG
if (lock_print_waits) {
- fprintf(stderr, "Lock wait for trx %lu in index ",
- (ulong) ut_dulint_get_low(trx->id));
+ fprintf(stderr, "Lock wait for trx " TRX_ID_FMT " in index ",
+ (ullint) trx->id);
ut_print_name(stderr, trx, FALSE, index->name);
}
#endif /* UNIV_DEBUG */
@@ -2193,8 +2191,8 @@ lock_grant(
#ifdef UNIV_DEBUG
if (lock_print_waits) {
- fprintf(stderr, "Lock wait for trx %lu ends\n",
- (ulong) ut_dulint_get_low(lock->trx->id));
+ fprintf(stderr, "Lock wait for trx " TRX_ID_FMT " ends\n",
+ (ullint) lock->trx->id);
}
#endif /* UNIV_DEBUG */
@@ -3486,8 +3484,7 @@ lock_deadlock_recursive(
}
#endif /* UNIV_DEBUG */
- if (trx_weight_cmp(wait_lock->trx,
- start) >= 0) {
+ if (trx_weight_ge(wait_lock->trx, start)) {
/* Our recursion starting point
transaction is 'smaller', let us
choose 'start' as the victim and roll
@@ -4023,7 +4020,7 @@ lock_release_off_kernel(
ut_ad(lock_get_type_low(lock) & LOCK_TABLE);
if (lock_get_mode(lock) != LOCK_IS
- && !ut_dulint_is_zero(trx->undo_no)) {
+ && trx->undo_no != 0) {
/* The trx may have modified the table. We
block the use of the MySQL query cache for
@@ -4222,8 +4219,7 @@ lock_table_print(
fputs("TABLE LOCK table ", file);
ut_print_name(file, lock->trx, TRUE,
lock->un_member.tab_lock.table->name);
- fprintf(file, " trx id " TRX_ID_FMT,
- TRX_ID_PREP_PRINTF(lock->trx->id));
+ fprintf(file, " trx id " TRX_ID_FMT, (ullint) lock->trx->id);
if (lock_get_mode(lock) == LOCK_S) {
fputs(" lock mode S", file);
@@ -4276,8 +4272,7 @@ lock_rec_print(
(ulong) space, (ulong) page_no,
(ulong) lock_rec_get_n_bits(lock));
dict_index_name_print(file, lock->trx, lock->index);
- fprintf(file, " trx id " TRX_ID_FMT,
- TRX_ID_PREP_PRINTF(lock->trx->id));
+ fprintf(file, " trx id " TRX_ID_FMT, (ullint) lock->trx->id);
if (lock_get_mode(lock) == LOCK_S) {
fputs(" lock mode S", file);
@@ -4412,13 +4407,13 @@ lock_print_info_summary(
"------------\n", file);
fprintf(file, "Trx id counter " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(trx_sys->max_trx_id));
+ (ullint) trx_sys->max_trx_id);
fprintf(file,
"Purge done for trx's n:o < " TRX_ID_FMT
" undo n:o < " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(purge_sys->purge_trx_no),
- TRX_ID_PREP_PRINTF(purge_sys->purge_undo_no));
+ (ullint) purge_sys->purge_trx_no,
+ (ullint) purge_sys->purge_undo_no);
fprintf(file,
"History list length %lu\n",
@@ -4495,10 +4490,8 @@ loop:
"Trx read view will not see trx with"
" id >= " TRX_ID_FMT
", sees < " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(
- trx->read_view->low_limit_id),
- TRX_ID_PREP_PRINTF(
- trx->read_view->up_limit_id));
+ (ullint) trx->read_view->low_limit_id,
+ (ullint) trx->read_view->up_limit_id);
}
if (trx->que_state == TRX_QUE_LOCK_WAIT) {
@@ -4912,12 +4905,12 @@ ibool
lock_validate(void)
/*===============*/
{
- lock_t* lock;
- trx_t* trx;
- dulint limit;
- ulint space;
- ulint page_no;
- ulint i;
+ lock_t* lock;
+ trx_t* trx;
+ ib_uint64_t limit;
+ ulint space;
+ ulint page_no;
+ ulint i;
lock_mutex_enter_kernel();
@@ -4941,20 +4934,21 @@ lock_validate(void)
for (i = 0; i < hash_get_n_cells(lock_sys->rec_hash); i++) {
- limit = ut_dulint_zero;
+ limit = 0;
for (;;) {
lock = HASH_GET_FIRST(lock_sys->rec_hash, i);
while (lock) {
+ ib_uint64_t space_page;
ut_a(trx_in_trx_list(lock->trx));
space = lock->un_member.rec_lock.space;
page_no = lock->un_member.rec_lock.page_no;
- if (ut_dulint_cmp(
- ut_dulint_create(space, page_no),
- limit) >= 0) {
+ space_page = ut_ull_create(space, page_no);
+
+ if (space_page >= limit) {
break;
}
@@ -4974,7 +4968,7 @@ lock_validate(void)
lock_mutex_enter_kernel();
- limit = ut_dulint_create(space, page_no + 1);
+ limit = ut_ull_create(space, page_no + 1);
}
}
@@ -5348,8 +5342,7 @@ lock_sec_rec_read_check_and_lock(
if the max trx id for the page >= min trx id for the trx list or a
database recovery is running. */
- if (((ut_dulint_cmp(page_get_max_trx_id(block->frame),
- trx_list_get_min_trx_id()) >= 0)
+ if ((page_get_max_trx_id(block->frame) >= trx_list_get_min_trx_id()
|| recv_recovery_is_on())
&& !page_rec_is_supremum(rec)) {
@@ -5572,12 +5565,12 @@ lock_get_type(
Gets the id of the transaction owning a lock.
@return transaction id */
UNIV_INTERN
-ullint
+trx_id_t
lock_get_trx_id(
/*============*/
const lock_t* lock) /*!< in: lock */
{
- return(trx_get_id(lock->trx));
+ return(lock->trx->id);
}
/*******************************************************************//**
@@ -5671,7 +5664,7 @@ lock_get_table(
Gets the id of the table on which the lock is.
@return id of the table */
UNIV_INTERN
-ullint
+table_id_t
lock_get_table_id(
/*==============*/
const lock_t* lock) /*!< in: lock */
@@ -5680,7 +5673,7 @@ lock_get_table_id(
table = lock_get_table(lock);
- return((ullint)ut_conv_dulint_to_longlong(table->id));
+ return(table->id);
}
/*******************************************************************//**
=== modified file 'storage/innobase/log/log0log.c'
--- a/storage/innobase/log/log0log.c revid:vasil.dimov@stripped
+++ b/storage/innobase/log/log0log.c revid:jimmy.yang@stripped0625051420-ps44ileuontw6hn3
@@ -1166,7 +1166,7 @@ log_group_file_header_flush(
buf = *(group->file_header_bufs + nth_file);
mach_write_to_4(buf + LOG_GROUP_ID, group->id);
- mach_write_ull(buf + LOG_FILE_START_LSN, start_lsn);
+ mach_write_to_8(buf + LOG_FILE_START_LSN, start_lsn);
/* Wipe over possible label of ibbackup --restore */
memcpy(buf + LOG_FILE_WAS_CREATED_BY_HOT_BACKUP, " ", 4);
@@ -1769,8 +1769,8 @@ log_group_checkpoint(
buf = group->checkpoint_buf;
- mach_write_ull(buf + LOG_CHECKPOINT_NO, log_sys->next_checkpoint_no);
- mach_write_ull(buf + LOG_CHECKPOINT_LSN, log_sys->next_checkpoint_lsn);
+ mach_write_to_8(buf + LOG_CHECKPOINT_NO, log_sys->next_checkpoint_no);
+ mach_write_to_8(buf + LOG_CHECKPOINT_LSN, log_sys->next_checkpoint_lsn);
mach_write_to_4(buf + LOG_CHECKPOINT_OFFSET,
log_group_calc_lsn_offset(
@@ -1790,9 +1790,9 @@ log_group_checkpoint(
}
}
- mach_write_ull(buf + LOG_CHECKPOINT_ARCHIVED_LSN, archived_lsn);
+ mach_write_to_8(buf + LOG_CHECKPOINT_ARCHIVED_LSN, archived_lsn);
#else /* UNIV_LOG_ARCHIVE */
- mach_write_ull(buf + LOG_CHECKPOINT_ARCHIVED_LSN, IB_ULONGLONG_MAX);
+ mach_write_to_8(buf + LOG_CHECKPOINT_ARCHIVED_LSN, IB_ULONGLONG_MAX);
#endif /* UNIV_LOG_ARCHIVE */
for (i = 0; i < LOG_MAX_N_GROUPS; i++) {
@@ -1884,7 +1884,7 @@ log_reset_first_header_and_checkpoint(
ib_uint64_t lsn;
mach_write_to_4(hdr_buf + LOG_GROUP_ID, 0);
- mach_write_ull(hdr_buf + LOG_FILE_START_LSN, start);
+ mach_write_to_8(hdr_buf + LOG_FILE_START_LSN, start);
lsn = start + LOG_BLOCK_HDR_SIZE;
@@ -1896,15 +1896,15 @@ log_reset_first_header_and_checkpoint(
+ (sizeof "ibbackup ") - 1));
buf = hdr_buf + LOG_CHECKPOINT_1;
- mach_write_ull(buf + LOG_CHECKPOINT_NO, 0);
- mach_write_ull(buf + LOG_CHECKPOINT_LSN, lsn);
+ mach_write_to_8(buf + LOG_CHECKPOINT_NO, 0);
+ mach_write_to_8(buf + LOG_CHECKPOINT_LSN, lsn);
mach_write_to_4(buf + LOG_CHECKPOINT_OFFSET,
LOG_FILE_HDR_SIZE + LOG_BLOCK_HDR_SIZE);
mach_write_to_4(buf + LOG_CHECKPOINT_LOG_BUF_SIZE, 2 * 1024 * 1024);
- mach_write_ull(buf + LOG_CHECKPOINT_ARCHIVED_LSN, IB_ULONGLONG_MAX);
+ mach_write_to_8(buf + LOG_CHECKPOINT_ARCHIVED_LSN, IB_ULONGLONG_MAX);
fold = ut_fold_binary(buf, LOG_CHECKPOINT_CHECKSUM_1);
mach_write_to_4(buf + LOG_CHECKPOINT_CHECKSUM_1, fold);
@@ -2272,7 +2272,7 @@ log_group_archive_file_header_write(
buf = *(group->archive_file_header_bufs + nth_file);
mach_write_to_4(buf + LOG_GROUP_ID, group->id);
- mach_write_ull(buf + LOG_FILE_START_LSN, start_lsn);
+ mach_write_to_8(buf + LOG_FILE_START_LSN, start_lsn);
mach_write_to_4(buf + LOG_FILE_NO, file_no);
mach_write_to_4(buf + LOG_FILE_ARCH_COMPLETED, FALSE);
@@ -2308,7 +2308,7 @@ log_group_archive_completed_header_write
buf = *(group->archive_file_header_bufs + nth_file);
mach_write_to_4(buf + LOG_FILE_ARCH_COMPLETED, TRUE);
- mach_write_ull(buf + LOG_FILE_END_LSN, end_lsn);
+ mach_write_to_8(buf + LOG_FILE_END_LSN, end_lsn);
dest_offset = nth_file * group->file_size + LOG_FILE_ARCH_COMPLETED;
=== modified file 'storage/innobase/log/log0recv.c'
--- a/storage/innobase/log/log0recv.c revid:vasil.dimov@strippedm-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/log/log0recv.c revid:jimmy.yang@stripped-ps44ileuontw6hn3
@@ -704,11 +704,11 @@ recv_find_max_checkpoint(
group->state = LOG_GROUP_OK;
- group->lsn = mach_read_ull(
+ group->lsn = mach_read_from_8(
buf + LOG_CHECKPOINT_LSN);
group->lsn_offset = mach_read_from_4(
buf + LOG_CHECKPOINT_OFFSET);
- checkpoint_no = mach_read_ull(
+ checkpoint_no = mach_read_from_8(
buf + LOG_CHECKPOINT_NO);
#ifdef UNIV_DEBUG
@@ -778,14 +778,14 @@ recv_read_cp_info_for_backup(
cp_buf = hdr + LOG_CHECKPOINT_1;
if (recv_check_cp_is_consistent(cp_buf)) {
- max_cp_no = mach_read_ull(cp_buf + LOG_CHECKPOINT_NO);
+ max_cp_no = mach_read_from_8(cp_buf + LOG_CHECKPOINT_NO);
max_cp = LOG_CHECKPOINT_1;
}
cp_buf = hdr + LOG_CHECKPOINT_2;
if (recv_check_cp_is_consistent(cp_buf)) {
- if (mach_read_ull(cp_buf + LOG_CHECKPOINT_NO) > max_cp_no) {
+ if (mach_read_from_8(cp_buf + LOG_CHECKPOINT_NO) > max_cp_no) {
max_cp = LOG_CHECKPOINT_2;
}
}
@@ -796,7 +796,7 @@ recv_read_cp_info_for_backup(
cp_buf = hdr + max_cp;
- *lsn = mach_read_ull(cp_buf + LOG_CHECKPOINT_LSN);
+ *lsn = mach_read_from_8(cp_buf + LOG_CHECKPOINT_LSN);
*offset = mach_read_from_4(cp_buf + LOG_CHECKPOINT_OFFSET);
/* If the user is running a pre-3.23.50 version of InnoDB, its
@@ -816,9 +816,9 @@ recv_read_cp_info_for_backup(
/* fprintf(stderr, "fsp limit %lu MB\n", *fsp_limit); */
- *cp_no = mach_read_ull(cp_buf + LOG_CHECKPOINT_NO);
+ *cp_no = mach_read_from_8(cp_buf + LOG_CHECKPOINT_NO);
- *first_header_lsn = mach_read_ull(hdr + LOG_FILE_START_LSN);
+ *first_header_lsn = mach_read_from_8(hdr + LOG_FILE_START_LSN);
return(TRUE);
}
@@ -1541,7 +1541,7 @@ recv_recover_page_func(
#endif /* !UNIV_HOTBACKUP */
/* Read the newest modification lsn from the page */
- page_lsn = mach_read_ull(page + FIL_PAGE_LSN);
+ page_lsn = mach_read_from_8(page + FIL_PAGE_LSN);
#ifndef UNIV_HOTBACKUP
/* It may be that the page has been modified in the buffer
@@ -1616,14 +1616,14 @@ recv_recover_page_func(
block, &mtr);
end_lsn = recv->start_lsn + recv->len;
- mach_write_ull(FIL_PAGE_LSN + page, end_lsn);
- mach_write_ull(UNIV_PAGE_SIZE
- - FIL_PAGE_END_LSN_OLD_CHKSUM
- + page, end_lsn);
+ mach_write_to_8(FIL_PAGE_LSN + page, end_lsn);
+ mach_write_to_8(UNIV_PAGE_SIZE
+ - FIL_PAGE_END_LSN_OLD_CHKSUM
+ + page, end_lsn);
if (page_zip) {
- mach_write_ull(FIL_PAGE_LSN
- + page_zip->data, end_lsn);
+ mach_write_to_8(FIL_PAGE_LSN
+ + page_zip->data, end_lsn);
}
}
@@ -1995,7 +1995,7 @@ recv_apply_log_recs_for_backup(void)
buf_flush_init_for_writing(
block->frame, buf_block_get_page_zip(block),
- mach_read_ull(block->frame + FIL_PAGE_LSN));
+ mach_read_from_8(block->frame + FIL_PAGE_LSN));
if (zip_size) {
error = fil_io(OS_FILE_WRITE, TRUE,
@@ -2961,9 +2961,9 @@ recv_recovery_from_checkpoint_start_func
buf = log_sys->checkpoint_buf;
- checkpoint_lsn = mach_read_ull(buf + LOG_CHECKPOINT_LSN);
- checkpoint_no = mach_read_ull(buf + LOG_CHECKPOINT_NO);
- archived_lsn = mach_read_ull(buf + LOG_CHECKPOINT_ARCHIVED_LSN);
+ checkpoint_lsn = mach_read_from_8(buf + LOG_CHECKPOINT_LSN);
+ checkpoint_no = mach_read_from_8(buf + LOG_CHECKPOINT_NO);
+ archived_lsn = mach_read_from_8(buf + LOG_CHECKPOINT_ARCHIVED_LSN);
/* Read the first log file header to print a note if this is
a recovery from a restored InnoDB Hot Backup */
@@ -3613,8 +3613,8 @@ ask_again:
return(TRUE);
}
- start_lsn = mach_read_ull(buf + LOG_FILE_START_LSN);
- file_end_lsn = mach_read_ull(buf + LOG_FILE_END_LSN);
+ start_lsn = mach_read_from_8(buf + LOG_FILE_START_LSN);
+ file_end_lsn = mach_read_from_8(buf + LOG_FILE_END_LSN);
if (!recv_sys->scanned_lsn) {
=== modified file 'storage/innobase/mach/mach0data.c'
--- a/storage/innobase/mach/mach0data.c revid:vasil.dimov@strippedh
+++ b/storage/innobase/mach/mach0data.c revid:jimmy.yang@stripped
@@ -92,43 +92,3 @@ mach_parse_compressed(
return(ptr + 5);
}
}
-
-/*********************************************************//**
-Reads a dulint in a compressed form if the log record fully contains it.
-@return pointer to end of the stored field, NULL if not complete */
-UNIV_INTERN
-byte*
-mach_dulint_parse_compressed(
-/*=========================*/
- byte* ptr, /*!< in: pointer to buffer from where to read */
- byte* end_ptr,/*!< in: pointer to end of the buffer */
- dulint* val) /*!< out: read value */
-{
- ulint high;
- ulint low;
- ulint size;
-
- ut_ad(ptr && end_ptr && val);
-
- if (end_ptr < ptr + 5) {
-
- return(NULL);
- }
-
- high = mach_read_compressed(ptr);
-
- size = mach_get_compressed_size(high);
-
- ptr += size;
-
- if (end_ptr < ptr + 4) {
-
- return(NULL);
- }
-
- low = mach_read_from_4(ptr);
-
- *val = ut_dulint_create(high, low);
-
- return(ptr + 4);
-}
=== modified file 'storage/innobase/mtr/mtr0log.c'
--- a/storage/innobase/mtr/mtr0log.c revid:vasil.dimov@strippedy6260h
+++ b/storage/innobase/mtr/mtr0log.c revid:jimmy.yang@stripped
@@ -133,7 +133,7 @@ mlog_parse_initial_log_record(
}
/********************************************************//**
-Parses a log record written by mlog_write_ulint or mlog_write_dulint.
+Parses a log record written by mlog_write_ulint or mlog_write_ull.
@return parsed record end, NULL if not a complete record or a corrupt record */
UNIV_INTERN
byte*
@@ -145,9 +145,9 @@ mlog_parse_nbytes(
byte* page, /*!< in: page where to apply the log record, or NULL */
void* page_zip)/*!< in/out: compressed page, or NULL */
{
- ulint offset;
- ulint val;
- dulint dval;
+ ulint offset;
+ ulint val;
+ ib_uint64_t dval;
ut_a(type <= MLOG_8BYTES);
ut_a(!page || !page_zip || fil_page_get_type(page) != FIL_PAGE_INDEX);
@@ -167,7 +167,7 @@ mlog_parse_nbytes(
}
if (type == MLOG_8BYTES) {
- ptr = mach_dulint_parse_compressed(ptr, end_ptr, &dval);
+ ptr = mach_ull_parse_compressed(ptr, end_ptr, &dval);
if (ptr == NULL) {
@@ -290,11 +290,11 @@ Writes 8 bytes to a file page buffered i
Writes the corresponding log record to the mini-transaction log. */
UNIV_INTERN
void
-mlog_write_dulint(
-/*==============*/
- byte* ptr, /*!< in: pointer where to write */
- dulint val, /*!< in: value to write */
- mtr_t* mtr) /*!< in: mini-transaction handle */
+mlog_write_ull(
+/*===========*/
+ byte* ptr, /*!< in: pointer where to write */
+ ib_uint64_t val, /*!< in: value to write */
+ mtr_t* mtr) /*!< in: mini-transaction handle */
{
byte* log_ptr;
@@ -316,7 +316,7 @@ mlog_write_dulint(
mach_write_to_2(log_ptr, page_offset(ptr));
log_ptr += 2;
- log_ptr += mach_dulint_write_compressed(log_ptr, val);
+ log_ptr += mach_ull_write_compressed(log_ptr, val);
mlog_close(mtr, log_ptr);
}
=== modified file 'storage/innobase/mtr/mtr0mtr.c'
--- a/storage/innobase/mtr/mtr0mtr.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/mtr/mtr0mtr.c revid:jimmy.yang@stripped51420-ps44ileuontw6hn3
@@ -375,23 +375,6 @@ mtr_read_ulint(
}
}
-/********************************************************//**
-Reads 8 bytes from a file page buffered in the buffer pool.
-@return value read */
-UNIV_INTERN
-dulint
-mtr_read_dulint(
-/*============*/
- const byte* ptr, /*!< in: pointer from where to read */
- mtr_t* mtr __attribute__((unused)))
- /*!< in: mini-transaction handle */
-{
- ut_ad(mtr->state == MTR_ACTIVE);
- ut_ad(mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_S_FIX)
- || mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_X_FIX));
- return(mach_read_from_8(ptr));
-}
-
#ifdef UNIV_DEBUG
# ifndef UNIV_HOTBACKUP
/**********************************************************//**
=== modified file 'storage/innobase/page/page0page.c'
--- a/storage/innobase/page/page0page.c revid:vasil.dimov@stripped23100249-e4bbn3gf1py6260h
+++ b/storage/innobase/page/page0page.c revid:jimmy.yang@strippedleuontw6hn3
@@ -235,8 +235,8 @@ page_set_max_trx_id(
8, mtr);
#ifndef UNIV_HOTBACKUP
} else if (mtr) {
- mlog_write_dulint(page + (PAGE_HEADER + PAGE_MAX_TRX_ID),
- trx_id, mtr);
+ mlog_write_ull(page + (PAGE_HEADER + PAGE_MAX_TRX_ID),
+ trx_id, mtr);
#endif /* !UNIV_HOTBACKUP */
} else {
mach_write_to_8(page + (PAGE_HEADER + PAGE_MAX_TRX_ID), trx_id);
@@ -457,7 +457,7 @@ page_create_low(
page_header_set_field(page, NULL, PAGE_DIRECTION, PAGE_NO_DIRECTION);
page_header_set_field(page, NULL, PAGE_N_DIRECTION, 0);
page_header_set_field(page, NULL, PAGE_N_RECS, 0);
- page_set_max_trx_id(block, NULL, ut_dulint_zero, NULL);
+ page_set_max_trx_id(block, NULL, 0, NULL);
memset(heap_top, 0, UNIV_PAGE_SIZE - PAGE_EMPTY_DIR_START
- page_offset(heap_top));
=== modified file 'storage/innobase/page/page0zip.c'
--- a/storage/innobase/page/page0zip.c revid:vasil.dimov@stripped
+++ b/storage/innobase/page/page0zip.c revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -4468,7 +4468,7 @@ page_zip_reorganize(
/* Copy max trx id to recreated page */
trx_id_t max_trx_id = page_get_max_trx_id(temp_page);
page_set_max_trx_id(block, NULL, max_trx_id, NULL);
- ut_ad(!ut_dulint_is_zero(max_trx_id));
+ ut_ad(max_trx_id != 0);
}
/* Restore logging. */
@@ -4528,7 +4528,7 @@ page_zip_copy_recs(
/* The PAGE_MAX_TRX_ID must be set on leaf pages of secondary
indexes. It does not matter on other pages. */
ut_a(dict_index_is_clust(index) || !page_is_leaf(src)
- || !ut_dulint_is_zero(page_get_max_trx_id(src)));
+ || page_get_max_trx_id(src));
UNIV_MEM_ASSERT_W(page, UNIV_PAGE_SIZE);
UNIV_MEM_ASSERT_W(page_zip->data, page_zip_get_size(page_zip));
=== modified file 'storage/innobase/pars/pars0pars.c'
--- a/storage/innobase/pars/pars0pars.c revid:vasil.dimov@stripped
+++ b/storage/innobase/pars/pars0pars.c revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -2031,29 +2031,6 @@ pars_info_add_int4_literal(
Equivalent to:
char buf[8];
-mach_write_ull(buf, val);
-pars_info_add_literal(info, name, buf, 8, DATA_INT, 0);
-
-except that the buffer is dynamically allocated from the info struct's
-heap. */
-UNIV_INTERN
-void
-pars_info_add_uint64_literal(
-/*=========================*/
- pars_info_t* info, /*!< in: info struct */
- const char* name, /*!< in: name */
- ib_uint64_t val) /*!< in: value */
-{
- byte* buf = mem_heap_alloc(info->heap, 8);
-
- mach_write_ull(buf, val);
- pars_info_add_literal(info, name, buf, 8, DATA_INT, 0);
-}
-
-/****************************************************************//**
-Equivalent to:
-
-char buf[8];
mach_write_to_8(buf, val);
pars_info_add_literal(info, name, buf, 8, DATA_FIXBINARY, 0);
@@ -2061,11 +2038,11 @@ except that the buffer is dynamically al
heap. */
UNIV_INTERN
void
-pars_info_add_dulint_literal(
-/*=========================*/
+pars_info_add_ull_literal(
+/*======================*/
pars_info_t* info, /*!< in: info struct */
const char* name, /*!< in: name */
- dulint val) /*!< in: value */
+ ib_uint64_t val) /*!< in: value */
{
byte* buf = mem_heap_alloc(info->heap, 8);
=== modified file 'storage/innobase/read/read0read.c'
--- a/storage/innobase/read/read0read.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/read/read0read.c revid:jimmy.yang@stripped51420-ps44ileuontw6hn3
@@ -168,8 +168,7 @@ read_view_t*
read_view_oldest_copy_or_open_new(
/*==============================*/
trx_id_t cr_trx_id, /*!< in: trx_id of creating
- transaction, or ut_dulint_zero
- used in purge */
+ transaction, or 0 used in purge */
mem_heap_t* heap) /*!< in: memory heap from which
allocated */
{
@@ -191,7 +190,7 @@ read_view_oldest_copy_or_open_new(
n = old_view->n_trx_ids;
- if (!ut_dulint_is_zero(old_view->creator_trx_id)) {
+ if (old_view->creator_trx_id) {
n++;
} else {
needs_insert = FALSE;
@@ -206,9 +205,8 @@ read_view_oldest_copy_or_open_new(
while (i < n) {
if (needs_insert
&& (i >= old_view->n_trx_ids
- || ut_dulint_cmp(old_view->creator_trx_id,
- read_view_get_nth_trx_id(old_view, i))
- > 0)) {
+ || old_view->creator_trx_id
+ > read_view_get_nth_trx_id(old_view, i))) {
read_view_set_nth_trx_id(view_copy, i,
old_view->creator_trx_id);
@@ -252,8 +250,7 @@ read_view_t*
read_view_open_now(
/*===============*/
trx_id_t cr_trx_id, /*!< in: trx_id of creating
- transaction, or ut_dulint_zero
- used in purge */
+ transaction, or 0 used in purge */
mem_heap_t* heap) /*!< in: memory heap from which
allocated */
{
@@ -267,7 +264,7 @@ read_view_open_now(
view->creator_trx_id = cr_trx_id;
view->type = VIEW_NORMAL;
- view->undo_no = ut_dulint_zero;
+ view->undo_no = 0;
/* No future transactions should be visible in the view */
@@ -280,7 +277,7 @@ read_view_open_now(
/* No active transaction should be visible, except cr_trx */
while (trx) {
- if (ut_dulint_cmp(trx->id, cr_trx_id) != 0
+ if (trx->id != cr_trx_id
&& (trx->conc_state == TRX_ACTIVE
|| trx->conc_state == TRX_PREPARED)) {
@@ -292,9 +289,9 @@ read_view_open_now(
trx_sys->max_trx_id can still be active, if it is
in the middle of its commit! Note that when a
transaction starts, we initialize trx->no to
- ut_dulint_max. */
+ IB_ULONGLONG_MAX. */
- if (ut_dulint_cmp(view->low_limit_no, trx->no) > 0) {
+ if (view->low_limit_no > trx->no) {
view->low_limit_no = trx->no;
}
@@ -367,22 +364,20 @@ read_view_print(
if (view->type == VIEW_HIGH_GRANULARITY) {
fprintf(stderr,
- "High-granularity read view undo_n:o %lu %lu\n",
- (ulong) ut_dulint_get_high(view->undo_no),
- (ulong) ut_dulint_get_low(view->undo_no));
+ "High-granularity read view undo_n:o %llu\n",
+ (ullint) view->undo_no);
} else {
fprintf(stderr, "Normal read view\n");
}
- fprintf(stderr, "Read view low limit trx n:o %lu %lu\n",
- (ulong) ut_dulint_get_high(view->low_limit_no),
- (ulong) ut_dulint_get_low(view->low_limit_no));
+ fprintf(stderr, "Read view low limit trx n:o " TRX_ID_FMT "\n",
+ (ullint) view->low_limit_no);
fprintf(stderr, "Read view up limit trx id " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(view->up_limit_id));
+ (ullint) view->up_limit_id);
fprintf(stderr, "Read view low limit trx id " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(view->low_limit_id));
+ (ullint) view->low_limit_id);
fprintf(stderr, "Read view individually stored trx ids:\n");
@@ -390,8 +385,7 @@ read_view_print(
for (i = 0; i < n_ids; i++) {
fprintf(stderr, "Read view trx id " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(
- read_view_get_nth_trx_id(view, i)));
+ (ullint) read_view_get_nth_trx_id(view, i));
}
}
@@ -460,9 +454,9 @@ read_cursor_view_create_for_mysql(
trx_sys->max_trx_id can still be active, if it is
in the middle of its commit! Note that when a
transaction starts, we initialize trx->no to
- ut_dulint_max. */
+ IB_ULONGLONG_MAX. */
- if (ut_dulint_cmp(view->low_limit_no, trx->no) > 0) {
+ if (view->low_limit_no > trx->no) {
view->low_limit_no = trx->no;
}
=== modified file 'storage/innobase/row/row0ins.c'
--- a/storage/innobase/row/row0ins.c revid:vasil.dimov@stripped3100249-e4bbn3gf1py6260h
+++ b/storage/innobase/row/row0ins.c revid:jimmy.yang@strippedntw6hn3
@@ -87,7 +87,7 @@ ins_node_create(
node->select = NULL;
- node->trx_id = ut_dulint_zero;
+ node->trx_id = 0;
node->entry_sys_heap = mem_heap_create(128);
@@ -207,7 +207,7 @@ ins_node_set_new_row(
/* As we allocated a new trx id buf, the trx id should be written
there again: */
- node->trx_id = ut_dulint_zero;
+ node->trx_id = 0;
}
/*******************************************************************//**
@@ -2279,7 +2279,7 @@ row_ins_alloc_row_id_step(
/*======================*/
ins_node_t* node) /*!< in: row insert node */
{
- dulint row_id;
+ row_id_t row_id;
ut_ad(node->state == INS_NODE_ALLOC_ROW_ID);
@@ -2466,7 +2466,7 @@ row_ins_step(
/* It may be that the current session has not yet started
its transaction, or it has been committed: */
- if (UT_DULINT_EQ(trx->id, node->trx_id)) {
+ if (trx->id == node->trx_id) {
/* No need to do IX-locking */
goto same_trx;
=== modified file 'storage/innobase/row/row0merge.c'
--- a/storage/innobase/row/row0merge.c revid:vasil.dimov@stripped6260h
+++ b/storage/innobase/row/row0merge.c revid:jimmy.yang@stripped
@@ -2023,7 +2023,7 @@ row_merge_drop_index(
ut_ad(index && table && trx);
- pars_info_add_dulint_literal(info, "indexid", index->id);
+ pars_info_add_ull_literal(info, "indexid", index->id);
trx_start_if_not_started(trx);
trx->op_info = "dropping index";
@@ -2093,7 +2093,7 @@ row_merge_drop_temp_indexes(void)
const rec_t* rec;
const byte* field;
ulint len;
- dulint table_id;
+ table_id_t table_id;
dict_table_t* table;
btr_pcur_move_to_next_user_rec(&pcur, &mtr);
@@ -2320,7 +2320,7 @@ row_merge_rename_indexes(
trx->op_info = "renaming indexes";
- pars_info_add_dulint_literal(info, "tableid", table->id);
+ pars_info_add_ull_literal(info, "tableid", table->id);
err = que_eval_sql(info, rename_indexes, FALSE, trx);
@@ -2508,8 +2508,7 @@ row_merge_create_index(
/* Note the id of the transaction that created this
index, we use it to restrict readers from accessing
this index, to ensure read consistency. */
- index->trx_id = (ib_uint64_t)
- ut_conv_dulint_to_longlong(trx->id);
+ index->trx_id = trx->id;
} else {
index = NULL;
}
@@ -2526,10 +2525,8 @@ row_merge_is_index_usable(
const trx_t* trx, /*!< in: transaction */
const dict_index_t* index) /*!< in: index to check */
{
- return(!trx->read_view || read_view_sees_trx_id(
- trx->read_view,
- ut_dulint_create((ulint) (index->trx_id >> 32),
- (ulint) index->trx_id & 0xFFFFFFFF)));
+ return(!trx->read_view
+ || read_view_sees_trx_id(trx->read_view, index->trx_id));
}
/*********************************************************************//**
=== modified file 'storage/innobase/row/row0mysql.c'
--- a/storage/innobase/row/row0mysql.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/row/row0mysql.c revid:jimmy.yang@stripped00625051420-ps44ileuontw6hn3
@@ -1532,7 +1532,7 @@ row_unlock_for_mysql(
}
}
- if (ut_dulint_cmp(rec_trx_id, trx->id) != 0) {
+ if (rec_trx_id != trx->id) {
/* We did not update the record: unlock it */
rec = btr_pcur_get_rec(pcur);
@@ -2283,7 +2283,7 @@ row_discard_tablespace_for_mysql(
trx_t* trx) /*!< in: transaction handle */
{
dict_foreign_t* foreign;
- dulint new_id;
+ table_id_t new_id;
dict_table_t* table;
ibool success;
ulint err;
@@ -2405,7 +2405,7 @@ row_discard_tablespace_for_mysql(
info = pars_info_create();
pars_info_add_str_literal(info, "table_name", name);
- pars_info_add_dulint_literal(info, "new_id", new_id);
+ pars_info_add_ull_literal(info, "new_id", new_id);
err = que_eval_sql(info,
"PROCEDURE DISCARD_TABLESPACE_PROC () IS\n"
@@ -2619,7 +2619,7 @@ row_truncate_table_for_mysql(
dict_index_t* sys_index;
btr_pcur_t pcur;
mtr_t mtr;
- dulint new_id;
+ table_id_t new_id;
ulint recreate_space = 0;
pars_info_t* info = NULL;
@@ -2873,8 +2873,8 @@ next_rec:
info = pars_info_create();
pars_info_add_int4_literal(info, "space", (lint) table->space);
- pars_info_add_dulint_literal(info, "old_id", table->id);
- pars_info_add_dulint_literal(info, "new_id", new_id);
+ pars_info_add_ull_literal(info, "old_id", table->id);
+ pars_info_add_ull_literal(info, "new_id", new_id);
err = que_eval_sql(info,
"PROCEDURE RENUMBER_TABLESPACE_PROC () IS\n"
=== modified file 'storage/innobase/row/row0purge.c'
--- a/storage/innobase/row/row0purge.c revid:vasil.dimov@strippedn3gf1py6260h
+++ b/storage/innobase/row/row0purge.c revid:jimmy.yang@stripped
@@ -151,10 +151,9 @@ row_purge_remove_clust_if_poss_low(
rec = btr_pcur_get_rec(pcur);
- if (0 != ut_dulint_cmp(node->roll_ptr, row_get_rec_roll_ptr(
- rec, index, rec_get_offsets(
- rec, index, offsets_,
- ULINT_UNDEFINED, &heap)))) {
+ if (node->roll_ptr != row_get_rec_roll_ptr(
+ rec, index, rec_get_offsets(rec, index, offsets_,
+ ULINT_UNDEFINED, &heap))) {
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
@@ -617,7 +616,7 @@ row_purge_parse_undo_rec(
byte* ptr;
trx_t* trx;
undo_no_t undo_no;
- dulint table_id;
+ table_id_t table_id;
trx_id_t trx_id;
roll_ptr_t roll_ptr;
ulint info_bits;
=== modified file 'storage/innobase/row/row0sel.c'
--- a/storage/innobase/row/row0sel.c revid:vasil.dimov@stripped23100249-e4bbn3gf1py6260h
+++ b/storage/innobase/row/row0sel.c revid:jimmy.yang@strippedontw6hn3
@@ -4622,8 +4622,7 @@ row_search_check_if_query_cache_permitte
IX type locks actually would require ret = FALSE. */
if (UT_LIST_GET_LEN(table->locks) == 0
- && ut_dulint_cmp(trx->id,
- table->query_cache_inv_trx_id) >= 0) {
+ && trx->id >= table->query_cache_inv_trx_id) {
ret = TRUE;
=== modified file 'storage/innobase/row/row0uins.c'
--- a/storage/innobase/row/row0uins.c revid:vasil.dimov@stripped-e4bbn3gf1py6260h
+++ b/storage/innobase/row/row0uins.c revid:jimmy.yang@stripped3
@@ -78,7 +78,7 @@ row_undo_ins_remove_clust_rec(
&mtr);
ut_a(success);
- if (ut_dulint_cmp(node->table->id, DICT_INDEXES_ID) == 0) {
+ if (node->table->id == DICT_INDEXES_ID) {
ut_ad(node->trx->dict_operation_lock_mode == RW_X_LATCH);
/* Drop the index tree associated with the row in
@@ -260,7 +260,7 @@ row_undo_ins_parse_undo_rec(
dict_index_t* clust_index;
byte* ptr;
undo_no_t undo_no;
- dulint table_id;
+ table_id_t table_id;
ulint type;
ulint dummy;
ibool dummy_extern;
=== modified file 'storage/innobase/row/row0umod.c'
--- a/storage/innobase/row/row0umod.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/row/row0umod.c revid:jimmy.yang@stripped0625051420-ps44ileuontw6hn3
@@ -85,9 +85,9 @@ row_undo_mod_undo_also_prev_vers(
trx = node->trx;
- if (0 != ut_dulint_cmp(node->new_trx_id, trx->id)) {
+ if (node->new_trx_id != trx->id) {
- *undo_no = ut_dulint_zero;
+ *undo_no = 0;
return(FALSE);
}
@@ -95,7 +95,7 @@ row_undo_mod_undo_also_prev_vers(
*undo_no = trx_undo_rec_get_undo_no(undo_rec);
- return(ut_dulint_cmp(trx->roll_limit, *undo_no) <= 0);
+ return(trx->roll_limit <= *undo_no);
}
/***********************************************************//**
@@ -790,7 +790,7 @@ row_undo_mod_parse_undo_rec(
dict_index_t* clust_index;
byte* ptr;
undo_no_t undo_no;
- dulint table_id;
+ table_id_t table_id;
trx_id_t trx_id;
roll_ptr_t roll_ptr;
ulint info_bits;
=== modified file 'storage/innobase/row/row0undo.c'
--- a/storage/innobase/row/row0undo.c revid:vasil.dimov@stripped
+++ b/storage/innobase/row/row0undo.c revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -185,9 +185,8 @@ row_undo_search_clust_to_pcur(
offsets = rec_get_offsets(rec, clust_index, offsets,
ULINT_UNDEFINED, &heap);
- if (!found || 0 != ut_dulint_cmp(node->roll_ptr,
- row_get_rec_roll_ptr(rec, clust_index,
- offsets))) {
+ if (!found || node->roll_ptr
+ != row_get_rec_roll_ptr(rec, clust_index, offsets)) {
/* We must remove the reservation on the undo log record
BEFORE releasing the latch on the clustered index page: this
@@ -297,7 +296,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_lock_data_dictionary(trx);
+ row_mysql_freeze_data_dictionary(trx);
}
if (node->state == UNDO_NODE_INSERT) {
@@ -312,7 +311,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_unlock_data_dictionary(trx);
+ row_mysql_unfreeze_data_dictionary(trx);
}
/* Do some cleanup */
=== modified file 'storage/innobase/row/row0upd.c'
--- a/storage/innobase/row/row0upd.c revid:vasil.dimov@stripped1py6260h
+++ b/storage/innobase/row/row0upd.c revid:jimmy.yang@stripped
@@ -377,7 +377,7 @@ row_upd_index_entry_sys_field(
them */
dict_index_t* index, /*!< in: clustered index */
ulint type, /*!< in: DATA_TRX_ID or DATA_ROLL_PTR */
- dulint val) /*!< in: value to write */
+ ib_uint64_t val) /*!< in: value to write */
{
dfield_t* dfield;
byte* field;
@@ -536,7 +536,7 @@ row_upd_write_sys_vals_to_log(
trx_write_roll_ptr(log_ptr, roll_ptr);
log_ptr += DATA_ROLL_PTR_LEN;
- log_ptr += mach_dulint_write_compressed(log_ptr, trx->id);
+ log_ptr += mach_ull_write_compressed(log_ptr, trx->id);
return(log_ptr);
}
@@ -570,7 +570,7 @@ row_upd_parse_sys_vals(
*roll_ptr = trx_read_roll_ptr(ptr);
ptr += DATA_ROLL_PTR_LEN;
- ptr = mach_dulint_parse_compressed(ptr, end_ptr, trx_id);
+ ptr = mach_ull_parse_compressed(ptr, end_ptr, trx_id);
return(ptr);
}
@@ -1912,8 +1912,7 @@ row_upd_clust_step(
then we have to free the file segments of the index tree associated
with the index */
- if (node->is_delete
- && ut_dulint_cmp(node->table->id, DICT_INDEXES_ID) == 0) {
+ if (node->is_delete && node->table->id == DICT_INDEXES_ID) {
dict_drop_index_tree(btr_pcur_get_rec(pcur), mtr);
=== modified file 'storage/innobase/row/row0vers.c'
--- a/storage/innobase/row/row0vers.c revid:vasil.dimov@stripped
+++ b/storage/innobase/row/row0vers.c revid:jimmy.yang@stripped20100625051420-ps44ileuontw6hn3
@@ -209,7 +209,7 @@ row_vers_impl_x_locked_off_kernel(
prev_trx_id must have already committed for the trx_id
to be able to modify the row. Therefore, prev_trx_id
cannot hold any implicit lock. */
- if (vers_del && 0 != ut_dulint_cmp(trx_id, prev_trx_id)) {
+ if (vers_del && trx_id != prev_trx_id) {
mutex_enter(&kernel_mutex);
break;
@@ -280,7 +280,7 @@ row_vers_impl_x_locked_off_kernel(
break;
}
- if (0 != ut_dulint_cmp(trx_id, prev_trx_id)) {
+ if (trx_id != prev_trx_id) {
/* The versions modified by the trx_id transaction end
to prev_version: no implicit x-lock */
@@ -533,7 +533,7 @@ row_vers_build_for_consistent_read(
undo_no of the record is < undo_no in the view. */
if (view->type == VIEW_HIGH_GRANULARITY
- && ut_dulint_cmp(view->creator_trx_id, trx_id) == 0) {
+ && view->creator_trx_id == trx_id) {
roll_ptr = row_get_rec_roll_ptr(version, index,
*offsets);
@@ -541,7 +541,7 @@ row_vers_build_for_consistent_read(
undo_no = trx_undo_rec_get_undo_no(undo_rec);
mem_heap_empty(heap);
- if (ut_dulint_cmp(view->undo_no, undo_no) > 0) {
+ if (view->undo_no > undo_no) {
/* The view already sees this version: we can
copy it to in_heap and return */
@@ -632,7 +632,7 @@ row_vers_build_for_semi_consistent_read(
mem_heap_t* heap = NULL;
byte* buf;
ulint err;
- trx_id_t rec_trx_id = ut_dulint_zero;
+ trx_id_t rec_trx_id = 0;
ut_ad(dict_index_is_clust(index));
ut_ad(mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_X_FIX)
@@ -684,7 +684,7 @@ row_vers_build_for_semi_consistent_read(
rolled back and the transaction is removed from
the global list of transactions. */
- if (!ut_dulint_cmp(rec_trx_id, version_trx_id)) {
+ if (rec_trx_id == version_trx_id) {
/* The transaction was committed while
we searched for earlier versions.
Return the current version as a
=== modified file 'storage/innobase/trx/trx0i_s.c'
--- a/storage/innobase/trx/trx0i_s.c revid:vasil.dimov@stripped
+++ b/storage/innobase/trx/trx0i_s.c revid:jimmy.yang@stripped100625051420-ps44ileuontw6hn3
@@ -444,7 +444,7 @@ fill_trx_row(
ut_ad(mutex_own(&kernel_mutex));
- row->trx_id = trx_get_id(trx);
+ row->trx_id = trx->id;
row->trx_started = (ib_time_t) trx->start_time;
row->trx_state = trx_get_que_state_str(trx);
@@ -462,7 +462,7 @@ fill_trx_row(
row->trx_wait_started = 0;
}
- row->trx_weight = (ullint) ut_conv_dulint_to_longlong(TRX_WEIGHT(trx));
+ row->trx_weight = (ullint) TRX_WEIGHT(trx);
if (trx->mysql_thd == NULL) {
/* For internal transactions e.g., purge and transactions
@@ -527,7 +527,7 @@ thd_done:
row->trx_rows_locked = lock_number_of_rows_locked(trx);
- row->trx_rows_modified = ut_conv_dulint_to_longlong(trx->undo_no);
+ row->trx_rows_modified = trx->undo_no;
row->trx_concurrency_tickets = trx->n_tickets_to_enter_innodb;
=== modified file 'storage/innobase/trx/trx0purge.c'
--- a/storage/innobase/trx/trx0purge.c revid:vasil.dimov@stripped
+++ b/storage/innobase/trx/trx0purge.c revid:jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3
@@ -145,47 +145,44 @@ void
trx_purge_arr_get_biggest(
/*======================*/
trx_undo_arr_t* arr, /*!< in: purge array */
- trx_id_t* trx_no, /*!< out: transaction number: ut_dulint_zero
+ trx_id_t* trx_no, /*!< out: transaction number: 0
if array is empty */
undo_no_t* undo_no)/*!< out: undo number */
{
trx_undo_inf_t* cell;
trx_id_t pair_trx_no;
undo_no_t pair_undo_no;
- int trx_cmp;
- ulint n_used;
ulint i;
ulint n;
- n = 0;
- n_used = arr->n_used;
- pair_trx_no = ut_dulint_zero;
- pair_undo_no = ut_dulint_zero;
-
- for (i = 0;; i++) {
- cell = trx_undo_arr_get_nth_info(arr, i);
-
- if (cell->in_use) {
- n++;
- trx_cmp = ut_dulint_cmp(cell->trx_no, pair_trx_no);
-
- if ((trx_cmp > 0)
- || ((trx_cmp == 0)
- && (ut_dulint_cmp(cell->undo_no,
- pair_undo_no) >= 0))) {
+ n = arr->n_used;
+ pair_trx_no = 0;
+ pair_undo_no = 0;
+
+ if (n) {
+ for (i = 0;; i++) {
+ cell = trx_undo_arr_get_nth_info(arr, i);
+
+ if (!cell->in_use) {
+ continue;
+ }
+
+ if ((cell->trx_no > pair_trx_no)
+ || ((cell->trx_no == pair_trx_no)
+ && cell->undo_no >= pair_undo_no)) {
pair_trx_no = cell->trx_no;
pair_undo_no = cell->undo_no;
}
- }
-
- if (n == n_used) {
- *trx_no = pair_trx_no;
- *undo_no = pair_undo_no;
- return;
+ if (!--n) {
+ break;
+ }
}
}
+
+ *trx_no = pair_trx_no;
+ *undo_no = pair_undo_no;
}
/****************************************************************//**
@@ -233,8 +230,8 @@ trx_purge_sys_create(void)
purge_sys->n_pages_handled = 0;
- purge_sys->purge_trx_no = ut_dulint_zero;
- purge_sys->purge_undo_no = ut_dulint_zero;
+ purge_sys->purge_trx_no = 0;
+ purge_sys->purge_undo_no = 0;
purge_sys->next_stored = FALSE;
rw_lock_create(trx_purge_latch_key,
@@ -257,7 +254,7 @@ trx_purge_sys_create(void)
purge_sys->query = trx_purge_graph_build();
- purge_sys->view = read_view_oldest_copy_or_open_new(ut_dulint_zero,
+ purge_sys->view = read_view_oldest_copy_or_open_new(0,
purge_sys->heap);
}
@@ -370,7 +367,7 @@ trx_purge_add_update_undo_to_history(
}
/* Write the trx number to the undo log header */
- mlog_write_dulint(undo_header + TRX_UNDO_TRX_NO, trx->no, mtr);
+ mlog_write_ull(undo_header + TRX_UNDO_TRX_NO, trx->no, mtr);
/* Write information about delete markings to the undo log header */
if (!undo->del_marks) {
@@ -512,9 +509,9 @@ trx_purge_truncate_rseg_history(
page_t* undo_page;
trx_ulogf_t* log_hdr;
trx_usegf_t* seg_hdr;
- int cmp;
ulint n_removed_logs = 0;
mtr_t mtr;
+ trx_id_t undo_trx_no;
ut_ad(mutex_own(&(purge_sys->mutex)));
@@ -540,15 +537,16 @@ loop:
hdr_addr.page, &mtr);
log_hdr = undo_page + hdr_addr.boffset;
+ undo_trx_no = mach_read_from_8(log_hdr + TRX_UNDO_TRX_NO);
- cmp = ut_dulint_cmp(mach_read_from_8(log_hdr + TRX_UNDO_TRX_NO),
- limit_trx_no);
- if (cmp == 0) {
- trx_undo_truncate_start(rseg, rseg->space, hdr_addr.page,
- hdr_addr.boffset, limit_undo_no);
- }
+ if (undo_trx_no >= limit_trx_no) {
+ if (undo_trx_no == limit_trx_no) {
+ trx_undo_truncate_start(rseg, rseg->space,
+ hdr_addr.page,
+ hdr_addr.boffset,
+ limit_undo_no);
+ }
- if (cmp >= 0) {
mutex_enter(&kernel_mutex);
ut_a(trx_sys->rseg_history_len >= n_removed_logs);
trx_sys->rseg_history_len -= n_removed_logs;
@@ -614,7 +612,7 @@ trx_purge_truncate_history(void)
trx_purge_arr_get_biggest(purge_sys->arr, &limit_trx_no,
&limit_undo_no);
- if (ut_dulint_is_zero(limit_trx_no)) {
+ if (limit_trx_no == 0) {
limit_trx_no = purge_sys->purge_trx_no;
limit_undo_no = purge_sys->purge_undo_no;
@@ -623,13 +621,12 @@ trx_purge_truncate_history(void)
/* We play safe and set the truncate limit at most to the purge view
low_limit number, though this is not necessary */
- if (ut_dulint_cmp(limit_trx_no, purge_sys->view->low_limit_no) >= 0) {
+ if (limit_trx_no >= purge_sys->view->low_limit_no) {
limit_trx_no = purge_sys->view->low_limit_no;
- limit_undo_no = ut_dulint_zero;
+ limit_undo_no = 0;
}
- ut_ad((ut_dulint_cmp(limit_trx_no,
- purge_sys->view->low_limit_no) <= 0));
+ ut_ad(limit_trx_no <= purge_sys->view->low_limit_no);
rseg = UT_LIST_GET_FIRST(trx_sys->rseg_list);
@@ -684,8 +681,8 @@ trx_purge_rseg_get_next_history_log(
ut_a(rseg->last_page_no != FIL_NULL);
- purge_sys->purge_trx_no = ut_dulint_add(rseg->last_trx_no, 1);
- purge_sys->purge_undo_no = ut_dulint_zero;
+ purge_sys->purge_trx_no = rseg->last_trx_no + 1;
+ purge_sys->purge_undo_no = 0;
purge_sys->next_stored = FALSE;
mtr_start(&mtr);
@@ -787,7 +784,7 @@ trx_purge_choose_next_log(void)
rseg = UT_LIST_GET_FIRST(trx_sys->rseg_list);
- min_trx_no = ut_dulint_max;
+ min_trx_no = IB_ULONGLONG_MAX;
min_rseg = NULL;
@@ -796,9 +793,8 @@ trx_purge_choose_next_log(void)
if (rseg->last_page_no != FIL_NULL) {
- if ((min_rseg == NULL)
- || (ut_dulint_cmp(min_trx_no,
- rseg->last_trx_no) > 0)) {
+ if (min_rseg == NULL
+ || min_trx_no > rseg->last_trx_no) {
min_rseg = rseg;
min_trx_no = rseg->last_trx_no;
@@ -848,7 +844,7 @@ trx_purge_choose_next_log(void)
if (rec == &trx_purge_dummy_rec) {
- purge_sys->purge_undo_no = ut_dulint_zero;
+ purge_sys->purge_undo_no = 0;
purge_sys->page_no = page_no;
purge_sys->offset = 0;
} else {
@@ -1041,8 +1037,7 @@ trx_purge_fetch_next_rec(
return(NULL);
}
- if (ut_dulint_cmp(purge_sys->purge_trx_no,
- purge_sys->view->low_limit_no) >= 0) {
+ if (purge_sys->purge_trx_no >= purge_sys->view->low_limit_no) {
purge_sys->state = TRX_STOP_PURGE;
trx_purge_truncate_if_arr_empty();
@@ -1052,10 +1047,10 @@ trx_purge_fetch_next_rec(
return(NULL);
}
- /* fprintf(stderr, "Thread %lu purging trx %lu undo record %lu\n",
+ /* fprintf(stderr, "Thread %lu purging trx %llu undo record %llu\n",
os_thread_get_curr_id(),
- ut_dulint_get_low(purge_sys->purge_trx_no),
- ut_dulint_get_low(purge_sys->purge_undo_no)); */
+ (ullint) purge_sys->purge_trx_no,
+ (ullint) purge_sys->purge_undo_no); */
*roll_ptr = trx_undo_build_roll_ptr(FALSE, (purge_sys->rseg)->id,
purge_sys->page_no,
@@ -1064,8 +1059,7 @@ trx_purge_fetch_next_rec(
*cell = trx_purge_arr_store_info(purge_sys->purge_trx_no,
purge_sys->purge_undo_no);
- ut_ad(ut_dulint_cmp(purge_sys->purge_trx_no,
- (purge_sys->view)->low_limit_no) < 0);
+ ut_ad(purge_sys->purge_trx_no < purge_sys->view->low_limit_no);
/* The following call will advance the stored values of purge_trx_no
and purge_undo_no, therefore we had to store them first */
@@ -1157,7 +1151,7 @@ trx_purge(
}
}
- purge_sys->view = read_view_oldest_copy_or_open_new(ut_dulint_zero,
+ purge_sys->view = read_view_oldest_copy_or_open_new(0,
purge_sys->heap);
mutex_exit(&kernel_mutex);
@@ -1215,8 +1209,8 @@ trx_purge_sys_print(void)
fprintf(stderr, "InnoDB: Purge trx n:o " TRX_ID_FMT
", undo n:o " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(purge_sys->purge_trx_no),
- TRX_ID_PREP_PRINTF(purge_sys->purge_undo_no));
+ (ullint) purge_sys->purge_trx_no,
+ (ullint) purge_sys->purge_undo_no);
fprintf(stderr,
"InnoDB: Purge next stored %lu, page_no %lu, offset %lu,\n"
"InnoDB: Purge hdr_page_no %lu, hdr_offset %lu\n",
=== modified file 'storage/innobase/trx/trx0rec.c'
--- a/storage/innobase/trx/trx0rec.c revid:vasil.dimov@stripped3gf1py6260h
+++ b/storage/innobase/trx/trx0rec.c revid:jimmy.yang@stripped
@@ -242,8 +242,8 @@ trx_undo_page_report_insert(
/* Store first some general parameters to the undo log */
*ptr++ = TRX_UNDO_INSERT_REC;
- ptr += mach_dulint_write_much_compressed(ptr, trx->undo_no);
- ptr += mach_dulint_write_much_compressed(ptr, index->table->id);
+ ptr += mach_ull_write_much_compressed(ptr, trx->undo_no);
+ ptr += mach_ull_write_much_compressed(ptr, index->table->id);
/*----------------------------------------*/
/* Store then the fields required to uniquely determine the record
to be inserted in the clustered index */
@@ -289,7 +289,7 @@ trx_undo_rec_get_pars(
ibool* updated_extern, /*!< out: TRUE if we updated an
externally stored fild */
undo_no_t* undo_no, /*!< out: undo log record number */
- dulint* table_id) /*!< out: table id */
+ table_id_t* table_id) /*!< out: table id */
{
byte* ptr;
ulint type_cmpl;
@@ -309,11 +309,11 @@ trx_undo_rec_get_pars(
*type = type_cmpl & (TRX_UNDO_CMPL_INFO_MULT - 1);
*cmpl_info = type_cmpl / TRX_UNDO_CMPL_INFO_MULT;
- *undo_no = mach_dulint_read_much_compressed(ptr);
- ptr += mach_dulint_get_much_compressed_size(*undo_no);
+ *undo_no = mach_ull_read_much_compressed(ptr);
+ ptr += mach_ull_get_much_compressed_size(*undo_no);
- *table_id = mach_dulint_read_much_compressed(ptr);
- ptr += mach_dulint_get_much_compressed_size(*table_id);
+ *table_id = mach_ull_read_much_compressed(ptr);
+ ptr += mach_ull_get_much_compressed_size(*table_id);
return(ptr);
}
@@ -598,9 +598,9 @@ trx_undo_page_report_modify(
type_cmpl_ptr = ptr;
*ptr++ = (byte) type_cmpl;
- ptr += mach_dulint_write_much_compressed(ptr, trx->undo_no);
+ ptr += mach_ull_write_much_compressed(ptr, trx->undo_no);
- ptr += mach_dulint_write_much_compressed(ptr, table->id);
+ ptr += mach_ull_write_much_compressed(ptr, table->id);
/*----------------------------------------*/
/* Store the state of the info bits */
@@ -620,16 +620,16 @@ trx_undo_page_report_modify(
by some other trx as it must have committed by now for us to
allow an over-write. */
if (ignore_prefix) {
- ignore_prefix = ut_dulint_cmp(trx_id, trx->id) != 0;
+ ignore_prefix = (trx_id != trx->id);
}
- ptr += mach_dulint_write_compressed(ptr, trx_id);
+ ptr += mach_ull_write_compressed(ptr, trx_id);
field = rec_get_nth_field(rec, offsets,
dict_index_get_sys_col_pos(
index, DATA_ROLL_PTR), &flen);
ut_ad(flen == DATA_ROLL_PTR_LEN);
- ptr += mach_dulint_write_compressed(ptr, trx_read_roll_ptr(field));
+ ptr += mach_ull_write_compressed(ptr, trx_read_roll_ptr(field));
/*----------------------------------------*/
/* Store then the fields required to uniquely determine the
@@ -848,11 +848,11 @@ trx_undo_update_rec_get_sys_cols(
/* Read the values of the system columns */
- *trx_id = mach_dulint_read_compressed(ptr);
- ptr += mach_dulint_get_compressed_size(*trx_id);
+ *trx_id = mach_ull_read_compressed(ptr);
+ ptr += mach_ull_get_compressed_size(*trx_id);
- *roll_ptr = mach_dulint_read_compressed(ptr);
- ptr += mach_dulint_get_compressed_size(*roll_ptr);
+ *roll_ptr = mach_ull_read_compressed(ptr);
+ ptr += mach_ull_get_compressed_size(*roll_ptr);
return(ptr);
}
@@ -1168,7 +1168,7 @@ trx_undo_report_row_operation(
index, otherwise NULL */
roll_ptr_t* roll_ptr) /*!< out: rollback pointer to the
inserted undo log record,
- ut_dulint_zero if BTR_NO_UNDO_LOG
+ 0 if BTR_NO_UNDO_LOG
flag was specified */
{
trx_t* trx;
@@ -1186,7 +1186,7 @@ trx_undo_report_row_operation(
if (flags & BTR_NO_UNDO_LOG_FLAG) {
- *roll_ptr = ut_dulint_zero;
+ *roll_ptr = 0;
return(DB_SUCCESS);
}
@@ -1284,7 +1284,7 @@ trx_undo_report_row_operation(
undo->top_undo_no = trx->undo_no;
undo->guess_block = undo_block;
- UT_DULINT_INC(trx->undo_no);
+ trx->undo_no++;
mutex_exit(&trx->undo_mutex);
@@ -1433,7 +1433,7 @@ trx_undo_prev_version_build(
trx_id_t rec_trx_id;
ulint type;
undo_no_t undo_no;
- dulint table_id;
+ table_id_t table_id;
trx_id_t trx_id;
roll_ptr_t roll_ptr;
roll_ptr_t old_roll_ptr;
@@ -1523,7 +1523,7 @@ trx_undo_prev_version_build(
roll_ptr, info_bits,
NULL, heap, &update);
- if (ut_dulint_cmp(table_id, index->table->id) != 0) {
+ if (UNIV_UNLIKELY(table_id != index->table->id)) {
ptr = NULL;
fprintf(stderr,
@@ -1544,16 +1544,14 @@ trx_undo_prev_version_build(
fprintf(stderr,
"InnoDB: table %s, index %s, n_uniq %lu\n"
"InnoDB: undo rec address %p, type %lu cmpl_info %lu\n"
- "InnoDB: undo rec table id %lu %lu,"
- " index table id %lu %lu\n"
+ "InnoDB: undo rec table id %llu,"
+ " index table id %llu\n"
"InnoDB: dump of 150 bytes in undo rec: ",
index->table_name, index->name,
(ulong) dict_index_get_n_unique(index),
undo_rec, (ulong) type, (ulong) cmpl_info,
- (ulong) ut_dulint_get_high(table_id),
- (ulong) ut_dulint_get_low(table_id),
- (ulong) ut_dulint_get_high(index->table->id),
- (ulong) ut_dulint_get_low(index->table->id));
+ (ullint) table_id,
+ (ullint) index->table->id);
ut_print_buf(stderr, undo_rec, 150);
fputs("\n"
"InnoDB: index record ", stderr);
@@ -1564,14 +1562,10 @@ trx_undo_prev_version_build(
fprintf(stderr, "\n"
"InnoDB: Record trx id " TRX_ID_FMT
", update rec trx id " TRX_ID_FMT "\n"
- "InnoDB: Roll ptr in rec %lu %lu, in update rec"
- " %lu %lu\n",
- TRX_ID_PREP_PRINTF(rec_trx_id),
- TRX_ID_PREP_PRINTF(trx_id),
- (ulong) ut_dulint_get_high(old_roll_ptr),
- (ulong) ut_dulint_get_low(old_roll_ptr),
- (ulong) ut_dulint_get_high(roll_ptr),
- (ulong) ut_dulint_get_low(roll_ptr));
+ "InnoDB: Roll ptr in rec " TRX_ID_FMT
+ ", in update rec" TRX_ID_FMT "\n",
+ (ullint) rec_trx_id, (ullint) trx_id,
+ (ullint) old_roll_ptr, (ullint) roll_ptr);
trx_purge_sys_print();
return(DB_ERROR);
=== modified file 'storage/innobase/trx/trx0roll.c'
--- a/storage/innobase/trx/trx0roll.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/trx/trx0roll.c revid:jimmy.yang@stripped1420-ps44ileuontw6hn3
@@ -52,7 +52,7 @@ static trx_t* trx_roll_crash_recv_trx =
/** In crash recovery we set this to the undo n:o of the current trx to be
rolled back. Then we can print how many % the rollback has progressed. */
-static ib_int64_t trx_roll_max_undo_no;
+static undo_no_t trx_roll_max_undo_no;
/** Auxiliary variable which tells the previous progress % we printed */
static ulint trx_roll_progress_printed_pct;
@@ -443,7 +443,7 @@ trx_rollback_active(
ut_a(thr == que_fork_start_command(fork));
trx_roll_crash_recv_trx = trx;
- trx_roll_max_undo_no = ut_conv_dulint_to_longlong(trx->undo_no);
+ trx_roll_max_undo_no = trx->undo_no;
trx_roll_progress_printed_pct = 0;
rows_to_undo = trx_roll_max_undo_no;
@@ -456,7 +456,7 @@ trx_rollback_active(
fprintf(stderr,
" InnoDB: Rolling back trx with id " TRX_ID_FMT ", %lu%s"
" rows to undo\n",
- TRX_ID_PREP_PRINTF(trx->id),
+ (ullint) trx->id,
(ulong) rows_to_undo, unit);
mutex_exit(&kernel_mutex);
@@ -478,8 +478,9 @@ trx_rollback_active(
mutex_exit(&kernel_mutex);
fprintf(stderr,
- "InnoDB: Waiting for rollback of trx id %lu to end\n",
- (ulong) ut_dulint_get_low(trx->id));
+ "InnoDB: Waiting for rollback of trx id "
+ TRX_ID_FMT " to end\n",
+ (ullint) trx->id);
os_thread_sleep(100000);
mutex_enter(&kernel_mutex);
@@ -488,16 +489,15 @@ trx_rollback_active(
mutex_exit(&kernel_mutex);
if (trx_get_dict_operation(trx) != TRX_DICT_OP_NONE
- && !ut_dulint_is_zero(trx->table_id)) {
+ && trx->table_id != 0) {
/* If the transaction was for a dictionary operation, we
drop the relevant table, if it still exists */
fprintf(stderr,
- "InnoDB: Dropping table with id %lu %lu"
+ "InnoDB: Dropping table with id %llu"
" in recovery if it exists\n",
- (ulong) ut_dulint_get_high(trx->table_id),
- (ulong) ut_dulint_get_low(trx->table_id));
+ (ullint) trx->table_id);
table = dict_table_get_on_id_low(trx->table_id);
@@ -521,7 +521,7 @@ trx_rollback_active(
fprintf(stderr, "\nInnoDB: Rolling back of trx id " TRX_ID_FMT
" completed\n",
- TRX_ID_PREP_PRINTF(trx->id));
+ (ullint) trx->id);
mem_heap_free(heap);
trx_roll_crash_recv_trx = NULL;
@@ -574,7 +574,7 @@ loop:
fprintf(stderr,
"InnoDB: Cleaning up trx with id "
TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(trx->id));
+ (ullint) trx->id);
trx_cleanup_at_db_startup(trx);
goto loop;
@@ -710,7 +710,7 @@ trx_undo_arr_store_info(
} else {
n++;
- if (0 == ut_dulint_cmp(cell->undo_no, undo_no)) {
+ if (cell->undo_no == undo_no) {
if (stored_here) {
stored_here->in_use = FALSE;
@@ -754,7 +754,7 @@ trx_undo_arr_remove_info(
cell = trx_undo_arr_get_nth_info(arr, i);
if (cell->in_use
- && 0 == ut_dulint_cmp(cell->undo_no, undo_no)) {
+ && cell->undo_no == undo_no) {
cell->in_use = FALSE;
@@ -769,7 +769,7 @@ trx_undo_arr_remove_info(
/*******************************************************************//**
Gets the biggest undo number in an array.
-@return biggest value, ut_dulint_zero if the array is empty */
+@return biggest value, 0 if the array is empty */
static
undo_no_t
trx_undo_arr_get_biggest(
@@ -784,14 +784,14 @@ trx_undo_arr_get_biggest(
n = 0;
n_used = arr->n_used;
- biggest = ut_dulint_zero;
+ biggest = 0;
for (i = 0;; i++) {
cell = trx_undo_arr_get_nth_info(arr, i);
if (cell->in_use) {
n++;
- if (ut_dulint_cmp(cell->undo_no, biggest) > 0) {
+ if (cell->undo_no > biggest) {
biggest = cell->undo_no;
}
@@ -827,9 +827,9 @@ trx_roll_try_truncate(
if (arr->n_used > 0) {
biggest = trx_undo_arr_get_biggest(arr);
- if (ut_dulint_cmp(biggest, limit) >= 0) {
+ if (biggest >= limit) {
- limit = ut_dulint_add(biggest, 1);
+ limit = biggest + 1;
}
}
@@ -865,9 +865,9 @@ trx_roll_pop_top_rec(
undo->top_page_no, mtr);
offset = undo->top_offset;
- /* fprintf(stderr, "Thread %lu undoing trx %lu undo record %lu\n",
- os_thread_get_curr_id(), ut_dulint_get_low(trx->id),
- ut_dulint_get_low(undo->top_undo_no)); */
+ /* fprintf(stderr, "Thread %lu undoing trx " TRX_ID_FMT
+ " undo record " TRX_ID_FMT "\n",
+ os_thread_get_curr_id(), trx->id, undo->top_undo_no); */
prev_rec = trx_undo_get_prev_rec(undo_page + offset,
undo->hdr_page_no, undo->hdr_offset,
@@ -938,15 +938,14 @@ try_again:
undo = upd_undo;
} else if (!upd_undo || upd_undo->empty) {
undo = ins_undo;
- } else if (ut_dulint_cmp(upd_undo->top_undo_no,
- ins_undo->top_undo_no) > 0) {
+ } else if (upd_undo->top_undo_no > ins_undo->top_undo_no) {
undo = upd_undo;
} else {
undo = ins_undo;
}
if (!undo || undo->empty
- || (ut_dulint_cmp(limit, undo->top_undo_no) > 0)) {
+ || limit > undo->top_undo_no) {
if ((trx->undo_no_arr)->n_used == 0) {
/* Rollback is ending */
@@ -978,7 +977,7 @@ try_again:
undo_no = trx_undo_rec_get_undo_no(undo_rec);
- ut_ad(ut_dulint_cmp(ut_dulint_add(undo_no, 1), trx->undo_no) == 0);
+ ut_ad(undo_no + 1 == trx->undo_no);
/* We print rollback progress info if we are in a crash recovery
and the transaction has at least 1000 row operations to undo. */
@@ -986,8 +985,7 @@ try_again:
if (trx == trx_roll_crash_recv_trx && trx_roll_max_undo_no > 1000) {
progress_pct = 100 - (ulint)
- ((ut_conv_dulint_to_longlong(undo_no) * 100)
- / trx_roll_max_undo_no);
+ ((undo_no * 100) / trx_roll_max_undo_no);
if (progress_pct != trx_roll_progress_printed_pct) {
if (trx_roll_progress_printed_pct == 0) {
fprintf(stderr,
@@ -1090,22 +1088,21 @@ trx_rollback(
/* Initialize the rollback field in the transaction */
- if (sig->type == TRX_SIG_TOTAL_ROLLBACK) {
-
- trx->roll_limit = ut_dulint_zero;
-
- } else if (sig->type == TRX_SIG_ROLLBACK_TO_SAVEPT) {
-
+ switch (sig->type) {
+ case TRX_SIG_TOTAL_ROLLBACK:
+ trx->roll_limit = 0;
+ break;
+ case TRX_SIG_ROLLBACK_TO_SAVEPT:
trx->roll_limit = (sig->savept).least_undo_no;
-
- } else if (sig->type == TRX_SIG_ERROR_OCCURRED) {
-
+ break;
+ case TRX_SIG_ERROR_OCCURRED:
trx->roll_limit = trx->last_sql_stat_start.least_undo_no;
- } else {
+ break;
+ default:
ut_error;
}
- ut_a(ut_dulint_cmp(trx->roll_limit, trx->undo_no) <= 0);
+ ut_a(trx->roll_limit <= trx->undo_no);
trx->pages_undone = 0;
@@ -1269,8 +1266,8 @@ trx_finish_rollback_off_kernel(
#ifdef UNIV_DEBUG
if (lock_print_waits) {
- fprintf(stderr, "Trx %lu rollback finished\n",
- (ulong) ut_dulint_get_low(trx->id));
+ fprintf(stderr, "Trx " TRX_ID_FMT " rollback finished\n",
+ (ullint) trx->id);
}
#endif /* UNIV_DEBUG */
=== modified file 'storage/innobase/trx/trx0rseg.c'
--- a/storage/innobase/trx/trx0rseg.c revid:vasil.dimov@oracle.com-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/trx/trx0rseg.c revid:jimmy.yang@stripped51420-ps44ileuontw6hn3
@@ -236,8 +236,8 @@ trx_rseg_mem_create(
node_addr.page,
mtr) + node_addr.boffset;
- rseg->last_trx_no = mtr_read_dulint(
- undo_log_hdr + TRX_UNDO_TRX_NO, mtr);
+ rseg->last_trx_no = mach_read_from_8(
+ undo_log_hdr + TRX_UNDO_TRX_NO);
rseg->last_del_marks = mtr_read_ulint(
undo_log_hdr + TRX_UNDO_DEL_MARKS, MLOG_2BYTES, mtr);
} else {
=== modified file 'storage/innobase/trx/trx0sys.c'
--- a/storage/innobase/trx/trx0sys.c revid:vasil.dimov@stripped20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/trx/trx0sys.c revid:jimmy.yang@stripped44ileuontw6hn3
@@ -664,8 +664,8 @@ trx_sys_flush_max_trx_id(void)
sys_header = trx_sysf_get(&mtr);
- mlog_write_dulint(sys_header + TRX_SYS_TRX_ID_STORE,
- trx_sys->max_trx_id, &mtr);
+ mlog_write_ull(sys_header + TRX_SYS_TRX_ID_STORE,
+ trx_sys->max_trx_id, &mtr);
mtr_commit(&mtr);
}
@@ -912,8 +912,7 @@ trx_sysf_create(
sys_header = trx_sysf_get(mtr);
/* Start counting transaction ids from number 1 up */
- mach_write_to_8(sys_header + TRX_SYS_TRX_ID_STORE,
- ut_dulint_create(0, 1));
+ mach_write_to_8(sys_header + TRX_SYS_TRX_ID_STORE, 1);
/* Reset the rollback segment slots. Old versions of InnoDB
define TRX_SYS_N_RSEGS as 256 (TRX_SYS_OLD_N_RSEGS) and expect
@@ -950,7 +949,7 @@ trx_sys_init_at_db_start(void)
/*==========================*/
{
trx_sysf_t* sys_header;
- ib_int64_t rows_to_undo = 0;
+ ib_uint64_t rows_to_undo = 0;
const char* unit = "";
trx_t* trx;
mtr_t mtr;
@@ -976,12 +975,10 @@ trx_sys_init_at_db_start(void)
to the disk-based header! Thus trx id values will not overlap when
the database is repeatedly started! */
- trx_sys->max_trx_id = ut_dulint_add(
- ut_dulint_align_up(mtr_read_dulint(
- sys_header
- + TRX_SYS_TRX_ID_STORE, &mtr),
- TRX_SYS_TRX_ID_WRITE_MARGIN),
- 2 * TRX_SYS_TRX_ID_WRITE_MARGIN);
+ trx_sys->max_trx_id = 2 * TRX_SYS_TRX_ID_WRITE_MARGIN
+ + ut_uint64_align_up(mach_read_from_8(sys_header
+ + TRX_SYS_TRX_ID_STORE),
+ TRX_SYS_TRX_ID_WRITE_MARGIN);
UT_LIST_INIT(trx_sys->mysql_trx_list);
trx_dummy_sess = sess_open();
@@ -992,9 +989,8 @@ trx_sys_init_at_db_start(void)
for (;;) {
- if ( trx->conc_state != TRX_PREPARED) {
- rows_to_undo += ut_conv_dulint_to_longlong(
- trx->undo_no);
+ if (trx->conc_state != TRX_PREPARED) {
+ rows_to_undo += trx->undo_no;
}
trx = UT_LIST_GET_NEXT(trx_list, trx);
@@ -1017,7 +1013,7 @@ trx_sys_init_at_db_start(void)
(ulong) rows_to_undo, unit);
fprintf(stderr, "InnoDB: Trx id counter is " TRX_ID_FMT "\n",
- TRX_ID_PREP_PRINTF(trx_sys->max_trx_id));
+ (ullint) trx_sys->max_trx_id);
}
UT_LIST_INIT(trx_sys->view_list);
@@ -1061,7 +1057,7 @@ trx_sys_file_format_max_write(
mtr_t mtr;
byte* ptr;
buf_block_t* block;
- ulint tag_value_low;
+ ib_uint64_t tag_value;
mtr_start(&mtr);
@@ -1072,17 +1068,13 @@ trx_sys_file_format_max_write(
file_format_max.name = trx_sys_file_format_id_to_name(format_id);
ptr = buf_block_get_frame(block) + TRX_SYS_FILE_FORMAT_TAG;
- tag_value_low = format_id + TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_LOW;
+ tag_value = format_id + TRX_SYS_FILE_FORMAT_TAG_MAGIC_N;
if (name) {
*name = file_format_max.name;
}
- mlog_write_dulint(
- ptr,
- ut_dulint_create(TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_HIGH,
- tag_value_low),
- &mtr);
+ mlog_write_ull(ptr, tag_value, &mtr);
mtr_commit(&mtr);
@@ -1100,8 +1092,7 @@ trx_sys_file_format_max_read(void)
mtr_t mtr;
const byte* ptr;
const buf_block_t* block;
- ulint format_id;
- dulint file_format_id;
+ ib_id_t file_format_id;
/* Since this is called during the startup phase it's safe to
read the value without a covering mutex. */
@@ -1115,16 +1106,15 @@ trx_sys_file_format_max_read(void)
mtr_commit(&mtr);
- format_id = file_format_id.low - TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_LOW;
+ file_format_id -= TRX_SYS_FILE_FORMAT_TAG_MAGIC_N;
- if (file_format_id.high != TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_HIGH
- || format_id >= FILE_FORMAT_NAME_N) {
+ if (file_format_id >= FILE_FORMAT_NAME_N) {
/* Either it has never been tagged, or garbage in it. */
return(ULINT_UNDEFINED);
}
- return(format_id);
+ return((ulint) file_format_id);
}
/*****************************************************************//**
@@ -1416,7 +1406,7 @@ trx_sys_read_file_format_id(
byte buf[UNIV_PAGE_SIZE * 2];
page_t* page = ut_align(buf, UNIV_PAGE_SIZE);
const byte* ptr;
- dulint file_format_id;
+ ib_id_t file_format_id;
*format_id = ULINT_UNDEFINED;
@@ -1430,9 +1420,9 @@ trx_sys_read_file_format_id(
if (!success) {
/* The following call prints an error message */
os_file_get_last_error(TRUE);
-
+
ut_print_timestamp(stderr);
-
+
fprintf(stderr,
" ibbackup: Error: trying to read system tablespace file format,\n"
" ibbackup: but could not open the tablespace file %s!\n",
@@ -1449,9 +1439,9 @@ trx_sys_read_file_format_id(
if (!success) {
/* The following call prints an error message */
os_file_get_last_error(TRUE);
-
+
ut_print_timestamp(stderr);
-
+
fprintf(stderr,
" ibbackup: Error: trying to read system table space file format,\n"
" ibbackup: but failed to read the tablespace file %s!\n",
@@ -1465,17 +1455,16 @@ trx_sys_read_file_format_id(
/* get the file format from the page */
ptr = page + TRX_SYS_FILE_FORMAT_TAG;
file_format_id = mach_read_from_8(ptr);
+ file_format_id -= TRX_SYS_FILE_FORMAT_TAG_MAGIC_N;
- *format_id = file_format_id.low - TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_LOW;
-
- if (file_format_id.high != TRX_SYS_FILE_FORMAT_TAG_MAGIC_N_HIGH
- || *format_id >= FILE_FORMAT_NAME_N) {
+ if (file_format_id >= FILE_FORMAT_NAME_N) {
/* Either it has never been tagged, or garbage in it. */
- *format_id = ULINT_UNDEFINED;
return(TRUE);
}
-
+
+ *format_id = (ulint) file_format_id;
+
return(TRUE);
}
=== modified file 'storage/innobase/trx/trx0trx.c'
--- a/storage/innobase/trx/trx0trx.c revid:vasil.dimov@strippede4bbn3gf1py6260h
+++ b/storage/innobase/trx/trx0trx.c revid:jimmy.yang@stripped
@@ -109,8 +109,8 @@ trx_create(
trx->isolation_level = TRX_ISO_REPEATABLE_READ;
- trx->id = ut_dulint_zero;
- trx->no = ut_dulint_max;
+ trx->id = 0;
+ trx->no = IB_ULONGLONG_MAX;
trx->support_xa = TRUE;
@@ -121,7 +121,7 @@ trx_create(
trx->must_flush_log_later = FALSE;
trx->dict_operation = TRX_DICT_OP_NONE;
- trx->table_id = ut_dulint_zero;
+ trx->table_id = 0;
trx->mysql_thd = NULL;
trx->active_trans = 0;
@@ -137,8 +137,8 @@ trx_create(
trx->rseg = NULL;
- trx->undo_no = ut_dulint_zero;
- trx->last_sql_stat_start.least_undo_no = ut_dulint_zero;
+ trx->undo_no = 0;
+ trx->last_sql_stat_start.least_undo_no = 0;
trx->insert_undo = NULL;
trx->update_undo = NULL;
trx->undo_no_arr = NULL;
@@ -392,9 +392,9 @@ trx_list_insert_ordered(
trx2 = UT_LIST_GET_FIRST(trx_sys->trx_list);
while (trx2 != NULL) {
- if (ut_dulint_cmp(trx->id, trx2->id) >= 0) {
+ if (trx->id >= trx2->id) {
- ut_ad(ut_dulint_cmp(trx->id, trx2->id) == 1);
+ ut_ad(trx->id > trx2->id);
break;
}
trx2 = UT_LIST_GET_NEXT(trx_list, trx2);
@@ -463,7 +463,7 @@ trx_lists_init_at_db_start(void)
TRX_ID_FMT
" was in the"
" XA prepared state.\n",
- TRX_ID_PREP_PRINTF(trx->id));
+ (ullint) trx->id);
if (srv_force_recovery == 0) {
@@ -495,9 +495,9 @@ trx_lists_init_at_db_start(void)
trx->conc_state = TRX_ACTIVE;
/* A running transaction always has the number
- field inited to ut_dulint_max */
+ field inited to IB_ULONGLONG_MAX */
- trx->no = ut_dulint_max;
+ trx->no = IB_ULONGLONG_MAX;
}
if (undo->dict_operation) {
@@ -507,8 +507,7 @@ trx_lists_init_at_db_start(void)
}
if (!undo->empty) {
- trx->undo_no = ut_dulint_add(undo->top_undo_no,
- 1);
+ trx->undo_no = undo->top_undo_no + 1;
}
trx_list_insert_ordered(trx);
@@ -539,8 +538,7 @@ trx_lists_init_at_db_start(void)
"InnoDB: Transaction "
TRX_ID_FMT " was in the"
" XA prepared state.\n",
- TRX_ID_PREP_PRINTF(
- trx->id));
+ (ullint) trx->id);
if (srv_force_recovery == 0) {
@@ -571,9 +569,9 @@ trx_lists_init_at_db_start(void)
/* A running transaction always has
the number field inited to
- ut_dulint_max */
+ IB_ULONGLONG_MAX */
- trx->no = ut_dulint_max;
+ trx->no = IB_ULONGLONG_MAX;
}
trx->rseg = rseg;
@@ -589,11 +587,9 @@ trx_lists_init_at_db_start(void)
trx->update_undo = undo;
if ((!undo->empty)
- && (ut_dulint_cmp(undo->top_undo_no,
- trx->undo_no) >= 0)) {
+ && undo->top_undo_no >= trx->undo_no) {
- trx->undo_no = ut_dulint_add(undo->top_undo_no,
- 1);
+ trx->undo_no = undo->top_undo_no + 1;
}
undo = UT_LIST_GET_NEXT(undo_list, undo);
@@ -655,7 +651,7 @@ trx_start_low(
ut_ad(trx->rseg == NULL);
if (trx->is_purge) {
- trx->id = ut_dulint_zero;
+ trx->id = 0;
trx->conc_state = TRX_ACTIVE;
trx->start_time = time(NULL);
@@ -673,10 +669,10 @@ trx_start_low(
trx->id = trx_sys_get_new_trx_id();
- /* The initial value for trx->no: ut_dulint_max is used in
+ /* The initial value for trx->no: IB_ULONGLONG_MAX is used in
read_view_open_now: */
- trx->no = ut_dulint_max;
+ trx->no = IB_ULONGLONG_MAX;
trx->rseg = rseg;
@@ -941,8 +937,8 @@ trx_commit_off_kernel(
trx->conc_state = TRX_NOT_STARTED;
trx->rseg = NULL;
- trx->undo_no = ut_dulint_zero;
- trx->last_sql_stat_start.least_undo_no = ut_dulint_zero;
+ trx->undo_no = 0;
+ trx->last_sql_stat_start.least_undo_no = 0;
ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0);
ut_ad(UT_LIST_GET_LEN(trx->trx_locks) == 0);
@@ -967,8 +963,8 @@ trx_cleanup_at_db_startup(
trx->conc_state = TRX_NOT_STARTED;
trx->rseg = NULL;
- trx->undo_no = ut_dulint_zero;
- trx->last_sql_stat_start.least_undo_no = ut_dulint_zero;
+ trx->undo_no = 0;
+ trx->last_sql_stat_start.least_undo_no = 0;
UT_LIST_REMOVE(trx_list, trx_sys->trx_list, trx);
}
@@ -1631,7 +1627,7 @@ trx_mark_sql_stat_end(
ut_a(trx);
if (trx->conc_state == TRX_NOT_STARTED) {
- trx->undo_no = ut_dulint_zero;
+ trx->undo_no = 0;
}
trx->last_sql_stat_start.least_undo_no = trx->undo_no;
@@ -1651,7 +1647,7 @@ trx_print(
{
ibool newline;
- fprintf(f, "TRANSACTION " TRX_ID_FMT, TRX_ID_PREP_PRINTF(trx->id));
+ fprintf(f, "TRANSACTION " TRX_ID_FMT, (ullint) trx->id);
switch (trx->conc_state) {
case TRX_NOT_STARTED:
@@ -1735,10 +1731,10 @@ trx_print(
fputs(", holds adaptive hash latch", f);
}
- if (!ut_dulint_is_zero(trx->undo_no)) {
+ if (trx->undo_no != 0) {
newline = TRUE;
- fprintf(f, ", undo log entries %lu",
- (ulong) ut_dulint_get_low(trx->undo_no));
+ fprintf(f, ", undo log entries %llu",
+ (ullint) trx->undo_no);
}
if (newline) {
@@ -1754,11 +1750,11 @@ trx_print(
Compares the "weight" (or size) of two transactions. Transactions that
have edited non-transactional tables are considered heavier than ones
that have not.
-@return <0, 0 or >0; similar to strcmp(3) */
+@return TRUE if weight(a) >= weight(b) */
UNIV_INTERN
-int
-trx_weight_cmp(
-/*===========*/
+ibool
+trx_weight_ge(
+/*==========*/
const trx_t* a, /*!< in: the first transaction to be compared */
const trx_t* b) /*!< in: the second transaction to be compared */
{
@@ -1769,19 +1765,14 @@ trx_weight_cmp(
not edited non-transactional tables. */
a_notrans_edit = a->mysql_thd != NULL
- && thd_has_edited_nontrans_tables(a->mysql_thd);
+ && thd_has_edited_nontrans_tables(a->mysql_thd);
b_notrans_edit = b->mysql_thd != NULL
- && thd_has_edited_nontrans_tables(b->mysql_thd);
-
- if (a_notrans_edit && !b_notrans_edit) {
-
- return(1);
- }
+ && thd_has_edited_nontrans_tables(b->mysql_thd);
- if (!a_notrans_edit && b_notrans_edit) {
+ if (a_notrans_edit != b_notrans_edit) {
- return(-1);
+ return(a_notrans_edit);
}
/* Either both had edited non-transactional tables or both had
@@ -1792,13 +1783,11 @@ trx_weight_cmp(
fprintf(stderr,
"%s TRX_WEIGHT(a): %lld+%lu, TRX_WEIGHT(b): %lld+%lu\n",
__func__,
- ut_conv_dulint_to_longlong(a->undo_no),
- UT_LIST_GET_LEN(a->trx_locks),
- ut_conv_dulint_to_longlong(b->undo_no),
- UT_LIST_GET_LEN(b->trx_locks));
+ a->undo_no, UT_LIST_GET_LEN(a->trx_locks),
+ b->undo_no, UT_LIST_GET_LEN(b->trx_locks));
#endif
- return(ut_dulint_cmp(TRX_WEIGHT(a), TRX_WEIGHT(b)));
+ return(TRX_WEIGHT(a) >= TRX_WEIGHT(b));
}
/****************************************************************//**
@@ -1980,14 +1969,13 @@ trx_recover_for_mysql(
fprintf(stderr,
" InnoDB: Transaction " TRX_ID_FMT " in"
" prepared state after recovery\n",
- TRX_ID_PREP_PRINTF(trx->id));
+ (ullint) trx->id);
ut_print_timestamp(stderr);
fprintf(stderr,
" InnoDB: Transaction contains changes"
- " to %lu rows\n",
- (ulong) ut_conv_dulint_to_longlong(
- trx->undo_no));
+ " to %llu rows\n",
+ (ullint) trx->undo_no);
count++;
=== modified file 'storage/innobase/trx/trx0undo.c'
--- a/storage/innobase/trx/trx0undo.c revid:vasil.dimov@strippedom-20100623100249-e4bbn3gf1py6260h
+++ b/storage/innobase/trx/trx0undo.c revid:jimmy.yang@stripped0-ps44ileuontw6hn3
@@ -515,7 +515,7 @@ trx_undo_header_create_log(
{
mlog_write_initial_log_record(undo_page, MLOG_UNDO_HDR_CREATE, mtr);
- mlog_catenate_dulint_compressed(mtr, trx_id);
+ mlog_catenate_ull_compressed(mtr, trx_id);
}
#else /* !UNIV_HOTBACKUP */
# define trx_undo_header_create_log(undo_page,trx_id,mtr) ((void) 0)
@@ -687,7 +687,7 @@ trx_undo_insert_header_reuse_log(
{
mlog_write_initial_log_record(undo_page, MLOG_UNDO_HDR_REUSE, mtr);
- mlog_catenate_dulint_compressed(mtr, trx_id);
+ mlog_catenate_ull_compressed(mtr, trx_id);
}
#else /* !UNIV_HOTBACKUP */
# define trx_undo_insert_header_reuse_log(undo_page,trx_id,mtr) ((void) 0)
@@ -707,8 +707,14 @@ trx_undo_parse_page_header(
mtr_t* mtr) /*!< in: mtr or NULL */
{
trx_id_t trx_id;
+ /* Silence a GCC warning about possibly uninitialized variable
+ when mach_ull_parse_compressed() is not inlined. */
+ ut_d(trx_id = 0);
+ /* Declare the variable uninitialized in Valgrind, so that the
+ above initialization will not mask any bugs. */
+ UNIV_MEM_INVALID(&trx_id, sizeof trx_id);
- ptr = mach_dulint_parse_compressed(ptr, end_ptr, &trx_id);
+ ptr = mach_ull_parse_compressed(ptr, end_ptr, &trx_id);
if (ptr == NULL) {
@@ -1098,8 +1104,7 @@ trx_undo_truncate_end(
break;
}
- if (ut_dulint_cmp(trx_undo_rec_get_undo_no(rec), limit)
- >= 0) {
+ if (trx_undo_rec_get_undo_no(rec) >= limit) {
/* Truncate at least this record off, maybe
more */
trunc_here = rec;
@@ -1152,7 +1157,7 @@ trx_undo_truncate_start(
ut_ad(mutex_own(&(rseg->mutex)));
- if (ut_dulint_is_zero(limit)) {
+ if (!limit) {
return;
}
@@ -1174,7 +1179,7 @@ loop:
last_rec = trx_undo_page_get_last_rec(undo_page, hdr_page_no,
hdr_offset);
- if (ut_dulint_cmp(trx_undo_rec_get_undo_no(last_rec), limit) >= 0) {
+ if (trx_undo_rec_get_undo_no(last_rec) >= limit) {
mtr_commit(&mtr);
@@ -1296,7 +1301,7 @@ trx_undo_mem_create_at_db_start(
undo_header = undo_page + offset;
- trx_id = mtr_read_dulint(undo_header + TRX_UNDO_TRX_ID, mtr);
+ trx_id = mach_read_from_8(undo_header + TRX_UNDO_TRX_ID);
xid_exists = mtr_read_ulint(undo_header + TRX_UNDO_XID_EXISTS,
MLOG_1BYTE, mtr);
@@ -1320,7 +1325,7 @@ trx_undo_mem_create_at_db_start(
undo->dict_operation = mtr_read_ulint(
undo_header + TRX_UNDO_DICT_TRANS, MLOG_1BYTE, mtr);
- undo->table_id = mtr_read_dulint(undo_header + TRX_UNDO_TABLE_ID, mtr);
+ undo->table_id = mach_read_from_8(undo_header + TRX_UNDO_TABLE_ID);
undo->state = state;
undo->size = flst_get_len(seg_header + TRX_UNDO_PAGE_LIST, mtr);
@@ -1709,7 +1714,7 @@ trx_undo_mark_as_dict_operation(
ut_error;
case TRX_DICT_OP_INDEX:
/* Do not discard the table on recovery. */
- undo->table_id = ut_dulint_zero;
+ undo->table_id = 0;
break;
case TRX_DICT_OP_TABLE:
undo->table_id = trx->table_id;
@@ -1720,8 +1725,8 @@ trx_undo_mark_as_dict_operation(
+ TRX_UNDO_DICT_TRANS,
TRUE, MLOG_1BYTE, mtr);
- mlog_write_dulint(hdr_page + undo->hdr_offset + TRX_UNDO_TABLE_ID,
- undo->table_id, mtr);
+ mlog_write_ull(hdr_page + undo->hdr_offset + TRX_UNDO_TABLE_ID,
+ undo->table_id, mtr);
undo->dict_operation = TRUE;
}
=== modified file 'storage/innobase/ut/ut0byte.c'
--- a/storage/innobase/ut/ut0byte.c revid:vasil.dimov@stripped00249-e4bbn3gf1py6260h
+++ b/storage/innobase/ut/ut0byte.c revid:jimmy.yang@stripped6hn3
@@ -28,28 +28,3 @@ Created 5/11/1994 Heikki Tuuri
#ifdef UNIV_NONINL
#include "ut0byte.ic"
#endif
-
-/** Zero value for a dulint */
-UNIV_INTERN const dulint ut_dulint_zero = {0, 0};
-
-/** Maximum value for a dulint */
-UNIV_INTERN const dulint ut_dulint_max = {0xFFFFFFFFUL, 0xFFFFFFFFUL};
-
-#ifdef notdefined /* unused code */
-#include "ut0sort.h"
-
-/************************************************************//**
-Sort function for dulint arrays. */
-UNIV_INTERN
-void
-ut_dulint_sort(
-/*===========*/
- dulint* arr, /*!< in/out: array to be sorted */
- dulint* aux_arr,/*!< in/out: auxiliary array (same size as arr) */
- ulint low, /*!< in: low bound of sort interval, inclusive */
- ulint high) /*!< in: high bound of sort interval, noninclusive */
-{
- UT_SORT_FUNCTION_BODY(ut_dulint_sort, arr, aux_arr, low, high,
- ut_dulint_cmp);
-}
-#endif /* notdefined */
Attachment: [text/bzr-bundle] bzr/jimmy.yang@oracle.com-20100625051420-ps44ileuontw6hn3.bundle
| Thread |
|---|
| • bzr push into mysql-trunk-innodb branch (vasil.dimov:3115 to 3124) Bug#54044 | vasil.dimov | 28 Jun |