From 204434f2d08fa7b1bcb748b2a07ab76d9ad0ae31 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 13 Jun 2019 20:31:41 +0300 Subject: Backport aria usage if LSN_FMT from 10.3 This helps when merging code between releases --- storage/maria/ma_blockrec.c | 2 +- storage/maria/ma_checkpoint.c | 4 +- storage/maria/ma_loghandler.c | 318 ++++++++++----------- storage/maria/ma_loghandler_lsn.h | 3 +- storage/maria/ma_open.c | 2 +- storage/maria/ma_pagecache.c | 2 +- storage/maria/ma_recovery.c | 64 ++--- storage/maria/maria_chk.c | 4 +- storage/maria/maria_read_log.c | 6 +- storage/maria/unittest/ma_test_loghandler-t.c | 30 +- .../unittest/ma_test_loghandler_first_lsn-t.c | 6 +- .../maria/unittest/ma_test_loghandler_max_lsn-t.c | 6 +- .../unittest/ma_test_loghandler_multigroup-t.c | 26 +- .../unittest/ma_test_loghandler_multithread-t.c | 6 +- .../maria/unittest/ma_test_loghandler_noflush-t.c | 2 +- 15 files changed, 241 insertions(+), 240 deletions(-) diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c index b4adf2c1157..9effdd7cd2e 100644 --- a/storage/maria/ma_blockrec.c +++ b/storage/maria/ma_blockrec.c @@ -7549,7 +7549,7 @@ void _ma_print_block_info(MARIA_SHARE *share, uchar *buff) { LSN lsn= lsn_korr(buff); - printf("LSN: %lu,0x%lx type: %u dir_entries: %u dir_free: %u empty_space: %u\n", + printf("LSN: " LSN_FMT " type: %u dir_entries: %u dir_free: %u empty_space: %u\n", LSN_IN_PARTS(lsn), (uint)buff[PAGE_TYPE_OFFSET], (uint)buff[DIR_COUNT_OFFSET], diff --git a/storage/maria/ma_checkpoint.c b/storage/maria/ma_checkpoint.c index c615e713a5f..79b33e0b1fc 100644 --- a/storage/maria/ma_checkpoint.c +++ b/storage/maria/ma_checkpoint.c @@ -170,7 +170,7 @@ static int really_execute_checkpoint(void) "Horizon" is a lower bound of the LSN of the next log record. */ checkpoint_start_log_horizon= translog_get_horizon(); - DBUG_PRINT("info",("checkpoint_start_log_horizon (%lu,0x%lx)", + DBUG_PRINT("info",("checkpoint_start_log_horizon " LSN_FMT "", LSN_IN_PARTS(checkpoint_start_log_horizon))); lsn_store(checkpoint_start_log_horizon_char, checkpoint_start_log_horizon); @@ -375,7 +375,7 @@ static void flush_all_tables(int what_to_flush) MA_STATE_INFO_WRITE_DONT_MOVE_OFFSET| MA_STATE_INFO_WRITE_LOCK); DBUG_PRINT("maria_flush_states", - ("is_of_horizon: LSN (%lu,0x%lx)", + ("is_of_horizon: LSN " LSN_FMT "", LSN_IN_PARTS(info->s->state.is_of_horizon))); break; case 2: diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index d35a4353037..03faadbb42a 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -1175,7 +1175,7 @@ static my_bool translog_max_lsn_to_header(File file, LSN lsn) my_bool rc; DBUG_ENTER("translog_max_lsn_to_header"); DBUG_PRINT("enter", ("File descriptor: %ld " - "lsn: (%lu,0x%lx)", + "lsn: " LSN_FMT, (long) file, LSN_IN_PARTS(lsn))); @@ -1248,7 +1248,7 @@ my_bool translog_read_file_header(LOGHANDLER_FILE_INFO *desc, File file) translog_interpret_file_header(desc, page_buff); DBUG_PRINT("info", ("timestamp: %llu aria ver: %lu mysql ver: %lu " "server id %lu page size %lu file number %lu " - "max lsn: (%lu,0x%lx)", + "max lsn: " LSN_FMT, (ulonglong) desc->timestamp, (ulong) desc->maria_version, (ulong) desc->mysql_version, @@ -1277,7 +1277,7 @@ static my_bool translog_set_lsn_for_files(uint32 from_file, uint32 to_file, { uint32 file; DBUG_ENTER("translog_set_lsn_for_files"); - DBUG_PRINT("enter", ("From: %lu to: %lu lsn: (%lu,0x%lx) locked: %d", + DBUG_PRINT("enter", ("From: %lu to: %lu lsn: " LSN_FMT " locked: %d", (ulong) from_file, (ulong) to_file, LSN_IN_PARTS(lsn), is_locked)); @@ -1506,7 +1506,7 @@ LSN translog_get_file_max_lsn_stored(uint32 file) info.max_lsn= LSN_ERROR; } - DBUG_PRINT("info", ("Max lsn: (%lu,0x%lx)", LSN_IN_PARTS(info.max_lsn))); + DBUG_PRINT("info", ("Max lsn: " LSN_FMT, LSN_IN_PARTS(info.max_lsn))); DBUG_RETURN(info.max_lsn); } } @@ -1792,7 +1792,7 @@ static void translog_new_page_header(TRANSLOG_ADDRESS *horizon, if (log_descriptor.flags & TRANSLOG_PAGE_CRC) { #ifndef DBUG_OFF - DBUG_PRINT("info", ("write 0x11223344 CRC to (%lu,0x%lx)", + DBUG_PRINT("info", ("write 0x11223344 CRC to " LSN_FMT, LSN_IN_PARTS(*horizon))); /* This will be overwritten by real CRC; This is just for debugging */ int4store(ptr, 0x11223344); @@ -1819,7 +1819,7 @@ static void translog_new_page_header(TRANSLOG_ADDRESS *horizon, } cursor->ptr= ptr; DBUG_PRINT("info", ("NewP buffer #%u: 0x%lx chaser: %d Size: %lu (%lu) " - "Horizon: (%lu,0x%lx)", + "Horizon: " LSN_FMT, (uint) cursor->buffer->buffer_no, (ulong) cursor->buffer, cursor->chaser, (ulong) cursor->buffer->size, (ulong) (cursor->ptr - cursor->buffer->buffer), @@ -1924,14 +1924,14 @@ static void translog_finish_page(TRANSLOG_ADDRESS *horizon, uchar *page= cursor->ptr - cursor->current_page_fill; DBUG_ENTER("translog_finish_page"); DBUG_PRINT("enter", ("Buffer: #%u 0x%lx " - "Buffer addr: (%lu,0x%lx) " - "Page addr: (%lu,0x%lx) " + "Buffer addr: " LSN_FMT " " + "Page addr: " LSN_FMT " " "size:%lu (%lu) Pg:%u left:%u", (uint) cursor->buffer_no, (ulong) cursor->buffer, LSN_IN_PARTS(cursor->buffer->offset), - (ulong) LSN_FILE_NO(*horizon), - (ulong) (LSN_OFFSET(*horizon) - - cursor->current_page_fill), + (uint) LSN_FILE_NO(*horizon), + (uint) (LSN_OFFSET(*horizon) - + cursor->current_page_fill), (ulong) cursor->buffer->size, (ulong) (cursor->ptr -cursor->buffer->buffer), (uint) cursor->current_page_fill, (uint) left)); @@ -2197,7 +2197,7 @@ static my_bool translog_buffer_next(TRANSLOG_ADDRESS *horizon, my_bool chasing= cursor->chaser; DBUG_ENTER("translog_buffer_next"); - DBUG_PRINT("info", ("horizon: (%lu,0x%lx) chasing: %d", + DBUG_PRINT("info", ("horizon: " LSN_FMT " chasing: %d", LSN_IN_PARTS(log_descriptor.horizon), chasing)); DBUG_ASSERT(cmp_translog_addr(log_descriptor.horizon, *horizon) >= 0); @@ -2249,7 +2249,7 @@ static my_bool translog_buffer_next(TRANSLOG_ADDRESS *horizon, BUFFER_MAX_LSN(log_descriptor.buffers + old_buffer_no); } log_descriptor.buffers[old_buffer_no].next_buffer_offset= new_buffer->offset; - DBUG_PRINT("info", ("prev_last_lsn set to (%lu,0x%lx) buffer: 0x%lx", + DBUG_PRINT("info", ("prev_last_lsn set to " LSN_FMT " buffer: 0x%lx", LSN_IN_PARTS(new_buffer->prev_last_lsn), (ulong) new_buffer)); translog_new_page_header(horizon, cursor); @@ -2274,9 +2274,9 @@ static void translog_set_sent_to_disk(struct st_translog_buffer *buffer) DBUG_ENTER("translog_set_sent_to_disk"); mysql_mutex_lock(&log_descriptor.sent_to_disk_lock); - DBUG_PRINT("enter", ("lsn: (%lu,0x%lx) in_buffers: (%lu,0x%lx) " - "in_buffers_only: (%lu,0x%lx) start: (%lu,0x%lx) " - "sent_to_disk: (%lu,0x%lx)", + DBUG_PRINT("enter", ("lsn: " LSN_FMT " in_buffers: " LSN_FMT " " + "in_buffers_only: " LSN_FMT " start: " LSN_FMT " " + "sent_to_disk: " LSN_FMT, LSN_IN_PARTS(lsn), LSN_IN_PARTS(in_buffers), LSN_IN_PARTS(log_descriptor.log_start), @@ -2314,8 +2314,8 @@ static void translog_set_only_in_buffers(TRANSLOG_ADDRESS in_buffers) { DBUG_ENTER("translog_set_only_in_buffers"); mysql_mutex_lock(&log_descriptor.sent_to_disk_lock); - DBUG_PRINT("enter", ("in_buffers: (%lu,0x%lx) " - "in_buffers_only: (%lu,0x%lx)", + DBUG_PRINT("enter", ("in_buffers: " LSN_FMT " " + "in_buffers_only: " LSN_FMT, LSN_IN_PARTS(in_buffers), LSN_IN_PARTS(log_descriptor.in_buffers_only))); /* LSN_IMPOSSIBLE == 0 => it will work for very first time */ @@ -2369,7 +2369,7 @@ static LSN translog_get_sent_to_disk() DBUG_ENTER("translog_get_sent_to_disk"); mysql_mutex_lock(&log_descriptor.sent_to_disk_lock); lsn= log_descriptor.sent_to_disk; - DBUG_PRINT("info", ("sent to disk up to (%lu,0x%lx)", LSN_IN_PARTS(lsn))); + DBUG_PRINT("info", ("sent to disk up to " LSN_FMT, LSN_IN_PARTS(lsn))); mysql_mutex_unlock(&log_descriptor.sent_to_disk_lock); DBUG_RETURN(lsn); } @@ -2578,8 +2578,8 @@ my_bool translog_prev_buffer_flush_wait(struct st_translog_buffer *buffer) TRANSLOG_FILE *file= buffer->file; uint8 ver= buffer->ver; DBUG_ENTER("translog_prev_buffer_flush_wait"); - DBUG_PRINT("enter", ("buffer: 0x%lx #%u offset: (%lu,0x%lx) " - "prev sent: (%lu,0x%lx) prev offset: (%lu,0x%lx)", + DBUG_PRINT("enter", ("buffer: 0x%lx #%u offset: " LSN_FMT " " + "prev sent: " LSN_FMT " prev offset: " LSN_FMT, (ulong) buffer, (uint) buffer->buffer_no, LSN_IN_PARTS(buffer->offset), LSN_IN_PARTS(buffer->prev_sent_to_disk), @@ -2619,8 +2619,8 @@ static my_bool translog_buffer_flush(struct st_translog_buffer *buffer) uint skipped_data; DBUG_ENTER("translog_buffer_flush"); DBUG_PRINT("enter", - ("Buffer: #%u 0x%lx file: %d offset: (%lu,0x%lx) size: %lu", - (uint) buffer->buffer_no, (ulong) buffer, + ("Buffer: #%u %p file: %d offset: " LSN_FMT " size: %lu", + (uint) buffer->buffer_no, buffer, buffer->file->handler.file, LSN_IN_PARTS(buffer->offset), (ulong) buffer->size)); @@ -2659,11 +2659,11 @@ static my_bool translog_buffer_flush(struct st_translog_buffer *buffer) #ifndef DBUG_OFF TRANSLOG_ADDRESS addr= (buffer->offset + i); #endif - DBUG_PRINT("info", ("send log form %lu till %lu address: (%lu,0x%lx) " - "page #: %lu buffer size: %lu buffer: 0x%lx", + DBUG_PRINT("info", ("send log form %lu till %lu address: " LSN_FMT " " + "page #: %lu buffer size: %lu buffer: %p", (ulong) i, (ulong) (i + TRANSLOG_PAGE_SIZE), LSN_IN_PARTS(addr), (ulong) pg, (ulong) buffer->size, - (ulong) buffer)); + buffer)); DBUG_ASSERT(log_descriptor.pagecache->block_size == TRANSLOG_PAGE_SIZE); DBUG_ASSERT(i + TRANSLOG_PAGE_SIZE <= buffer->size); if (translog_status != TRANSLOG_OK && translog_status != TRANSLOG_SHUTDOWN) @@ -2680,9 +2680,9 @@ static my_bool translog_buffer_flush(struct st_translog_buffer *buffer) TRANSLOG_PAGE_SIZE - skipped_data)) { DBUG_PRINT("error", - ("Can't write page (%lu,0x%lx) to pagecache, error: %d", - (ulong) buffer->file->number, - (ulong) (LSN_OFFSET(buffer->offset)+ i), + ("Can't write page " LSN_FMT " to pagecache, error: %d", + buffer->file->number, + (uint) (LSN_OFFSET(buffer->offset)+ i), my_errno)); translog_stop_writing(); DBUG_RETURN(1); @@ -2695,10 +2695,10 @@ static my_bool translog_buffer_flush(struct st_translog_buffer *buffer) LSN_OFFSET(buffer->offset) + buffer->skipped_data, log_write_flags)) { - DBUG_PRINT("error", ("Can't write buffer (%lu,0x%lx) size %lu " + DBUG_PRINT("error", ("Can't write buffer " LSN_FMT " size %lu " "to the disk (%d)", - (ulong) file->handler.file, - (ulong) LSN_OFFSET(buffer->offset), + (uint) file->handler.file, + (uint) LSN_OFFSET(buffer->offset), (ulong) buffer->size, errno)); translog_stop_writing(); DBUG_RETURN(1); @@ -2918,10 +2918,10 @@ static my_bool translog_page_validator(int res, PAGECACHE_IO_HOOK_ARGS *args) if ((pgcache_page_no_t) uint3korr(page) != page_no || (uint32) uint3korr(page + 3) != data->number) { - DBUG_PRINT("error", ("Page (%lu,0x%lx): " + DBUG_PRINT("error", ("Page " LSN_FMT ": " "page address written in the page is incorrect: " "File %lu instead of %lu or page %lu instead of %lu", - (ulong) data->number, (ulong) offset, + (uint)data->number, (uint)offset, (ulong) uint3korr(page + 3), (ulong) data->number, (ulong) uint3korr(page), (ulong) page_no)); @@ -2932,9 +2932,9 @@ static my_bool translog_page_validator(int res, PAGECACHE_IO_HOOK_ARGS *args) if (flags & ~(TRANSLOG_PAGE_CRC | TRANSLOG_SECTOR_PROTECTION | TRANSLOG_RECORD_CRC)) { - DBUG_PRINT("error", ("Page (%lu,0x%lx): " + DBUG_PRINT("error", ("Page " LSN_FMT ": " "Garbage in the page flags field detected : %x", - (ulong) data->number, (ulong) offset, + (uint) data->number, (uint) offset, (uint) flags)); DBUG_RETURN(1); } @@ -2946,9 +2946,9 @@ static my_bool translog_page_validator(int res, PAGECACHE_IO_HOOK_ARGS *args) this_page_page_overhead); if (crc != uint4korr(page_pos)) { - DBUG_PRINT("error", ("Page (%lu,0x%lx): " + DBUG_PRINT("error", ("Page " LSN_FMT ": " "CRC mismatch: calculated: %lx on the page %lx", - (ulong) data->number, (ulong) offset, + (uint) data->number, (uint) offset, (ulong) crc, (ulong) uint4korr(page_pos))); DBUG_RETURN(1); } @@ -3029,10 +3029,10 @@ static uchar *translog_get_page(TRANSLOG_VALIDATOR_DATA *data, uchar *buffer, uint32 file_no= LSN_FILE_NO(addr); TRANSLOG_FILE *file; DBUG_ENTER("translog_get_page"); - DBUG_PRINT("enter", ("File: %lu Offset: %lu(0x%lx)", - (ulong) file_no, - (ulong) LSN_OFFSET(addr), - (ulong) LSN_OFFSET(addr))); + DBUG_PRINT("enter", ("File: %u Offset: %u(0x%x)", + file_no, + (uint) LSN_OFFSET(addr), + (uint) LSN_OFFSET(addr))); /* it is really page address */ DBUG_ASSERT(LSN_OFFSET(addr) % TRANSLOG_PAGE_SIZE == 0); @@ -3042,7 +3042,7 @@ static uchar *translog_get_page(TRANSLOG_VALIDATOR_DATA *data, uchar *buffer, restart: in_buffers= translog_only_in_buffers(); - DBUG_PRINT("info", ("in_buffers: (%lu,0x%lx)", + DBUG_PRINT("info", ("in_buffers: " LSN_FMT, LSN_IN_PARTS(in_buffers))); if (in_buffers != LSN_IMPOSSIBLE && cmp_translog_addr(addr, in_buffers) >= 0) @@ -3424,8 +3424,8 @@ static my_bool translog_truncate_log(TRANSLOG_ADDRESS addr) uchar page_buff[TRANSLOG_PAGE_SIZE]; DBUG_ENTER("translog_truncate_log"); /* TODO: write warning to the client */ - DBUG_PRINT("warning", ("removing all records from (%lu,0x%lx) " - "till (%lu,0x%lx)", + DBUG_PRINT("warning", ("removing all records from " LSN_FMT " " + "till " LSN_FMT, LSN_IN_PARTS(addr), LSN_IN_PARTS(log_descriptor.horizon))); DBUG_ASSERT(cmp_translog_addr(addr, log_descriptor.horizon) < 0); @@ -4139,7 +4139,7 @@ my_bool translog_init_with_table(const char *directory, There is no harm in leaving it "as-is". */ log_descriptor.previous_flush_horizon= log_descriptor.horizon; - DBUG_PRINT("info", ("previous_flush_horizon: (%lu,0x%lx)", + DBUG_PRINT("info", ("previous_flush_horizon: " LSN_FMT, LSN_IN_PARTS(log_descriptor. previous_flush_horizon))); DBUG_RETURN(0); @@ -4167,7 +4167,7 @@ my_bool translog_init_with_table(const char *directory, translog_size_t rec_len; int len; uchar buffer[1]; - DBUG_PRINT("info", ("going to check the last found record (%lu,0x%lx)", + DBUG_PRINT("info", ("going to check the last found record " LSN_FMT, LSN_IN_PARTS(last_lsn))); len= @@ -4176,7 +4176,7 @@ my_bool translog_init_with_table(const char *directory, len == RECHEADER_READ_EOF)) { DBUG_PRINT("error", ("unexpected end of log or record during " - "reading record header: (%lu,0x%lx) len: %d", + "reading record header: " LSN_FMT " len: %d", LSN_IN_PARTS(last_lsn), len)); if (readonly) log_descriptor.log_start= log_descriptor.horizon= last_lsn; @@ -4200,7 +4200,7 @@ my_bool translog_init_with_table(const char *directory, if (rec_len != 1) { DBUG_PRINT("error", ("unexpected end of log or record during " - "reading record body: (%lu,0x%lx) len: %d", + "reading record body: " LSN_FMT " len: %d", LSN_IN_PARTS(rec.lsn), len)); if (readonly) @@ -4218,7 +4218,7 @@ my_bool translog_init_with_table(const char *directory, } } log_descriptor.previous_flush_horizon= log_descriptor.horizon; - DBUG_PRINT("info", ("previous_flush_horizon: (%lu,0x%lx)", + DBUG_PRINT("info", ("previous_flush_horizon: " LSN_FMT, LSN_IN_PARTS(log_descriptor.previous_flush_horizon))); DBUG_RETURN(0); err: @@ -4237,7 +4237,7 @@ static void translog_buffer_destroy(struct st_translog_buffer *buffer) { DBUG_ENTER("translog_buffer_destroy"); DBUG_PRINT("enter", - ("Buffer #%u: 0x%lx file: %d offset: (%lu,0x%lx) size: %lu", + ("Buffer #%u: 0x%lx file: %d offset: " LSN_FMT " size: %lu", (uint) buffer->buffer_no, (ulong) buffer, (buffer->file ? buffer->file->handler.file : -1), LSN_IN_PARTS(buffer->offset), @@ -4502,7 +4502,7 @@ static my_bool translog_write_parts_on_page(TRANSLOG_ADDRESS *horizon, } } while (left); - DBUG_PRINT("info", ("Horizon: (%lu,0x%lx) Length %lu(0x%lx)", + DBUG_PRINT("info", ("Horizon: " LSN_FMT " Length %lu(0x%lx)", LSN_IN_PARTS(*horizon), (ulong) length, (ulong) length)); parts->current= cur; @@ -4516,7 +4516,7 @@ static my_bool translog_write_parts_on_page(TRANSLOG_ADDRESS *horizon, */ DBUG_PRINT("info", ("Write parts buffer #%u: 0x%lx " "chaser: %d Size: %lu (%lu) " - "Horizon: (%lu,0x%lx) buff offset: 0x%lx", + "Horizon: " LSN_FMT " buff offset: 0x%lx", (uint) cursor->buffer->buffer_no, (ulong) cursor->buffer, cursor->chaser, (ulong) cursor->buffer->size, (ulong) (cursor->ptr - cursor->buffer->buffer), @@ -4747,7 +4747,7 @@ static my_bool translog_advance_pointer(int pages, uint16 last_page_data, pages * TRANSLOG_PAGE_SIZE + last_page_offset); translog_size_t buffer_end_offset, file_end_offset, min_offset; DBUG_ENTER("translog_advance_pointer"); - DBUG_PRINT("enter", ("Pointer: (%lu, 0x%lx) + %u + %u pages + %u + %u", + DBUG_PRINT("enter", ("Pointer: " LSN_FMT " + %u + %u pages + %u + %u", LSN_IN_PARTS(log_descriptor.horizon), (uint) (TRANSLOG_PAGE_SIZE - log_descriptor.bc.current_page_fill), @@ -4799,20 +4799,20 @@ static my_bool translog_advance_pointer(int pages, uint16 last_page_data, file_end_offset= (TRANSLOG_PAGE_SIZE - log_descriptor.bc.current_page_fill); } - DBUG_PRINT("info", ("offset: %lu buffer_end_offs: %lu, " - "file_end_offs: %lu", - (ulong) offset, (ulong) buffer_end_offset, - (ulong) file_end_offset)); - DBUG_PRINT("info", ("Buff #%u %u (0x%lx) offset 0x%lx + size 0x%lx = " - "0x%lx (0x%lx)", - (uint) log_descriptor.bc.buffer->buffer_no, - (uint) log_descriptor.bc.buffer_no, - (ulong) log_descriptor.bc.buffer, - (ulong) LSN_OFFSET(log_descriptor.bc.buffer->offset), - (ulong) log_descriptor.bc.buffer->size, - (ulong) (LSN_OFFSET(log_descriptor.bc.buffer->offset) + - log_descriptor.bc.buffer->size), - (ulong) LSN_OFFSET(log_descriptor.horizon))); + DBUG_PRINT("info", ("offset: %u buffer_end_offs: %u, " + "file_end_offs: %u", + offset, buffer_end_offset, + file_end_offset)); + DBUG_PRINT("info", ("Buff #%u %u (%p) offset 0x%x + size 0x%x = " + "0x%x (0x%x)", + log_descriptor.bc.buffer->buffer_no, + log_descriptor.bc.buffer_no, + log_descriptor.bc.buffer, + (uint) LSN_OFFSET(log_descriptor.bc.buffer->offset), + log_descriptor.bc.buffer->size, + (uint) (LSN_OFFSET(log_descriptor.bc.buffer->offset) + + log_descriptor.bc.buffer->size), + (uint) LSN_OFFSET(log_descriptor.horizon))); DBUG_ASSERT(LSN_OFFSET(log_descriptor.bc.buffer->offset) + log_descriptor.bc.buffer->size == LSN_OFFSET(log_descriptor.horizon)); @@ -4845,9 +4845,9 @@ static my_bool translog_advance_pointer(int pages, uint16 last_page_data, /* TODO: check is it ptr or size enough */ log_descriptor.bc.buffer->size+= min_offset; log_descriptor.bc.ptr+= min_offset; - DBUG_PRINT("info", ("NewP buffer #%u: 0x%lx chaser: %d Size: %lu (%lu)", + DBUG_PRINT("info", ("NewP buffer #%u: %p chaser: %d Size: %lu (%lu)", (uint) log_descriptor.bc.buffer->buffer_no, - (ulong) log_descriptor.bc.buffer, + log_descriptor.bc.buffer, log_descriptor.bc.chaser, (ulong) log_descriptor.bc.buffer->size, (ulong) (log_descriptor.bc.ptr -log_descriptor.bc. @@ -4898,10 +4898,10 @@ end: used_buffs_add(buffs, log_descriptor.bc.buffer); log_descriptor.horizon+= offset; /* offset increasing */ log_descriptor.bc.current_page_fill= last_page_offset; - DBUG_PRINT("info", ("NewP buffer #%u: 0x%lx chaser: %d Size: %lu (%lu) " + DBUG_PRINT("info", ("NewP buffer #%u: %p chaser: %d Size: %lu (%lu) " "offset: %u last page: %u", (uint) log_descriptor.bc.buffer->buffer_no, - (ulong) log_descriptor.bc.buffer, + log_descriptor.bc.buffer, log_descriptor.bc.chaser, (ulong) log_descriptor.bc.buffer->size, (ulong) (log_descriptor.bc.ptr - @@ -4909,7 +4909,7 @@ end: buffer), (uint) offset, (uint) last_page_offset)); DBUG_PRINT("info", - ("pointer moved to: (%lu, 0x%lx)", + ("pointer moved to: " LSN_FMT, LSN_IN_PARTS(log_descriptor.horizon))); translog_check_cursor(&log_descriptor.bc); log_descriptor.bc.protected= 0; @@ -4999,7 +4999,7 @@ static uint translog_get_current_page_rest() static uint translog_get_current_buffer_rest() { - return ((log_descriptor.bc.buffer->buffer + TRANSLOG_WRITE_BUFFER - + return (uint)((log_descriptor.bc.buffer->buffer + TRANSLOG_WRITE_BUFFER - log_descriptor.bc.ptr) / TRANSLOG_PAGE_SIZE); } @@ -5046,7 +5046,7 @@ static inline void set_lsn(LSN *lsn, LSN value) *lsn= value; /* we generate LSN so something is not flushed in log */ log_descriptor.is_everything_flushed= 0; - DBUG_PRINT("info", ("new LSN appeared: (%lu,0x%lx)", LSN_IN_PARTS(value))); + DBUG_PRINT("info", ("new LSN appeared: " LSN_FMT, LSN_IN_PARTS(value))); DBUG_VOID_RETURN; } @@ -5143,9 +5143,9 @@ translog_write_variable_record_1group(LSN *lsn, (record_rest ? record_rest + 3 : 0), &cursor.buffs); log_descriptor.bc.buffer->last_lsn= *lsn; - DBUG_PRINT("info", ("last_lsn set to (%lu,0x%lx) buffer: 0x%lx", + DBUG_PRINT("info", ("last_lsn set to " LSN_FMT " buffer: %p", LSN_IN_PARTS(log_descriptor.bc.buffer->last_lsn), - (ulong) log_descriptor.bc.buffer)); + log_descriptor.bc.buffer)); translog_unlock(); @@ -5172,7 +5172,7 @@ translog_write_variable_record_1group(LSN *lsn, /* fill the pages */ translog_write_parts_on_page(&horizon, &cursor, first_page, parts); - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx)", + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT, LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon))); @@ -5181,7 +5181,7 @@ translog_write_variable_record_1group(LSN *lsn, if (translog_write_variable_record_chunk2_page(parts, &horizon, &cursor)) goto error; - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx)", + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT, LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon))); } @@ -5193,7 +5193,7 @@ translog_write_variable_record_1group(LSN *lsn, page_capacity_chunk_2 - 2, &horizon, &cursor)) goto error; - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx)", + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT, LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon))); DBUG_ASSERT(cursor.current_page_fill == TRANSLOG_PAGE_SIZE); @@ -5203,11 +5203,11 @@ translog_write_variable_record_1group(LSN *lsn, record_rest, &horizon, &cursor)) goto error; - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx)", - (ulong) LSN_FILE_NO(log_descriptor.horizon), - (ulong) LSN_OFFSET(log_descriptor.horizon), - (ulong) LSN_FILE_NO(horizon), - (ulong) LSN_OFFSET(horizon))); + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT, + (uint) LSN_FILE_NO(log_descriptor.horizon), + (uint) LSN_OFFSET(log_descriptor.horizon), + (uint) LSN_FILE_NO(horizon), + (uint) LSN_OFFSET(horizon))); translog_buffer_lock(cursor.buffer); translog_buffer_decrease_writers(cursor.buffer); @@ -5279,9 +5279,9 @@ translog_write_variable_record_1chunk(LSN *lsn, &log_descriptor.bc, parts->total_record_length, parts); log_descriptor.bc.buffer->last_lsn= *lsn; - DBUG_PRINT("info", ("last_lsn set to (%lu,0x%lx) buffer: 0x%lx", + DBUG_PRINT("info", ("last_lsn set to " LSN_FMT " buffer: %p", LSN_IN_PARTS(log_descriptor.bc.buffer->last_lsn), - (ulong) log_descriptor.bc.buffer)); + log_descriptor.bc.buffer)); translog_unlock(); /* @@ -5326,9 +5326,9 @@ static uchar *translog_put_LSN_diff(LSN base_lsn, LSN lsn, uchar *dst) { uint64 diff; DBUG_ENTER("translog_put_LSN_diff"); - DBUG_PRINT("enter", ("Base: (%lu,0x%lx) val: (%lu,0x%lx) dst: 0x%lx", + DBUG_PRINT("enter", ("Base: " LSN_FMT " val: " LSN_FMT " dst: %p", LSN_IN_PARTS(base_lsn), LSN_IN_PARTS(lsn), - (ulong) dst)); + dst)); DBUG_ASSERT(base_lsn > lsn); diff= base_lsn - lsn; DBUG_PRINT("info", ("Diff: 0x%llx", (ulonglong) diff)); @@ -5372,7 +5372,7 @@ static uchar *translog_put_LSN_diff(LSN base_lsn, LSN lsn, uchar *dst) dst[1]= 1; lsn_store(dst + 2, lsn); } - DBUG_PRINT("info", ("new dst: 0x%lx", (ulong) dst)); + DBUG_PRINT("info", ("new dst: %p", dst)); DBUG_RETURN(dst); } @@ -5411,7 +5411,7 @@ static uchar *translog_get_LSN_from_diff(LSN base_lsn, uchar *src, uchar *dst) uint32 file_no, rec_offset; uint8 code; DBUG_ENTER("translog_get_LSN_from_diff"); - DBUG_PRINT("enter", ("Base: (%lu,0x%lx) src: 0x%lx dst 0x%lx", + DBUG_PRINT("enter", ("Base: " LSN_FMT " src: 0x%lx dst 0x%lx", LSN_IN_PARTS(base_lsn), (ulong) src, (ulong) dst)); first_byte= *((uint8*) src); code= first_byte >> 6; /* Length is in 2 most significant bits */ @@ -5729,7 +5729,7 @@ translog_write_variable_record_mgroup(LSN *lsn, translog_write_data_on_page(&horizon, &cursor, 1, chunk2_header); translog_write_parts_on_page(&horizon, &cursor, first_page - 1, parts); - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx) " + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT " " "Left %lu", LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon), @@ -5741,8 +5741,8 @@ translog_write_variable_record_mgroup(LSN *lsn, if (translog_write_variable_record_chunk2_page(parts, &horizon, &cursor)) goto err; - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) " - "local: (%lu,0x%lx) " + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " " + "local: " LSN_FMT " " "Left: %lu", LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon), @@ -5910,7 +5910,7 @@ translog_write_variable_record_mgroup(LSN *lsn, DBUG_PRINT("info", ("chunk 2 to finish first page")); translog_write_data_on_page(&horizon, &cursor, 1, chunk2_header); translog_write_parts_on_page(&horizon, &cursor, first_page - 1, parts); - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx) " + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT " " "Left: %lu", LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon), @@ -5927,7 +5927,7 @@ translog_write_variable_record_mgroup(LSN *lsn, int2store(chunk3_header + 1, chunk3_size); translog_write_data_on_page(&horizon, &cursor, 3, chunk3_header); translog_write_parts_on_page(&horizon, &cursor, chunk3_size, parts); - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx) " + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT " " "Left: %lu", LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon), @@ -5945,7 +5945,7 @@ translog_write_variable_record_mgroup(LSN *lsn, if (translog_write_variable_record_chunk2_page(parts, &horizon, &cursor)) goto err; - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx) " + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT " " "Left: %lu", LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon), @@ -5959,7 +5959,7 @@ translog_write_variable_record_mgroup(LSN *lsn, chunk3_size, &horizon, &cursor)) goto err; - DBUG_PRINT("info", ("absolute horizon: (%lu,0x%lx) local: (%lu,0x%lx)", + DBUG_PRINT("info", ("absolute horizon: " LSN_FMT " local: " LSN_FMT, LSN_IN_PARTS(log_descriptor.horizon), LSN_IN_PARTS(horizon))); @@ -5994,9 +5994,9 @@ translog_write_variable_record_mgroup(LSN *lsn, translog_lock(); set_lsn(lsn, horizon); buffer_of_last_lsn->last_lsn= *lsn; - DBUG_PRINT("info", ("last_lsn set to (%lu,0x%lx) buffer: 0x%lx", + DBUG_PRINT("info", ("last_lsn set to " LSN_FMT " buffer: %p", LSN_IN_PARTS(buffer_of_last_lsn->last_lsn), - (ulong) buffer_of_last_lsn)); + buffer_of_last_lsn)); if (log_record_type_descriptor[type].inwrite_hook && (*log_record_type_descriptor[type].inwrite_hook) (type, trn, tbl_info, @@ -6131,7 +6131,7 @@ static my_bool translog_write_variable_record(LSN *lsn, DBUG_ENTER("translog_write_variable_record"); translog_lock(); - DBUG_PRINT("info", ("horizon: (%lu,0x%lx)", + DBUG_PRINT("info", ("horizon: " LSN_FMT, LSN_IN_PARTS(log_descriptor.horizon))); page_rest= TRANSLOG_PAGE_SIZE - log_descriptor.bc.current_page_fill; DBUG_PRINT("info", ("header length: %u page_rest: %u", @@ -6247,7 +6247,7 @@ static my_bool translog_write_fixed_record(LSN *lsn, log_record_type_descriptor[type].fixed_length)); translog_lock(); - DBUG_PRINT("info", ("horizon: (%lu,0x%lx)", + DBUG_PRINT("info", ("horizon: " LSN_FMT, LSN_IN_PARTS(log_descriptor.horizon))); DBUG_ASSERT(log_descriptor.bc.current_page_fill <= TRANSLOG_PAGE_SIZE); @@ -6311,9 +6311,9 @@ static my_bool translog_write_fixed_record(LSN *lsn, parts->total_record_length, parts); log_descriptor.bc.buffer->last_lsn= *lsn; - DBUG_PRINT("info", ("last_lsn set to (%lu,0x%lx) buffer: 0x%lx", + DBUG_PRINT("info", ("last_lsn set to " LSN_FMT " buffer: %p", LSN_IN_PARTS(log_descriptor.bc.buffer->last_lsn), - (ulong) log_descriptor.bc.buffer)); + log_descriptor.bc.buffer)); err: translog_unlock(); @@ -6502,7 +6502,7 @@ my_bool translog_write_record(LSN *lsn, } } - DBUG_PRINT("info", ("LSN: (%lu,0x%lx)", LSN_IN_PARTS(*lsn))); + DBUG_PRINT("info", ("LSN: " LSN_FMT, LSN_IN_PARTS(*lsn))); DBUG_RETURN(rc); } @@ -6717,7 +6717,7 @@ my_bool translog_scanner_init(LSN lsn, my_bool use_direct) { DBUG_ENTER("translog_scanner_init"); - DBUG_PRINT("enter", ("Scanner: 0x%lx LSN: (%lu,0x%lx)", + DBUG_PRINT("enter", ("Scanner: 0x%lx LSN: " LSN_FMT, (ulong) scanner, LSN_IN_PARTS(lsn))); DBUG_ASSERT(translog_status == TRANSLOG_OK || translog_status == TRANSLOG_READONLY); @@ -6729,7 +6729,7 @@ my_bool translog_scanner_init(LSN lsn, scanner->direct_link= NULL; scanner->horizon= translog_get_horizon(); - DBUG_PRINT("info", ("horizon: (%lu,0x%lx)", LSN_IN_PARTS(scanner->horizon))); + DBUG_PRINT("info", ("horizon: " LSN_FMT, LSN_IN_PARTS(scanner->horizon))); /* lsn < horizon */ DBUG_ASSERT(lsn <= scanner->horizon); @@ -6777,11 +6777,11 @@ static my_bool translog_scanner_eol(TRANSLOG_SCANNER_DATA *scanner) { DBUG_ENTER("translog_scanner_eol"); DBUG_PRINT("enter", - ("Horizon: (%lu, 0x%lx) Current: (%lu, 0x%lx+0x%x=0x%lx)", + ("Horizon: " LSN_FMT " Current: (%u, 0x%x+0x%x=0x%x)", LSN_IN_PARTS(scanner->horizon), LSN_IN_PARTS(scanner->page_addr), (uint) scanner->page_offset, - (ulong) (LSN_OFFSET(scanner->page_addr) + scanner->page_offset))); + (uint) (LSN_OFFSET(scanner->page_addr) + scanner->page_offset))); if (scanner->horizon > (scanner->page_addr + scanner->page_offset)) { @@ -6886,7 +6886,7 @@ translog_get_next_chunk(TRANSLOG_SCANNER_DATA *scanner) translog_free_link(scanner->direct_link); if (translog_scanner_eof(scanner)) { - DBUG_PRINT("info", ("horizon: (%lu,0x%lx) pageaddr: (%lu,0x%lx)", + DBUG_PRINT("info", ("horizon: " LSN_FMT " pageaddr: " LSN_FMT, LSN_IN_PARTS(scanner->horizon), LSN_IN_PARTS(scanner->page_addr))); /* if it is log end it have to be caught before */ @@ -6987,7 +6987,7 @@ translog_variable_length_header(uchar *page, translog_size_t page_offset, src+= (2 + 2); page_rest= (uint16) (TRANSLOG_PAGE_SIZE - (src - page)); curr= 0; - header_to_skip= src - (page + page_offset); + header_to_skip= (uint) (src - (page + page_offset)); buff->chunk0_pages= 0; for (;;) @@ -7005,7 +7005,7 @@ translog_variable_length_header(uchar *page, translog_size_t page_offset, DBUG_ASSERT(curr < buff->groups_no); buff->groups[curr].addr= lsn_korr(src + i * (7 + 1)); buff->groups[curr].num= src[i * (7 + 1) + 7]; - DBUG_PRINT("info", ("group #%u (%lu,0x%lx) chunks: %u", + DBUG_PRINT("info", ("group #%u " LSN_FMT " chunks: %u", curr, LSN_IN_PARTS(buff->groups[curr].addr), (uint) buff->groups[curr].num)); @@ -7027,7 +7027,7 @@ translog_variable_length_header(uchar *page, translog_size_t page_offset, buff->chunk0_data_addr+= (header_to_skip + read_length * (7 + 1)); } buff->chunk0_data_len= chunk_len - 2 - read_length * (7 + 1); - DBUG_PRINT("info", ("Data address: (%lu,0x%lx) len: %u", + DBUG_PRINT("info", ("Data address: " LSN_FMT " len: %u", LSN_IN_PARTS(buff->chunk0_data_addr), buff->chunk0_data_len)); break; @@ -7150,7 +7150,7 @@ int translog_read_record_header_from_buffer(uchar *page, translog_status == TRANSLOG_READONLY); buff->type= (page[page_offset] & TRANSLOG_REC_TYPE); buff->short_trid= uint2korr(page + page_offset + 1); - DBUG_PRINT("info", ("Type %u, Short TrID %u, LSN (%lu,0x%lx)", + DBUG_PRINT("info", ("Type %u, Short TrID %u, LSN " LSN_FMT, (uint) buff->type, (uint)buff->short_trid, LSN_IN_PARTS(buff->lsn))); /* Read required bytes from the header and call hook */ @@ -7199,7 +7199,7 @@ int translog_read_record_header(LSN lsn, TRANSLOG_HEADER_BUFFER *buff) TRANSLOG_ADDRESS addr; TRANSLOG_VALIDATOR_DATA data; DBUG_ENTER("translog_read_record_header"); - DBUG_PRINT("enter", ("LSN: (%lu,0x%lx)", LSN_IN_PARTS(lsn))); + DBUG_PRINT("enter", ("LSN: " LSN_FMT, LSN_IN_PARTS(lsn))); DBUG_ASSERT(LSN_OFFSET(lsn) % TRANSLOG_PAGE_SIZE != 0); DBUG_ASSERT(translog_status == TRANSLOG_OK || translog_status == TRANSLOG_READONLY); @@ -7244,8 +7244,8 @@ int translog_read_record_header_scan(TRANSLOG_SCANNER_DATA *scanner, { translog_size_t res; DBUG_ENTER("translog_read_record_header_scan"); - DBUG_PRINT("enter", ("Scanner: Cur: (%lu,0x%lx) Hrz: (%lu,0x%lx) " - "Lst: (%lu,0x%lx) Offset: %u(%x) fixed %d", + DBUG_PRINT("enter", ("Scanner: Cur: " LSN_FMT " Hrz: " LSN_FMT " " + "Lst: " LSN_FMT " Offset: %u(%x) fixed %d", LSN_IN_PARTS(scanner->page_addr), LSN_IN_PARTS(scanner->horizon), LSN_IN_PARTS(scanner->last_file_page), @@ -7291,8 +7291,8 @@ int translog_read_next_record_header(TRANSLOG_SCANNER_DATA *scanner, DBUG_ENTER("translog_read_next_record_header"); buff->groups_no= 0; /* to be sure that we will free it right */ DBUG_PRINT("enter", ("scanner: 0x%lx", (ulong) scanner)); - DBUG_PRINT("info", ("Scanner: Cur: (%lu,0x%lx) Hrz: (%lu,0x%lx) " - "Lst: (%lu,0x%lx) Offset: %u(%x) fixed: %d", + DBUG_PRINT("info", ("Scanner: Cur: " LSN_FMT " Hrz: " LSN_FMT " " + "Lst: " LSN_FMT " Offset: %u(%x) fixed: %d", LSN_IN_PARTS(scanner->page_addr), LSN_IN_PARTS(scanner->horizon), LSN_IN_PARTS(scanner->last_file_page), @@ -7312,7 +7312,7 @@ int translog_read_next_record_header(TRANSLOG_SCANNER_DATA *scanner, buff->lsn= LSN_IMPOSSIBLE; DBUG_RETURN(RECHEADER_READ_EOF); } - DBUG_PRINT("info", ("Page: (%lu,0x%lx) offset: %lu byte: %x", + DBUG_PRINT("info", ("Page: " LSN_FMT " offset: %lu byte: %x", LSN_IN_PARTS(scanner->page_addr), (ulong) scanner->page_offset, (uint) scanner->page[scanner->page_offset])); @@ -7521,8 +7521,8 @@ translog_size_t translog_read_record(LSN lsn, DBUG_RETURN(0); } DBUG_PRINT("info", ("Offset: %lu length: %lu " - "Scanner: Cur: (%lu,0x%lx) Hrz: (%lu,0x%lx) " - "Lst: (%lu,0x%lx) Offset: %u(%x) fixed: %d", + "Scanner: Cur: " LSN_FMT " Hrz: " LSN_FMT " " + "Lst: " LSN_FMT " Offset: %u(%x) fixed: %d", (ulong) offset, (ulong) length, LSN_IN_PARTS(data->scanner.page_addr), LSN_IN_PARTS(data->scanner.horizon), @@ -7611,16 +7611,16 @@ static void translog_force_current_buffer_to_finish() uint16 UNINIT_VAR(current_page_fill), write_counter, previous_offset; DBUG_ENTER("translog_force_current_buffer_to_finish"); - DBUG_PRINT("enter", ("Buffer #%u 0x%lx " - "Buffer addr: (%lu,0x%lx) " - "Page addr: (%lu,0x%lx) " + DBUG_PRINT("enter", ("Buffer #%u %p " + "Buffer addr: " LSN_FMT " " + "Page addr: " LSN_FMT " " "size: %lu (%lu) Pg: %u left: %u in progress %u", (uint) old_buffer_no, - (ulong) old_buffer, + old_buffer, LSN_IN_PARTS(old_buffer->offset), - (ulong) LSN_FILE_NO(log_descriptor.horizon), - (ulong) (LSN_OFFSET(log_descriptor.horizon) - - log_descriptor.bc.current_page_fill), + LSN_FILE_NO(log_descriptor.horizon), + (uint) (LSN_OFFSET(log_descriptor.horizon) - + log_descriptor.bc.current_page_fill), (ulong) old_buffer->size, (ulong) (log_descriptor.bc.ptr -log_descriptor.bc. buffer->buffer), @@ -7654,10 +7654,10 @@ static void translog_force_current_buffer_to_finish() memset(log_descriptor.bc.ptr, TRANSLOG_FILLER, left); old_buffer->size+= left; - DBUG_PRINT("info", ("Finish Page buffer #%u: 0x%lx " + DBUG_PRINT("info", ("Finish Page buffer #%u: %p " "Size: %lu", (uint) old_buffer->buffer_no, - (ulong) old_buffer, + old_buffer, (ulong) old_buffer->size)); DBUG_ASSERT(old_buffer->buffer_no == log_descriptor.bc.buffer_no); @@ -7691,9 +7691,9 @@ static void translog_force_current_buffer_to_finish() log_descriptor.bc.write_counter= write_counter; log_descriptor.bc.previous_offset= previous_offset; new_buffer->prev_last_lsn= BUFFER_MAX_LSN(old_buffer); - DBUG_PRINT("info", ("prev_last_lsn set to (%lu,0x%lx) buffer: 0x%lx", + DBUG_PRINT("info", ("prev_last_lsn set to " LSN_FMT " buffer: %p", LSN_IN_PARTS(new_buffer->prev_last_lsn), - (ulong) new_buffer)); + new_buffer)); /* Advances this log pointer, increases writers and let other threads to @@ -7729,8 +7729,8 @@ static void translog_force_current_buffer_to_finish() */ DBUG_ASSERT(!old_buffer->is_closing_buffer); old_buffer->is_closing_buffer= 1; /* Other flushes will wait */ - DBUG_PRINT("enter", ("Buffer #%u 0x%lx is_closing_buffer set", - (uint) old_buffer->buffer_no, (ulong) old_buffer)); + DBUG_PRINT("enter", ("Buffer #%u %p is_closing_buffer set", + (uint) old_buffer->buffer_no, old_buffer)); translog_wait_for_writers(old_buffer); #ifndef DBUG_OFF /* We blocked flushing this buffer so the buffer should not changed */ @@ -7760,12 +7760,12 @@ static void translog_force_current_buffer_to_finish() uint32 crc= translog_crc(data + log_descriptor.page_overhead, TRANSLOG_PAGE_SIZE - log_descriptor.page_overhead); - DBUG_PRINT("info", ("CRC: 0x%lx", (ulong) crc)); + DBUG_PRINT("info", ("CRC: 0x%x", crc)); int4store(data + 3 + 3 + 1, crc); } old_buffer->is_closing_buffer= 0; - DBUG_PRINT("enter", ("Buffer #%u 0x%lx is_closing_buffer cleared", - (uint) old_buffer->buffer_no, (ulong) old_buffer)); + DBUG_PRINT("enter", ("Buffer #%u %p is_closing_buffer cleared", + (uint) old_buffer->buffer_no, old_buffer)); mysql_cond_broadcast(&old_buffer->waiting_filling_buffer); if (left) @@ -7804,7 +7804,7 @@ static void translog_force_current_buffer_to_finish() void translog_flush_wait_for_end(LSN lsn) { DBUG_ENTER("translog_flush_wait_for_end"); - DBUG_PRINT("enter", ("LSN: (%lu,0x%lx)", LSN_IN_PARTS(lsn))); + DBUG_PRINT("enter", ("LSN: " LSN_FMT, LSN_IN_PARTS(lsn))); mysql_mutex_assert_owner(&log_descriptor.log_flush_lock); while (cmp_translog_addr(log_descriptor.flushed, lsn) < 0) mysql_cond_wait(&log_descriptor.log_flush_cond, @@ -7824,7 +7824,7 @@ void translog_flush_set_new_goal_and_wait(TRANSLOG_ADDRESS lsn) { int flush_no= log_descriptor.flush_no; DBUG_ENTER("translog_flush_set_new_goal_and_wait"); - DBUG_PRINT("enter", ("LSN: (%lu,0x%lx)", LSN_IN_PARTS(lsn))); + DBUG_PRINT("enter", ("LSN: " LSN_FMT, LSN_IN_PARTS(lsn))); mysql_mutex_assert_owner(&log_descriptor.log_flush_lock); if (cmp_translog_addr(lsn, log_descriptor.next_pass_max_lsn) > 0) { @@ -7930,7 +7930,7 @@ void translog_flush_buffers(TRANSLOG_ADDRESS *lsn, start_buffer_no= i; DBUG_PRINT("info", - ("start from: %u current: %u prev last lsn: (%lu,0x%lx)", + ("start from: %u current: %u prev last lsn: " LSN_FMT, (uint) start_buffer_no, (uint) log_descriptor.bc.buffer_no, LSN_IN_PARTS(log_descriptor.bc.buffer->prev_last_lsn))); @@ -7944,7 +7944,7 @@ void translog_flush_buffers(TRANSLOG_ADDRESS *lsn, { struct st_translog_buffer *buffer= log_descriptor.bc.buffer; *lsn= log_descriptor.bc.buffer->last_lsn; /* fix lsn if it was horizon */ - DBUG_PRINT("info", ("LSN to flush fixed to last lsn: (%lu,0x%lx)", + DBUG_PRINT("info", ("LSN to flush fixed to last lsn: " LSN_FMT, LSN_IN_PARTS(*lsn))); last_buffer_no= log_descriptor.bc.buffer_no; log_descriptor.is_everything_flushed= 1; @@ -7971,7 +7971,7 @@ void translog_flush_buffers(TRANSLOG_ADDRESS *lsn, DBUG_ASSERT(log_descriptor.bc.buffer->prev_last_lsn != LSN_IMPOSSIBLE); /* fix lsn if it was horizon */ *lsn= log_descriptor.bc.buffer->prev_last_lsn; - DBUG_PRINT("info", ("LSN to flush fixed to prev last lsn: (%lu,0x%lx)", + DBUG_PRINT("info", ("LSN to flush fixed to prev last lsn: " LSN_FMT, LSN_IN_PARTS(*lsn))); last_buffer_no= ((log_descriptor.bc.buffer_no + TRANSLOG_BUFFERS_NO -1) % TRANSLOG_BUFFERS_NO); @@ -7990,10 +7990,10 @@ void translog_flush_buffers(TRANSLOG_ADDRESS *lsn, { struct st_translog_buffer *buffer= log_descriptor.buffers + i; translog_buffer_lock(buffer); - DBUG_PRINT("info", ("Check buffer: 0x%lx #: %u " - "prev last LSN: (%lu,0x%lx) " - "last LSN: (%lu,0x%lx) status: %s", - (ulong)(buffer), + DBUG_PRINT("info", ("Check buffer: %p #: %u " + "prev last LSN: " LSN_FMT " " + "last LSN: " LSN_FMT " status: %s", + buffer, (uint) i, LSN_IN_PARTS(buffer->prev_last_lsn), LSN_IN_PARTS(buffer->last_lsn), @@ -8007,7 +8007,7 @@ void translog_flush_buffers(TRANSLOG_ADDRESS *lsn, buffer->pre_force_close_horizon : buffer->offset + buffer->size); /* pre_force_close_horizon is reset during new buffer start */ - DBUG_PRINT("info", ("flush_horizon: (%lu,0x%lx)", + DBUG_PRINT("info", ("flush_horizon: " LSN_FMT, LSN_IN_PARTS(*flush_horizon))); DBUG_ASSERT(*flush_horizon <= log_descriptor.horizon); @@ -8076,12 +8076,12 @@ my_bool translog_flush(TRANSLOG_ADDRESS lsn) my_bool rc= 0; my_bool hgroup_commit_at_start; DBUG_ENTER("translog_flush"); - DBUG_PRINT("enter", ("Flush up to LSN: (%lu,0x%lx)", LSN_IN_PARTS(lsn))); + DBUG_PRINT("enter", ("Flush up to LSN: " LSN_FMT, LSN_IN_PARTS(lsn))); DBUG_ASSERT(translog_status == TRANSLOG_OK || translog_status == TRANSLOG_READONLY); mysql_mutex_lock(&log_descriptor.log_flush_lock); - DBUG_PRINT("info", ("Everything is flushed up to (%lu,0x%lx)", + DBUG_PRINT("info", ("Everything is flushed up to " LSN_FMT, LSN_IN_PARTS(log_descriptor.flushed))); if (cmp_translog_addr(log_descriptor.flushed, lsn) >= 0) { @@ -8110,7 +8110,7 @@ my_bool translog_flush(TRANSLOG_ADDRESS lsn) } log_descriptor.flush_in_progress= 1; flush_horizon= log_descriptor.previous_flush_horizon; - DBUG_PRINT("info", ("flush_in_progress is set, flush_horizon: (%lu,0x%lx)", + DBUG_PRINT("info", ("flush_in_progress is set, flush_horizon: " LSN_FMT, LSN_IN_PARTS(flush_horizon))); mysql_mutex_unlock(&log_descriptor.log_flush_lock); @@ -8173,7 +8173,7 @@ retest: log_descriptor.next_pass_max_lsn= LSN_IMPOSSIBLE; /* prevent other thread from continue */ log_descriptor.max_lsn_requester= pthread_self(); - DBUG_PRINT("info", ("flush took next goal: (%lu,0x%lx)", + DBUG_PRINT("info", ("flush took next goal: " LSN_FMT, LSN_IN_PARTS(lsn))); mysql_mutex_unlock(&log_descriptor.log_flush_lock); @@ -8530,7 +8530,7 @@ LSN translog_first_lsn_in_log() uint16 chunk_offset; uchar *page; DBUG_ENTER("translog_first_lsn_in_log"); - DBUG_PRINT("info", ("Horizon: (%lu,0x%lx)", LSN_IN_PARTS(horizon))); + DBUG_PRINT("info", ("Horizon: " LSN_FMT, LSN_IN_PARTS(horizon))); DBUG_ASSERT(translog_status == TRANSLOG_OK || translog_status == TRANSLOG_READONLY); @@ -8569,7 +8569,7 @@ LSN translog_first_theoretical_lsn() uchar *page; TRANSLOG_VALIDATOR_DATA data; DBUG_ENTER("translog_first_theoretical_lsn"); - DBUG_PRINT("info", ("Horizon: (%lu,0x%lx)", LSN_IN_PARTS(addr))); + DBUG_PRINT("info", ("Horizon: " LSN_FMT, LSN_IN_PARTS(addr))); DBUG_ASSERT(translog_status == TRANSLOG_OK || translog_status == TRANSLOG_READONLY); @@ -8609,7 +8609,7 @@ my_bool translog_purge(TRANSLOG_ADDRESS low) TRANSLOG_ADDRESS horizon= translog_get_horizon(); int rc= 0; DBUG_ENTER("translog_purge"); - DBUG_PRINT("enter", ("low: (%lu,0x%lx)", LSN_IN_PARTS(low))); + DBUG_PRINT("enter", ("low: " LSN_FMT, LSN_IN_PARTS(low))); DBUG_ASSERT(translog_status == TRANSLOG_OK || translog_status == TRANSLOG_READONLY); @@ -9034,7 +9034,7 @@ static void dump_header_page(uchar *buff) printf(" WARNING: page size is not equal compiled in one %lu!!!\n", (ulong) TRANSLOG_PAGE_SIZE); printf(" File number %lu\n" - " Max lsn: (%lu,0x%lx)\n", + " Max lsn: " LSN_FMT "\n", desc.file_number, LSN_IN_PARTS(desc.max_lsn)); } @@ -9130,7 +9130,7 @@ static uchar *dump_chunk(uchar *buffer, uchar *ptr) { TRANSLOG_ADDRESS gpr_addr= lsn_korr(hdr_ptr); uint pages= hdr_ptr[LSN_STORE_SIZE]; - printf (" Group +#%u: (%lu,0x%lx) pages: %u\n", + printf (" Group +#%u: " LSN_FMT " pages: %u\n", (uint) i, LSN_IN_PARTS(gpr_addr), pages); } } @@ -9264,8 +9264,8 @@ static void dump_datapage(uchar *buffer, File handler) ptr= buffer + header_len; while (ptr && ptr < buffer + TRANSLOG_PAGE_SIZE) { - printf(" Chunk (%lu,0x%lx):\n", - (ulong)file, (ulong) offset + (ptr - buffer)); + printf(" Chunk %d %lld:\n", + file,((longlong) (ptr - buffer)+ offset)); ptr= dump_chunk(buffer, ptr); } } diff --git a/storage/maria/ma_loghandler_lsn.h b/storage/maria/ma_loghandler_lsn.h index 3e0da68505c..c99f0d0af97 100644 --- a/storage/maria/ma_loghandler_lsn.h +++ b/storage/maria/ma_loghandler_lsn.h @@ -47,7 +47,8 @@ typedef TRANSLOG_ADDRESS LSN; #define LSN_FILE_NO_PART(L) ((L) & ((int64)0xFFFFFF00000000LL)) /* Parts of LSN for printing */ -#define LSN_IN_PARTS(L) (ulong)LSN_FILE_NO(L),(ulong)LSN_OFFSET(L) +#define LSN_IN_PARTS(L) (uint)LSN_FILE_NO(L),(uint)LSN_OFFSET(L) +#define LSN_FMT "(%u,0x%x)" /* Gets record offset of a LSN/log address */ #define LSN_OFFSET(L) (ulong) ((L) & 0xFFFFFFFFL) diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c index 6da5e34e3e3..0c4e4f900b9 100644 --- a/storage/maria/ma_open.c +++ b/storage/maria/ma_open.c @@ -1378,7 +1378,7 @@ uint _ma_state_info_write(MARIA_SHARE *share, uint pWrite) is too new). Recovery does it by itself. */ share->state.is_of_horizon= translog_get_horizon(); - DBUG_PRINT("info", ("is_of_horizon set to LSN (%lu,0x%lx)", + DBUG_PRINT("info", ("is_of_horizon set to LSN " LSN_FMT "", LSN_IN_PARTS(share->state.is_of_horizon))); } res= _ma_state_info_write_sub(share->kfile.file, &share->state, pWrite); diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c index 53f388014aa..4ae2821d532 100644 --- a/storage/maria/ma_pagecache.c +++ b/storage/maria/ma_pagecache.c @@ -2793,7 +2793,7 @@ static void check_and_set_lsn(PAGECACHE *pagecache, */ DBUG_ASSERT((block->type == PAGECACHE_LSN_PAGE) || maria_in_recovery); old= lsn_korr(block->buffer); - DBUG_PRINT("info", ("old lsn: (%lu, 0x%lx) new lsn: (%lu, 0x%lx)", + DBUG_PRINT("info", ("old lsn: " LSN_FMT " new lsn: " LSN_FMT, LSN_IN_PARTS(old), LSN_IN_PARTS(lsn))); if (cmp_translog_addr(lsn, old) > 0) { diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 3a45ed405ac..3360840537f 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -558,7 +558,7 @@ static void display_record_position(const LOG_DESC *log_desc, form a group, so we indent below the group's end record */ tprint(tracef, - "%sRec#%u LSN (%lu,0x%lx) short_trid %u %s(num_type:%u) len %lu\n", + "%sRec#%u LSN " LSN_FMT " short_trid %u %s(num_type:%u) len %lu\n", number ? "" : " ", number, LSN_IN_PARTS(rec->lsn), rec->short_trid, log_desc->name, rec->type, (ulong)rec->record_length); @@ -617,7 +617,7 @@ prototype_redo_exec_hook(LONG_TRANSACTION_ID) llstr(long_trid, llbuf); eprint(tracef, "Found an old transaction long_trid %s short_trid %u" " with same short id as this new transaction, and has neither" - " committed nor rollback (undo_lsn: (%lu,0x%lx))", + " committed nor rollback (undo_lsn: " LSN_FMT ")", llbuf, sid, LSN_IN_PARTS(ulsn)); goto err; } @@ -640,7 +640,7 @@ static void new_transaction(uint16 sid, TrID long_id, LSN undo_lsn, all_active_trans[sid].long_trid= long_id; llstr(long_id, llbuf); tprint(tracef, "Transaction long_trid %s short_trid %u starts," - " undo_lsn (%lu,0x%lx) first_undo_lsn (%lu,0x%lx)\n", + " undo_lsn " LSN_FMT " first_undo_lsn " LSN_FMT "\n", llbuf, sid, LSN_IN_PARTS(undo_lsn), LSN_IN_PARTS(first_undo_lsn)); all_active_trans[sid].undo_lsn= undo_lsn; all_active_trans[sid].first_undo_lsn= first_undo_lsn; @@ -833,7 +833,7 @@ prototype_redo_exec_hook(REDO_CREATE_TABLE) } if (cmp_translog_addr(share->state.create_rename_lsn, rec->lsn) >= 0) { - tprint(tracef, "Table '%s' has create_rename_lsn (%lu,0x%lx) more " + tprint(tracef, "Table '%s' has create_rename_lsn " LSN_FMT " more " "recent than record, ignoring creation", name, LSN_IN_PARTS(share->state.create_rename_lsn)); error= 0; @@ -1009,7 +1009,7 @@ prototype_redo_exec_hook(REDO_RENAME_TABLE) } if (cmp_translog_addr(share->state.create_rename_lsn, rec->lsn) >= 0) { - tprint(tracef, ", has create_rename_lsn (%lu,0x%lx) more recent than" + tprint(tracef, ", has create_rename_lsn " LSN_FMT " more recent than" " record, ignoring renaming", LSN_IN_PARTS(share->state.create_rename_lsn)); error= 0; @@ -1064,7 +1064,7 @@ prototype_redo_exec_hook(REDO_RENAME_TABLE) } if (cmp_translog_addr(share->state.create_rename_lsn, rec->lsn) >= 0) { - tprint(tracef, ", has create_rename_lsn (%lu,0x%lx) more recent than" + tprint(tracef, ", has create_rename_lsn " LSN_FMT " more recent than" " record, ignoring renaming", LSN_IN_PARTS(share->state.create_rename_lsn)); /* @@ -1233,7 +1233,7 @@ prototype_redo_exec_hook(REDO_DROP_TABLE) } if (cmp_translog_addr(share->state.create_rename_lsn, rec->lsn) >= 0) { - tprint(tracef, ", has create_rename_lsn (%lu,0x%lx) more recent than" + tprint(tracef, ", has create_rename_lsn " LSN_FMT " more recent than" " record, ignoring removal", LSN_IN_PARTS(share->state.create_rename_lsn)); error= 0; @@ -1403,8 +1403,8 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) } if (cmp_translog_addr(lsn_of_file_id, share->state.create_rename_lsn) <= 0) { - tprint(tracef, ", has create_rename_lsn (%lu,0x%lx) more recent than" - " LOGREC_FILE_ID's LSN (%lu,0x%lx), ignoring open request", + tprint(tracef, ", has create_rename_lsn " LSN_FMT " more recent than" + " LOGREC_FILE_ID's LSN " LSN_FMT ", ignoring open request", LSN_IN_PARTS(share->state.create_rename_lsn), LSN_IN_PARTS(lsn_of_file_id)); recovery_warnings++; @@ -1873,7 +1873,7 @@ prototype_redo_exec_hook(UNDO_ROW_INSERT) share= info->s; if (cmp_translog_addr(rec->lsn, share->state.is_of_horizon) >= 0) { - tprint(tracef, " state has LSN (%lu,0x%lx) older than record, updating" + tprint(tracef, " state has LSN " LSN_FMT " older than record, updating" " rows' count\n", LSN_IN_PARTS(share->state.is_of_horizon)); share->state.state.records++; if (share->calc_checksum) @@ -2136,7 +2136,7 @@ prototype_redo_exec_hook(CLR_END) if (info == NULL) DBUG_RETURN(0); share= info->s; - tprint(tracef, " CLR_END was about %s, undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " CLR_END was about %s, undo_lsn now LSN " LSN_FMT "\n", log_desc->name, LSN_IN_PARTS(previous_undo_lsn)); enlarge_buffer(rec); @@ -2296,7 +2296,7 @@ prototype_undo_exec_hook(UNDO_ROW_INSERT) info->trn= 0; /* trn->undo_lsn is updated in an inwrite_hook when writing the CLR_END */ tprint(tracef, " rows' count %lu\n", (ulong)info->s->state.state.records); - tprint(tracef, " undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " undo_lsn now LSN " LSN_FMT "\n", LSN_IN_PARTS(trn->undo_lsn)); return error; } @@ -2335,7 +2335,7 @@ prototype_undo_exec_hook(UNDO_ROW_DELETE) rec->record_length - (LSN_STORE_SIZE + FILEID_STORE_SIZE)); info->trn= 0; - tprint(tracef, " rows' count %lu\n undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " rows' count %lu\n undo_lsn now LSN " LSN_FMT "\n", (ulong)share->state.state.records, LSN_IN_PARTS(trn->undo_lsn)); return error; } @@ -2374,7 +2374,7 @@ prototype_undo_exec_hook(UNDO_ROW_UPDATE) rec->record_length - (LSN_STORE_SIZE + FILEID_STORE_SIZE)); info->trn= 0; - tprint(tracef, " undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " undo_lsn now LSN " LSN_FMT "\n", LSN_IN_PARTS(trn->undo_lsn)); return error; } @@ -2415,7 +2415,7 @@ prototype_undo_exec_hook(UNDO_KEY_INSERT) FILEID_STORE_SIZE); info->trn= 0; /* trn->undo_lsn is updated in an inwrite_hook when writing the CLR_END */ - tprint(tracef, " undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " undo_lsn now LSN " LSN_FMT "\n", LSN_IN_PARTS(trn->undo_lsn)); return error; } @@ -2456,7 +2456,7 @@ prototype_undo_exec_hook(UNDO_KEY_DELETE) FILEID_STORE_SIZE, FALSE); info->trn= 0; /* trn->undo_lsn is updated in an inwrite_hook when writing the CLR_END */ - tprint(tracef, " undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " undo_lsn now LSN " LSN_FMT "\n", LSN_IN_PARTS(trn->undo_lsn)); return error; } @@ -2497,7 +2497,7 @@ prototype_undo_exec_hook(UNDO_KEY_DELETE_WITH_ROOT) FILEID_STORE_SIZE, TRUE); info->trn= 0; /* trn->undo_lsn is updated in an inwrite_hook when writing the CLR_END */ - tprint(tracef, " undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " undo_lsn now LSN " LSN_FMT "\n", LSN_IN_PARTS(trn->undo_lsn)); return error; } @@ -2525,7 +2525,7 @@ prototype_undo_exec_hook(UNDO_BULK_INSERT) error= _ma_apply_undo_bulk_insert(info, previous_undo_lsn); info->trn= 0; /* trn->undo_lsn is updated in an inwrite_hook when writing the CLR_END */ - tprint(tracef, " undo_lsn now LSN (%lu,0x%lx)\n", + tprint(tracef, " undo_lsn now LSN " LSN_FMT "\n", LSN_IN_PARTS(trn->undo_lsn)); return error; } @@ -2663,7 +2663,7 @@ static int run_redo_phase(LSN lsn, LSN lsn_end, enum maria_apply_log_way apply) if (lsn_end != LSN_IMPOSSIBLE && rec2.lsn >= lsn_end) { tprint(tracef, - "lsn_end reached at (%lu,0x%lx). " + "lsn_end reached at " LSN_FMT ". " "Skipping rest of redo entries", LSN_IN_PARTS(rec2.lsn)); translog_destroy_scanner(&scanner); @@ -2818,7 +2818,7 @@ static uint end_of_redo_phase(my_bool prepare_for_undo_phase) TRN *trn; if (gslsn != LSN_IMPOSSIBLE) { - tprint(tracef, "Group at LSN (%lu,0x%lx) short_trid %u incomplete\n", + tprint(tracef, "Group at LSN " LSN_FMT " short_trid %u incomplete\n", LSN_IN_PARTS(gslsn), sid); all_active_trans[sid].group_start_lsn= LSN_IMPOSSIBLE; } @@ -3109,7 +3109,7 @@ static MARIA_HA *get_MARIA_HA_from_REDO_record(const table was). */ DBUG_ASSERT(cmp_translog_addr(rec->lsn, checkpoint_start) < 0); - tprint(tracef, ", table's LOGREC_FILE_ID has LSN (%lu,0x%lx) more recent" + tprint(tracef, ", table's LOGREC_FILE_ID has LSN " LSN_FMT " more recent" " than record, skipping record", LSN_IN_PARTS(share->lsn_of_file_id)); return NULL; @@ -3117,7 +3117,7 @@ static MARIA_HA *get_MARIA_HA_from_REDO_record(const if (cmp_translog_addr(rec->lsn, share->state.skip_redo_lsn) <= 0) { /* probably a bulk insert repair */ - tprint(tracef, ", has skip_redo_lsn (%lu,0x%lx) more recent than" + tprint(tracef, ", has skip_redo_lsn " LSN_FMT " more recent than" " record, skipping record\n", LSN_IN_PARTS(share->state.skip_redo_lsn)); return NULL; @@ -3176,7 +3176,7 @@ static MARIA_HA *get_MARIA_HA_from_UNDO_record(const if (cmp_translog_addr(rec->lsn, share->lsn_of_file_id) <= 0) { - tprint(tracef, ", table's LOGREC_FILE_ID has LSN (%lu,0x%lx) more recent" + tprint(tracef, ", table's LOGREC_FILE_ID has LSN " LSN_FMT " more recent" " than record, skipping record", LSN_IN_PARTS(share->lsn_of_file_id)); return NULL; @@ -3185,7 +3185,7 @@ static MARIA_HA *get_MARIA_HA_from_UNDO_record(const cmp_translog_addr(rec->lsn, share->state.skip_redo_lsn) <= 0) { /* probably a bulk insert repair */ - tprint(tracef, ", has skip_redo_lsn (%lu,0x%lx) more recent than" + tprint(tracef, ", has skip_redo_lsn " LSN_FMT " more recent than" " record, skipping record\n", LSN_IN_PARTS(share->state.skip_redo_lsn)); return NULL; @@ -3220,12 +3220,12 @@ static LSN parse_checkpoint_record(LSN lsn) LSN minimum_rec_lsn_of_active_transactions, minimum_rec_lsn_of_dirty_pages; struct st_dirty_page *next_dirty_page_in_pool; - tprint(tracef, "Loading data from checkpoint record at LSN (%lu,0x%lx)\n", + tprint(tracef, "Loading data from checkpoint record at LSN " LSN_FMT "\n", LSN_IN_PARTS(lsn)); if ((len= translog_read_record_header(lsn, &rec)) == RECHEADER_READ_ERROR || rec.type != LOGREC_CHECKPOINT) { - eprint(tracef, "Cannot find checkpoint record at LSN (%lu,0x%lx)", + eprint(tracef, "Cannot find checkpoint record at LSN " LSN_FMT "", LSN_IN_PARTS(lsn)); return LSN_ERROR; } @@ -3243,7 +3243,7 @@ static LSN parse_checkpoint_record(LSN lsn) ptr= log_record_buffer.str; start_address= lsn_korr(ptr); ptr+= LSN_STORE_SIZE; - tprint(tracef, "Checkpoint record has start_horizon at (%lu,0x%lx)\n", + tprint(tracef, "Checkpoint record has start_horizon at " LSN_FMT "\n", LSN_IN_PARTS(start_address)); /* transactions */ @@ -3261,7 +3261,7 @@ static LSN parse_checkpoint_record(LSN lsn) takes to write one or a few rows, roughly). */ tprint(tracef, "Checkpoint record has min_rec_lsn of active transactions" - " at (%lu,0x%lx)\n", + " at " LSN_FMT "\n", LSN_IN_PARTS(minimum_rec_lsn_of_active_transactions)); set_if_smaller(start_address, minimum_rec_lsn_of_active_transactions); @@ -3349,7 +3349,7 @@ static LSN parse_checkpoint_record(LSN lsn) page_id, rec_lsn, next_dirty_page_in_pool++)) return LSN_ERROR; if (maria_recovery_verbose) - tprint(tracef, "%8u %8u %12lu %lu,0x%lx\n", (uint) table_id, + tprint(tracef, "%8u %8u %12lu " LSN_FMT "\n", (uint) table_id, (uint) is_index, (ulong) page_id, LSN_IN_PARTS(rec_lsn)); set_if_smaller(minimum_rec_lsn_of_dirty_pages, rec_lsn); } @@ -3372,7 +3372,7 @@ static LSN parse_checkpoint_record(LSN lsn) start_address= checkpoint_start= translog_next_LSN(start_address, LSN_IMPOSSIBLE); tprint(tracef, "Checkpoint record start_horizon now adjusted to" - " LSN (%lu,0x%lx)\n", LSN_IN_PARTS(start_address)); + " LSN " LSN_FMT "\n", LSN_IN_PARTS(start_address)); if (checkpoint_start == LSN_IMPOSSIBLE) { /* @@ -3383,10 +3383,10 @@ static LSN parse_checkpoint_record(LSN lsn) } /* now, where the REDO phase should start reading log: */ tprint(tracef, "Checkpoint has min_rec_lsn of dirty pages at" - " LSN (%lu,0x%lx)\n", LSN_IN_PARTS(minimum_rec_lsn_of_dirty_pages)); + " LSN " LSN_FMT "\n", LSN_IN_PARTS(minimum_rec_lsn_of_dirty_pages)); set_if_smaller(start_address, minimum_rec_lsn_of_dirty_pages); DBUG_PRINT("info", - ("checkpoint_start: (%lu,0x%lx) start_address: (%lu,0x%lx)", + ("checkpoint_start: " LSN_FMT " start_address: " LSN_FMT "", LSN_IN_PARTS(checkpoint_start), LSN_IN_PARTS(start_address))); return start_address; } diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c index 66e4ddd6a46..058e864f370 100644 --- a/storage/maria/maria_chk.c +++ b/storage/maria/maria_chk.c @@ -1526,8 +1526,8 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name) } if (share->base.born_transactional) { - printf("LSNs: create_rename (%lu,0x%lx)," - " state_horizon (%lu,0x%lx), skip_redo (%lu,0x%lx)\n", + printf("LSNs: create_rename " LSN_FMT "," + " state_horizon " LSN_FMT ", skip_redo " LSN_FMT "\n", LSN_IN_PARTS(share->state.create_rename_lsn), LSN_IN_PARTS(share->state.is_of_horizon), LSN_IN_PARTS(share->state.skip_redo_lsn)); diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c index 3b9bc147bfb..147d4223997 100644 --- a/storage/maria/maria_read_log.c +++ b/storage/maria/maria_read_log.c @@ -109,11 +109,11 @@ int main(int argc, char **argv) last_checkpoint_lsn != LSN_IMPOSSIBLE) { lsn= LSN_IMPOSSIBLE; /* LSN set in maria_apply_log() */ - fprintf(stdout, "Starting from checkpoint (%lu,0x%lx)\n", + fprintf(stdout, "Starting from checkpoint " LSN_FMT "\n", LSN_IN_PARTS(last_checkpoint_lsn)); } else - fprintf(stdout, "The transaction log starts from lsn (%lu,0x%lx)\n", + fprintf(stdout, "The transaction log starts from lsn " LSN_FMT "\n", LSN_IN_PARTS(lsn)); if (opt_start_from_lsn) @@ -125,7 +125,7 @@ int main(int argc, char **argv) goto err; } lsn= (LSN) opt_start_from_lsn; - fprintf(stdout, "Starting reading log from lsn (%lu,0x%lx)\n", + fprintf(stdout, "Starting reading log from lsn " LSN_FMT "\n", LSN_IN_PARTS(lsn)); } diff --git a/storage/maria/unittest/ma_test_loghandler-t.c b/storage/maria/unittest/ma_test_loghandler-t.c index eebc8b6fa9a..112be3c66f1 100644 --- a/storage/maria/unittest/ma_test_loghandler-t.c +++ b/storage/maria/unittest/ma_test_loghandler-t.c @@ -114,7 +114,7 @@ static my_bool check_content(uchar *ptr, ulong length) void read_ok(TRANSLOG_HEADER_BUFFER *rec) { - ok(1, "read record type: %u LSN: (%lu,0x%lx)", + ok(1, "read record type: %u LSN: " LSN_FMT, rec->type, LSN_IN_PARTS(rec->lsn)); } @@ -399,7 +399,7 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_0LSN_EXAMPLE " "data read(0)\n" "type %u, strid %u, len %u, i: %u, 4: %u 5: %u, " - "lsn(%lu,0x%lx)\n", + "lsn" LSN_FMT "\n", (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, (uint) uint4korr(rec.header), (uint) rec.header[4], (uint) rec.header[5], @@ -444,8 +444,8 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_1LSN_EXAMPLE " "data read(%d) " "type: %u strid: %u len: %u" - "ref: (%lu,0x%lx) (%lu,0x%lx) " - "lsn(%lu,0x%lx)\n", + "ref: " LSN_FMT " " LSN_FMT " " + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, LSN_IN_PARTS(ref), LSN_IN_PARTS(lsn), @@ -475,9 +475,9 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_2LSN_EXAMPLE " "data read(%d) " - "type %u, strid %u, len %u, ref1(%lu,0x%lx), " - "ref2(%lu,0x%lx) %x%x%x%x%x%x%x%x%x " - "lsn(%lu,0x%lx)\n", + "type %u, strid %u, len %u, ref1" LSN_FMT ", " + "ref2" LSN_FMT " %x%x%x%x%x%x%x%x%x " + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, LSN_IN_PARTS(ref1), LSN_IN_PARTS(ref2), @@ -522,7 +522,7 @@ int main(int argc __attribute__((unused)), char *argv[]) "data read(%d)" "type %u (%d), strid %u (%d), len %lu, %lu + 7 (%d), " "hdr len: %u (%d), " - "ref(%lu,0x%lx), lsn(%lu,0x%lx) (%d), content: %d\n", + "ref" LSN_FMT ", lsn" LSN_FMT " (%d), content: %d\n", i, (uint) rec.type, rec.type != LOGREC_VARIABLE_RECORD_1LSN_EXAMPLE, (uint) rec.short_trid, @@ -541,7 +541,7 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_1LSN_EXAMPLE " - "in whole rec read lsn(%lu,0x%lx)\n", + "in whole rec read lsn" LSN_FMT "\n", LSN_IN_PARTS(rec.lsn)); goto err; } @@ -565,8 +565,8 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_2LSN_EXAMPLE " "data read(%d) " "type %u, strid %u, len %lu != %lu + 14, hdr len: %d, " - "ref1(%lu,0x%lx), ref2(%lu,0x%lx), " - "lsn(%lu,0x%lx)\n", + "ref1" LSN_FMT ", ref2" LSN_FMT ", " + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (ulong) rec.record_length, (ulong) rec_len, len, LSN_IN_PARTS(ref1), LSN_IN_PARTS(ref2), @@ -577,7 +577,7 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_2LSN_EXAMPLE " - "in whole rec read lsn(%lu,0x%lx)\n", + "in whole rec read lsn" LSN_FMT "\n", LSN_IN_PARTS(rec.lsn)); goto err; } @@ -606,7 +606,7 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_0LSN_EXAMPLE " "data read(%d)\n" "type %u, strid %u, len %u, i: %u, 4: %u 5: %u " - "lsn(%lu,0x%lx)\n", + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, (uint) uint4korr(rec.header), (uint) rec.header[4], @@ -629,7 +629,7 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_0LSN_EXAMPLE " "data read(%d) " "type %u, strid %u, len %lu != %lu, hdr len: %d, " - "lsn(%lu,0x%lx)\n", + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (ulong) rec.record_length, (ulong) rec_len, len, LSN_IN_PARTS(rec.lsn)); @@ -639,7 +639,7 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_2LSN_EXAMPLE " - "in whole rec read lsn(%lu,0x%lx)\n", + "in whole rec read lsn" LSN_FMT "\n", LSN_IN_PARTS(rec.lsn)); goto err; } diff --git a/storage/maria/unittest/ma_test_loghandler_first_lsn-t.c b/storage/maria/unittest/ma_test_loghandler_first_lsn-t.c index 4ea3dedac1b..7a8ee720ded 100644 --- a/storage/maria/unittest/ma_test_loghandler_first_lsn-t.c +++ b/storage/maria/unittest/ma_test_loghandler_first_lsn-t.c @@ -102,7 +102,7 @@ int main(int argc __attribute__((unused)), char *argv[]) first_lsn= translog_first_lsn_in_log(); if (first_lsn != LSN_IMPOSSIBLE) { - fprintf(stderr, "Incorrect first lsn response (%lu,0x%lx).", + fprintf(stderr, "Incorrect first lsn response " LSN_FMT ".", LSN_IN_PARTS(first_lsn)); translog_destroy(); exit(1); @@ -140,8 +140,8 @@ int main(int argc __attribute__((unused)), char *argv[]) first_lsn= translog_first_lsn_in_log(); if (first_lsn != theor_lsn) { - fprintf(stderr, "Incorrect first lsn: (%lu,0x%lx) " - " theoretical first: (%lu,0x%lx)\n", + fprintf(stderr, "Incorrect first lsn: " LSN_FMT " " + " theoretical first: " LSN_FMT "\n", LSN_IN_PARTS(first_lsn), LSN_IN_PARTS(theor_lsn)); translog_destroy(); exit(1); diff --git a/storage/maria/unittest/ma_test_loghandler_max_lsn-t.c b/storage/maria/unittest/ma_test_loghandler_max_lsn-t.c index 2ca926f9809..b76bf30748e 100644 --- a/storage/maria/unittest/ma_test_loghandler_max_lsn-t.c +++ b/storage/maria/unittest/ma_test_loghandler_max_lsn-t.c @@ -94,7 +94,7 @@ int main(int argc __attribute__((unused)), char *argv[]) } if (max_lsn != LSN_IMPOSSIBLE) { - fprintf(stderr, "Incorrect first lsn response (%lu,0x%lx).", + fprintf(stderr, "Incorrect first lsn response " LSN_FMT ".", LSN_IN_PARTS(max_lsn)); translog_destroy(); exit(1); @@ -138,8 +138,8 @@ int main(int argc __attribute__((unused)), char *argv[]) } if (max_lsn != last_lsn) { - fprintf(stderr, "Incorrect max lsn: (%lu,0x%lx) " - " last lsn on first file: (%lu,0x%lx)\n", + fprintf(stderr, "Incorrect max lsn: " LSN_FMT " " + " last lsn on first file: " LSN_FMT "\n", LSN_IN_PARTS(max_lsn), LSN_IN_PARTS(last_lsn)); translog_destroy(); exit(1); diff --git a/storage/maria/unittest/ma_test_loghandler_multigroup-t.c b/storage/maria/unittest/ma_test_loghandler_multigroup-t.c index 998c85d2dc3..6ba0d00f884 100644 --- a/storage/maria/unittest/ma_test_loghandler_multigroup-t.c +++ b/storage/maria/unittest/ma_test_loghandler_multigroup-t.c @@ -486,7 +486,7 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_0LSN_EXAMPLE " "data read(0)\n" "type %u, strid %u, len %u, i: %u, 4: %u 5: %u, " - "lsn(0x%lu,0x%lx)\n", + LSN_FMT "\n", (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, (uint)uint4korr(rec.header), (uint) rec.header[4], (uint) rec.header[5], @@ -534,7 +534,7 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_1LSN_EXAMPLE " "data read(%d)" - "type %u, strid %u, len %u, ref(%lu,0x%lx), lsn(%lu,0x%lx)\n", + "type %u, strid %u, len %u, ref" LSN_FMT ", lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, LSN_IN_PARTS(ref), LSN_IN_PARTS(rec.lsn)); @@ -564,9 +564,9 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_2LSN_EXAMPLE " "data read(%d) " - "type %u, strid %u, len %u, ref1(%lu,0x%lx), " - "ref2(%lu,0x%lx) %x%x%x%x%x%x%x%x%x " - "lsn(%lu,0x%lx)\n", + "type %u, strid %u, len %u, ref1" LSN_FMT ", " + "ref2" LSN_FMT " %x%x%x%x%x%x%x%x%x " + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, LSN_IN_PARTS(ref1), LSN_IN_PARTS(ref2), @@ -612,7 +612,7 @@ int main(int argc __attribute__((unused)), char *argv[]) "data read(%d)" "type %u (%d), strid %u (%d), len %lu, %lu + 7 (%d), " "hdr len: %d (%d), " - "ref(%lu,0x%lx), lsn(%lu,0x%lx) (%d), content: %d\n", + "ref" LSN_FMT ", lsn" LSN_FMT " (%d), content: %d\n", i, (uint) rec.type, rec.type !=LOGREC_VARIABLE_RECORD_1LSN_EXAMPLE, (uint) rec.short_trid, @@ -632,7 +632,7 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_1LSN_EXAMPLE " - "in whole rec read lsn(%lu,0x%lx)\n", + "in whole rec read lsn" LSN_FMT "\n", LSN_IN_PARTS(rec.lsn)); translog_free_record_header(&rec); goto err; @@ -656,8 +656,8 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_2LSN_EXAMPLE " " data read(%d) " "type %u, strid %u, len %lu != %lu + 14, hdr len: %d, " - "ref1(%lu,0x%lx), ref2(%lu,0x%lx), " - "lsn(%lu,0x%lx)\n", + "ref1" LSN_FMT ", ref2" LSN_FMT ", " + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (ulong) rec.record_length, (ulong) rec_len, len, @@ -670,7 +670,7 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_2LSN_EXAMPLE " - "in whole rec read lsn(%lu,0x%lx)\n", + "in whole rec read lsn" LSN_FMT "\n", LSN_IN_PARTS(rec.lsn)); translog_free_record_header(&rec); goto err; @@ -702,7 +702,7 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_0LSN_EXAMPLE " "data read(%d)\n" "type %u, strid %u, len %u, i: %u, 4: %u 5: %u " - "lsn(%lu,0x%lx)\n", + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (uint) rec.record_length, (uint)uint4korr(rec.header), (uint) rec.header[4], @@ -726,7 +726,7 @@ int main(int argc __attribute__((unused)), char *argv[]) fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_0LSN_EXAMPLE " "data read(%d) " "type %u, strid %u, len %lu != %lu, hdr len: %d, " - "lsn(%lu,0x%lx)\n", + "lsn" LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (ulong) rec.record_length, (ulong) rec_len, len, LSN_IN_PARTS(rec.lsn)); @@ -737,7 +737,7 @@ int main(int argc __attribute__((unused)), char *argv[]) { fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_2LSN_EXAMPLE " - "in whole rec read lsn(%lu,0x%lx)\n", + "in whole rec read lsn" LSN_FMT "\n", LSN_IN_PARTS(rec.lsn)); translog_free_record_header(&rec); goto err; diff --git a/storage/maria/unittest/ma_test_loghandler_multithread-t.c b/storage/maria/unittest/ma_test_loghandler_multithread-t.c index 63c733862a5..68d1edb9385 100644 --- a/storage/maria/unittest/ma_test_loghandler_multithread-t.c +++ b/storage/maria/unittest/ma_test_loghandler_multithread-t.c @@ -486,7 +486,7 @@ int main(int argc __attribute__((unused)), fprintf(stderr, "Incorrect LOGREC_FIXED_RECORD_0LSN_EXAMPLE " "data read(%d)\n" "type %u, strid %u %u, len %u, i: %u %u, " - "lsn(%lu,0x%lx) (%lu,0x%lx)\n", + "lsn" LSN_FMT " " LSN_FMT "\n", i, (uint) rec.type, (uint) rec.short_trid, (uint) uint2korr(rec.header), (uint) rec.record_length, @@ -510,7 +510,7 @@ int main(int argc __attribute__((unused)), "data read(%d) " "thread: %d, iteration %d, stage %d\n" "type %u (%d), len %d, length %lu %lu (%d) " - "lsn(%lu,0x%lx) (%lu,0x%lx)\n", + "lsn" LSN_FMT " " LSN_FMT "\n", i, (uint) rec.short_trid, index, stage, (uint) rec.type, (rec.type != LOGREC_VARIABLE_RECORD_0LSN_EXAMPLE), @@ -526,7 +526,7 @@ int main(int argc __attribute__((unused)), { fprintf(stderr, "Incorrect LOGREC_VARIABLE_RECORD_0LSN_EXAMPLE " - "in whole rec read lsn(%lu,0x%lx)\n", + "in whole rec read lsn" LSN_FMT "\n", LSN_IN_PARTS(rec.lsn)); translog_free_record_header(&rec); goto err; diff --git a/storage/maria/unittest/ma_test_loghandler_noflush-t.c b/storage/maria/unittest/ma_test_loghandler_noflush-t.c index 8df85f9ae25..f6c214cc827 100644 --- a/storage/maria/unittest/ma_test_loghandler_noflush-t.c +++ b/storage/maria/unittest/ma_test_loghandler_noflush-t.c @@ -116,7 +116,7 @@ int main(int argc __attribute__((unused)), char *argv[]) "data read(0)\n" "type: %u (%d) strid: %u (%d) len: %u (%d) i: %u (%d), " "4: %u (%d) 5: %u (%d) " - "lsn(%lu,0x%lx) (%d)\n", + "lsn" LSN_FMT " (%d)\n", (uint) rec.type, (rec.type !=LOGREC_FIXED_RECORD_0LSN_EXAMPLE), (uint) rec.short_trid, (rec.short_trid != 0), (uint) rec.record_length, (rec.record_length != 6), -- cgit v1.2.1 From 793e5be7707fac95cb71f9c1e74d97424eeef09d Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 13 Jun 2019 17:54:28 +0300 Subject: Give a readable error if aria_log page numbers doesn't match MDEV-18461 Aria crash recovery failures This does not fix the bug reported in the MDEV, but now we get an error message of the problem instead of an assert. --- storage/maria/ma_loghandler.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 03faadbb42a..beda5f46ff4 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -3856,7 +3856,14 @@ my_bool translog_init_with_table(const char *directory, my_bool pageok; DBUG_PRINT("info", ("The log is really present")); - DBUG_ASSERT(sure_page <= last_page); + if (sure_page > last_page) + { + my_printf_error(HA_ERR_GENERIC, "Aria engine: log data error\n" + "last_log_page: " LSN_FMT " is less than\n" + "checkpoint page: " LSN_FMT, MYF(0), + LSN_IN_PARTS(last_page), LSN_IN_PARTS(sure_page)); + goto err; + } /* TODO: check page size */ @@ -4004,7 +4011,7 @@ my_bool translog_init_with_table(const char *directory, if (!logs_found) { TRANSLOG_FILE *file= (TRANSLOG_FILE*)my_malloc(sizeof(TRANSLOG_FILE), - MYF(0)); + MYF(MY_WME)); DBUG_PRINT("info", ("The log is not found => we will create new log")); if (file == NULL) goto err; -- cgit v1.2.1 From d78145459f79d02438e0d57fe8acaff757018c97 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Thu, 13 Jun 2019 20:42:13 +0300 Subject: Fixed Aria recovery progress printing - When recovery failed, errors would not be printed on new lines. - Print more information if file lengths are changed - Added logging of table name for entries INCOMPLETE_LOG and REDO_REPAIR_TABLE --- storage/maria/ma_recovery.c | 38 +++++++++++++++++++++++++++----------- storage/maria/ma_recovery_util.c | 12 +++--------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 3360840537f..9d3950d588c 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -531,8 +531,6 @@ end: if (error && !abort_message_printed) { - if (!trace_file) - fputc('\n', stderr); my_message(HA_ERR_INITIALIZATION, "Aria recovery failed. Please run aria_chk -r on all Aria " "tables and delete all aria_log.######## files", MYF(0)); @@ -667,13 +665,16 @@ prototype_redo_exec_hook(INCOMPLETE_LOG) { MARIA_HA *info; + /* We try to get table first, so that we get the table in in the trace log */ + info= get_MARIA_HA_from_REDO_record(rec); + if (skip_DDLs) { tprint(tracef, "we skip DDLs\n"); return 0; } - if ((info= get_MARIA_HA_from_REDO_record(rec)) == NULL) + if (!info) { /* no such table, don't need to warn */ return 0; @@ -1144,6 +1145,9 @@ prototype_redo_exec_hook(REDO_REPAIR_TABLE) my_bool quick_repair; DBUG_ENTER("exec_REDO_LOGREC_REDO_REPAIR_TABLE"); + /* We try to get table first, so that we get the table in in the trace log */ + info= get_MARIA_HA_from_REDO_record(rec); + if (skip_DDLs) { /* @@ -1153,8 +1157,13 @@ prototype_redo_exec_hook(REDO_REPAIR_TABLE) tprint(tracef, "we skip DDLs\n"); DBUG_RETURN(0); } - if ((info= get_MARIA_HA_from_REDO_record(rec)) == NULL) - DBUG_RETURN(0); + + if (!info) + { + /* no such table, don't need to warn */ + return 0; + } + if (maria_is_crashed(info)) { tprint(tracef, "we skip repairing crashed table\n"); @@ -1443,17 +1452,21 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id) } if (share->state.state.data_file_length != dfile_len) { - tprint(tracef, ", has wrong state.data_file_length (fixing it)"); + tprint(tracef, ", has wrong state.data_file_length " + "(fixing it from %llu to %llu)", + (ulonglong) share->state.state.data_file_length, (ulonglong) dfile_len); share->state.state.data_file_length= dfile_len; } if (share->state.state.key_file_length != kfile_len) { - tprint(tracef, ", has wrong state.key_file_length (fixing it)"); + tprint(tracef, ", has wrong state.key_file_length " + "(fixing it from %llu to %llu)", + (ulonglong) share->state.state.key_file_length, (ulonglong) kfile_len); share->state.state.key_file_length= kfile_len; } if ((dfile_len % share->block_size) || (kfile_len % share->block_size)) { - tprint(tracef, ", has too short last page\n"); + tprint(tracef, ", has too short last page"); /* Recovery will fix this, no error */ ALERT_USER(); } @@ -2764,7 +2777,7 @@ static int run_redo_phase(LSN lsn, LSN lsn_end, enum maria_apply_log_way apply) { fprintf(stderr, " 100%%"); fflush(stderr); - procent_printed= 1; + procent_printed= 1; /* Will be follwed by time */ } DBUG_RETURN(0); @@ -2914,7 +2927,6 @@ static int run_undo_phase(uint uncommitted) recovery_message_printed= REC_MSG_UNDO; } tprint(tracef, "%u transactions will be rolled back\n", uncommitted); - procent_printed= 1; for( ; ; ) { char llbuf[22]; @@ -2967,7 +2979,6 @@ static int run_undo_phase(uint uncommitted) /* In the future, we want to have this phase *online* */ } } - procent_printed= 0; DBUG_RETURN(0); } @@ -3467,6 +3478,11 @@ static int close_all_tables(void) } } end: + if (recovery_message_printed == REC_MSG_FLUSH) + { + fputc('\n', stderr); + fflush(stderr); + } mysql_mutex_unlock(&THR_LOCK_maria); DBUG_RETURN(error); } diff --git a/storage/maria/ma_recovery_util.c b/storage/maria/ma_recovery_util.c index 54d7420c96e..3b617f625f0 100644 --- a/storage/maria/ma_recovery_util.c +++ b/storage/maria/ma_recovery_util.c @@ -70,14 +70,7 @@ void tprint(FILE *trace_file __attribute__ ((unused)), #endif va_start(args, format); if (trace_file != NULL) - { - if (procent_printed) - { - procent_printed= 0; - fputc('\n', trace_file); - } vfprintf(trace_file, format, args); - } va_end(args); } @@ -93,9 +86,10 @@ void eprint(FILE *trace_file __attribute__ ((unused)), if (procent_printed) { - /* In silent mode, print on another line than the 0% 10% 20% line */ procent_printed= 0; - fputc('\n', trace_file); + /* In silent mode, print on another line than the 0% 10% 20% line */ + fputc('\n', stderr); + fflush(stderr); } vfprintf(trace_file , format, args); fputc('\n', trace_file); -- cgit v1.2.1 From d36c107a6b7f9e9bc9425072f2ac13afd2334069 Mon Sep 17 00:00:00 2001 From: Eugene Kosov Date: Mon, 24 Jun 2019 19:38:00 +0300 Subject: imporve clang build cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Debug Maintainer mode makes all warnings errors. This patch fix warnings. Mostly about deprecated `register` keyword. Too much warnings came from Mroonga and I gave up on it. --- client/mysql.cc | 2 +- client/mysqltest.cc | 16 +++++++-------- extra/mariabackup/backup_mysql.cc | 2 -- extra/yassl/include/openssl/crypto.h | 2 +- extra/yassl/taocrypt/src/des.cpp | 2 +- include/heap.h | 2 +- include/maria.h | 2 +- include/myisam.h | 12 +++++------ sql/derror.cc | 2 +- sql/field.cc | 2 +- sql/field.h | 2 +- sql/filesort.cc | 18 ++++++++-------- sql/handler.cc | 2 +- sql/item_cmpfunc.cc | 12 +++++------ sql/item_func.cc | 4 ++-- sql/item_strfunc.cc | 14 ++++++------- sql/item_xmlfunc.cc | 2 +- sql/key.cc | 6 +++--- sql/lock.cc | 4 ++-- sql/log.cc | 7 +++---- sql/mf_iocache.cc | 2 +- sql/net_serv.cc | 4 ++-- sql/plistsort.c | 10 ++++----- sql/records.cc | 2 +- sql/slave.cc | 2 +- sql/sql_acl.cc | 2 +- sql/sql_base.cc | 2 +- sql/sql_class.h | 2 +- sql/sql_db.cc | 2 +- sql/sql_insert.cc | 6 +++--- sql/sql_lex.cc | 6 +++--- sql/sql_parse.cc | 2 +- sql/sql_prepare.cc | 2 +- sql/sql_select.cc | 2 +- sql/sql_string.cc | 12 +++++------ sql/table.cc | 4 ++-- sql/uniques.cc | 2 +- sql/unireg.cc | 1 - storage/connect/array.cpp | 4 ++-- storage/connect/csort.cpp | 22 ++++++++++---------- storage/connect/ha_connect.cc | 4 ++-- storage/connect/odbconn.cpp | 2 +- storage/connect/valblk.cpp | 4 ++-- storage/connect/xindex.cpp | 18 ++++++++-------- storage/heap/heapdef.h | 2 +- storage/innobase/handler/ha_innodb.h | 2 +- storage/maria/ha_maria.cc | 2 +- storage/maria/ma_blockrec.h | 3 +-- storage/maria/maria_def.h | 12 +++++------ storage/myisam/ha_myisam.cc | 2 +- storage/myisam/myisamdef.h | 7 +++---- storage/myisammrg/ha_myisammrg.cc | 2 +- storage/perfschema/pfs.cc | 40 ++++++++++++++++++------------------ storage/perfschema/pfs_global.h | 2 +- storage/spider/spd_table.cc | 2 +- 55 files changed, 152 insertions(+), 158 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index f938c8f00ff..31c1d443607 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -3128,7 +3128,7 @@ static int com_help(String *buffer __attribute__((unused)), char *line __attribute__((unused))) { - reg1 int i, j; + int i, j; char * help_arg= strchr(line,' '), buff[32], *end; if (help_arg) { diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 051e7fbef02..1f17f75e1b8 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -1044,8 +1044,8 @@ void do_eval(DYNAMIC_STRING *query_eval, const char *query, const char *query_end, my_bool pass_through_escape_chars) { const char *p; - register char c, next_c; - register int escaped = 0; + char c, next_c; + int escaped = 0; VAR *v; DBUG_ENTER("do_eval"); @@ -2341,7 +2341,7 @@ C_MODE_START static uchar *get_var_key(const uchar* var, size_t *len, my_bool __attribute__((unused)) t) { - register char* key; + char* key; key = ((VAR*)var)->name; *len = ((VAR*)var)->name_len; return (uchar*)key; @@ -9900,7 +9900,7 @@ typedef struct st_pointer_array { /* when using array-strings */ struct st_replace *init_replace(char * *from, char * *to, uint count, char * word_end_chars); -int insert_pointer_name(reg1 POINTER_ARRAY *pa,char * name); +int insert_pointer_name(POINTER_ARRAY *pa,char * name); void free_pointer_array(POINTER_ARRAY *pa); /* @@ -9984,8 +9984,8 @@ void replace_strings_append(REPLACE *rep, DYNAMIC_STRING* ds, const char *str, int len __attribute__((unused))) { - reg1 REPLACE *rep_pos; - reg2 REPLACE_STRING *rep_str; + REPLACE *rep_pos; + REPLACE_STRING *rep_str; const char *start, *from; DBUG_ENTER("replace_strings_append"); @@ -10891,7 +10891,7 @@ void internal_clear_bit(REP_SET *set, uint bit) void or_bits(REP_SET *to,REP_SET *from) { - reg1 uint i; + uint i; for (i=0 ; i < to->size_of_bits ; i++) to->bits[i]|=from->bits[i]; return; @@ -10993,7 +10993,7 @@ uint end_of_word(char * pos) #define PC_MALLOC 256 /* Bytes for pointers */ #define PS_MALLOC 512 /* Bytes for data */ -int insert_pointer_name(reg1 POINTER_ARRAY *pa,char * name) +int insert_pointer_name(POINTER_ARRAY *pa,char * name) { uint i,length,old_count; uchar *new_pos; diff --git a/extra/mariabackup/backup_mysql.cc b/extra/mariabackup/backup_mysql.cc index f15f0c40556..543fd4102f2 100644 --- a/extra/mariabackup/backup_mysql.cc +++ b/extra/mariabackup/backup_mysql.cc @@ -1393,8 +1393,6 @@ write_xtrabackup_info(MYSQL *connection) const char *xb_stream_name[] = {"file", "tar", "xbstream"}; - ut_ad(xtrabackup_stream_fmt < 3); - uuid = read_mysql_one_value(connection, "SELECT UUID()"); server_version = read_mysql_one_value(connection, "SELECT VERSION()"); localtime_r(&history_start_time, &tm); diff --git a/extra/yassl/include/openssl/crypto.h b/extra/yassl/include/openssl/crypto.h index d60d5a0e398..f229f8b612c 100644 --- a/extra/yassl/include/openssl/crypto.h +++ b/extra/yassl/include/openssl/crypto.h @@ -19,7 +19,7 @@ /* crypto.h for openSSL */ -#ifndef ysSSL_crypto_h__ +#ifndef yaSSL_crypto_h__ #define yaSSL_crypto_h__ #ifdef YASSL_PREFIX diff --git a/extra/yassl/taocrypt/src/des.cpp b/extra/yassl/taocrypt/src/des.cpp index 5b6fd9aa05b..f921cfcc977 100644 --- a/extra/yassl/taocrypt/src/des.cpp +++ b/extra/yassl/taocrypt/src/des.cpp @@ -224,7 +224,7 @@ void BasicDES::SetKey(const byte* key, word32 /*length*/, CipherDir dir) byte *const pc1m = buffer; /* place to modify pc1 into */ byte *const pcr = pc1m + 56; /* place to rotate pc1 into */ byte *const ks = pcr + 56; - register int i,j,l; + int i,j,l; int m; for (j = 0; j < 56; j++) { /* convert pc1 to bits of key */ diff --git a/include/heap.h b/include/heap.h index dd822f4c243..d0c907a48b4 100644 --- a/include/heap.h +++ b/include/heap.h @@ -217,7 +217,7 @@ extern int heap_write(HP_INFO *info,const uchar *buff); extern int heap_update(HP_INFO *info,const uchar *old,const uchar *newdata); extern int heap_rrnd(HP_INFO *info,uchar *buf,uchar *pos); extern int heap_scan_init(HP_INFO *info); -extern int heap_scan(register HP_INFO *info, uchar *record); +extern int heap_scan(HP_INFO *info, uchar *record); extern int heap_delete(HP_INFO *info,const uchar *buff); extern int heap_info(HP_INFO *info,HEAPINFO *x,int flag); extern int heap_create(const char *name, diff --git a/include/maria.h b/include/maria.h index 4cf8c1730ac..cbc03687f1d 100644 --- a/include/maria.h +++ b/include/maria.h @@ -366,7 +366,7 @@ int maria_sort_index(HA_CHECK *param, MARIA_HA *info, char * name); int maria_zerofill(HA_CHECK *param, MARIA_HA *info, const char *name); int maria_repair_by_sort(HA_CHECK *param, MARIA_HA *info, const char *name, my_bool rep_quick); -int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info, +int maria_repair_parallel(HA_CHECK *param, MARIA_HA *info, const char *name, my_bool rep_quick); int maria_change_to_newfile(const char *filename, const char *old_ext, const char *new_ext, time_t backup_time, diff --git a/include/myisam.h b/include/myisam.h index 3495cf16424..2a3444f78f6 100644 --- a/include/myisam.h +++ b/include/myisam.h @@ -373,7 +373,7 @@ typedef struct st_mi_sort_param int (*key_read)(struct st_mi_sort_param *,void *); int (*key_write)(struct st_mi_sort_param *, const void *); void (*lock_in_memory)(HA_CHECK *); - int (*write_keys)(struct st_mi_sort_param *, register uchar **, + int (*write_keys)(struct st_mi_sort_param *, uchar **, ulonglong , struct st_buffpek *, IO_CACHE *); my_off_t (*read_to_buffer)(IO_CACHE *,struct st_buffpek *, uint); int (*write_key)(struct st_mi_sort_param *, IO_CACHE *,uchar *, @@ -383,16 +383,16 @@ typedef struct st_mi_sort_param /* functions in mi_check */ void myisamchk_init(HA_CHECK *param); int chk_status(HA_CHECK *param, MI_INFO *info); -int chk_del(HA_CHECK *param, register MI_INFO *info, ulonglong test_flag); +int chk_del(HA_CHECK *param, MI_INFO *info, ulonglong test_flag); int chk_size(HA_CHECK *param, MI_INFO *info); int chk_key(HA_CHECK *param, MI_INFO *info); int chk_data_link(HA_CHECK *param, MI_INFO *info, my_bool extend); -int mi_repair(HA_CHECK *param, register MI_INFO *info, +int mi_repair(HA_CHECK *param, MI_INFO *info, char * name, int rep_quick); -int mi_sort_index(HA_CHECK *param, register MI_INFO *info, char * name); -int mi_repair_by_sort(HA_CHECK *param, register MI_INFO *info, +int mi_sort_index(HA_CHECK *param, MI_INFO *info, char * name); +int mi_repair_by_sort(HA_CHECK *param, MI_INFO *info, const char * name, int rep_quick); -int mi_repair_parallel(HA_CHECK *param, register MI_INFO *info, +int mi_repair_parallel(HA_CHECK *param, MI_INFO *info, const char * name, int rep_quick); int change_to_newfile(const char * filename, const char * old_ext, const char * new_ext, time_t backup_time, myf myflags); diff --git a/sql/derror.cc b/sql/derror.cc index 48fb481f908..b976fff9d4f 100644 --- a/sql/derror.cc +++ b/sql/derror.cc @@ -146,7 +146,7 @@ static bool check_error_mesg(const char *file_name, const char **errmsg) bool read_texts(const char *file_name, const char *language, const char ***point, uint error_messages) { - register uint i; + uint i; uint count,funktpos; size_t offset, length; File file; diff --git a/sql/field.cc b/sql/field.cc index a4c30f8a547..291e2134dcf 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -2725,7 +2725,7 @@ int Field_decimal::store(double nr) return 1; } - reg4 uint i; + uint i; size_t length; uchar fyllchar,*to; char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE]; diff --git a/sql/field.h b/sql/field.h index b93668a7cb4..60849ea8099 100644 --- a/sql/field.h +++ b/sql/field.h @@ -1406,7 +1406,7 @@ public: // Exactly the same rules with REF access return can_optimize_keypart_ref(cond, item); } - friend int cre_myisam(char * name, register TABLE *form, uint options, + friend int cre_myisam(char * name, TABLE *form, uint options, ulonglong auto_increment_value); friend class Copy_field; friend class Item_avg_field; diff --git a/sql/filesort.cc b/sql/filesort.cc index 78103331857..4f195f68059 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -967,12 +967,12 @@ static inline void store_length(uchar *to, uint length, uint pack_length) /** Make a sort-key from record. */ -static void make_sortkey(register Sort_param *param, - register uchar *to, uchar *ref_pos) +static void make_sortkey(Sort_param *param, + uchar *to, uchar *ref_pos) { - reg3 Field *field; - reg1 SORT_FIELD *sort_field; - reg5 uint length; + Field *field; + SORT_FIELD *sort_field; + uint length; for (sort_field=param->local_sortorder ; sort_field != param->end ; @@ -1214,7 +1214,7 @@ static void make_sortkey(register Sort_param *param, static void register_used_fields(Sort_param *param) { - reg1 SORT_FIELD *sort_field; + SORT_FIELD *sort_field; TABLE *table=param->sort_form; MY_BITMAP *bitmap= table->read_set; @@ -1425,7 +1425,7 @@ bool check_if_pq_applicable(Sort_param *param, int merge_many_buff(Sort_param *param, uchar *sort_buffer, BUFFPEK *buffpek, uint *maxbuffer, IO_CACHE *t_file) { - register uint i; + uint i; IO_CACHE t_file2,*from_file,*to_file,*temp; BUFFPEK *lastbuff; DBUG_ENTER("merge_many_buff"); @@ -1483,7 +1483,7 @@ cleanup: uint read_to_buffer(IO_CACHE *fromfile, BUFFPEK *buffpek, uint rec_length) { - register uint count; + uint count; uint length; if ((count=(uint) MY_MIN((ha_rows) buffpek->max_keys,buffpek->count))) @@ -1787,7 +1787,7 @@ int merge_buffers(Sort_param *param, IO_CACHE *from_file, } else { - register uchar *end; + uchar *end; src= buffpek->key+offset; for (end= src+buffpek->mem_count*rec_length ; src != end ; diff --git a/sql/handler.cc b/sql/handler.cc index 3d091401f4b..79f23c0d200 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -2834,7 +2834,7 @@ int handler::ha_rnd_init_with_error(bool scan) */ int handler::read_first_row(uchar * buf, uint primary_key) { - register int error; + int error; DBUG_ENTER("handler::read_first_row"); /* diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 2975b046b1c..2e029f307fc 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -5901,8 +5901,8 @@ void Item_func_like::turboBM_compute_bad_character_shifts() bool Item_func_like::turboBM_matches(const char* text, int text_len) const { - register int bcShift; - register int turboShift; + int bcShift; + int turboShift; int shift = pattern_len; int j = 0; int u = 0; @@ -5916,7 +5916,7 @@ bool Item_func_like::turboBM_matches(const char* text, int text_len) const { while (j <= tlmpl) { - register int i= plm1; + int i= plm1; while (i >= 0 && pattern[i] == text[i + j]) { i--; @@ -5926,7 +5926,7 @@ bool Item_func_like::turboBM_matches(const char* text, int text_len) const if (i < 0) return 1; - register const int v = plm1 - i; + const int v = plm1 - i; turboShift = u - v; bcShift = bmBc[(uint) (uchar) text[i + j]] - plm1 + i; shift = MY_MAX(turboShift, bcShift); @@ -5947,7 +5947,7 @@ bool Item_func_like::turboBM_matches(const char* text, int text_len) const { while (j <= tlmpl) { - register int i = plm1; + int i = plm1; while (i >= 0 && likeconv(cs,pattern[i]) == likeconv(cs,text[i + j])) { i--; @@ -5957,7 +5957,7 @@ bool Item_func_like::turboBM_matches(const char* text, int text_len) const if (i < 0) return 1; - register const int v = plm1 - i; + const int v = plm1 - i; turboShift = u - v; bcShift = bmBc[(uint) likeconv(cs, text[i + j])] - plm1 + i; shift = MY_MAX(turboShift, bcShift); diff --git a/sql/item_func.cc b/sql/item_func.cc index 946ce495a88..1b54db4e68f 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -3282,8 +3282,8 @@ longlong Item_func_ord::val_int() #ifdef USE_MB if (use_mb(res->charset())) { - register const char *str=res->ptr(); - register uint32 n=0, l=my_ismbchar(res->charset(),str,str+res->length()); + const char *str=res->ptr(); + uint32 n=0, l=my_ismbchar(res->charset(),str,str+res->length()); if (!l) return (longlong)((uchar) *str); while (l--) diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index dcef7acb265..f3e19a19b3c 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1039,7 +1039,7 @@ String *Item_func_reverse::val_str(String *str) #ifdef USE_MB if (use_mb(res->charset())) { - register uint32 l; + uint32 l; while (ptr < end) { if ((l= my_ismbchar(res->charset(),ptr,end))) @@ -1088,7 +1088,7 @@ String *Item_func_replace::val_str(String *str) bool alloced=0; #ifdef USE_MB const char *ptr,*end,*strend,*search,*search_end; - register uint32 l; + uint32 l; bool binary_cmp; #endif THD *thd= 0; @@ -1141,7 +1141,7 @@ redo: { if (*ptr == *search) { - register char *i,*j; + char *i,*j; i=(char*) ptr+1; j=(char*) search+1; while (j != search_end) if (*i++ != *j++) goto skip; @@ -1735,14 +1735,14 @@ String *Item_func_substr_index::val_str(String *str) const char *search= delimiter->ptr(); const char *search_end= search+delimiter_length; int32 n=0,c=count,pass; - register uint32 l; + uint32 l; for (pass=(count>0);pass<2;++pass) { while (ptr < end) { if (*ptr == *search) { - register char *i,*j; + char *i,*j; i=(char*) ptr+1; j=(char*) search+1; while (j != search_end) if (*i++ != *j++) goto skip; @@ -1926,7 +1926,7 @@ String *Item_func_rtrim::val_str(String *str) end= ptr+res->length(); #ifdef USE_MB char *p=ptr; - register uint32 l; + uint32 l; #endif if (remove_length == 1) { @@ -2011,7 +2011,7 @@ String *Item_func_trim::val_str(String *str) if (use_mb(collation.collation)) { char *p=ptr; - register uint32 l; + uint32 l; loop: while (ptr + remove_length < end) { diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index d32209b58b8..ab892020e9c 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -14,7 +14,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */ -#ifdef __GNUC__ +#ifdef USE_PRAGMA_IMPLEMENTATION #pragma implementation #endif diff --git a/sql/key.cc b/sql/key.cc index 5a1b3573f6f..9c59bdf020a 100644 --- a/sql/key.cc +++ b/sql/key.cc @@ -54,8 +54,8 @@ using std::max; int find_ref_key(KEY *key, uint key_count, uchar *record, Field *field, uint *key_length, uint *keypart) { - reg2 int i; - reg3 KEY *key_info; + int i; + KEY *key_info; uint fieldpos; fieldpos= field->offset(record); @@ -511,7 +511,7 @@ int key_cmp(KEY_PART_INFO *key_part, const uchar *key, uint key_length) if (key_part->null_bit) { /* This key part allows null values; NULL is lower than everything */ - register bool field_is_null= key_part->field->is_null(); + bool field_is_null= key_part->field->is_null(); if (*key) // If range key is null { /* the range is expecting a null value */ diff --git a/sql/lock.cc b/sql/lock.cc index ba0d75a59e9..07021bae9ca 100644 --- a/sql/lock.cc +++ b/sql/lock.cc @@ -347,7 +347,7 @@ end: static int lock_external(THD *thd, TABLE **tables, uint count) { - reg1 uint i; + uint i; int lock_type,error; DBUG_ENTER("lock_external"); @@ -500,7 +500,7 @@ void mysql_lock_remove(THD *thd, MYSQL_LOCK *locked,TABLE *table) { if (locked) { - reg1 uint i; + uint i; for (i=0; i < locked->table_count; i++) { if (locked->table[i] == table) diff --git a/sql/log.cc b/sql/log.cc index f2ee8921dd2..acf1f8f8a9c 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -2430,7 +2430,7 @@ static int find_uniq_filename(char *name, ulong next_log_number) uint i; char buff[FN_REFLEN], ext_buf[FN_REFLEN]; struct st_my_dir *dir_info; - reg1 struct fileinfo *file_info; + struct fileinfo *file_info; ulong max_found, next, number; size_t buf_length, length; char *start, *end; @@ -8483,10 +8483,9 @@ void MYSQL_BIN_LOG::set_max_size(ulong max_size_arg) 0 String is not a number */ -static bool test_if_number(register const char *str, - ulong *res, bool allow_wildcards) +static bool test_if_number(const char *str, ulong *res, bool allow_wildcards) { - reg2 int flag; + int flag; const char *start; DBUG_ENTER("test_if_number"); diff --git a/sql/mf_iocache.cc b/sql/mf_iocache.cc index e9456b267c4..0336df6dfe9 100644 --- a/sql/mf_iocache.cc +++ b/sql/mf_iocache.cc @@ -49,7 +49,7 @@ extern "C" { */ -int _my_b_net_read(register IO_CACHE *info, uchar *Buffer, +int _my_b_net_read(IO_CACHE *info, uchar *Buffer, size_t Count __attribute__((unused))) { ulong read_length; diff --git a/sql/net_serv.cc b/sql/net_serv.cc index 7880d33975e..ea5e4353c83 100644 --- a/sql/net_serv.cc +++ b/sql/net_serv.cc @@ -60,8 +60,8 @@ #define EXTRA_DEBUG_fflush fflush #define EXTRA_DEBUG_ASSERT DBUG_ASSERT #else -static void inline EXTRA_DEBUG_fprintf(...) {} -static int inline EXTRA_DEBUG_fflush(...) { return 0; } +#define EXTRA_DEBUG_fprintf(...) +#define EXTRA_DEBUG_fflush(...) #define EXTRA_DEBUG_ASSERT(X) do {} while(0) #endif #ifdef MYSQL_SERVER diff --git a/sql/plistsort.c b/sql/plistsort.c index 9f9402a79d8..6efea273963 100644 --- a/sql/plistsort.c +++ b/sql/plistsort.c @@ -91,7 +91,7 @@ recursion_point: } { - register struct LS_STRUCT_NAME *sp0= sp++; + struct LS_STRUCT_NAME *sp0= sp++; sp->list_len= sp0->list_len >> 1; sp0->list_len-= sp->list_len; sp->return_point= 0; @@ -100,7 +100,7 @@ recursion_point: return_point0: sp->list1= sorted_list; { - register struct LS_STRUCT_NAME *sp0= sp++; + struct LS_STRUCT_NAME *sp0= sp++; list= list_end; sp->list_len= sp0->list_len; sp->return_point= 1; @@ -108,9 +108,9 @@ return_point0: goto recursion_point; return_point1: { - register LS_LIST_ITEM **hook= &sorted_list; - register LS_LIST_ITEM *list1= sp->list1; - register LS_LIST_ITEM *list2= sorted_list; + LS_LIST_ITEM **hook= &sorted_list; + LS_LIST_ITEM *list1= sp->list1; + LS_LIST_ITEM *list2= sorted_list; if (LS_COMPARE_FUNC_CALL(list1, list2)) { diff --git a/sql/records.cc b/sql/records.cc index 4825cb9ea93..795f1197840 100644 --- a/sql/records.cc +++ b/sql/records.cc @@ -622,7 +622,7 @@ static int init_rr_cache(THD *thd, READ_RECORD *info) static int rr_from_cache(READ_RECORD *info) { - reg1 uint i; + uint i; ulong length; my_off_t rest_of_file; int16 error; diff --git a/sql/slave.cc b/sql/slave.cc index 0330c151fd2..0ebed343a3d 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -217,7 +217,7 @@ static void set_slave_max_allowed_packet(THD *thd, MYSQL *mysql) void init_thread_mask(int* mask,Master_info* mi,bool inverse) { bool set_io = mi->slave_running, set_sql = mi->rli.slave_running; - register int tmp_mask=0; + int tmp_mask=0; DBUG_ENTER("init_thread_mask"); if (set_io) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index de5a9f413de..253b070a9b5 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -10629,7 +10629,7 @@ int fill_schema_applicable_roles(THD *thd, TABLE_LIST *tables, COND *cond) int wild_case_compare(CHARSET_INFO *cs, const char *str,const char *wildstr) { - reg3 int flag; + int flag; DBUG_ENTER("wild_case_compare"); DBUG_PRINT("enter",("str: '%s' wildstr: '%s'",str,wildstr)); while (*wildstr) diff --git a/sql/sql_base.cc b/sql/sql_base.cc index d49fbcddbf9..335d3a9dfce 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -8011,7 +8011,7 @@ bool setup_fields(THD *thd, Item **ref_pointer_array, List *sum_func_list, List *pre_fix, bool allow_sum_func) { - reg2 Item *item; + Item *item; enum_mark_columns save_mark_used_columns= thd->mark_used_columns; nesting_map save_allow_sum_func= thd->lex->allow_sum_func; List_iterator it(fields); diff --git a/sql/sql_class.h b/sql/sql_class.h index 63923945dd5..e3bc572ed0c 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -5196,7 +5196,7 @@ public: inline static int get_cost_calc_buff_size(size_t nkeys, uint key_size, ulonglong max_in_memory_size) { - register ulonglong max_elems_in_tree= + ulonglong max_elems_in_tree= max_in_memory_size / ALIGN_SIZE(sizeof(TREE_ELEMENT)+key_size); return (int) (sizeof(uint)*(1 + nkeys/max_elems_in_tree)); } diff --git a/sql/sql_db.cc b/sql/sql_db.cc index c0c8c57b46e..b1a82ab090d 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -338,7 +338,7 @@ static void del_dbopt(const char *path) static bool write_db_opt(THD *thd, const char *path, Schema_specification_st *create) { - register File file; + File file; char buf[256]; // Should be enough for one option bool error=1; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 0be8abf4842..da76f10596d 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -87,7 +87,7 @@ static int write_delayed(THD *thd, TABLE *table, enum_duplicates duplic, LEX_STRING query, bool ignore, bool log_on); static void end_delayed_insert(THD *thd); pthread_handler_t handle_delayed_insert(void *arg); -static void unlink_blobs(register TABLE *table); +static void unlink_blobs(TABLE *table); #endif static bool check_view_insertability(THD *thd, TABLE_LIST *view); @@ -3081,7 +3081,7 @@ pthread_handler_t handle_delayed_insert(void *arg) /* Remove pointers from temporary fields to allocated values */ -static void unlink_blobs(register TABLE *table) +static void unlink_blobs(TABLE *table) { for (Field **ptr=table->field ; *ptr ; ptr++) { @@ -3092,7 +3092,7 @@ static void unlink_blobs(register TABLE *table) /* Free blobs stored in current row */ -static void free_delayed_insert_blobs(register TABLE *table) +static void free_delayed_insert_blobs(TABLE *table) { for (Field **ptr=table->field ; *ptr ; ptr++) { diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 64406f54005..15ae6c67e22 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1001,7 +1001,7 @@ Lex_input_stream::unescape(CHARSET_INFO *cs, char *to, bool Lex_input_stream::get_text(LEX_STRING *dst, uint sep, int pre_skip, int post_skip) { - reg1 uchar c; + uchar c; uint found_escape=0; CHARSET_INFO *cs= m_thd->charset(); @@ -1181,7 +1181,7 @@ static inline uint int_token(const char *str,uint length) */ bool consume_comment(Lex_input_stream *lip, int remaining_recursions_permitted) { - reg1 uchar c; + uchar c; while (! lip->eof()) { c= lip->yyGet(); @@ -1283,7 +1283,7 @@ int MYSQLlex(YYSTYPE *yylval, THD *thd) static int lex_one_token(YYSTYPE *yylval, THD *thd) { - reg1 uchar UNINIT_VAR(c); + uchar UNINIT_VAR(c); bool comment_closed; int tokval, result_state; uint length; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index c8b9219c280..91f91cbb315 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -7360,7 +7360,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, List *partition_names, LEX_STRING *option) { - register TABLE_LIST *ptr; + TABLE_LIST *ptr; TABLE_LIST *UNINIT_VAR(previous_table_ref); /* The table preceding the current one. */ char *alias_str; LEX *lex= thd->lex; diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 320eddf1e66..2c6aeda794a 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -404,7 +404,7 @@ static bool send_prep_stmt(Prepared_statement *stmt, static ulong get_param_length(uchar **packet, ulong len) { - reg1 uchar *pos= *packet; + uchar *pos= *packet; if (len < 1) return 0; if (*pos < 251) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 954080cbc11..b9d8290b4ec 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -358,7 +358,7 @@ bool handle_select(THD *thd, LEX *lex, select_result *result, ulong setup_tables_done_option) { bool res; - register SELECT_LEX *select_lex = &lex->select_lex; + SELECT_LEX *select_lex = &lex->select_lex; DBUG_ENTER("handle_select"); MYSQL_SELECT_START(thd->query()); diff --git a/sql/sql_string.cc b/sql/sql_string.cc index b6ce89e1471..d03ed5be02f 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -608,8 +608,8 @@ int String::strstr(const String &s,uint32 offset) if (!s.length()) return ((int) offset); // Empty string is always found - register const char *str = Ptr+offset; - register const char *search=s.ptr(); + const char *str = Ptr+offset; + const char *search=s.ptr(); const char *end=Ptr+str_length-s.length()+1; const char *search_end=s.ptr()+s.length(); skip: @@ -617,7 +617,7 @@ skip: { if (*str++ == *search) { - register char *i,*j; + char *i,*j; i=(char*) str; j=(char*) search+1; while (j != search_end) if (*i++ != *j++) goto skip; @@ -638,8 +638,8 @@ int String::strrstr(const String &s,uint32 offset) { if (!s.length()) return offset; // Empty string is always found - register const char *str = Ptr+offset-1; - register const char *search=s.ptr()+s.length()-1; + const char *str = Ptr+offset-1; + const char *search=s.ptr()+s.length()-1; const char *end=Ptr+s.length()-2; const char *search_end=s.ptr()-1; @@ -648,7 +648,7 @@ skip: { if (*str-- == *search) { - register char *i,*j; + char *i,*j; i=(char*) str; j=(char*) search-1; while (j != search_end) if (*i-- != *j--) goto skip; diff --git a/sql/table.cc b/sql/table.cc index 12b23304acd..91b321930ab 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -3063,7 +3063,7 @@ partititon_err: free_share Is 1 if we also want to free table_share */ -int closefrm(register TABLE *table, bool free_share) +int closefrm(TABLE *table, bool free_share) { int error=0; DBUG_ENTER("closefrm"); @@ -3111,7 +3111,7 @@ int closefrm(register TABLE *table, bool free_share) /* Deallocate temporary blob storage */ -void free_blobs(register TABLE *table) +void free_blobs(TABLE *table) { uint *ptr, *end; for (ptr= table->s->blob_field, end=ptr + table->s->blob_fields ; diff --git a/sql/uniques.cc b/sql/uniques.cc index 8da9ca2fe68..03f25d31384 100644 --- a/sql/uniques.cc +++ b/sql/uniques.cc @@ -208,7 +208,7 @@ static double get_merge_many_buffs_cost(uint *buffer, uint last_n_elems, int elem_size, uint compare_factor) { - register int i; + int i; double total_cost= 0.0; uint *buff_elems= buffer; /* #s of elements in each of merged sequences */ diff --git a/sql/unireg.cc b/sql/unireg.cc index 3cef6f225bc..b9abe3da1b9 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -751,7 +751,6 @@ static bool pack_fields(uchar *buff, List &create_fields, recpos= field->offset+1 + (uint) data_offset; int3store(buff+5,recpos); int2store(buff+8,field->pack_flag); - DBUG_ASSERT(field->unireg_check < 256); buff[10]= (uchar) field->unireg_check; buff[12]= (uchar) field->interval_id; buff[13]= (uchar) field->sql_type; diff --git a/storage/connect/array.cpp b/storage/connect/array.cpp index cd1785b48ac..483139bc955 100644 --- a/storage/connect/array.cpp +++ b/storage/connect/array.cpp @@ -457,7 +457,7 @@ char *ARRAY::GetStringValue(int n) /***********************************************************************/ bool ARRAY::Find(PVAL valp) { - register int n; + int n; PVAL vp; if (Type != valp->GetType()) { @@ -1065,7 +1065,7 @@ MULAR::MULAR(PGLOBAL g, int n) : CSORT(false) /***********************************************************************/ int MULAR::Qcompare(int *i1, int *i2) { - register int i, n = 0; + int i, n = 0; for (i = 0; i < Narray; i++) if ((n = Pars[i]->Qcompare(i1, i2))) diff --git a/storage/connect/csort.cpp b/storage/connect/csort.cpp index 670131b8fd2..1e4ba674e23 100644 --- a/storage/connect/csort.cpp +++ b/storage/connect/csort.cpp @@ -178,9 +178,9 @@ void CSORT::DebugSort(int ph, int n, int *base, int *mid, int *tmp) /***********************************************************************/ int CSORT::Qsortx(void) { - register int c; - register int lo, hi, min; - register int i, j, rc = 0; + int c; + int lo, hi, min; + int i, j, rc = 0; // To do: rc should be checked for being used uninitialized int *top; #ifdef DEBTRACE @@ -344,7 +344,7 @@ int CSORT::Qsortx(void) /***********************************************************************/ void CSORT::Qstx(int *base, int *max) { - register int *i, *j, *jj, *mid, *him, c; + int *i, *j, *jj, *mid, *him, c; int *tmp; int lo, hi, rc; size_t zlo, zhi, cnm; @@ -543,9 +543,9 @@ void CSORT::Qstx(int *base, int *max) /***********************************************************************/ int CSORT::Qsortc(void) { - register int c; - register int lo, hi, min; - register int i, j, k, m, rc = 0; + int c; + int lo, hi, min; + int i, j, k, m, rc = 0; // To do: rc should be checked for being used uninitialized int *max; #ifdef DEBTRACE @@ -720,7 +720,7 @@ int CSORT::Qsortc(void) /***********************************************************************/ void CSORT::Qstc(int *base, int *max) { - register int *i, *j, *jj, *lt, *eq, *gt, *mid; + int *i, *j, *jj, *lt, *eq, *gt, *mid; int c = 0, lo, hi, rc; size_t zlo, zhi, cnm; @@ -907,9 +907,9 @@ void CSORT::Qstc(int *base, int *max) /***********************************************************************/ void CSORT::Istc(int *base, int *hi, int *max) { - register int c = 0; - register int *lo; - register int *i, *j; + int c = 0; + int *lo; + int *i, *j; /*********************************************************************/ /* First put smallest element, which must be in the first THRESH, */ diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index dd88b482822..40f9e90ff35 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -3071,7 +3071,7 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond) strncat(s, res->ptr(), res->length()); if (res->length() < 19) - strcat(s, "1970-01-01 00:00:00" + res->length()); + strcat(s, &"1970-01-01 00:00:00"[res->length()]); strcat(s, "'}"); break; @@ -3101,7 +3101,7 @@ PCFIL ha_connect::CheckCond(PGLOBAL g, PCFIL filp, const Item *cond) strncat(s, res->ptr(), res->length()); if (res->length() < 19) - strcat(s, "1970-01-01 00:00:00" + res->length()); + strcat(s, &"1970-01-01 00:00:00"[res->length()]); strcat(s, "'}"); break; diff --git a/storage/connect/odbconn.cpp b/storage/connect/odbconn.cpp index 6687513fa6c..d08c6d1b7a5 100644 --- a/storage/connect/odbconn.cpp +++ b/storage/connect/odbconn.cpp @@ -2279,7 +2279,7 @@ int ODBConn::GetCatInfo(CATPARM *cap) int i, irc; bool b; PCSZ fnc = "Unknown"; - UWORD n; + UWORD n = 0; SWORD ncol, len, tp; SQLULEN crow = 0; PQRYRES qrp = cap->Qrp; diff --git a/storage/connect/valblk.cpp b/storage/connect/valblk.cpp index 73ca135691c..5179fa654cf 100644 --- a/storage/connect/valblk.cpp +++ b/storage/connect/valblk.cpp @@ -511,7 +511,7 @@ void TYPBLK::SetValues(PVBLK pv, int k, int n) CheckType(pv) TYPE *lp = ((TYPBLK*)pv)->Typp; - for (register int i = k; i < n; i++) // TODO + for (int i = k; i < n; i++) // TODO Typp[i] = lp[i]; } // end of SetValues @@ -805,7 +805,7 @@ void CHRBLK::SetValue(const char *sp, uint len, int n) if (Blanks) { // Suppress eventual ending zero and right fill with blanks - for (register int i = len; i < Long; i++) + for (int i = len; i < Long; i++) p[i] = ' '; } else if ((signed)len < Long) diff --git a/storage/connect/xindex.cpp b/storage/connect/xindex.cpp index efefc17b5f5..db4d6cbb00d 100644 --- a/storage/connect/xindex.cpp +++ b/storage/connect/xindex.cpp @@ -272,8 +272,8 @@ void XINDEX::Close(void) /***********************************************************************/ int XINDEX::Qcompare(int *i1, int *i2) { - register int k; - register PXCOL kcp; + int k; + PXCOL kcp; for (kcp = To_KeyCol, k = 0; kcp; kcp = kcp->Next) if ((k = kcp->Compare(*i1, *i2))) @@ -745,7 +745,7 @@ int XINDEX::ColMaxSame(PXCOL kp) /***********************************************************************/ bool XINDEX::Reorder(PGLOBAL g __attribute__((unused))) { - register int i, j, k, n; + int i, j, k, n; bool sorted = true; PXCOL kcp; #if 0 @@ -1870,8 +1870,8 @@ int XINDEX::Fetch(PGLOBAL g) /***********************************************************************/ int XINDEX::FastFind(void) { - register int curk, sup, inf, i= 0, k, n = 2; - register PXCOL kp, kcp; + int curk, sup, inf, i= 0, k, n = 2; + PXCOL kp, kcp; //assert((int)nv == Nval); @@ -2209,8 +2209,8 @@ int XINDXS::Fetch(PGLOBAL g) /***********************************************************************/ int XINDXS::FastFind(void) { - register int sup, inf, i= 0, n = 2; - register PXCOL kcp = To_KeyCol; + int sup, inf, i= 0, n = 2; + PXCOL kcp = To_KeyCol; if (Nblk && Op == OP_EQ) { // Look in block values to find in which block to search @@ -3235,7 +3235,7 @@ void KXYCOL::FillValue(PVAL valp) int KXYCOL::Compare(int i1, int i2) { // Do the actual comparison between values. - register int k = Kblp->CompVal(i1, i2); + int k = Kblp->CompVal(i1, i2); if (trace(4)) htrc("Compare done result=%d\n", k); @@ -3250,7 +3250,7 @@ int KXYCOL::CompVal(int i) { // Do the actual comparison between numerical values. if (trace(4)) { - register int k = (int)Kblp->CompVal(Valp, (int)i); + int k = (int)Kblp->CompVal(Valp, (int)i); htrc("Compare done result=%d\n", k); return k; diff --git a/storage/heap/heapdef.h b/storage/heap/heapdef.h index 0c1b5f8460f..430fdaa8949 100644 --- a/storage/heap/heapdef.h +++ b/storage/heap/heapdef.h @@ -97,7 +97,7 @@ extern uint hp_rb_key_length(HP_KEYDEF *keydef, const uchar *key); extern uint hp_rb_null_key_length(HP_KEYDEF *keydef, const uchar *key); extern uint hp_rb_var_key_length(HP_KEYDEF *keydef, const uchar *key); extern my_bool hp_if_null_in_key(HP_KEYDEF *keyinfo, const uchar *record); -extern int hp_close(register HP_INFO *info); +extern int hp_close(HP_INFO *info); extern void hp_clear(HP_SHARE *info); extern void hp_clear_keys(HP_SHARE *info); extern uint hp_rb_pack_key(HP_KEYDEF *keydef, uchar *key, const uchar *old, diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h index 361bdaca0c0..a417828f242 100644 --- a/storage/innobase/handler/ha_innodb.h +++ b/storage/innobase/handler/ha_innodb.h @@ -208,7 +208,7 @@ class ha_innobase: public handler char* remote_path); const char* check_table_options(THD *thd, TABLE* table, HA_CREATE_INFO* create_info, const bool use_tablespace, const ulint file_format); - int create(const char *name, register TABLE *form, + int create(const char *name, TABLE *form, HA_CREATE_INFO *create_info); int truncate(); int delete_table(const char *name); diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc index 77946d8e107..5f73a1dc1af 100644 --- a/storage/maria/ha_maria.cc +++ b/storage/maria/ha_maria.cc @@ -3044,7 +3044,7 @@ static enum data_file_type maria_row_type(HA_CREATE_INFO *info) } -int ha_maria::create(const char *name, register TABLE *table_arg, +int ha_maria::create(const char *name, TABLE *table_arg, HA_CREATE_INFO *ha_create_info) { int error; diff --git a/storage/maria/ma_blockrec.h b/storage/maria/ma_blockrec.h index 389e6c8b3d8..a8eaeef7bcc 100644 --- a/storage/maria/ma_blockrec.h +++ b/storage/maria/ma_blockrec.h @@ -190,8 +190,7 @@ MARIA_RECORD_POS _ma_write_init_block_record(MARIA_HA *info, const uchar *record); my_bool _ma_write_block_record(MARIA_HA *info, const uchar *record); my_bool _ma_write_abort_block_record(MARIA_HA *info); -my_bool _ma_compare_block_record(register MARIA_HA *info, - register const uchar *record); +my_bool _ma_compare_block_record(MARIA_HA *info, const uchar *record); void _ma_compact_block_page(MARIA_SHARE *share, uchar *buff, uint rownr, my_bool extend_block, TrID min_read_from, uint min_row_length); diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h index 1c9452e8cfa..0a58a0a1786 100644 --- a/storage/maria/maria_def.h +++ b/storage/maria/maria_def.h @@ -109,7 +109,7 @@ typedef struct st_maria_sort_param int (*key_read)(struct st_maria_sort_param *, uchar *); int (*key_write)(struct st_maria_sort_param *, const uchar *); void (*lock_in_memory)(HA_CHECK *); - int (*write_keys)(struct st_maria_sort_param *, register uchar **, + int (*write_keys)(struct st_maria_sort_param *, uchar **, ulonglong , struct st_buffpek *, IO_CACHE *); my_off_t (*read_to_buffer)(IO_CACHE *,struct st_buffpek *, uint); int (*write_key)(struct st_maria_sort_param *, IO_CACHE *,uchar *, @@ -1040,7 +1040,7 @@ my_off_t _ma_no_keypos_to_recpos(MARIA_SHARE *share, my_off_t pos); extern my_bool _ma_ck_write(MARIA_HA *info, MARIA_KEY *key); extern my_bool _ma_enlarge_root(MARIA_HA *info, MARIA_KEY *key, MARIA_RECORD_POS *root); -int _ma_insert(register MARIA_HA *info, MARIA_KEY *key, +int _ma_insert(MARIA_HA *info, MARIA_KEY *key, MARIA_PAGE *anc_page, uchar *key_pos, uchar *key_buff, MARIA_PAGE *father_page, uchar *father_key_pos, my_bool insert_last); @@ -1082,7 +1082,7 @@ extern void _ma_store_bin_pack_key(MARIA_KEYDEF *keyinfo, uchar *key_pos, MARIA_KEY_PARAM *s_temp); extern my_bool _ma_ck_delete(MARIA_HA *info, MARIA_KEY *key); -extern my_bool _ma_ck_real_delete(register MARIA_HA *info, MARIA_KEY *key, +extern my_bool _ma_ck_real_delete(MARIA_HA *info, MARIA_KEY *key, my_off_t *root); extern int _ma_readinfo(MARIA_HA *info, int lock_flag, int check_keybuffer); extern int _ma_writeinfo(MARIA_HA *info, uint options); @@ -1154,7 +1154,7 @@ extern my_bool _ma_fetch_keypage(MARIA_PAGE *page, MARIA_HA *info, extern my_bool _ma_write_keypage(MARIA_PAGE *page, enum pagecache_page_lock lock, int level); extern int _ma_dispose(MARIA_HA *info, my_off_t pos, my_bool page_not_read); -extern my_off_t _ma_new(register MARIA_HA *info, int level, +extern my_off_t _ma_new(MARIA_HA *info, int level, MARIA_PINNED_PAGE **page_link); extern my_bool _ma_compact_keypage(MARIA_PAGE *page, TrID min_read_from); extern uint transid_store_packed(MARIA_HA *info, uchar *to, ulonglong trid); @@ -1342,7 +1342,7 @@ extern MARIA_HA *_ma_test_if_reopen(const char *filename); my_bool _ma_check_table_is_closed(const char *name, const char *where); int _ma_open_datafile(MARIA_HA *info, MARIA_SHARE *share); int _ma_open_keyfile(MARIA_SHARE *share); -void _ma_setup_functions(register MARIA_SHARE *share); +void _ma_setup_functions(MARIA_SHARE *share); my_bool _ma_dynmap_file(MARIA_HA *info, my_off_t size); void _ma_remap_file(MARIA_HA *info, my_off_t size); @@ -1424,7 +1424,7 @@ extern my_bool maria_flush_log_for_page_none(PAGECACHE_IO_HOOK_ARGS *args); extern PAGECACHE *maria_log_pagecache; extern void ma_set_index_cond_func(MARIA_HA *info, index_cond_func_t func, void *func_arg); -ICP_RESULT ma_check_index_cond(register MARIA_HA *info, uint keynr, uchar *record); +ICP_RESULT ma_check_index_cond(MARIA_HA *info, uint keynr, uchar *record); extern my_bool ma_yield_and_check_if_killed(MARIA_HA *info, int inx); extern my_bool ma_killed_standalone(MARIA_HA *); diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc index 3b2e9998be7..bfa85abb7d9 100644 --- a/storage/myisam/ha_myisam.cc +++ b/storage/myisam/ha_myisam.cc @@ -2016,7 +2016,7 @@ void ha_myisam::update_create_info(HA_CREATE_INFO *create_info) } -int ha_myisam::create(const char *name, register TABLE *table_arg, +int ha_myisam::create(const char *name, TABLE *table_arg, HA_CREATE_INFO *ha_create_info) { int error; diff --git a/storage/myisam/myisamdef.h b/storage/myisam/myisamdef.h index 67d60d7b1b5..e0e8bcefd65 100644 --- a/storage/myisam/myisamdef.h +++ b/storage/myisam/myisamdef.h @@ -536,8 +536,7 @@ extern uchar *_mi_get_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, uchar *keypos, uint *return_key_length); extern uint _mi_keylength(MI_KEYDEF *keyinfo, uchar *key); -extern uint _mi_keylength_part(MI_KEYDEF *keyinfo, register uchar *key, - HA_KEYSEG *end); +extern uint _mi_keylength_part(MI_KEYDEF *keyinfo, uchar *key, HA_KEYSEG *end); extern uchar *_mi_move_key(MI_KEYDEF *keyinfo, uchar *to, uchar *from); extern int _mi_search_next(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, uint key_length, uint nextflag, my_off_t pos); @@ -716,12 +715,12 @@ my_bool check_table_is_closed(const char *name, const char *where); int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share); int mi_open_keyfile(MYISAM_SHARE *share); -void mi_setup_functions(register MYISAM_SHARE *share); +void mi_setup_functions(MYISAM_SHARE *share); my_bool mi_dynmap_file(MI_INFO *info, my_off_t size); int mi_munmap_file(MI_INFO *info); void mi_remap_file(MI_INFO *info, my_off_t size); -ICP_RESULT mi_check_index_cond(register MI_INFO *info, uint keynr, uchar *record); +ICP_RESULT mi_check_index_cond(MI_INFO *info, uint keynr, uchar *record); /* Functions needed by mi_check */ int killed_ptr(HA_CHECK *param); void mi_check_print_error(HA_CHECK *param, const char *fmt, ...); diff --git a/storage/myisammrg/ha_myisammrg.cc b/storage/myisammrg/ha_myisammrg.cc index 3cb66a8b94c..4cc4aca3f90 100644 --- a/storage/myisammrg/ha_myisammrg.cc +++ b/storage/myisammrg/ha_myisammrg.cc @@ -1567,7 +1567,7 @@ int ha_myisammrg::create_mrg(const char *name, HA_CREATE_INFO *create_info) } -int ha_myisammrg::create(const char *name, register TABLE *form, +int ha_myisammrg::create(const char *name, TABLE *form, HA_CREATE_INFO *create_info) { char buff[FN_REFLEN]; diff --git a/storage/perfschema/pfs.cc b/storage/perfschema/pfs.cc index e73e65ce059..fa19f89f9d6 100644 --- a/storage/perfschema/pfs.cc +++ b/storage/perfschema/pfs.cc @@ -2214,7 +2214,7 @@ start_mutex_wait_v1(PSI_mutex_locker_state *state, if (! pfs_mutex->m_enabled) return NULL; - register uint flags; + uint flags; ulonglong timer_start= 0; if (flag_thread_instrumentation) @@ -2312,7 +2312,7 @@ start_rwlock_wait_v1(PSI_rwlock_locker_state *state, if (! pfs_rwlock->m_enabled) return NULL; - register uint flags; + uint flags; ulonglong timer_start= 0; if (flag_thread_instrumentation) @@ -2420,7 +2420,7 @@ start_cond_wait_v1(PSI_cond_locker_state *state, if (! pfs_cond->m_enabled) return NULL; - register uint flags; + uint flags; ulonglong timer_start= 0; if (flag_thread_instrumentation) @@ -2564,7 +2564,7 @@ start_table_io_wait_v1(PSI_table_locker_state *state, PFS_thread *pfs_thread= my_pthread_getspecific_ptr(PFS_thread*, THR_PFS); - register uint flags; + uint flags; ulonglong timer_start= 0; if (flag_thread_instrumentation) @@ -2690,7 +2690,7 @@ start_table_lock_wait_v1(PSI_table_locker_state *state, DBUG_ASSERT((uint) lock_type < array_elements(table_lock_operation_map)); - register uint flags; + uint flags; ulonglong timer_start= 0; if (flag_thread_instrumentation) @@ -2798,7 +2798,7 @@ get_thread_file_name_locker_v1(PSI_file_locker_state *state, if (flag_thread_instrumentation && ! pfs_thread->m_enabled) return NULL; - register uint flags; + uint flags; state->m_thread= reinterpret_cast (pfs_thread); flags= STATE_FLAG_THREAD; @@ -2867,7 +2867,7 @@ get_thread_file_stream_locker_v1(PSI_file_locker_state *state, if (! pfs_file->m_enabled) return NULL; - register uint flags; + uint flags; if (flag_thread_instrumentation) { @@ -2973,7 +2973,7 @@ get_thread_file_descriptor_locker_v1(PSI_file_locker_state *state, DBUG_ASSERT(pfs_file->m_class != NULL); PFS_file_class *klass= pfs_file->m_class; - register uint flags; + uint flags; if (flag_thread_instrumentation) { @@ -3062,7 +3062,7 @@ start_socket_wait_v1(PSI_socket_locker_state *state, if (!pfs_socket->m_enabled || pfs_socket->m_idle) return NULL; - register uint flags= 0; + uint flags= 0; ulonglong timer_start= 0; if (flag_thread_instrumentation) @@ -3321,7 +3321,7 @@ start_idle_wait_v1(PSI_idle_locker_state* state, const char *src_file, uint src_ if (!global_idle_class.m_enabled) return NULL; - register uint flags= 0; + uint flags= 0; ulonglong timer_start= 0; if (flag_thread_instrumentation) @@ -3403,7 +3403,7 @@ static void end_idle_wait_v1(PSI_idle_locker* locker) ulonglong timer_end= 0; ulonglong wait_time= 0; - register uint flags= state->m_flags; + uint flags= state->m_flags; if (flags & STATE_FLAG_TIMED) { @@ -3473,7 +3473,7 @@ static void end_mutex_wait_v1(PSI_mutex_locker* locker, int rc) DBUG_ASSERT(mutex != NULL); PFS_thread *thread= reinterpret_cast (state->m_thread); - register uint flags= state->m_flags; + uint flags= state->m_flags; if (flags & STATE_FLAG_TIMED) { @@ -3794,7 +3794,7 @@ static void end_table_io_wait_v1(PSI_table_locker* locker) break; } - register uint flags= state->m_flags; + uint flags= state->m_flags; if (flags & STATE_FLAG_TIMED) { @@ -3865,7 +3865,7 @@ static void end_table_lock_wait_v1(PSI_table_locker* locker) PFS_single_stat *stat= & table->m_table_stat.m_lock_stat.m_stat[state->m_index]; - register uint flags= state->m_flags; + uint flags= state->m_flags; if (flags & STATE_FLAG_TIMED) { @@ -4028,7 +4028,7 @@ static void start_file_wait_v1(PSI_file_locker *locker, PSI_file_locker_state *state= reinterpret_cast (locker); DBUG_ASSERT(state != NULL); - register uint flags= state->m_flags; + uint flags= state->m_flags; if (flags & STATE_FLAG_TIMED) { @@ -4064,7 +4064,7 @@ static void end_file_wait_v1(PSI_file_locker *locker, ulonglong timer_end= 0; ulonglong wait_time= 0; PFS_byte_stat *byte_stat; - register uint flags= state->m_flags; + uint flags= state->m_flags; size_t bytes= ((int)byte_count > -1 ? byte_count : 0); PFS_file_stat *file_stat; @@ -4419,7 +4419,7 @@ get_thread_statement_locker_v1(PSI_statement_locker_state *state, if (! klass->m_enabled) return NULL; - register uint flags; + uint flags; if (flag_thread_instrumentation) { @@ -4596,7 +4596,7 @@ static void start_statement_v1(PSI_statement_locker *locker, PSI_statement_locker_state *state= reinterpret_cast (locker); DBUG_ASSERT(state != NULL); - register uint flags= state->m_flags; + uint flags= state->m_flags; ulonglong timer_start= 0; if (flags & STATE_FLAG_TIMED) @@ -4798,7 +4798,7 @@ static void end_statement_v1(PSI_statement_locker *locker, void *stmt_da) ulonglong timer_end= 0; ulonglong wait_time= 0; - register uint flags= state->m_flags; + uint flags= state->m_flags; if (flags & STATE_FLAG_TIMED) { @@ -5024,7 +5024,7 @@ static void end_socket_wait_v1(PSI_socket_locker *locker, size_t byte_count) ulonglong timer_end= 0; ulonglong wait_time= 0; PFS_byte_stat *byte_stat; - register uint flags= state->m_flags; + uint flags= state->m_flags; size_t bytes= ((int)byte_count > -1 ? byte_count : 0); switch (state->m_operation) diff --git a/storage/perfschema/pfs_global.h b/storage/perfschema/pfs_global.h index 009c6a0e603..8ca12883f9d 100644 --- a/storage/perfschema/pfs_global.h +++ b/storage/perfschema/pfs_global.h @@ -80,7 +80,7 @@ inline uint randomized_index(const void *ptr, uint max_size) static uint seed1= 0; static uint seed2= 0; uint result; - register intptr value; + intptr value; if (unlikely(max_size == 0)) return 0; diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc index e57215fb46b..9726afdd66e 100644 --- a/storage/spider/spd_table.cc +++ b/storage/spider/spd_table.cc @@ -6302,7 +6302,7 @@ int spider_panic( int spider_db_init( void *p ) { - int error_num, roop_count; + int error_num = 0, roop_count; uint dbton_id = 0; handlerton *spider_hton = (handlerton *)p; DBUG_ENTER("spider_db_init"); -- cgit v1.2.1 From aa55d93cde4da10ea5848b90314d1e0263f5fa43 Mon Sep 17 00:00:00 2001 From: Sachin Date: Wed, 26 Jun 2019 14:49:23 +0530 Subject: Fix galera_log_output_csv.test Truncate the mysql.slow_log table after test is complete. --- mysql-test/suite/galera/r/galera_log_output_csv.result | 2 ++ mysql-test/suite/galera/t/galera_log_output_csv.test | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mysql-test/suite/galera/r/galera_log_output_csv.result b/mysql-test/suite/galera/r/galera_log_output_csv.result index cdb5ee49f3e..24b7dc2b35d 100644 --- a/mysql-test/suite/galera/r/galera_log_output_csv.result +++ b/mysql-test/suite/galera/r/galera_log_output_csv.result @@ -16,3 +16,5 @@ SELECT COUNT(*) = 1 FROM mysql.slow_log WHERE sql_text = 'SELECT 2 = 2 FROM t1'; COUNT(*) = 1 1 DROP TABLE t1; +truncate table mysql.slow_log; +truncate table mysql.general_log; diff --git a/mysql-test/suite/galera/t/galera_log_output_csv.test b/mysql-test/suite/galera/t/galera_log_output_csv.test index 94ae3dd6168..eeccc953187 100644 --- a/mysql-test/suite/galera/t/galera_log_output_csv.test +++ b/mysql-test/suite/galera/t/galera_log_output_csv.test @@ -22,3 +22,5 @@ SELECT COUNT(*) = 1 FROM mysql.slow_log WHERE sql_text = 'SELECT 2 = 2 FROM t1'; --connection node_1 DROP TABLE t1; +truncate table mysql.slow_log; +truncate table mysql.general_log; -- cgit v1.2.1 From 7f2cfa8f47cf05d8dbea65ced3656fd0fc6efbf5 Mon Sep 17 00:00:00 2001 From: Sachin Date: Wed, 12 Jun 2019 15:58:44 +0530 Subject: MDEV-8874 Replication filters configured in my.cnf are ignored if slave reset and reconfigured Don't delete the rpl_filter on RESET SLAVE. --- mysql-test/lib/My/Config.pm | 8 +- mysql-test/suite/multi_source/mdev-8874.cnf | 25 +++++ mysql-test/suite/multi_source/mdev-8874.result | 114 ++++++++++++++++++++ mysql-test/suite/multi_source/mdev-8874.test | 141 +++++++++++++++++++++++++ sql/rpl_mi.cc | 2 - 5 files changed, 287 insertions(+), 3 deletions(-) create mode 100644 mysql-test/suite/multi_source/mdev-8874.cnf create mode 100644 mysql-test/suite/multi_source/mdev-8874.result create mode 100644 mysql-test/suite/multi_source/mdev-8874.test diff --git a/mysql-test/lib/My/Config.pm b/mysql-test/lib/My/Config.pm index 12647edf0a4..86bb7a5f961 100644 --- a/mysql-test/lib/My/Config.pm +++ b/mysql-test/lib/My/Config.pm @@ -327,7 +327,13 @@ sub new { # Skip comment next; } - + # Correctly process Replication Filter when they are defined + # with connection name. + elsif ( $line =~ /^([\w]+.[\w]+)\s*=\s*(.*)\s*/){ + my $option= $1; + my $value= $2; + $self->insert($group_name, $option, $value); + } else { croak "Unexpected line '$line' found in '$path'"; } diff --git a/mysql-test/suite/multi_source/mdev-8874.cnf b/mysql-test/suite/multi_source/mdev-8874.cnf new file mode 100644 index 00000000000..dc89db72772 --- /dev/null +++ b/mysql-test/suite/multi_source/mdev-8874.cnf @@ -0,0 +1,25 @@ +!include my.cnf + +[mysqld.1] +log-bin +log-slave-updates + +[mysqld.2] +log-bin +log-slave-updates + +[mysqld.3] +log-bin +log-slave-updates + +[mysqld.4] +server-id=4 +log-bin=server4-bin +log-slave-updates +m1.replicate_ignore_table='a.t1' +m2.replicate_ignore_table='b.t1' +replicate_ignore_table='c.t1' + +[ENV] +SERVER_MYPORT_4= @mysqld.4.port +SERVER_MYSOCK_4= @mysqld.4.socket diff --git a/mysql-test/suite/multi_source/mdev-8874.result b/mysql-test/suite/multi_source/mdev-8874.result new file mode 100644 index 00000000000..25185eed02a --- /dev/null +++ b/mysql-test/suite/multi_source/mdev-8874.result @@ -0,0 +1,114 @@ +create database a; +use a; +create table t1(a int); +insert into t1 values(1); +create table t2(a int); +insert into t2 values(1); +create database b; +use b; +create table t1(a int); +insert into t1 values(1); +create table t2(a int); +insert into t2 values(1); +create database c; +use c; +create table t1(a int); +insert into t1 values(1); +create table t2(a int); +insert into t2 values(1); +change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root'; +change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root'; +change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root'; +start all slaves; +set default_master_connection = 'm1'; +include/wait_for_slave_to_start.inc +set default_master_connection = 'm2'; +include/wait_for_slave_to_start.inc +set default_master_connection = ''; +include/wait_for_slave_to_start.inc +select @@global.'m1'.replicate_ignore_table; +@@global.'m1'.replicate_ignore_table +a.t1 +select @@global.'m2'.replicate_ignore_table; +@@global.'m2'.replicate_ignore_table +b.t1 +select @@global.replicate_ignore_table; +@@global.replicate_ignore_table +c.t1 +use a; +#No t1 table +show tables; +Tables_in_a +t2 +use b; +#No t1 table +show tables; +Tables_in_b +t2 +use c; +#No t1 table +show tables; +Tables_in_c +t2 +#TEST +STOP ALL SLAVES; +Warnings: +Note 1938 SLAVE 'm2' stopped +Note 1938 SLAVE '' stopped +Note 1938 SLAVE 'm1' stopped +RESET SLAVE 'm1' ALL ; +RESET SLAVE 'm2' ALL ; +RESET SLAVE ALL ; +drop database a; +drop database b; +drop database c; +change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root'; +change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root'; +change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root'; +start all slaves; +Warnings: +Note 1937 SLAVE 'm2' started +Note 1937 SLAVE '' started +Note 1937 SLAVE 'm1' started +set default_master_connection = 'm1'; +include/wait_for_slave_to_start.inc +set default_master_connection = 'm2'; +include/wait_for_slave_to_start.inc +set default_master_connection = ''; +include/wait_for_slave_to_start.inc +#Replication Filter should be intact (t1 still not replicated) +select @@global.'m1'.replicate_ignore_table; +@@global.'m1'.replicate_ignore_table +a.t1 +select @@global.'m2'.replicate_ignore_table; +@@global.'m2'.replicate_ignore_table +b.t1 +select @@global.replicate_ignore_table; +@@global.replicate_ignore_table +c.t1 +use a; +#No t1 table +show tables; +Tables_in_a +t2 +use b; +#No t1 table +show tables; +Tables_in_b +t2 +use c; +#No t1 table +show tables; +Tables_in_c +t2 +#CleanUp +drop database a; +drop database b; +drop database c; +stop all slaves; +SET default_master_connection = "m1"; +include/wait_for_slave_to_stop.inc +SET default_master_connection = "m2"; +include/wait_for_slave_to_stop.inc +SET default_master_connection = ""; +include/wait_for_slave_to_stop.inc diff --git a/mysql-test/suite/multi_source/mdev-8874.test b/mysql-test/suite/multi_source/mdev-8874.test new file mode 100644 index 00000000000..d03c255b911 --- /dev/null +++ b/mysql-test/suite/multi_source/mdev-8874.test @@ -0,0 +1,141 @@ +--source include/not_embedded.inc +--source include/have_innodb.inc +--source include/have_debug.inc +# MDEV-8874 +# In Named Master slave connection if we do reset slave 'connection_name' ALL and then +# if we reconnect slave, replication filters are ignored. +# This patch fixes this issue. +--connect (server_1,127.0.0.1,root,,,$SERVER_MYPORT_1) +--connect (server_2,127.0.0.1,root,,,$SERVER_MYPORT_2) +--connect (server_3,127.0.0.1,root,,,$SERVER_MYPORT_3) +--connect (server_4,127.0.0.1,root,,,$SERVER_MYPORT_4) + +--connection server_1 +create database a; +use a; +create table t1(a int); +insert into t1 values(1); +create table t2(a int); +insert into t2 values(1); +--save_master_pos + +--connection server_2 +create database b; +use b; +create table t1(a int); +insert into t1 values(1); +create table t2(a int); +insert into t2 values(1); +--save_master_pos + +--connection server_3 +create database c; +use c; +create table t1(a int); +insert into t1 values(1); +create table t2(a int); +insert into t2 values(1); +--save_master_pos + +--connection server_4 +--disable_warnings +--replace_result $SERVER_MYPORT_1 MYPORT_1 +eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root'; +--replace_result $SERVER_MYPORT_2 MYPORT_2 +eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root'; +--replace_result $SERVER_MYPORT_3 MYPORT_3 +eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root'; +start all slaves; +set default_master_connection = 'm1'; +--source include/wait_for_slave_to_start.inc +set default_master_connection = 'm2'; +--source include/wait_for_slave_to_start.inc +set default_master_connection = ''; +--source include/wait_for_slave_to_start.inc +select @@global.'m1'.replicate_ignore_table; +select @@global.'m2'.replicate_ignore_table; +select @@global.replicate_ignore_table; + +--enable_warnings +--sync_with_master 0,'m1' +--sync_with_master 0,'m2' +--sync_with_master 0,'' +use a; +--echo #No t1 table +show tables; +use b; +--echo #No t1 table +show tables; +use c; +--echo #No t1 table +show tables; +--echo #TEST +STOP ALL SLAVES; +RESET SLAVE 'm1' ALL ; +RESET SLAVE 'm2' ALL ; +RESET SLAVE ALL ; +drop database a; +drop database b; +drop database c; +--replace_result $SERVER_MYPORT_1 MYPORT_1 +eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root'; +--replace_result $SERVER_MYPORT_2 MYPORT_2 +eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root'; +--replace_result $SERVER_MYPORT_3 MYPORT_3 +eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root'; +start all slaves; +set default_master_connection = 'm1'; +--source include/wait_for_slave_to_start.inc +set default_master_connection = 'm2'; +--source include/wait_for_slave_to_start.inc +set default_master_connection = ''; +--source include/wait_for_slave_to_start.inc +--sync_with_master 0,'m1' +--sync_with_master 0,'m2' +--sync_with_master 0,'' + +--echo #Replication Filter should be intact (t1 still not replicated) +select @@global.'m1'.replicate_ignore_table; +select @@global.'m2'.replicate_ignore_table; +select @@global.replicate_ignore_table; +use a; +--echo #No t1 table +show tables; +use b; +--echo #No t1 table +show tables; +use c; +--echo #No t1 table +show tables; + + +#--echo #restart the server +#--source include/restart_mysqld.inc + + +--echo #CleanUp +--connection server_1 +drop database a; +--save_master_pos + +--connection server_2 +drop database b; +--save_master_pos + +--connection server_3 +drop database c; +--save_master_pos + +--connection server_4 +--sync_with_master 0,'m1' +--sync_with_master 0,'m2' +--sync_with_master 0,'' +--disable_warnings +stop all slaves; +--enable_warnings +SET default_master_connection = "m1"; +--source include/wait_for_slave_to_stop.inc +SET default_master_connection = "m2"; +--source include/wait_for_slave_to_stop.inc +SET default_master_connection = ""; +--source include/wait_for_slave_to_stop.inc diff --git a/sql/rpl_mi.cc b/sql/rpl_mi.cc index 70e60b1d4ad..7aea89337a7 100644 --- a/sql/rpl_mi.cc +++ b/sql/rpl_mi.cc @@ -122,8 +122,6 @@ Master_info::~Master_info() */ if (strncmp(connection_name.str, STRING_WITH_LEN("wsrep"))) #endif - rpl_filters.delete_element(connection_name.str, connection_name.length, - (void (*)(const char*, uchar*)) free_rpl_filter); my_free(connection_name.str); delete_dynamic(&ignore_server_ids); mysql_mutex_destroy(&run_lock); -- cgit v1.2.1 From 6bc782a2333d6c59cf7460117bd4ed1ec3cc96b3 Mon Sep 17 00:00:00 2001 From: Sachin Date: Thu, 27 Jun 2019 11:15:00 +0530 Subject: Fix galera_sync_wait_show.test Since the purpose of event is just to see on second node whether it is created or not And we are not goint to execute the event also. So instead of setting GLOBAL event_scheduler=ON and then turning it off, we can just disable the warning. --- mysql-test/suite/galera/t/galera_sync_wait_show.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/suite/galera/t/galera_sync_wait_show.test b/mysql-test/suite/galera/t/galera_sync_wait_show.test index 58de5433030..79a1b6ad479 100644 --- a/mysql-test/suite/galera/t/galera_sync_wait_show.test +++ b/mysql-test/suite/galera/t/galera_sync_wait_show.test @@ -63,7 +63,9 @@ DROP TABLE t1; --connection node_1 +--disable_warnings CREATE EVENT event1 ON SCHEDULE AT '2038-01-01 23:59:59' DO SELECT 1; +--enable_warnings --connection node_2 SHOW CREATE EVENT event1; -- cgit v1.2.1 From 354b14e718db450b7bc5e3ea5430f6082458e23c Mon Sep 17 00:00:00 2001 From: Sachin Date: Thu, 27 Jun 2019 12:43:51 +0530 Subject: Fix galera_as_slave_gtid.test galera_var_gtid_domain_id galera.mdev_10518.test Clean the binlog on nodes after test is complete --- mysql-test/suite/galera/r/galera_as_slave_gtid.result | 4 ++++ mysql-test/suite/galera/r/galera_var_gtid_domain_id.result | 3 +++ mysql-test/suite/galera/r/mdev_10518.result | 3 +++ mysql-test/suite/galera/t/galera_as_slave_gtid.test | 10 ++++++++++ mysql-test/suite/galera/t/galera_var_gtid_domain_id.test | 7 +++++++ mysql-test/suite/galera/t/mdev_10518.test | 7 +++++++ 6 files changed, 34 insertions(+) diff --git a/mysql-test/suite/galera/r/galera_as_slave_gtid.result b/mysql-test/suite/galera/r/galera_as_slave_gtid.result index fbac7b1b6b5..db2bbf9ddaf 100644 --- a/mysql-test/suite/galera/r/galera_as_slave_gtid.result +++ b/mysql-test/suite/galera/r/galera_as_slave_gtid.result @@ -14,3 +14,7 @@ gtid_binlog_state_equal DROP TABLE t1; STOP SLAVE; RESET SLAVE ALL; +#cleanup +reset master; +reset master; +reset master; diff --git a/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result b/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result index 8e84236d5bf..0a9b699a8e1 100644 --- a/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result +++ b/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result @@ -71,4 +71,7 @@ wsrep_gtid_domain_id 9999 wsrep_gtid_mode 1 # On node_1 DROP TABLE t1, t2; +#cleanup +reset master; +reset master; # End of test diff --git a/mysql-test/suite/galera/r/mdev_10518.result b/mysql-test/suite/galera/r/mdev_10518.result index b2a3e0a65ef..f176c224ce9 100644 --- a/mysql-test/suite/galera/r/mdev_10518.result +++ b/mysql-test/suite/galera/r/mdev_10518.result @@ -71,4 +71,7 @@ wsrep_gtid_domain_id 4294967295 wsrep_gtid_mode 1 # On node_1 DROP TABLE t1, t2; +#cleanup +reset master; +reset master; # End of test diff --git a/mysql-test/suite/galera/t/galera_as_slave_gtid.test b/mysql-test/suite/galera/t/galera_as_slave_gtid.test index c2331a2ae05..a3c43540916 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_gtid.test +++ b/mysql-test/suite/galera/t/galera_as_slave_gtid.test @@ -65,3 +65,13 @@ DROP TABLE t1; STOP SLAVE; RESET SLAVE ALL; + +--echo #cleanup +--connection node_1 +reset master; + +--connection node_2 +reset master; + +--connection node_3 +reset master; diff --git a/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test b/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test index c4127b4f655..015f25abf2f 100644 --- a/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test +++ b/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test @@ -48,6 +48,13 @@ source include/print_gtid.inc; # Cleanup DROP TABLE t1, t2; +--echo #cleanup +--connection node_1 +reset master; + +--connection node_2 +reset master; + --source include/galera_end.inc --echo # End of test diff --git a/mysql-test/suite/galera/t/mdev_10518.test b/mysql-test/suite/galera/t/mdev_10518.test index c4127b4f655..015f25abf2f 100644 --- a/mysql-test/suite/galera/t/mdev_10518.test +++ b/mysql-test/suite/galera/t/mdev_10518.test @@ -48,6 +48,13 @@ source include/print_gtid.inc; # Cleanup DROP TABLE t1, t2; +--echo #cleanup +--connection node_1 +reset master; + +--connection node_2 +reset master; + --source include/galera_end.inc --echo # End of test -- cgit v1.2.1 From 5c1f51835acbde0644b2f3a971484fd932c64a93 Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 28 Jun 2019 17:46:43 +0300 Subject: MDEV-19904 poradic buildbot failures in rpl.rpl_semi_sync_uninstall_plugin The test allowed non-deterministic execution thanks to unresetable status var of Slave_connections. Fixed with expecting a correct value for Slaves_connected. --- mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result | 4 ---- mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test | 9 +++++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result b/mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result index 36d862dedce..abba229aea0 100644 --- a/mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result +++ b/mysql-test/suite/rpl/r/rpl_semi_sync_uninstall_plugin.result @@ -25,10 +25,6 @@ select plugin_name,plugin_status from information_schema.plugins where plugin_na plugin_name plugin_status rpl_semi_sync_slave DELETED [connection master] -show global status like "Slave%_connect%"; -Variable_name Value -Slave_connections 2 -Slaves_connected 1 UNINSTALL PLUGIN rpl_semi_sync_master; Warnings: Warning 1620 Plugin is busy and will be uninstalled on shutdown diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test b/mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test index 0f86789cced..8bb0322d79b 100644 --- a/mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_uninstall_plugin.test @@ -68,8 +68,13 @@ select plugin_name,plugin_status from information_schema.plugins where plugin_na --echo [connection master] # The following is to catch errors if the next uninstall plugin would succeed -show global status like "Slave%_connect%"; - +let $slaves_connected_value= query_get_value(SHOW GLOBAL STATUS LIKE 'Slaves_connected', Value, 1); +if (`SELECT $slaves_connected_value <> 1`) +{ + SHOW GLOBAL STATUS LIKE 'Slave_connections'; + SHOW GLOBAL STATUS LIKE 'Slaves_connected'; + --die *** Unexpected number of connected slaves *** +} UNINSTALL PLUGIN rpl_semi_sync_master; select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'rpl_%'; -- cgit v1.2.1 From 49ec78ab7002f8f6709b337b4d750920abbe1847 Mon Sep 17 00:00:00 2001 From: Sujatha Date: Fri, 28 Jun 2019 21:50:56 +0530 Subject: MDEV-19370: rpl.kill_race_condition failed in buildbot with Wrong value for slave parameter Problem: ======= Executing test with following options will result in test failure. ./mtr rpl.kill_race_condition{,,,,,,,,,,} --repeat=10 --par 12 --mem Fix: ==== Test simulates applier thread kill scenario while applying a row event. But it doesn't wait for applier to catch the error stop. Added :wait_for_slave_sql_error.inc to catch the error. Test uses START SLAVE as a final step and doesn't wait for both threads to start. Added: start_slave.inc --- mysql-test/suite/rpl/r/kill_race_condition.result | 9 ++++++--- mysql-test/suite/rpl/t/kill_race_condition.test | 17 ++++++++++++----- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/mysql-test/suite/rpl/r/kill_race_condition.result b/mysql-test/suite/rpl/r/kill_race_condition.result index e4e347dc786..48fd65e3a7c 100644 --- a/mysql-test/suite/rpl/r/kill_race_condition.result +++ b/mysql-test/suite/rpl/r/kill_race_condition.result @@ -1,13 +1,16 @@ include/master-slave.inc [connection master] -set global debug_dbug='d,rows_log_event_before_open_table'; -set debug_sync='now WAIT_FOR before_open_table'; create table t1 (a int); +set global debug_dbug='d,rows_log_event_before_open_table'; insert t1 values (1),(2),(3); +set debug_sync='now WAIT_FOR before_open_table'; kill slave_sql_thread; set debug_sync='now SIGNAL go_ahead_sql'; +include/wait_for_slave_sql_error.inc [errno=1927] +Last_SQL_Error = Error executing row event: 'Connection was killed' set global debug_dbug=''; set debug_sync='RESET'; drop table t1; -start slave; +include/start_slave.inc +Last_SQL_Error = include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/kill_race_condition.test b/mysql-test/suite/rpl/t/kill_race_condition.test index 4268c12cdbf..0f3b44864fe 100644 --- a/mysql-test/suite/rpl/t/kill_race_condition.test +++ b/mysql-test/suite/rpl/t/kill_race_condition.test @@ -2,27 +2,34 @@ source include/have_debug_sync.inc; source include/have_binlog_format_row.inc; source include/master-slave.inc; +connection master; +create table t1 (a int); +--sync_slave_with_master + connection slave; set global debug_dbug='d,rows_log_event_before_open_table'; -send set debug_sync='now WAIT_FOR before_open_table'; connection master; -create table t1 (a int); insert t1 values (1),(2),(3); connection slave; -reap; +set debug_sync='now WAIT_FOR before_open_table'; let $a=`select id from information_schema.processlist where state='debug sync point: now'`; replace_result $a slave_sql_thread; eval kill $a; set debug_sync='now SIGNAL go_ahead_sql'; +--let $slave_sql_errno= 1927 +--source include/wait_for_slave_sql_error.inc +let $error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1); +--echo Last_SQL_Error = $error set global debug_dbug=''; set debug_sync='RESET'; - connection master; drop table t1; connection slave; -start slave; +--source include/start_slave.inc +let $error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1); +--echo Last_SQL_Error = $error source include/rpl_end.inc; -- cgit v1.2.1 From 85f1022410063d42f3f2cf3eed4399087c0a7645 Mon Sep 17 00:00:00 2001 From: Sachin Date: Sat, 29 Jun 2019 01:03:56 +0530 Subject: Fix galera_log_bin Cleanup the nodes before and after test run --- mysql-test/suite/galera/r/galera_log_bin.result | 81 +++++++++++++------------ mysql-test/suite/galera/t/galera_log_bin.test | 20 +++--- 2 files changed, 54 insertions(+), 47 deletions(-) diff --git a/mysql-test/suite/galera/r/galera_log_bin.result b/mysql-test/suite/galera/r/galera_log_bin.result index 4772f347375..ee6dfb5d900 100644 --- a/mysql-test/suite/galera/r/galera_log_bin.result +++ b/mysql-test/suite/galera/r/galera_log_bin.result @@ -1,3 +1,5 @@ +reset master; +reset master; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); CREATE TABLE t2 (id INT) ENGINE=InnoDB; @@ -10,50 +12,51 @@ SELECT COUNT(*) = 2 FROM t2; COUNT(*) = 2 1 ALTER TABLE t1 ADD COLUMN f2 INTEGER; -FLUSH LOGS; -SHOW BINLOG EVENTS IN 'mysqld-bin.000002' LIMIT 4,18; +include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info -mysqld-bin.000002 # Gtid # # GTID 0-1-1 -mysqld-bin.000002 # Query # # use `test`; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB -mysqld-bin.000002 # Gtid # # BEGIN GTID 0-1-2 -mysqld-bin.000002 # Table_map # # table_id: # (test.t1) -mysqld-bin.000002 # Write_rows_v1 # # table_id: # flags: STMT_END_F -mysqld-bin.000002 # Xid # # COMMIT /* xid=# */ -mysqld-bin.000002 # Gtid # # GTID 0-1-3 -mysqld-bin.000002 # Query # # use `test`; CREATE TABLE t2 (id INT) ENGINE=InnoDB -mysqld-bin.000002 # Gtid # # BEGIN GTID 0-1-4 -mysqld-bin.000002 # Table_map # # table_id: # (test.t2) -mysqld-bin.000002 # Write_rows_v1 # # table_id: # flags: STMT_END_F -mysqld-bin.000002 # Xid # # COMMIT /* xid=# */ -mysqld-bin.000002 # Gtid # # BEGIN GTID 0-1-5 -mysqld-bin.000002 # Table_map # # table_id: # (test.t2) -mysqld-bin.000002 # Write_rows_v1 # # table_id: # flags: STMT_END_F -mysqld-bin.000002 # Xid # # COMMIT /* xid=# */ -mysqld-bin.000002 # Gtid # # GTID 0-1-6 -mysqld-bin.000002 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN f2 INTEGER +mysqld-bin.000001 # Gtid # # GTID #-#-# +mysqld-bin.000001 # Query # # use `test`; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB +mysqld-bin.000001 # Gtid # # BEGIN GTID #-#-# +mysqld-bin.000001 # Table_map # # table_id: # (test.t1) +mysqld-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F +mysqld-bin.000001 # Xid # # COMMIT /* XID */ +mysqld-bin.000001 # Gtid # # GTID #-#-# +mysqld-bin.000001 # Query # # use `test`; CREATE TABLE t2 (id INT) ENGINE=InnoDB +mysqld-bin.000001 # Gtid # # BEGIN GTID #-#-# +mysqld-bin.000001 # Table_map # # table_id: # (test.t2) +mysqld-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F +mysqld-bin.000001 # Xid # # COMMIT /* XID */ +mysqld-bin.000001 # Gtid # # BEGIN GTID #-#-# +mysqld-bin.000001 # Table_map # # table_id: # (test.t2) +mysqld-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F +mysqld-bin.000001 # Xid # # COMMIT /* XID */ +mysqld-bin.000001 # Gtid # # GTID #-#-# +mysqld-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN f2 INTEGER SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; COUNT(*) = 2 1 -SHOW BINLOG EVENTS IN 'mysqld-bin.000003' LIMIT 3,18; +include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info -mysqld-bin.000003 # Gtid # # GTID 0-1-1 -mysqld-bin.000003 # Query # # use `test`; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB -mysqld-bin.000003 # Gtid # # BEGIN GTID 0-1-2 -mysqld-bin.000003 # Table_map # # table_id: # (test.t1) -mysqld-bin.000003 # Write_rows_v1 # # table_id: # flags: STMT_END_F -mysqld-bin.000003 # Xid # # COMMIT /* xid=# */ -mysqld-bin.000003 # Gtid # # GTID 0-1-3 -mysqld-bin.000003 # Query # # use `test`; CREATE TABLE t2 (id INT) ENGINE=InnoDB -mysqld-bin.000003 # Gtid # # BEGIN GTID 0-1-4 -mysqld-bin.000003 # Table_map # # table_id: # (test.t2) -mysqld-bin.000003 # Write_rows_v1 # # table_id: # flags: STMT_END_F -mysqld-bin.000003 # Xid # # COMMIT /* xid=# */ -mysqld-bin.000003 # Gtid # # BEGIN GTID 0-1-5 -mysqld-bin.000003 # Table_map # # table_id: # (test.t2) -mysqld-bin.000003 # Write_rows_v1 # # table_id: # flags: STMT_END_F -mysqld-bin.000003 # Xid # # COMMIT /* xid=# */ -mysqld-bin.000003 # Gtid # # GTID 0-1-6 -mysqld-bin.000003 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN f2 INTEGER +mysqld-bin.000001 # Gtid # # GTID #-#-# +mysqld-bin.000001 # Query # # use `test`; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB +mysqld-bin.000001 # Gtid # # BEGIN GTID #-#-# +mysqld-bin.000001 # Table_map # # table_id: # (test.t1) +mysqld-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F +mysqld-bin.000001 # Xid # # COMMIT /* XID */ +mysqld-bin.000001 # Gtid # # GTID #-#-# +mysqld-bin.000001 # Query # # use `test`; CREATE TABLE t2 (id INT) ENGINE=InnoDB +mysqld-bin.000001 # Gtid # # BEGIN GTID #-#-# +mysqld-bin.000001 # Table_map # # table_id: # (test.t2) +mysqld-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F +mysqld-bin.000001 # Xid # # COMMIT /* XID */ +mysqld-bin.000001 # Gtid # # BEGIN GTID #-#-# +mysqld-bin.000001 # Table_map # # table_id: # (test.t2) +mysqld-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F +mysqld-bin.000001 # Xid # # COMMIT /* XID */ +mysqld-bin.000001 # Gtid # # GTID #-#-# +mysqld-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN f2 INTEGER DROP TABLE t1; DROP TABLE t2; +#cleanup RESET MASTER; +reset master; diff --git a/mysql-test/suite/galera/t/galera_log_bin.test b/mysql-test/suite/galera/t/galera_log_bin.test index d2d3987d711..c3d94d15194 100644 --- a/mysql-test/suite/galera/t/galera_log_bin.test +++ b/mysql-test/suite/galera/t/galera_log_bin.test @@ -1,6 +1,11 @@ --source include/galera_cluster.inc --source include/have_innodb.inc +--connection node_1 +reset master; +--connection node_2 +reset master; + # # Test Galera with --log-bin --log-slave-updates . # This way the actual MySQL binary log is used, @@ -20,20 +25,19 @@ SELECT COUNT(*) = 2 FROM t2; --connection node_1 ALTER TABLE t1 ADD COLUMN f2 INTEGER; - -FLUSH LOGS; ---replace_column 2 # 4 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ /xid=[0-9]+/xid=#/ -SHOW BINLOG EVENTS IN 'mysqld-bin.000002' LIMIT 4,18; +--let $MASTER_MYPORT=$NODE_MYPORT_1 +--source include/show_binlog_events.inc --connection node_2 SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ---replace_column 2 # 4 # 5 # ---replace_regex /table_id: [0-9]+/table_id: #/ /xid=[0-9]+/xid=#/ -SHOW BINLOG EVENTS IN 'mysqld-bin.000003' LIMIT 3,18; +--let $MASTER_MYPORT=$NODE_MYPORT_2 +--source include/show_binlog_events.inc DROP TABLE t1; DROP TABLE t2; +--echo #cleanup --connection node_1 RESET MASTER; +--connection node_2 +reset master; -- cgit v1.2.1 From 3816c411bf5ae2814278c24b459898b9e386d5c8 Mon Sep 17 00:00:00 2001 From: YunQiang Su Date: Tue, 18 Jun 2019 13:24:57 +0800 Subject: repair_symlink-5543 fails: ELOOP is 90 On mips, ELOOP is 90, instead of 40 or 20. So we need to replace_regex 90 to 20, too. --- mysql-test/t/repair_symlink-5543.test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mysql-test/t/repair_symlink-5543.test b/mysql-test/t/repair_symlink-5543.test index 4c120334d05..ac7bb497f24 100644 --- a/mysql-test/t/repair_symlink-5543.test +++ b/mysql-test/t/repair_symlink-5543.test @@ -9,9 +9,9 @@ eval create table t1 (a int) engine=myisam data directory='$MYSQL_TMP_DIR'; insert t1 values (1); --system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t1.TMD ---echo # Some systems fail with errcode 40, when doing openat, while others ---echo # don't have openat and fail with errcode 20. ---replace_regex / '.*\/t1/ 'MYSQL_TMP_DIR\/t1/ /40/20/ /".*"/""/ +--echo # Some systems fail with errcode 40, or 90 (MIPS) when doing openat, +--echo # while others don't have openat and fail with errcode 20. +--replace_regex / '.*\/t1/ 'MYSQL_TMP_DIR\/t1/ /[49]0/20/ /".*"/""/ repair table t1; drop table t1; @@ -19,7 +19,7 @@ drop table t1; eval create table t2 (a int) engine=aria data directory='$MYSQL_TMP_DIR'; insert t2 values (1); --system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t2.TMD ---replace_regex / '.*\/t2/ 'MYSQL_TMP_DIR\/t2/ /40/20/ /".*"/""/ +--replace_regex / '.*\/t2/ 'MYSQL_TMP_DIR\/t2/ /[49]0/20/ /".*"/""/ repair table t2; drop table t2; -- cgit v1.2.1 From 82bb108ea9225bc03ba6c4708f87846acc252f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Mon, 1 Jul 2019 13:15:20 +0300 Subject: Update test case --- mysql-test/r/repair_symlink-5543.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/repair_symlink-5543.result b/mysql-test/r/repair_symlink-5543.result index c77e7162a51..2024c9f5684 100644 --- a/mysql-test/r/repair_symlink-5543.result +++ b/mysql-test/r/repair_symlink-5543.result @@ -1,7 +1,7 @@ create table t1 (a int) engine=myisam data directory='MYSQL_TMP_DIR'; insert t1 values (1); -# Some systems fail with errcode 40, when doing openat, while others -# don't have openat and fail with errcode 20. +# Some systems fail with errcode 40, or 90 (MIPS) when doing openat, +# while others don't have openat and fail with errcode 20. repair table t1; Table Op Msg_type Msg_text test.t1 repair error 20 for record at pos 0 -- cgit v1.2.1 From b105427745dbf6bd2c69469f8cb66502a7a3f749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Tue, 2 Jul 2019 10:06:13 +0300 Subject: MDEV-19660: wsrep_rec_get_foreign_key() is dereferencing a stale pointer to a page that was previously latched In row_ins_foreign_check_on_constraint(), clustered index record is being passed to wsrep_append_foreign_key() after releasing the latch. If a record has been changed by other thread in the meantime then it could lead to a crash when wsrep_rec_get_foreign_key () tries to access the record. row_ins_foreign_check_on_constraint Use cascade->pcur->old_rec instead of clust_rec. row_ins_check_foreign_constraint Add missing error printout. --- storage/innobase/row/row0ins.cc | 7 ++++++- storage/xtradb/row/row0ins.cc | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc index d60665f52ad..4a4c5112f88 100644 --- a/storage/innobase/row/row0ins.cc +++ b/storage/innobase/row/row0ins.cc @@ -1293,7 +1293,7 @@ row_ins_foreign_check_on_constraint( err = wsrep_append_foreign_key( thr_get_trx(thr), foreign, - clust_rec, + cascade->pcur->old_rec, clust_index, FALSE, WSREP_KEY_EXCLUSIVE); if (err != DB_SUCCESS) { @@ -1664,6 +1664,11 @@ run_again: check_index, check_ref, key_type); + + if (err != DB_SUCCESS) { + fprintf(stderr, + "WSREP: foreign key append failed: %d\n", err); + } #endif /* WITH_WSREP */ goto end_scan; } else if (foreign->type != 0) { diff --git a/storage/xtradb/row/row0ins.cc b/storage/xtradb/row/row0ins.cc index 0eefdb17f39..50da7fb40ad 100644 --- a/storage/xtradb/row/row0ins.cc +++ b/storage/xtradb/row/row0ins.cc @@ -1299,7 +1299,7 @@ row_ins_foreign_check_on_constraint( err = wsrep_append_foreign_key( thr_get_trx(thr), foreign, - clust_rec, + cascade->pcur->old_rec, clust_index, FALSE, WSREP_KEY_EXCLUSIVE); if (err != DB_SUCCESS) { @@ -1676,6 +1676,11 @@ run_again: check_index, check_ref, key_type); + + if (err != DB_SUCCESS) { + fprintf(stderr, + "WSREP: foreign key append failed: %d\n", err); + } #endif /* WITH_WSREP */ goto end_scan; } else if (foreign->type != 0) { -- cgit v1.2.1 From bf37b9fce9fc1cfb3fe096bc50c15c1bf53cd629 Mon Sep 17 00:00:00 2001 From: Anel Husakovic Date: Mon, 10 Jun 2019 09:07:49 -0700 Subject: MDEV-19636 Usage message for plugin activation - add FORCE_PLUS_PERMANENT --- mysql-test/mysql-test-run.pl | 5 ++++- mysql-test/r/mysqld--help.result | 4 +++- sql/sql_plugin.cc | 9 +++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 7891af205b8..f9906a99b09 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -1880,7 +1880,10 @@ sub collect_mysqld_features { if (/Copyright/ .. /^-{30,}/) { # here we want to detect all not mandatory plugins # they are listed in the --help output as - # --archive[=name] Enable or disable ARCHIVE plugin. Possible values are ON, OFF, FORCE (don't start if the plugin fails to load). + # --archive[=name] + # Enable or disable ARCHIVE plugin. Possible values are ON, OFF, + # FORCE (don't start if the plugin fails to load), + # FORCE_PLUS_PERMANENT (like FORCE, but the plugin can not be uninstalled). push @optional_plugins, $1 if /^ --([-a-z0-9]+)\[=name\] +Enable or disable \w+ plugin. One of: ON, OFF, FORCE/; next; diff --git a/mysql-test/r/mysqld--help.result b/mysql-test/r/mysqld--help.result index 4ff44dcd251..db957e4c9ca 100644 --- a/mysql-test/r/mysqld--help.result +++ b/mysql-test/r/mysqld--help.result @@ -115,7 +115,9 @@ The following specify which files/extra groups are read (specified before remain that this is a limit per thread! --changed-page-bitmaps[=name] Enable or disable CHANGED_PAGE_BITMAPS plugin. One of: - ON, OFF, FORCE (don't start if the plugin fails to load). + ON, OFF, FORCE (don't start if the plugin fails to load), + FORCE_PLUS_PERMANENT (like FORCE, but the plugin can not + be uninstalled). --character-set-client-handshake Don't ignore client side character set value sent during handshake. diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 48131b10951..5350e4440f0 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -77,7 +77,7 @@ uint plugin_maturity_map[]= { 0, 1, 2, 3, 4, 5, 6 }; /* - When you ad a new plugin type, add both a string and make sure that the + When you add a new plugin type, add both a string and make sure that the init and deinit array are correctly updated. */ const LEX_STRING plugin_type_names[MYSQL_MAX_PLUGIN_TYPE_NUM]= @@ -3643,7 +3643,7 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp, const LEX_STRING plugin_dash = { C_STRING_WITH_LEN("plugin-") }; uint plugin_name_len= strlen(plugin_name); uint optnamelen; - const int max_comment_len= 180; + const int max_comment_len= 255; char *comment= (char *) alloc_root(mem_root, max_comment_len + 1); char *optname; @@ -3677,8 +3677,9 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp, options[0].typelib= options[1].typelib= &global_plugin_typelib; strxnmov(comment, max_comment_len, "Enable or disable ", plugin_name, - " plugin. One of: ON, OFF, FORCE (don't start " - "if the plugin fails to load).", NullS); + " plugin. One of: ON, OFF, FORCE (don't start if the plugin" + " fails to load), FORCE_PLUS_PERMANENT (like FORCE, but the" + " plugin can not be uninstalled).", NullS); options[0].comment= comment; /* Allocate temporary space for the value of the tristate. -- cgit v1.2.1 From a099284b716b07af0d196705f44b828d621943d2 Mon Sep 17 00:00:00 2001 From: Alexey Botchkov Date: Wed, 3 Jul 2019 16:41:01 +0400 Subject: MDEV-19851 server_audit plugin should not allow server_audit_output_type=SYSLOG on Windows. 'syslog' output type disabled on Windows. --- plugin/server_audit/server_audit.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugin/server_audit/server_audit.c b/plugin/server_audit/server_audit.c index 3da52643787..16a677e2644 100644 --- a/plugin/server_audit/server_audit.c +++ b/plugin/server_audit/server_audit.c @@ -26,6 +26,7 @@ #include #ifndef _WIN32 +#define DO_SYSLOG #include #else #define syslog(PRIORITY, FORMAT, INFO, MESSAGE_LEN, MESSAGE) do {}while(0) @@ -384,17 +385,31 @@ static MYSQL_SYSVAR_SET(events, events, PLUGIN_VAR_RQCMDARG, "Specifies the set of events to monitor. Can be CONNECT, QUERY, TABLE," " QUERY_DDL, QUERY_DML, QUERY_DML_NO_SELECT, QUERY_DCL.", NULL, NULL, 0, &events_typelib); +#ifdef DO_SYSLOG #define OUTPUT_SYSLOG 0 #define OUTPUT_FILE 1 +#else +#define OUTPUT_SYSLOG 0xFFFF +#define OUTPUT_FILE 0 +#endif /*DO_SYSLOG*/ + #define OUTPUT_NO 0xFFFF -static const char *output_type_names[]= { "syslog", "file", 0 }; +static const char *output_type_names[]= { +#ifdef DO_SYSLOG + "syslog", +#endif + "file", 0 }; static TYPELIB output_typelib= { array_elements(output_type_names) - 1, "output_typelib", output_type_names, NULL }; static MYSQL_SYSVAR_ENUM(output_type, output_type, PLUGIN_VAR_RQCMDARG, +#ifdef DO_SYSLOG "Desired output type. Possible values - 'syslog', 'file'" +#else + "Desired output type. Possible values - 'file'" +#endif " or 'null' as no output.", 0, update_output_type, OUTPUT_FILE, &output_typelib); static MYSQL_SYSVAR_STR(file_path, file_path, PLUGIN_VAR_RQCMDARG, -- cgit v1.2.1 From 971bef89ab533b5a7975efc44bf12a38fb0b1624 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 18 Jun 2019 14:19:49 +0200 Subject: MDEV-19481 mariadb-10.3.15-linux-systemd-x86_64/bin/mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' and 'GLIBCXX_3.4.21' not found don't ignore LIBSYSTEMD_LDFLAGS when trying out systemd (and put them in LIBSYSTEMD, because MYSQLD_LINK_FLAGS has stuff like -lmtmalloc and is used only for mysqld, not for, say, explain_filename-t) LIBSYSTEMD_LDFLAGS come from libsystemd.pc via pkg-config --- cmake/systemd.cmake | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cmake/systemd.cmake b/cmake/systemd.cmake index 89894e89f8a..23eb467f9b6 100644 --- a/cmake/systemd.cmake +++ b/cmake/systemd.cmake @@ -27,13 +27,9 @@ MACRO(CHECK_SYSTEMD) pkg_search_module(LIBSYSTEMD libsystemd libsystemd-daemon) ENDIF() IF(HAVE_DLOPEN) - SET(LIBSYSTEMD ${LIBSYSTEMD_LIBRARIES}) - #SET(CMAKE_REQUIRED_FLAGS ${LIBSYSTEMD_CFLAGS}) - SET(MYSQLD_LINK_FLAGS "${MYSQLD_LINK_FLAGS} ${LIBSYSTEMD_LDFLAGS}") + SET(LIBSYSTEMD ${LIBSYSTEMD_LDFLAGS} ${LIBSYSTEMD_LIBRARIES}) ELSE() - SET(LIBSYSTEMD ${LIBSYSTEMD_STATIC_LIBRARIES}) - #SET(CMAKE_REQUIRED_FLAGS ${LIBSYSTEMD_STATIC_CFLAGS}) - SET(MYSQLD_LINK_FLAGS "${MYSQLD_LINK_FLAGS} ${LIBSYSTEMD_STATIC_LDFLAGS}") + SET(LIBSYSTEMD ${LIBSYSTEMD_STATIC_LDFLAGS} ${LIBSYSTEMD_STATIC_LIBRARIES}) ENDIF() ELSE() SET(LIBSYSTEMD systemd) -- cgit v1.2.1 From 1003c76eb4151e602b0f25b941bdef3810396b7e Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 30 Jun 2019 11:17:55 +0200 Subject: fix incorrect shell usage --- scripts/mysqld_safe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index f21e697953f..c7e232673a4 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -754,7 +754,7 @@ safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-@MYSQL_UNIX_ADDR@}} mysql_unix_port_dir=`dirname $safe_mysql_unix_port` if [ ! -d $mysql_unix_port_dir ] then - if ! `mkdir -p $mysql_unix_port_dir` + if ! mkdir -p $mysql_unix_port_dir then log_error "Fatal error Can't create database directory '$mysql_unix_port'" exit 1 -- cgit v1.2.1 From bee24fe18188c81f52ae3bfa4ff42a2137480a6b Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 30 Jun 2019 11:16:33 +0200 Subject: MDEV-19726 MariaDB server or backup RPM install assumes mysql user exists mysqld_safe shouldn't try to mkdir or chown if --dry-run --- scripts/mysqld_safe.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh index c7e232673a4..d51867d9d17 100644 --- a/scripts/mysqld_safe.sh +++ b/scripts/mysqld_safe.sh @@ -752,7 +752,7 @@ fi safe_mysql_unix_port=${mysql_unix_port:-${MYSQL_UNIX_PORT:-@MYSQL_UNIX_ADDR@}} # Make sure that directory for $safe_mysql_unix_port exists mysql_unix_port_dir=`dirname $safe_mysql_unix_port` -if [ ! -d $mysql_unix_port_dir ] +if [ ! -d $mysql_unix_port_dir -a $dry_run -eq 0 ] then if ! mkdir -p $mysql_unix_port_dir then -- cgit v1.2.1 From 11f13bff21f8f1a0285f4d3f0db4b4252a9c7c7b Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 5 Jul 2019 09:15:40 +0400 Subject: MDEV-17857 Assertion `tmp != ((long long) 0x8000000000000000LL)' failed in TIME_from_longlong_datetime_packed upon SELECT with GROUP BY --- sql/item_sum.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 960d79b39ac..f5bcd082824 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -2549,11 +2549,14 @@ Item_sum_hybrid::min_max_update_str_field() if (!args[0]->null_value) { - result_field->val_str(&cmp->value2); - - if (result_field->is_null() || - (cmp_sign * sortcmp(res_str,&cmp->value2,collation.collation)) < 0) + if (result_field->is_null()) result_field->store(res_str->ptr(),res_str->length(),res_str->charset()); + else + { + result_field->val_str(&cmp->value2); + if ((cmp_sign * sortcmp(res_str,&cmp->value2,collation.collation)) < 0) + result_field->store(res_str->ptr(),res_str->length(),res_str->charset()); + } result_field->set_notnull(); } } -- cgit v1.2.1 From be22d1ff39e79a9dbd5360f2f11b57de291d5366 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 5 Jul 2019 12:06:34 +0400 Subject: Adding tests for MDEV-17857 Assertion `tmp != ((long long) 0x8000000000000000LL)' failed in TIME_from_longlong_datetime_packed upon SELECT with GROUP BY (they were forgotten in the previous commit) --- mysql-test/r/type_datetime.result | 10 ++++++++++ mysql-test/t/type_datetime.test | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result index bf09ec8d0eb..292c92422de 100644 --- a/mysql-test/r/type_datetime.result +++ b/mysql-test/r/type_datetime.result @@ -1146,5 +1146,15 @@ a 00:01:00 DROP TABLE t1; # +# MDEV-17857 Assertion `tmp != ((long long) 0x8000000000000000LL)' failed in TIME_from_longlong_datetime_packed upon SELECT with GROUP BY +# +CREATE TABLE t1 (i INT, d DATETIME); +INSERT INTO t1 VALUES (3,NULL),(3,'1976-12-14 13:21:07'),(NULL,'1981-09-24 01:04:47'); +SELECT ExtractValue('foo','bar'), i, MIN(d) FROM t1 GROUP BY i; +ExtractValue('foo','bar') i MIN(d) + NULL 1981-09-24 01:04:47 + 3 1976-12-14 13:21:07 +DROP TABLE t1; +# # End of 10.1 tests # diff --git a/mysql-test/t/type_datetime.test b/mysql-test/t/type_datetime.test index f16613d18a1..726510b74e8 100644 --- a/mysql-test/t/type_datetime.test +++ b/mysql-test/t/type_datetime.test @@ -700,6 +700,16 @@ SELECT 1 FROM t1 WHERE 20160101 > SOME (SELECT CAST(a AS DATETIME) FROM t1); SELECT * FROM t1 WHERE 20160101 > CAST(a AS DATETIME); DROP TABLE t1; + +--echo # +--echo # MDEV-17857 Assertion `tmp != ((long long) 0x8000000000000000LL)' failed in TIME_from_longlong_datetime_packed upon SELECT with GROUP BY +--echo # + +CREATE TABLE t1 (i INT, d DATETIME); +INSERT INTO t1 VALUES (3,NULL),(3,'1976-12-14 13:21:07'),(NULL,'1981-09-24 01:04:47'); +SELECT ExtractValue('foo','bar'), i, MIN(d) FROM t1 GROUP BY i; +DROP TABLE t1; + --echo # --echo # End of 10.1 tests --echo # -- cgit v1.2.1 From d04961cdb346667d0a4e2f8bd74950668af7700c Mon Sep 17 00:00:00 2001 From: HF Date: Fri, 5 Jul 2019 12:22:04 +0100 Subject: Make Win compiler happy. --- plugin/server_audit/server_audit.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugin/server_audit/server_audit.c b/plugin/server_audit/server_audit.c index 16a677e2644..1555495b15f 100644 --- a/plugin/server_audit/server_audit.c +++ b/plugin/server_audit/server_audit.c @@ -407,10 +407,12 @@ static TYPELIB output_typelib= static MYSQL_SYSVAR_ENUM(output_type, output_type, PLUGIN_VAR_RQCMDARG, #ifdef DO_SYSLOG "Desired output type. Possible values - 'syslog', 'file'" + " or 'null' as no output.", #else "Desired output type. Possible values - 'file'" + " or 'null' as no output.", #endif - " or 'null' as no output.", 0, update_output_type, OUTPUT_FILE, + 0, update_output_type, OUTPUT_FILE, &output_typelib); static MYSQL_SYSVAR_STR(file_path, file_path, PLUGIN_VAR_RQCMDARG, "Path to the log file.", NULL, update_file_path, default_file_name); -- cgit v1.2.1 From 02a0ebc613bf51fd4a943f4f216f1d5220c947be Mon Sep 17 00:00:00 2001 From: HF Date: Sat, 6 Jul 2019 12:22:45 +0100 Subject: Make Win compiler happy about the SERVER_AUDIT code. --- plugin/server_audit/server_audit.c | 42 ++++++++++++++++++------------------- plugin/server_audit/test_audit_v4.c | 6 +++--- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/plugin/server_audit/server_audit.c b/plugin/server_audit/server_audit.c index 1555495b15f..a18b40c21a7 100644 --- a/plugin/server_audit/server_audit.c +++ b/plugin/server_audit/server_audit.c @@ -28,7 +28,11 @@ #ifndef _WIN32 #define DO_SYSLOG #include +static const char out_type_desc[]= "Desired output type. Possible values - 'syslog', 'file'" + " or 'null' as no output."; #else +static const char out_type_desc[]= "Desired output type. Possible values - 'file'" + " or 'null' as no output."; #define syslog(PRIORITY, FORMAT, INFO, MESSAGE_LEN, MESSAGE) do {}while(0) static void closelog() {} #define openlog(IDENT, LOG_NOWAIT, LOG_USER) do {}while(0) @@ -88,6 +92,7 @@ static void closelog() {} #include #include #include +#include "../../mysys/mysys_priv.h" #ifndef RTLD_DEFAULT #define RTLD_DEFAULT NULL #endif @@ -405,13 +410,7 @@ static TYPELIB output_typelib= output_type_names, NULL }; static MYSQL_SYSVAR_ENUM(output_type, output_type, PLUGIN_VAR_RQCMDARG, -#ifdef DO_SYSLOG - "Desired output type. Possible values - 'syslog', 'file'" - " or 'null' as no output.", -#else - "Desired output type. Possible values - 'file'" - " or 'null' as no output.", -#endif + out_type_desc, 0, update_output_type, OUTPUT_FILE, &output_typelib); static MYSQL_SYSVAR_STR(file_path, file_path, PLUGIN_VAR_RQCMDARG, @@ -655,7 +654,7 @@ static void remove_blanks(char *user) struct user_name { - int name_len; + size_t name_len; char *name; }; @@ -690,7 +689,7 @@ static int cmp_users(const void *ia, const void *ib) { const struct user_name *a= (const struct user_name *) ia; const struct user_name *b= (const struct user_name *) ib; - int dl= a->name_len - b->name_len; + int dl= (int) a->name_len - (int) b->name_len; if (dl != 0) return dl; @@ -698,7 +697,7 @@ static int cmp_users(const void *ia, const void *ib) } -static char *coll_search(struct user_coll *c, const char *n, int len) +static char *coll_search(struct user_coll *c, const char *n, size_t len) { struct user_name un; struct user_name *found; @@ -710,7 +709,7 @@ static char *coll_search(struct user_coll *c, const char *n, int len) } -static int coll_insert(struct user_coll *c, char *n, int len) +static int coll_insert(struct user_coll *c, char *n, size_t len) { if (c->n_users >= c->n_alloced) { @@ -965,7 +964,7 @@ static void get_str_n(char *dest, int *dest_len, size_t dest_size, memcpy(dest, src, src_len); dest[src_len]= 0; - *dest_len= src_len; + *dest_len= (int) src_len; } @@ -1151,6 +1150,7 @@ static void setup_connection_connect(struct connection_info *cn, #define SAFE_STRLEN(s) (s ? strlen(s) : 0) +#define SAFE_STRLEN_UI(s) ((unsigned int) (s ? strlen(s) : 0)) static char empty_str[1]= { 0 }; @@ -1310,7 +1310,7 @@ exit: static size_t log_header(char *message, size_t message_len, time_t *ts, - const char *serverhost, unsigned int serverhost_len, + const char *serverhost, size_t serverhost_len, const char *username, unsigned int username_len, const char *host, unsigned int host_len, const char *userip, unsigned int userip_len, @@ -1328,7 +1328,7 @@ static size_t log_header(char *message, size_t message_len, if (output_type == OUTPUT_SYSLOG) return my_snprintf(message, message_len, "%.*s,%.*s,%.*s,%d,%lld,%s", - serverhost_len, serverhost, + (unsigned int) serverhost_len, serverhost, username_len, username, host_len, host, connection_id, query_id, operation); @@ -1486,7 +1486,7 @@ static size_t escape_string_hide_passwords(const char *str, unsigned int len, } next_s++; } - len-= next_s - str; + len-= (unsigned int) (next_s - str); str= next_s; continue; } @@ -1807,9 +1807,9 @@ static int log_table(const struct connection_info *cn, (void) time(&ctime); csize= log_header(message, sizeof(message)-1, &ctime, servhost, servhost_len, - event->user, SAFE_STRLEN(event->user), - event->host, SAFE_STRLEN(event->host), - event->ip, SAFE_STRLEN(event->ip), + event->user, SAFE_STRLEN_UI(event->user), + event->host, SAFE_STRLEN_UI(event->host), + event->ip, SAFE_STRLEN_UI(event->ip), event->thread_id, cn->query_id, type); csize+= my_snprintf(message+csize, sizeof(message) - 1 - csize, ",%.*s,%.*s,",event->database_length, event->database, @@ -1829,9 +1829,9 @@ static int log_rename(const struct connection_info *cn, (void) time(&ctime); csize= log_header(message, sizeof(message)-1, &ctime, servhost, servhost_len, - event->user, SAFE_STRLEN(event->user), - event->host, SAFE_STRLEN(event->host), - event->ip, SAFE_STRLEN(event->ip), + event->user, SAFE_STRLEN_UI(event->user), + event->host, SAFE_STRLEN_UI(event->host), + event->ip, SAFE_STRLEN_UI(event->ip), event->thread_id, cn->query_id, "RENAME"); csize+= my_snprintf(message+csize, sizeof(message) - 1 - csize, ",%.*s,%.*s|%.*s.%.*s,",event->database_length, event->database, diff --git a/plugin/server_audit/test_audit_v4.c b/plugin/server_audit/test_audit_v4.c index ae7527f8449..d0b341be346 100644 --- a/plugin/server_audit/test_audit_v4.c +++ b/plugin/server_audit/test_audit_v4.c @@ -56,11 +56,11 @@ static int auditing_v4(MYSQL_THD thd, mysql_event_class_t class, const void *ev) ev_302.general_error_code= event->general_error_code; ev_302.general_thread_id= event->general_thread_id; ev_302.general_user= event->general_user.str; - ev_302.general_user_length= event->general_user.length; + ev_302.general_user_length= (unsigned int) event->general_user.length; ev_302.general_command= event->general_command.str; - ev_302.general_command_length= event->general_command.length; + ev_302.general_command_length= (unsigned int) event->general_command.length; ev_302.general_query= event->general_query.str; - ev_302.general_query_length= event->general_query.length; + ev_302.general_query_length= (unsigned int) event->general_query.length; ev_302.general_charset= event->general_charset; ev_302.general_time= event->general_time; ev_302.general_rows= event->general_rows; -- cgit v1.2.1 From 838bb9fad4bdb5bcdead40a0d60efd57fb529bca Mon Sep 17 00:00:00 2001 From: Eugene Kosov Date: Mon, 8 Jul 2019 17:04:18 +0300 Subject: fix Galera memory leak This was caused by 7f2cfa8f47cf05d8dbea65ced3656fd0fc6efbf5 --- sql/rpl_mi.cc | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sql/rpl_mi.cc b/sql/rpl_mi.cc index 7aea89337a7..0fca8ff6267 100644 --- a/sql/rpl_mi.cc +++ b/sql/rpl_mi.cc @@ -115,13 +115,6 @@ void Master_info::wait_until_free() Master_info::~Master_info() { wait_until_free(); -#ifdef WITH_WSREP - /* - Do not free "wsrep" rpl_filter. It will eventually be freed by - free_all_rpl_filters() when server terminates. - */ - if (strncmp(connection_name.str, STRING_WITH_LEN("wsrep"))) -#endif my_free(connection_name.str); delete_dynamic(&ignore_server_ids); mysql_mutex_destroy(&run_lock); -- cgit v1.2.1 From fd08f953222b854428dc259631e8fc707fe34619 Mon Sep 17 00:00:00 2001 From: Varun Gupta Date: Mon, 8 Jul 2019 11:37:34 +0530 Subject: MDEV-17963: Assertion `field_pos < field_count' failed in Protocol_text::store, Assertion `field_handlers == 0 || field_pos < field_count' The problem was that sp_head::MULTI_RESULTS was not set correctly for ANALYZE statement with SELECT ... INTO variable. This is a follow up fix for MDEV-7023 --- mysql-test/r/sp.result | 14 ++++++++++++++ mysql-test/t/sp.test | 20 ++++++++++++++++++++ sql/sp_head.cc | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index e39754159fb..1704e7cd214 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -8319,4 +8319,18 @@ UNION SELECT * FROM INFORMATION_SCHEMA.TABLES JOIN INFORMATION_SCHEMA.PARAMETERS; DROP FUNCTION f; DROP VIEW v; +# +# MDEV-17963: Assertion `field_pos < field_count' failed in Protocol_text::store, +# Assertion `field_handlers == 0 || field_pos < field_count' +# +CREATE TABLE t1 (ct time); +INSERT INTO t1 VALUES ('16:11:28'); +CREATE FUNCTION f1 () RETURNS varchar(100) +BEGIN +DECLARE xxx varchar(100); +ANALYZE SELECT sum(ct) FROM t1 INTO xxx ; +RETURN xxx; +END| +ERROR 0A000: Not allowed to return a result set from a function +drop table t1; #End of 10.1 tests diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 0e95fb5c271..a2a40f87ef0 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -9840,4 +9840,24 @@ SELECT * FROM INFORMATION_SCHEMA.TABLES JOIN INFORMATION_SCHEMA.PARAMETERS; DROP FUNCTION f; DROP VIEW v; +--echo # +--echo # MDEV-17963: Assertion `field_pos < field_count' failed in Protocol_text::store, +--echo # Assertion `field_handlers == 0 || field_pos < field_count' +--echo # + +CREATE TABLE t1 (ct time); +INSERT INTO t1 VALUES ('16:11:28'); + +DELIMITER |; +--error ER_SP_NO_RETSET +CREATE FUNCTION f1 () RETURNS varchar(100) +BEGIN +DECLARE xxx varchar(100); +ANALYZE SELECT sum(ct) FROM t1 INTO xxx ; +RETURN xxx; +END| + +DELIMITER ;| +drop table t1; + --echo #End of 10.1 tests diff --git a/sql/sp_head.cc b/sql/sp_head.cc index c3274e2cecd..5c5688be4a3 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -212,7 +212,7 @@ sp_get_flags_for_command(LEX *lex) switch (lex->sql_command) { case SQLCOM_SELECT: - if (lex->result) + if (lex->result && !lex->analyze_stmt) { flags= 0; /* This is a SELECT with INTO clause */ break; -- cgit v1.2.1