diff options
author | unknown <marko@hundin.mysql.fi> | 2005-03-01 13:54:48 +0200 |
---|---|---|
committer | unknown <marko@hundin.mysql.fi> | 2005-03-01 13:54:48 +0200 |
commit | b9b69440c10296bce67bbdaab2c4dbc0d9ba9243 (patch) | |
tree | e9beb9a3927aeb8ca7ad47994c4a5841947c0589 /innobase/include/page0page.ic | |
parent | 679088a2ae1353f14a970182fa64f58170e81b72 (diff) | |
download | mariadb-git-b9b69440c10296bce67bbdaab2c4dbc0d9ba9243.tar.gz |
InnoDB: Zero fill newly created pages and deleted records to
remove old junk and to improve compression ratio.
InnoDB: Make implicit type conversions explicit. (Bug #8826)
innobase/btr/btr0cur.c:
Add "offsets" parameter to page_cur_delete_rec() calls
btr_cur_optimistic_delete(): Simplify the logic with a flag variable
btr_cur_pessimistic_delete(): Compute "offsets" earlier
innobase/include/page0cur.h:
page_cur_delete_rec(): Add parameter "offsets"
innobase/include/page0page.h:
page_mem_free(): Replace parameter "index" with "offsets"
innobase/include/page0page.ic:
page_mem_free(): Replace parameter "index" with "offsets".
Clear the data bytes of the freed record.
(The "extra" bytes will be needed by free space management.)
innobase/include/rem0rec.h:
Remove unnecessary function rec_get_size()
innobase/log/log0recv.c:
Remove function rec_apply_log_recs_for_backup()
unless #ifdef UNIV_HOTBACKUP.
innobase/page/page0cur.c:
Add parameter "offsets" to page_cur_delete_rec().
innobase/page/page0page.c:
page_create(): Zero fill the data area.
page_delete_rec_list_start(): Add parameter "offsets"
to page_cur_delete_rec().
innobase/rem/rem0rec.c:
Remove unnecessary function rec_get_size().
Fix compiler warnings about implicit type conversions. (Bug #8826)
innobase/srv/srv0srv.c:
Fix compiler warnings about implicit type conversions. (Bug #8826)
innobase/sync/sync0sync.c:
Fix compiler warnings about implicit type conversions. (Bug #8826)
Diffstat (limited to 'innobase/include/page0page.ic')
-rw-r--r-- | innobase/include/page0page.ic | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/innobase/include/page0page.ic b/innobase/include/page0page.ic index a63b5ca4238..e3e93e9f756 100644 --- a/innobase/include/page0page.ic +++ b/innobase/include/page0page.ic @@ -777,20 +777,28 @@ page_mem_free( /*==========*/ page_t* page, /* in: index page */ rec_t* rec, /* in: pointer to the (origin of) record */ - dict_index_t* index) /* in: record descriptor */ + const ulint* offsets)/* in: array returned by rec_get_offsets() */ { rec_t* free; ulint garbage; + ut_ad(rec_offs_validate(rec, NULL, offsets)); free = page_header_get_ptr(page, PAGE_FREE); page_rec_set_next(rec, free); page_header_set_ptr(page, PAGE_FREE, rec); + /* Clear the data bytes of the deleted record in order to improve + the compression ratio of the page and to make it easier to read + page dumps in corruption reports. The extra bytes of the record + cannot be cleared, because page_mem_alloc() needs them in order + to determine the size of the deleted record. */ + memset(rec, 0, rec_offs_data_size(offsets)); + garbage = page_header_get_field(page, PAGE_GARBAGE); page_header_set_field(page, PAGE_GARBAGE, - garbage + rec_get_size(rec, index)); + garbage + rec_offs_size(offsets)); } #ifdef UNIV_MATERIALIZE |