Commit b15d26d6 authored by marko's avatar marko

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.
parent 168fa020
...@@ -309,6 +309,7 @@ corrupted_page: ...@@ -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: ...@@ -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: ...@@ -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( ...@@ -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( ...@@ -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);
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); 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( ...@@ -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( ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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, TRUE);
} else {
fil_node_create(name, srv_data_file_sizes[i], 0, fil_node_create(name, srv_data_file_sizes[i], 0,
FALSE); srv_data_file_is_raw_partition[i] != 0);
}
} }
ios = 0; ios = 0;
......
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