diff options
author | unknown <marko@hundin.mysql.fi> | 2005-04-27 12:28:44 +0300 |
---|---|---|
committer | unknown <marko@hundin.mysql.fi> | 2005-04-27 12:28:44 +0300 |
commit | 949112c12a2a74555c5049aa8b82cee87660cbb5 (patch) | |
tree | f5c1075fcd5b897aa5c2d97fe24ea10e85c5bba0 /innobase/include | |
parent | 4a3a46af13ae0703f590ac058fc1df61aeb946b6 (diff) | |
download | mariadb-git-949112c12a2a74555c5049aa8b82cee87660cbb5.tar.gz |
Fix bugs found in previous optimizations.
Make rec_get_deleted_flag() return zero/nonzero instead of FALSE/TRUE.
innobase/btr/btr0btr.c:
btr_page_get_sure_split_rec(): Fix bug caused by optimization
(dereferencing null pointer in page_rec_is_supremum())
btr_page_insert_fits(): Correct a debug assertion.
innobase/btr/btr0cur.c:
Add debug assertions about page_rec_is_comp().
Add UNIV_LIKELY and UNIV_UNLIKELY hints.
Note that rec_get_deleted_flag() returns zero/nonzero ulint
instead of FALSE/TRUE ibool.
innobase/include/page0page.ic:
Move debug assertion to proper place.
innobase/include/rem0rec.h:
rec_get_deleted_flag(), rec_set_deleted_flag(): Make the flag
zero/nonzero in order to avoid FALSE/TRUE normalization in
every rec_get_deleted_flag() call.
innobase/include/rem0rec.ic:
rec_get_deleted_flag(), rec_set_deleted_flag(): Make the flag
zero/nonzero in order to avoid FALSE/TRUE normalization in
every rec_get_deleted_flag() call.
innobase/rem/rem0rec.c:
rec_init_offsets(): Fix bugs introduced in optimization.
innobase/row/row0sel.c:
Make debug assertion stricter.
innobase/row/row0vers.c:
Note that rec_get_deleted_flag() returns zero/nonzero ulint
instead of FALSE/TRUE ibool.
Diffstat (limited to 'innobase/include')
-rw-r--r-- | innobase/include/page0page.ic | 2 | ||||
-rw-r--r-- | innobase/include/rem0rec.h | 6 | ||||
-rw-r--r-- | innobase/include/rem0rec.ic | 19 |
3 files changed, 13 insertions, 14 deletions
diff --git a/innobase/include/page0page.ic b/innobase/include/page0page.ic index 8299d160b28..cef8f6a1b80 100644 --- a/innobase/include/page0page.ic +++ b/innobase/include/page0page.ic @@ -593,10 +593,10 @@ page_rec_set_next( ut_ad(page_rec_check(rec)); ut_ad(!page_rec_is_supremum(rec)); - ut_ad(!page_rec_is_infimum(next)); page = ut_align_down(rec, UNIV_PAGE_SIZE); if (next) { + ut_ad(!page_rec_is_infimum(next)); ut_a(page == ut_align_down(next, UNIV_PAGE_SIZE)); offs = (ulint) (next - page); } else { diff --git a/innobase/include/rem0rec.h b/innobase/include/rem0rec.h index 3c150d6601d..bfb43847e39 100644 --- a/innobase/include/rem0rec.h +++ b/innobase/include/rem0rec.h @@ -162,10 +162,10 @@ rec_set_info_and_status_bits( /********************************************************** The following function tells if record is delete marked. */ UNIV_INLINE -ibool +ulint rec_get_deleted_flag( /*=================*/ - /* out: TRUE if delete marked */ + /* out: nonzero if delete marked */ rec_t* rec, /* in: physical record */ ulint comp); /* in: nonzero=compact page format */ /********************************************************** @@ -176,7 +176,7 @@ rec_set_deleted_flag( /*=================*/ rec_t* rec, /* in: physical record */ ulint comp, /* in: nonzero=compact page format */ - ibool flag); /* in: TRUE if delete marked */ + ulint flag); /* in: nonzero if delete marked */ /********************************************************** The following function tells if a new-style record is a node pointer. */ UNIV_INLINE diff --git a/innobase/include/rem0rec.ic b/innobase/include/rem0rec.ic index 85e196bbcf8..3ada4100bd0 100644 --- a/innobase/include/rem0rec.ic +++ b/innobase/include/rem0rec.ic @@ -578,19 +578,21 @@ rec_set_info_and_status_bits( /********************************************************** The following function tells if record is delete marked. */ UNIV_INLINE -ibool +ulint rec_get_deleted_flag( /*=================*/ - /* out: TRUE if delete marked */ + /* out: nonzero if delete marked */ rec_t* rec, /* in: physical record */ ulint comp) /* in: nonzero=compact page format */ { if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) { - return(0 != rec_get_bit_field_1(rec, REC_NEW_INFO_BITS, - REC_INFO_DELETED_FLAG, REC_INFO_BITS_SHIFT)); + return(UNIV_UNLIKELY(rec_get_bit_field_1(rec, + REC_NEW_INFO_BITS, REC_INFO_DELETED_FLAG, + REC_INFO_BITS_SHIFT))); } else { - return(0 != rec_get_bit_field_1(rec, REC_OLD_INFO_BITS, - REC_INFO_DELETED_FLAG, REC_INFO_BITS_SHIFT)); + return(UNIV_UNLIKELY(rec_get_bit_field_1(rec, + REC_OLD_INFO_BITS, REC_INFO_DELETED_FLAG, + REC_INFO_BITS_SHIFT))); } } @@ -602,13 +604,10 @@ rec_set_deleted_flag( /*=================*/ rec_t* rec, /* in: physical record */ ulint comp, /* in: nonzero=compact page format */ - ibool flag) /* in: TRUE if delete marked */ + ulint flag) /* in: nonzero if delete marked */ { ulint val; - ut_ad(TRUE == 1); - ut_ad(flag <= TRUE); - val = rec_get_info_bits(rec, comp); if (flag) { |