Commit 2ddbc912 authored by marko's avatar marko

branches/zip: Silence most GCC 4.2.1 warnings about const pointers.

For some reason, GCC 4.2.1 ignores casts (for removing constness)
in calls to inline functions.

page_align(), ut_align_down(): Make the parameter const void*, but still
return a non-const pointer.  This is ugly, but these functions cannot be
replaced with a const-preserving macro in a portable way, given that
the pointer argument is not always pointing to bytes.

buf_block_get_page_zip(): Implement as a const-preserving macro.

buf_frame_get_page_zip(), buf_block_align(): Add const qualifiers.

lock_rec_get_prev(): Silence GCC 4.2.1 warnings.

mlog_write_initial_log_record(), mlog_write_initial_log_record_fast(),
mtr_memo_contains(): Add const qualifier to the pointer.

page_header_get_ptr(): Rewrite as page_header_get_offs(), and
implement as a macro that calls this function.
parent e9507ea6
...@@ -535,7 +535,7 @@ btr_node_ptr_get_child( ...@@ -535,7 +535,7 @@ btr_node_ptr_get_child(
ulint space; ulint space;
ut_ad(rec_offs_validate(node_ptr, index, offsets)); ut_ad(rec_offs_validate(node_ptr, index, offsets));
space = page_get_space_id(page_align((rec_t*) node_ptr)); space = page_get_space_id(page_align(node_ptr));
page_no = btr_node_ptr_get_child_page_no(node_ptr, offsets); page_no = btr_node_ptr_get_child_page_no(node_ptr, offsets);
return(btr_block_get(space, dict_table_zip_size(index->table), return(btr_block_get(space, dict_table_zip_size(index->table),
...@@ -2252,12 +2252,14 @@ btr_lift_page_up( ...@@ -2252,12 +2252,14 @@ btr_lift_page_up(
(!page_copy_rec_list_end(father_block, block, (!page_copy_rec_list_end(father_block, block,
page_get_infimum_rec(page), page_get_infimum_rec(page),
index, mtr))) { index, mtr))) {
const page_zip_des_t* page_zip
= buf_block_get_page_zip(block);
ut_a(father_page_zip); ut_a(father_page_zip);
ut_a(page_zip);
/* Copy the page byte for byte. */ /* Copy the page byte for byte. */
page_zip_copy(father_page_zip, father_page, page_zip_copy(father_page_zip, father_page,
buf_block_get_page_zip(block), page_zip, page, index, mtr);
page, index, mtr);
} }
lock_update_copy_and_discard(father_block, block); lock_update_copy_and_discard(father_block, block);
...@@ -2432,8 +2434,11 @@ btr_compress( ...@@ -2432,8 +2434,11 @@ btr_compress(
merge_page_zip = buf_block_get_page_zip(merge_block); merge_page_zip = buf_block_get_page_zip(merge_block);
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
if (UNIV_LIKELY_NULL(merge_page_zip)) { if (UNIV_LIKELY_NULL(merge_page_zip)) {
const page_zip_des_t* page_zip
= buf_block_get_page_zip(block);
ut_a(page_zip);
ut_a(page_zip_validate(merge_page_zip, merge_page)); ut_a(page_zip_validate(merge_page_zip, merge_page));
ut_a(page_zip_validate(buf_block_get_page_zip(block), page)); ut_a(page_zip_validate(page_zip, page));
} }
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
......
...@@ -494,10 +494,11 @@ btr_cur_search_to_nth_level( ...@@ -494,10 +494,11 @@ btr_cur_search_to_nth_level(
page = buf_block_get_frame(block); page = buf_block_get_frame(block);
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(rw_latch == RW_NO_LATCH if (rw_latch != RW_NO_LATCH) {
|| !buf_block_get_page_zip(block) const page_zip_des_t* page_zip
|| page_zip_validate(buf_block_get_page_zip(block), = buf_block_get_page_zip(block);
page)); ut_a(!page_zip || page_zip_validate(page_zip, page));
}
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
block->check_index_page_at_flush = TRUE; block->check_index_page_at_flush = TRUE;
...@@ -1048,8 +1049,10 @@ btr_cur_optimistic_insert( ...@@ -1048,8 +1049,10 @@ btr_cur_optimistic_insert(
/* If necessary for updating the insert buffer bitmap, /* If necessary for updating the insert buffer bitmap,
calculate the current maximum insert size on a compressed page. */ calculate the current maximum insert size on a compressed page. */
if (zip_size && UNIV_LIKELY(leaf) && !dict_index_is_clust(index)) { if (zip_size && UNIV_LIKELY(leaf) && !dict_index_is_clust(index)) {
lint zip_max = page_zip_max_ins_size( const page_zip_des_t* page_zip
buf_block_get_page_zip(block), FALSE); = buf_block_get_page_zip(block);
lint zip_max
= page_zip_max_ins_size(page_zip, FALSE);
if (zip_max >= 0 && max_size > (ulint) zip_max) { if (zip_max >= 0 && max_size > (ulint) zip_max) {
max_size_zip = (ulint) zip_max; max_size_zip = (ulint) zip_max;
......
...@@ -776,7 +776,7 @@ btr_search_guess_on_hash( ...@@ -776,7 +776,7 @@ btr_search_guess_on_hash(
goto failure_unlock; goto failure_unlock;
} }
page = page_align((rec_t*) rec); page = page_align(rec);
{ {
ulint page_no = page_get_page_no(page); ulint page_no = page_get_page_no(page);
ulint space_id = page_get_space_id(page); ulint space_id = page_get_space_id(page);
......
...@@ -258,7 +258,7 @@ btr_node_ptr_get_child_page_no( ...@@ -258,7 +258,7 @@ btr_node_ptr_get_child_page_no(
"InnoDB: a nonsensical page number 0" "InnoDB: a nonsensical page number 0"
" in a node ptr record at offset %lu\n", " in a node ptr record at offset %lu\n",
(ulong) page_offset(rec)); (ulong) page_offset(rec));
buf_page_print(page_align((rec_t*) rec), 0); buf_page_print(page_align(rec), 0);
} }
return(page_no); return(page_no);
......
...@@ -854,32 +854,26 @@ buf_block_get_zip_size( ...@@ -854,32 +854,26 @@ buf_block_get_zip_size(
/************************************************************************* /*************************************************************************
Gets the compressed page descriptor corresponding to an uncompressed page Gets the compressed page descriptor corresponding to an uncompressed page
if applicable. */ if applicable. */
UNIV_INLINE #define buf_block_get_page_zip(block) \
page_zip_des_t* (UNIV_LIKELY_NULL((block)->page.zip.data) ? &(block)->page.zip : NULL)
buf_block_get_page_zip(
/*===================*/
/* out: compressed page descriptor, or NULL */
buf_block_t* block) /* in: pointer to the control block */
__attribute((pure));
#if defined UNIV_DEBUG || defined UNIV_ZIP_DEBUG #if defined UNIV_DEBUG || defined UNIV_ZIP_DEBUG
/*********************************************************************** /***********************************************************************
Gets the block to whose frame the pointer is pointing to. */ Gets the block to whose frame the pointer is pointing to. */
UNIV_INLINE UNIV_INLINE
buf_block_t* const buf_block_t*
buf_block_align( buf_block_align(
/*============*/ /*============*/
/* out: pointer to block */ /* out: pointer to block */
byte* ptr); /* in: pointer to a frame */ const byte* ptr); /* in: pointer to a frame */
/************************************************************************* /*************************************************************************
Gets the compressed page descriptor corresponding to an uncompressed page Gets the compressed page descriptor corresponding to an uncompressed page
if applicable. */ if applicable. */
UNIV_INLINE UNIV_INLINE
page_zip_des_t* const page_zip_des_t*
buf_frame_get_page_zip( buf_frame_get_page_zip(
/*===================*/ /*===================*/
/* out: compressed page descriptor, or NULL */ /* out: compressed page descriptor, or NULL */
byte* ptr) /* in: pointer to the page */ const byte* ptr); /* in: pointer to the page */
__attribute((pure));
#endif /* UNIV_DEBUG || UNIV_ZIP_DEBUG */ #endif /* UNIV_DEBUG || UNIV_ZIP_DEBUG */
/************************************************************************ /************************************************************************
This function is used to get info if there is an io operation This function is used to get info if there is an io operation
......
...@@ -598,41 +598,24 @@ buf_block_get_zip_size( ...@@ -598,41 +598,24 @@ buf_block_get_zip_size(
return(block->page.zip.ssize ? 512 << block->page.zip.ssize : 0); return(block->page.zip.ssize ? 512 << block->page.zip.ssize : 0);
} }
/*************************************************************************
Gets the compressed page descriptor corresponding to an uncompressed page
if applicable. */
UNIV_INLINE
page_zip_des_t*
buf_block_get_page_zip(
/*===================*/
/* out: compressed page descriptor, or NULL */
buf_block_t* block) /* in: pointer to the control block */
{
if (UNIV_LIKELY_NULL(block->page.zip.data)) {
return(&block->page.zip);
}
return(NULL);
}
#if defined UNIV_DEBUG || defined UNIV_ZIP_DEBUG #if defined UNIV_DEBUG || defined UNIV_ZIP_DEBUG
/*********************************************************************** /***********************************************************************
Gets the block to whose frame the pointer is pointing to. */ Gets the block to whose frame the pointer is pointing to. */
UNIV_INLINE UNIV_INLINE
buf_block_t* const buf_block_t*
buf_block_align( buf_block_align(
/*============*/ /*============*/
/* out: pointer to block */ /* out: pointer to block */
byte* ptr) /* in: pointer to a frame */ const byte* ptr) /* in: pointer to a frame */
{ {
buf_block_t* block; const buf_block_t* block;
ulint space_id, page_no; ulint space_id, page_no;
ptr = ut_align_down(ptr, UNIV_PAGE_SIZE); ptr = ut_align_down(ptr, UNIV_PAGE_SIZE);
page_no = mach_read_from_4(ptr + FIL_PAGE_OFFSET); page_no = mach_read_from_4(ptr + FIL_PAGE_OFFSET);
space_id = mach_read_from_4(ptr + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); space_id = mach_read_from_4(ptr + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
block = (buf_block_t*) buf_page_hash_get(space_id, page_no); block = (const buf_block_t*) buf_page_hash_get(space_id, page_no);
ut_ad(block); ut_ad(block);
ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
ut_ad(block->frame == ptr); ut_ad(block->frame == ptr);
...@@ -643,11 +626,11 @@ buf_block_align( ...@@ -643,11 +626,11 @@ buf_block_align(
Gets the compressed page descriptor corresponding to an uncompressed page Gets the compressed page descriptor corresponding to an uncompressed page
if applicable. */ if applicable. */
UNIV_INLINE UNIV_INLINE
page_zip_des_t* const page_zip_des_t*
buf_frame_get_page_zip( buf_frame_get_page_zip(
/*===================*/ /*===================*/
/* out: compressed page descriptor, or NULL */ /* out: compressed page descriptor, or NULL */
byte* ptr) /* in: pointer to the page */ const byte* ptr) /* in: pointer to the page */
{ {
page_zip_des_t* page_zip; page_zip_des_t* page_zip;
mutex_enter(&buf_pool->mutex); mutex_enter(&buf_pool->mutex);
...@@ -668,7 +651,7 @@ buf_ptr_get_fsp_addr( ...@@ -668,7 +651,7 @@ buf_ptr_get_fsp_addr(
ulint* space, /* out: space id */ ulint* space, /* out: space id */
fil_addr_t* addr) /* out: page offset and byte offset */ fil_addr_t* addr) /* out: page offset and byte offset */
{ {
const page_t* page = (const page_t*) ut_align_down((void*) ptr, const page_t* page = (const page_t*) ut_align_down(ptr,
UNIV_PAGE_SIZE); UNIV_PAGE_SIZE);
*space = mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); *space = mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
......
...@@ -62,11 +62,11 @@ type and four-byte space and page numbers. */ ...@@ -62,11 +62,11 @@ type and four-byte space and page numbers. */
void void
mlog_write_initial_log_record( mlog_write_initial_log_record(
/*==========================*/ /*==========================*/
byte* ptr, /* in: pointer to (inside) a buffer frame const byte* ptr, /* in: pointer to (inside) a buffer
holding the file page where modification frame holding the file page where
is made */ modification is made */
byte type, /* in: log item type: MLOG_1BYTE, ... */ byte type, /* in: log item type: MLOG_1BYTE, ... */
mtr_t* mtr); /* in: mini-transaction handle */ mtr_t* mtr); /* in: mini-transaction handle */
/************************************************************ /************************************************************
Writes a log record about an .ibd file create/delete/rename. */ Writes a log record about an .ibd file create/delete/rename. */
UNIV_INLINE UNIV_INLINE
...@@ -140,12 +140,14 @@ UNIV_INLINE ...@@ -140,12 +140,14 @@ UNIV_INLINE
byte* byte*
mlog_write_initial_log_record_fast( mlog_write_initial_log_record_fast(
/*===============================*/ /*===============================*/
/* out: new value of log_ptr */ /* out: new value of log_ptr */
byte* ptr, /* in: pointer to (inside) a buffer frame holding the const byte* ptr, /* in: pointer to (inside) a buffer
file page where modification is made */ frame holding the file page where
byte type, /* in: log item type: MLOG_1BYTE, ... */ modification is made */
byte* log_ptr,/* in: pointer to mtr log which has been opened */ byte type, /* in: log item type: MLOG_1BYTE, ... */
mtr_t* mtr); /* in: mtr */ byte* log_ptr,/* in: pointer to mtr log which has
been opened */
mtr_t* mtr); /* in: mtr */
/************************************************************ /************************************************************
Parses an initial log record written by mlog_write_initial_log_record. */ Parses an initial log record written by mlog_write_initial_log_record. */
......
...@@ -153,12 +153,14 @@ UNIV_INLINE ...@@ -153,12 +153,14 @@ UNIV_INLINE
byte* byte*
mlog_write_initial_log_record_fast( mlog_write_initial_log_record_fast(
/*===============================*/ /*===============================*/
/* out: new value of log_ptr */ /* out: new value of log_ptr */
byte* ptr, /* in: pointer to (inside) a buffer frame holding the const byte* ptr, /* in: pointer to (inside) a buffer
file page where modification is made */ frame holding the file page where
byte type, /* in: log item type: MLOG_1BYTE, ... */ modification is made */
byte* log_ptr,/* in: pointer to mtr log which has been opened */ byte type, /* in: log item type: MLOG_1BYTE, ... */
mtr_t* mtr) /* in: mtr */ byte* log_ptr,/* in: pointer to mtr log which has
been opened */
mtr_t* mtr) /* in: mtr */
{ {
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
buf_block_t* block; buf_block_t* block;
...@@ -191,7 +193,7 @@ mlog_write_initial_log_record_fast( ...@@ -191,7 +193,7 @@ mlog_write_initial_log_record_fast(
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
mutex_enter(&buf_pool->mutex); mutex_enter(&buf_pool->mutex);
/* We now assume that all x-latched pages have been modified! */ /* We now assume that all x-latched pages have been modified! */
block = buf_block_align(ptr); block = (buf_block_t*) buf_block_align(ptr);
mutex_exit(&buf_pool->mutex); mutex_exit(&buf_pool->mutex);
if (!mtr_memo_contains(mtr, block, MTR_MEMO_MODIFY)) { if (!mtr_memo_contains(mtr, block, MTR_MEMO_MODIFY)) {
......
...@@ -272,10 +272,10 @@ UNIV_INLINE ...@@ -272,10 +272,10 @@ UNIV_INLINE
ibool ibool
mtr_memo_contains( mtr_memo_contains(
/*==============*/ /*==============*/
/* out: TRUE if contains */ /* out: TRUE if contains */
mtr_t* mtr, /* in: mtr */ mtr_t* mtr, /* in: mtr */
void* object, /* in: object to search */ const void* object, /* in: object to search */
ulint type); /* in: type of object */ ulint type); /* in: type of object */
/************************************************************** /**************************************************************
Checks if memo contains the given page. */ Checks if memo contains the given page. */
......
...@@ -120,10 +120,10 @@ UNIV_INLINE ...@@ -120,10 +120,10 @@ UNIV_INLINE
ibool ibool
mtr_memo_contains( mtr_memo_contains(
/*==============*/ /*==============*/
/* out: TRUE if contains */ /* out: TRUE if contains */
mtr_t* mtr, /* in: mtr */ mtr_t* mtr, /* in: mtr */
void* object, /* in: object to search */ const void* object, /* in: object to search */
ulint type) /* in: type of object */ ulint type) /* in: type of object */
{ {
mtr_memo_slot_t* slot; mtr_memo_slot_t* slot;
dyn_array_t* memo; dyn_array_t* memo;
......
...@@ -146,8 +146,8 @@ UNIV_INLINE ...@@ -146,8 +146,8 @@ UNIV_INLINE
page_t* page_t*
page_align( page_align(
/*=======*/ /*=======*/
/* out: start of the page */ /* out: start of the page */
void* ptr) /* in: pointer to page frame */ const void* ptr) /* in: pointer to page frame */
__attribute__((const)); __attribute__((const));
/**************************************************************** /****************************************************************
Gets the offset within a page. */ Gets the offset within a page. */
...@@ -205,14 +205,22 @@ page_header_set_field( ...@@ -205,14 +205,22 @@ page_header_set_field(
ulint field, /* in: PAGE_N_DIR_SLOTS, ... */ ulint field, /* in: PAGE_N_DIR_SLOTS, ... */
ulint val); /* in: value */ ulint val); /* in: value */
/***************************************************************** /*****************************************************************
Returns the pointer stored in the given header field. */ Returns the offset stored in the given header field. */
UNIV_INLINE UNIV_INLINE
byte* ulint
page_header_get_ptr( page_header_get_offs(
/*================*/ /*=================*/
/* out: pointer or NULL */ /* out: offset from the start of the page,
page_t* page, /* in: page */ or 0 */
ulint field); /* in: PAGE_FREE, ... */ const page_t* page, /* in: page */
ulint field) /* in: PAGE_FREE, ... */
__attribute__((nonnull, pure));
/*****************************************************************
Returns the pointer stored in the given header field, or NULL. */
#define page_header_get_ptr(page, field) \
(page_header_get_offs(page, field) \
? page + page_header_get_offs(page, field) : NULL)
/***************************************************************** /*****************************************************************
Sets the pointer stored in the given header field. */ Sets the pointer stored in the given header field. */
UNIV_INLINE UNIV_INLINE
......
...@@ -22,8 +22,8 @@ UNIV_INLINE ...@@ -22,8 +22,8 @@ UNIV_INLINE
page_t* page_t*
page_align( page_align(
/*=======*/ /*=======*/
/* out: start of the page */ /* out: start of the page */
void* ptr) /* in: pointer to page frame */ const void* ptr) /* in: pointer to page frame */
{ {
return((page_t*) ut_align_down(ptr, UNIV_PAGE_SIZE)); return((page_t*) ut_align_down(ptr, UNIV_PAGE_SIZE));
} }
...@@ -112,14 +112,15 @@ page_header_set_field( ...@@ -112,14 +112,15 @@ page_header_set_field(
} }
/***************************************************************** /*****************************************************************
Returns the pointer stored in the given header field. */ Returns the offset stored in the given header field. */
UNIV_INLINE UNIV_INLINE
byte* ulint
page_header_get_ptr( page_header_get_offs(
/*================*/ /*=================*/
/* out: pointer or NULL */ /* out: offset from the start of the page,
page_t* page, /* in: page */ or 0 */
ulint field) /* in: PAGE_FREE, ... */ const page_t* page, /* in: page */
ulint field) /* in: PAGE_FREE, ... */
{ {
ulint offs; ulint offs;
...@@ -132,12 +133,7 @@ page_header_get_ptr( ...@@ -132,12 +133,7 @@ page_header_get_ptr(
ut_ad((field != PAGE_HEAP_TOP) || offs); ut_ad((field != PAGE_HEAP_TOP) || offs);
if (offs == 0) { return(offs);
return(NULL);
}
return(page + offs);
} }
/***************************************************************** /*****************************************************************
...@@ -218,7 +214,7 @@ page_rec_is_comp( ...@@ -218,7 +214,7 @@ page_rec_is_comp(
/* out: nonzero if in compact format */ /* out: nonzero if in compact format */
const rec_t* rec) /* in: record */ const rec_t* rec) /* in: record */
{ {
return(page_is_comp(page_align((rec_t*) rec))); return(page_is_comp(page_align(rec)));
} }
/******************************************************************* /*******************************************************************
...@@ -562,7 +558,7 @@ page_rec_check( ...@@ -562,7 +558,7 @@ page_rec_check(
/* out: TRUE if succeed */ /* out: TRUE if succeed */
const rec_t* rec) /* in: record */ const rec_t* rec) /* in: record */
{ {
const page_t* page = page_align((rec_t*) rec); const page_t* page = page_align(rec);
ut_a(rec); ut_a(rec);
...@@ -862,9 +858,10 @@ page_mem_alloc_free( ...@@ -862,9 +858,10 @@ page_mem_alloc_free(
ulint garbage; ulint garbage;
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
rec_t* old_rec = page_header_get_ptr(page, PAGE_FREE); const rec_t* old_rec = page_header_get_ptr(page, PAGE_FREE);
ut_ad(old_rec); ut_ad(old_rec);
ut_ad(next_rec == rec_get_next_ptr(old_rec, page_is_comp(page))); ut_ad(next_rec == page + rec_get_next_offs(old_rec,
page_is_comp(page)));
#endif #endif
page_header_set_ptr(page, page_zip, PAGE_FREE, next_rec); page_header_set_ptr(page, page_zip, PAGE_FREE, next_rec);
......
...@@ -350,7 +350,7 @@ page_zip_write_header( ...@@ -350,7 +350,7 @@ page_zip_write_header(
{ {
ulint pos; ulint pos;
ut_ad(buf_frame_get_page_zip((byte*)str) == page_zip); ut_ad(buf_frame_get_page_zip(str) == page_zip);
ut_ad(page_zip_simple_validate(page_zip)); ut_ad(page_zip_simple_validate(page_zip));
pos = page_offset(str); pos = page_offset(str);
......
...@@ -226,9 +226,9 @@ UNIV_INLINE ...@@ -226,9 +226,9 @@ UNIV_INLINE
void* void*
ut_align_down( ut_align_down(
/*==========*/ /*==========*/
/* out: aligned pointer */ /* out: aligned pointer */
void* ptr, /* in: pointer */ const void* ptr, /* in: pointer */
ulint align_no) /* in: align by this number */ ulint align_no) /* in: align by this number */
__attribute__((const)); __attribute__((const));
/************************************************************* /*************************************************************
The following function computes the offset of a pointer from the nearest The following function computes the offset of a pointer from the nearest
......
...@@ -358,9 +358,9 @@ UNIV_INLINE ...@@ -358,9 +358,9 @@ UNIV_INLINE
void* void*
ut_align_down( ut_align_down(
/*==========*/ /*==========*/
/* out: aligned pointer */ /* out: aligned pointer */
void* ptr, /* in: pointer */ const void* ptr, /* in: pointer */
ulint align_no) /* in: align by this number */ ulint align_no) /* in: align by this number */
{ {
ut_ad(align_no > 0); ut_ad(align_no > 0);
ut_ad(((align_no - 1) & align_no) == 0); ut_ad(((align_no - 1) & align_no) == 0);
......
...@@ -573,7 +573,7 @@ lock_sec_rec_cons_read_sees( ...@@ -573,7 +573,7 @@ lock_sec_rec_cons_read_sees(
return(FALSE); return(FALSE);
} }
max_trx_id = page_get_max_trx_id(page_align((rec_t*) rec)); max_trx_id = page_get_max_trx_id(page_align(rec));
return(ut_dulint_cmp(max_trx_id, view->up_limit_id) < 0); return(ut_dulint_cmp(max_trx_id, view->up_limit_id) < 0);
} }
...@@ -1322,10 +1322,10 @@ lock_rec_get_prev( ...@@ -1322,10 +1322,10 @@ lock_rec_get_prev(
const lock_t* in_lock,/* in: record lock */ const lock_t* in_lock,/* in: record lock */
ulint heap_no)/* in: heap number of the record */ ulint heap_no)/* in: heap number of the record */
{ {
const lock_t* lock; lock_t* lock;
ulint space; ulint space;
ulint page_no; ulint page_no;
const lock_t* found_lock = NULL; lock_t* found_lock = NULL;
ut_ad(mutex_own(&kernel_mutex)); ut_ad(mutex_own(&kernel_mutex));
ut_ad(lock_get_type_low(in_lock) == LOCK_REC); ut_ad(lock_get_type_low(in_lock) == LOCK_REC);
...@@ -1348,7 +1348,7 @@ lock_rec_get_prev( ...@@ -1348,7 +1348,7 @@ lock_rec_get_prev(
found_lock = lock; found_lock = lock;
} }
lock = lock_rec_get_next_on_page((lock_t*) lock); lock = lock_rec_get_next_on_page(lock);
} }
} }
...@@ -1586,7 +1586,7 @@ lock_sec_rec_some_has_impl_off_kernel( ...@@ -1586,7 +1586,7 @@ lock_sec_rec_some_has_impl_off_kernel(
dict_index_t* index, /* in: secondary index */ dict_index_t* index, /* in: secondary index */
const ulint* offsets)/* in: rec_get_offsets(rec, index) */ const ulint* offsets)/* in: rec_get_offsets(rec, index) */
{ {
const page_t* page = page_align((rec_t*) rec); const page_t* page = page_align(rec);
ut_ad(mutex_own(&kernel_mutex)); ut_ad(mutex_own(&kernel_mutex));
ut_ad(!dict_index_is_clust(index)); ut_ad(!dict_index_is_clust(index));
...@@ -2774,8 +2774,8 @@ lock_move_rec_list_start( ...@@ -2774,8 +2774,8 @@ lock_move_rec_list_start(
lock_t* lock; lock_t* lock;
const ulint comp = page_rec_is_comp(rec); const ulint comp = page_rec_is_comp(rec);
ut_ad(block->frame == page_align((rec_t*) rec)); ut_ad(block->frame == page_align(rec));
ut_ad(new_block->frame == page_align((rec_t*) old_end)); ut_ad(new_block->frame == page_align(old_end));
lock_mutex_enter_kernel(); lock_mutex_enter_kernel();
...@@ -3014,7 +3014,7 @@ lock_update_merge_left( ...@@ -3014,7 +3014,7 @@ lock_update_merge_left(
{ {
const rec_t* left_next_rec; const rec_t* left_next_rec;
ut_ad(left_block->frame == page_align((rec_t*) orig_pred)); ut_ad(left_block->frame == page_align(orig_pred));
lock_mutex_enter_kernel(); lock_mutex_enter_kernel();
...@@ -3149,7 +3149,7 @@ lock_update_insert( ...@@ -3149,7 +3149,7 @@ lock_update_insert(
ulint receiver_heap_no; ulint receiver_heap_no;
ulint donator_heap_no; ulint donator_heap_no;
ut_ad(block->frame == page_align((rec_t*) rec)); ut_ad(block->frame == page_align(rec));
/* Inherit the gap-locking locks for rec, in gap mode, from the next /* Inherit the gap-locking locks for rec, in gap mode, from the next
record */ record */
...@@ -3228,7 +3228,7 @@ lock_rec_store_on_page_infimum( ...@@ -3228,7 +3228,7 @@ lock_rec_store_on_page_infimum(
{ {
ulint heap_no = page_rec_get_heap_no(rec); ulint heap_no = page_rec_get_heap_no(rec);
ut_ad(block->frame == page_align((rec_t*) rec)); ut_ad(block->frame == page_align(rec));
lock_mutex_enter_kernel(); lock_mutex_enter_kernel();
...@@ -3899,7 +3899,7 @@ lock_rec_unlock( ...@@ -3899,7 +3899,7 @@ lock_rec_unlock(
ulint heap_no; ulint heap_no;
ut_ad(trx && rec); ut_ad(trx && rec);
ut_ad(block->frame == page_align((rec_t*) rec)); ut_ad(block->frame == page_align(rec));
heap_no = page_rec_get_heap_no(rec); heap_no = page_rec_get_heap_no(rec);
...@@ -4569,7 +4569,7 @@ lock_rec_queue_validate( ...@@ -4569,7 +4569,7 @@ lock_rec_queue_validate(
ulint heap_no; ulint heap_no;
ut_a(rec); ut_a(rec);
ut_a(block->frame == page_align((rec_t*) rec)); ut_a(block->frame == page_align(rec));
ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(rec_offs_validate(rec, index, offsets));
ut_ad(!page_rec_is_comp(rec) == !rec_offs_comp(offsets)); ut_ad(!page_rec_is_comp(rec) == !rec_offs_comp(offsets));
...@@ -5044,7 +5044,7 @@ lock_clust_rec_modify_check_and_lock( ...@@ -5044,7 +5044,7 @@ lock_clust_rec_modify_check_and_lock(
ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(rec_offs_validate(rec, index, offsets));
ut_ad(dict_index_is_clust(index)); ut_ad(dict_index_is_clust(index));
ut_ad(block->frame == page_align((rec_t*) rec)); ut_ad(block->frame == page_align(rec));
if (flags & BTR_NO_LOCKING_FLAG) { if (flags & BTR_NO_LOCKING_FLAG) {
...@@ -5179,7 +5179,7 @@ lock_sec_rec_read_check_and_lock( ...@@ -5179,7 +5179,7 @@ lock_sec_rec_read_check_and_lock(
ulint heap_no; ulint heap_no;
ut_ad(!dict_index_is_clust(index)); ut_ad(!dict_index_is_clust(index));
ut_ad(block->frame == page_align((rec_t*) rec)); ut_ad(block->frame == page_align(rec));
ut_ad(page_rec_is_user_rec(rec) || page_rec_is_supremum(rec)); ut_ad(page_rec_is_user_rec(rec) || page_rec_is_supremum(rec));
ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(rec_offs_validate(rec, index, offsets));
...@@ -5255,7 +5255,7 @@ lock_clust_rec_read_check_and_lock( ...@@ -5255,7 +5255,7 @@ lock_clust_rec_read_check_and_lock(
ulint heap_no; ulint heap_no;
ut_ad(dict_index_is_clust(index)); ut_ad(dict_index_is_clust(index));
ut_ad(block->frame == page_align((rec_t*) rec)); ut_ad(block->frame == page_align(rec));
ut_ad(page_rec_is_user_rec(rec) || page_rec_is_supremum(rec)); ut_ad(page_rec_is_user_rec(rec) || page_rec_is_supremum(rec));
ut_ad(gap_mode == LOCK_ORDINARY || gap_mode == LOCK_GAP ut_ad(gap_mode == LOCK_ORDINARY || gap_mode == LOCK_GAP
|| gap_mode == LOCK_REC_NOT_GAP); || gap_mode == LOCK_REC_NOT_GAP);
......
...@@ -47,10 +47,11 @@ to the mtr memo that a buffer page has been modified. */ ...@@ -47,10 +47,11 @@ to the mtr memo that a buffer page has been modified. */
void void
mlog_write_initial_log_record( mlog_write_initial_log_record(
/*==========================*/ /*==========================*/
byte* ptr, /* in: pointer to (inside) a buffer frame holding the const byte* ptr, /* in: pointer to (inside) a buffer
file page where modification is made */ frame holding the file page where
byte type, /* in: log item type: MLOG_1BYTE, ... */ modification is made */
mtr_t* mtr) /* in: mini-transaction handle */ byte type, /* in: log item type: MLOG_1BYTE, ... */
mtr_t* mtr) /* in: mini-transaction handle */
{ {
byte* log_ptr; byte* log_ptr;
......
...@@ -315,7 +315,7 @@ mtr_memo_contains_page( ...@@ -315,7 +315,7 @@ mtr_memo_contains_page(
ibool ret; ibool ret;
mutex_enter(&buf_pool->mutex); mutex_enter(&buf_pool->mutex);
ret = mtr_memo_contains(mtr, buf_block_align((byte*) ptr), type); ret = mtr_memo_contains(mtr, buf_block_align(ptr), type);
mutex_exit(&buf_pool->mutex); mutex_exit(&buf_pool->mutex);
return(ret); return(ret);
} }
......
...@@ -477,16 +477,18 @@ page_create_zip( ...@@ -477,16 +477,18 @@ page_create_zip(
ulint level, /* in: the B-tree level of the page */ ulint level, /* in: the B-tree level of the page */
mtr_t* mtr) /* in: mini-transaction handle */ mtr_t* mtr) /* in: mini-transaction handle */
{ {
page_t* page; page_t* page;
page_zip_des_t* page_zip = buf_block_get_page_zip(block);
ut_ad(block && buf_block_get_page_zip(block) && index); ut_ad(block);
ut_ad(page_zip);
ut_ad(index);
ut_ad(dict_table_is_comp(index->table)); ut_ad(dict_table_is_comp(index->table));
page = page_create_low(block, TRUE); page = page_create_low(block, TRUE);
mach_write_to_2(page + PAGE_HEADER + PAGE_LEVEL, level); mach_write_to_2(page + PAGE_HEADER + PAGE_LEVEL, level);
if (UNIV_UNLIKELY(!page_zip_compress(buf_block_get_page_zip(block), if (UNIV_UNLIKELY(!page_zip_compress(page_zip, page, index, mtr))) {
page, index, mtr))) {
/* The compression of a newly created page /* The compression of a newly created page
should always succeed. */ should always succeed. */
ut_error; ut_error;
......
...@@ -279,7 +279,7 @@ page_zip_get_n_prev_extern( ...@@ -279,7 +279,7 @@ page_zip_get_n_prev_extern(
on a B-tree leaf page */ on a B-tree leaf page */
dict_index_t* index) /* in: record descriptor */ dict_index_t* index) /* in: record descriptor */
{ {
const page_t* page = page_align((rec_t*) rec); const page_t* page = page_align(rec);
ulint n_ext = 0; ulint n_ext = 0;
ulint i; ulint i;
ulint left; ulint left;
...@@ -2848,7 +2848,7 @@ page_zip_write_rec( ...@@ -2848,7 +2848,7 @@ page_zip_write_rec(
ulint heap_no; ulint heap_no;
byte* slot; byte* slot;
ut_ad(buf_frame_get_page_zip((byte*) rec) == page_zip); ut_ad(buf_frame_get_page_zip(rec) == page_zip);
ut_ad(page_zip_simple_validate(page_zip)); ut_ad(page_zip_simple_validate(page_zip));
ut_ad(page_zip_get_size(page_zip) ut_ad(page_zip_get_size(page_zip)
> PAGE_DATA + page_zip_dir_size(page_zip)); > PAGE_DATA + page_zip_dir_size(page_zip));
...@@ -2857,7 +2857,7 @@ page_zip_write_rec( ...@@ -2857,7 +2857,7 @@ page_zip_write_rec(
ut_ad(page_zip->m_start >= PAGE_DATA); ut_ad(page_zip->m_start >= PAGE_DATA);
page = page_align((rec_t*) rec); page = page_align(rec);
ut_ad(page_zip_header_cmp(page_zip, page)); ut_ad(page_zip_header_cmp(page_zip, page));
ut_ad(page_simple_validate_new((page_t*) page)); ut_ad(page_simple_validate_new((page_t*) page));
...@@ -2895,7 +2895,7 @@ page_zip_write_rec( ...@@ -2895,7 +2895,7 @@ page_zip_write_rec(
ut_ad(!*data); ut_ad(!*data);
{ {
const byte* start = rec_get_start((rec_t*) rec, offsets); const byte* start = rec - rec_offs_extra_size(offsets);
const byte* b = rec - REC_N_NEW_EXTRA_BYTES; const byte* b = rec - REC_N_NEW_EXTRA_BYTES;
/* Write the extra bytes backwards, so that /* Write the extra bytes backwards, so that
...@@ -3010,7 +3010,7 @@ page_zip_write_rec( ...@@ -3010,7 +3010,7 @@ page_zip_write_rec(
page_zip->m_nonempty = TRUE; page_zip->m_nonempty = TRUE;
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(page_zip_validate(page_zip, page_align((byte*) rec))); ut_a(page_zip_validate(page_zip, page_align(rec)));
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
} }
...@@ -3091,12 +3091,12 @@ page_zip_write_blob_ptr( ...@@ -3091,12 +3091,12 @@ page_zip_write_blob_ptr(
{ {
const byte* field; const byte* field;
byte* externs; byte* externs;
page_t* page = page_align((byte*) rec); const page_t* page = page_align(rec);
ulint blob_no; ulint blob_no;
ulint len; ulint len;
ut_ad(buf_frame_get_page_zip((byte*) rec) == page_zip); ut_ad(buf_frame_get_page_zip(rec) == page_zip);
ut_ad(page_simple_validate_new(page)); ut_ad(page_simple_validate_new((page_t*) page));
ut_ad(page_zip_simple_validate(page_zip)); ut_ad(page_zip_simple_validate(page_zip));
ut_ad(page_zip_get_size(page_zip) ut_ad(page_zip_get_size(page_zip)
> PAGE_DATA + page_zip_dir_size(page_zip)); > PAGE_DATA + page_zip_dir_size(page_zip));
...@@ -3128,7 +3128,7 @@ page_zip_write_blob_ptr( ...@@ -3128,7 +3128,7 @@ page_zip_write_blob_ptr(
memcpy(externs, field, BTR_EXTERN_FIELD_REF_SIZE); memcpy(externs, field, BTR_EXTERN_FIELD_REF_SIZE);
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(page_zip_validate(page_zip, page_align((rec_t*) rec))); ut_a(page_zip_validate(page_zip, page));
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
if (mtr) { if (mtr) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment