mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
branches/zip: Write the compressed page size to SYS_TABLES.TYPE and adjust
a few places accordingly. os_aio_simulated_handle(): Add TODO comments about skipping the write checks for compressed pages. dict_create_sys_tables_tuple(): Write the compressed page size to the TYPE column. open_or_create_data_files(): Simplify the fil_node_create() call. fil_node_create(): Do not touch space->zip_size. It was already initialized by fil_space_create(). fil_reset_too_high_lsns(), buf_flush_buffered_writes(): Add TODO comment about compressed pages. buf_flush_init_for_writing(): Handle pages of type FIL_PAGE_INODE, FIL_PAGE_IBUF_BITMAP, and FIL_PAGE_TYPE_FSP_HDR as uncompressed ones.
This commit is contained in:
parent
6c3c7271c9
commit
93ea672ae3
5 changed files with 19 additions and 13 deletions
|
@ -309,6 +309,7 @@ corrupted_page:
|
|||
|
||||
write_buf = trx_doublewrite->write_buf;
|
||||
|
||||
/* TODO: page_zip */
|
||||
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= len; len2 += UNIV_PAGE_SIZE) {
|
||||
if (mach_read_from_4(write_buf + len2 + FIL_PAGE_LSN + 4)
|
||||
!= mach_read_from_4(write_buf + len2 + UNIV_PAGE_SIZE
|
||||
|
@ -333,6 +334,7 @@ corrupted_page:
|
|||
|
||||
write_buf = trx_doublewrite->write_buf
|
||||
+ TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE;
|
||||
/* TODO: page_zip */
|
||||
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= len;
|
||||
len2 += UNIV_PAGE_SIZE) {
|
||||
if (mach_read_from_4(write_buf + len2
|
||||
|
@ -358,7 +360,7 @@ corrupted_page:
|
|||
|
||||
for (i = 0; i < trx_doublewrite->first_free; i++) {
|
||||
block = trx_doublewrite->buf_block_arr[i];
|
||||
|
||||
/* TODO: page_zip */
|
||||
if (mach_read_from_4(block->frame + FIL_PAGE_LSN + 4)
|
||||
!= mach_read_from_4(block->frame + UNIV_PAGE_SIZE
|
||||
- FIL_PAGE_END_LSN_OLD_CHKSUM + 4)) {
|
||||
|
@ -472,6 +474,9 @@ buf_flush_init_for_writing(
|
|||
page, zip_size)
|
||||
: BUF_NO_CHECKSUM_MAGIC);
|
||||
return;
|
||||
case FIL_PAGE_INODE:
|
||||
case FIL_PAGE_IBUF_BITMAP:
|
||||
case FIL_PAGE_TYPE_FSP_HDR:
|
||||
case FIL_PAGE_TYPE_XDES:
|
||||
/* This is essentially an uncompressed page. */
|
||||
break;
|
||||
|
|
|
@ -75,7 +75,14 @@ dict_create_sys_tables_tuple(
|
|||
dfield = dtuple_get_nth_field(entry, 3);
|
||||
|
||||
ptr = mem_heap_alloc(heap, 4);
|
||||
mach_write_to_4(ptr, DICT_TABLE_ORDINARY);
|
||||
if (table->flags & DICT_TF_COMPRESSED_MASK) {
|
||||
ut_a(table->flags & DICT_TF_COMPACT);
|
||||
mach_write_to_4(ptr, DICT_TABLE_COMPRESSED_BASE
|
||||
+ ((table->flags & DICT_TF_COMPRESSED_MASK)
|
||||
>> DICT_TF_COMPRESSED_SHIFT));
|
||||
} else {
|
||||
mach_write_to_4(ptr, DICT_TABLE_ORDINARY);
|
||||
}
|
||||
|
||||
dfield_set_data(dfield, ptr, 4);
|
||||
/* 6: MIX_ID ---------------------------*/
|
||||
|
|
|
@ -489,7 +489,6 @@ fil_node_create(
|
|||
}
|
||||
|
||||
space->size += size;
|
||||
space->zip_size = 0;/* TODO */
|
||||
|
||||
node->space = space;
|
||||
|
||||
|
@ -2674,6 +2673,7 @@ fil_reset_too_high_lsns(
|
|||
|
||||
file_size = os_file_get_size_as_iblonglong(file);
|
||||
|
||||
/* TODO: page_zip */
|
||||
for (offset = 0; offset < file_size; offset += UNIV_PAGE_SIZE) {
|
||||
success = os_file_read(file, page,
|
||||
(ulint)(offset & 0xFFFFFFFFUL),
|
||||
|
|
|
@ -3943,7 +3943,7 @@ consecutive_loop:
|
|||
|
||||
/* Do the i/o with ordinary, synchronous i/o functions: */
|
||||
if (slot->type == OS_FILE_WRITE) {
|
||||
if (array == os_aio_write_array) {
|
||||
if (array == os_aio_write_array /* TODO: && !page_zip */) {
|
||||
if ((total_len % UNIV_PAGE_SIZE != 0)
|
||||
|| (slot->offset % UNIV_PAGE_SIZE != 0)) {
|
||||
fprintf(stderr,
|
||||
|
@ -3953,14 +3953,13 @@ consecutive_loop:
|
|||
(ulong) total_len);
|
||||
ut_error;
|
||||
}
|
||||
|
||||
os_file_check_page_trailers(combined_buf, total_len);
|
||||
}
|
||||
|
||||
ret = os_file_write(slot->name, slot->file, combined_buf,
|
||||
slot->offset, slot->offset_high, total_len);
|
||||
|
||||
if (array == os_aio_write_array) {
|
||||
if (array == os_aio_write_array /* TODO: && !page_zip */) {
|
||||
os_file_check_page_trailers(combined_buf, total_len);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -925,13 +925,8 @@ skip_size_check:
|
|||
|
||||
ut_a(fil_validate());
|
||||
|
||||
if (srv_data_file_is_raw_partition[i]) {
|
||||
|
||||
fil_node_create(name, srv_data_file_sizes[i], 0, TRUE);
|
||||
} else {
|
||||
fil_node_create(name, srv_data_file_sizes[i], 0,
|
||||
FALSE);
|
||||
}
|
||||
fil_node_create(name, srv_data_file_sizes[i], 0,
|
||||
srv_data_file_is_raw_partition[i] != 0);
|
||||
}
|
||||
|
||||
ios = 0;
|
||||
|
|
Loading…
Reference in a new issue