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;
|
write_buf = trx_doublewrite->write_buf;
|
||||||
|
|
||||||
|
/* TODO: page_zip */
|
||||||
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= len; len2 += UNIV_PAGE_SIZE) {
|
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= len; len2 += UNIV_PAGE_SIZE) {
|
||||||
if (mach_read_from_4(write_buf + len2 + FIL_PAGE_LSN + 4)
|
if (mach_read_from_4(write_buf + len2 + FIL_PAGE_LSN + 4)
|
||||||
!= mach_read_from_4(write_buf + len2 + UNIV_PAGE_SIZE
|
!= mach_read_from_4(write_buf + len2 + UNIV_PAGE_SIZE
|
||||||
|
@ -333,6 +334,7 @@ corrupted_page:
|
||||||
|
|
||||||
write_buf = trx_doublewrite->write_buf
|
write_buf = trx_doublewrite->write_buf
|
||||||
+ TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE;
|
+ TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE;
|
||||||
|
/* TODO: page_zip */
|
||||||
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= len;
|
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= len;
|
||||||
len2 += UNIV_PAGE_SIZE) {
|
len2 += UNIV_PAGE_SIZE) {
|
||||||
if (mach_read_from_4(write_buf + len2
|
if (mach_read_from_4(write_buf + len2
|
||||||
|
@ -358,7 +360,7 @@ corrupted_page:
|
||||||
|
|
||||||
for (i = 0; i < trx_doublewrite->first_free; i++) {
|
for (i = 0; i < trx_doublewrite->first_free; i++) {
|
||||||
block = trx_doublewrite->buf_block_arr[i];
|
block = trx_doublewrite->buf_block_arr[i];
|
||||||
|
/* TODO: page_zip */
|
||||||
if (mach_read_from_4(block->frame + FIL_PAGE_LSN + 4)
|
if (mach_read_from_4(block->frame + FIL_PAGE_LSN + 4)
|
||||||
!= mach_read_from_4(block->frame + UNIV_PAGE_SIZE
|
!= mach_read_from_4(block->frame + UNIV_PAGE_SIZE
|
||||||
- FIL_PAGE_END_LSN_OLD_CHKSUM + 4)) {
|
- FIL_PAGE_END_LSN_OLD_CHKSUM + 4)) {
|
||||||
|
@ -472,6 +474,9 @@ buf_flush_init_for_writing(
|
||||||
page, zip_size)
|
page, zip_size)
|
||||||
: BUF_NO_CHECKSUM_MAGIC);
|
: BUF_NO_CHECKSUM_MAGIC);
|
||||||
return;
|
return;
|
||||||
|
case FIL_PAGE_INODE:
|
||||||
|
case FIL_PAGE_IBUF_BITMAP:
|
||||||
|
case FIL_PAGE_TYPE_FSP_HDR:
|
||||||
case FIL_PAGE_TYPE_XDES:
|
case FIL_PAGE_TYPE_XDES:
|
||||||
/* This is essentially an uncompressed page. */
|
/* This is essentially an uncompressed page. */
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -75,7 +75,14 @@ dict_create_sys_tables_tuple(
|
||||||
dfield = dtuple_get_nth_field(entry, 3);
|
dfield = dtuple_get_nth_field(entry, 3);
|
||||||
|
|
||||||
ptr = mem_heap_alloc(heap, 4);
|
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);
|
dfield_set_data(dfield, ptr, 4);
|
||||||
/* 6: MIX_ID ---------------------------*/
|
/* 6: MIX_ID ---------------------------*/
|
||||||
|
|
|
@ -489,7 +489,6 @@ fil_node_create(
|
||||||
}
|
}
|
||||||
|
|
||||||
space->size += size;
|
space->size += size;
|
||||||
space->zip_size = 0;/* TODO */
|
|
||||||
|
|
||||||
node->space = space;
|
node->space = space;
|
||||||
|
|
||||||
|
@ -2674,6 +2673,7 @@ fil_reset_too_high_lsns(
|
||||||
|
|
||||||
file_size = os_file_get_size_as_iblonglong(file);
|
file_size = os_file_get_size_as_iblonglong(file);
|
||||||
|
|
||||||
|
/* TODO: page_zip */
|
||||||
for (offset = 0; offset < file_size; offset += UNIV_PAGE_SIZE) {
|
for (offset = 0; offset < file_size; offset += UNIV_PAGE_SIZE) {
|
||||||
success = os_file_read(file, page,
|
success = os_file_read(file, page,
|
||||||
(ulint)(offset & 0xFFFFFFFFUL),
|
(ulint)(offset & 0xFFFFFFFFUL),
|
||||||
|
|
|
@ -3943,7 +3943,7 @@ consecutive_loop:
|
||||||
|
|
||||||
/* Do the i/o with ordinary, synchronous i/o functions: */
|
/* Do the i/o with ordinary, synchronous i/o functions: */
|
||||||
if (slot->type == OS_FILE_WRITE) {
|
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)
|
if ((total_len % UNIV_PAGE_SIZE != 0)
|
||||||
|| (slot->offset % UNIV_PAGE_SIZE != 0)) {
|
|| (slot->offset % UNIV_PAGE_SIZE != 0)) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
|
@ -3953,14 +3953,13 @@ consecutive_loop:
|
||||||
(ulong) total_len);
|
(ulong) total_len);
|
||||||
ut_error;
|
ut_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
os_file_check_page_trailers(combined_buf, total_len);
|
os_file_check_page_trailers(combined_buf, total_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = os_file_write(slot->name, slot->file, combined_buf,
|
ret = os_file_write(slot->name, slot->file, combined_buf,
|
||||||
slot->offset, slot->offset_high, total_len);
|
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);
|
os_file_check_page_trailers(combined_buf, total_len);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -925,13 +925,8 @@ skip_size_check:
|
||||||
|
|
||||||
ut_a(fil_validate());
|
ut_a(fil_validate());
|
||||||
|
|
||||||
if (srv_data_file_is_raw_partition[i]) {
|
fil_node_create(name, srv_data_file_sizes[i], 0,
|
||||||
|
srv_data_file_is_raw_partition[i] != 0);
|
||||||
fil_node_create(name, srv_data_file_sizes[i], 0, TRUE);
|
|
||||||
} else {
|
|
||||||
fil_node_create(name, srv_data_file_sizes[i], 0,
|
|
||||||
FALSE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ios = 0;
|
ios = 0;
|
||||||
|
|
Loading…
Reference in a new issue