Loading include/my_sys.h +1 −0 Original line number Diff line number Diff line Loading @@ -850,6 +850,7 @@ my_bool my_gethwaddr(uchar *to); #define PROT_WRITE 2 #define MAP_NORESERVE 0 #define MAP_SHARED 0x0001 #define MAP_PRIVATE 0x0002 #define MAP_NOSYNC 0x0800 #define MAP_FAILED ((void *)-1) #define MS_SYNC 0x0000 Loading mysql-test/mysql-test-run.pl +53 −2 Original line number Diff line number Diff line Loading @@ -230,6 +230,8 @@ our $opt_client_ddd; our $opt_manual_gdb; our $opt_manual_ddd; our $opt_manual_debug; our $opt_debugger; our $opt_client_debugger; our $opt_gprof; our $opt_gprof_dir; Loading Loading @@ -633,6 +635,8 @@ sub command_line_setup () { 'manual-debug' => \$opt_manual_debug, 'ddd' => \$opt_ddd, 'client-ddd' => \$opt_client_ddd, 'debugger=s' => \$opt_debugger, 'client-debugger=s' => \$opt_client_debugger, 'strace-client' => \$opt_strace_client, 'master-binary=s' => \$exe_master_mysqld, 'slave-binary=s' => \$exe_slave_mysqld, Loading Loading @@ -812,7 +816,8 @@ sub command_line_setup () { # Check debug related options if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd || $opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug) $opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug || $opt_debugger || $opt_client_debugger ) { # Indicate that we are using debugger $glob_debugger= 1; Loading Loading @@ -2798,6 +2803,10 @@ sub mysqld_start ($$$$$) { { ddd_arguments(\$args, \$exe, "$type"."_$idx"); } elsif ( $opt_debugger ) { debugger_arguments(\$args, \$exe, "$type"."_$idx"); } elsif ( $opt_manual_debug ) { print "\nStart $type in your debugger\n" . Loading Loading @@ -3324,6 +3333,10 @@ sub run_mysqltest ($) { { ddd_arguments(\$args, \$exe, "client"); } elsif ( $opt_client_debugger ) { debugger_arguments(\$args, \$exe, "client"); } if ($glob_use_libtool and $opt_valgrind) { Loading Loading @@ -3476,6 +3489,42 @@ sub ddd_arguments { mtr_add_arg($$args, "$save_exe"); } # # Modify the exe and args so that program is run in the selected debugger # sub debugger_arguments { my $args= shift; my $exe= shift; my $debugger= $opt_debugger || $opt_client_debugger; if ( $debugger eq "vcexpress" or $debugger eq "vc") { # vc[express] /debugexe exe arg1 .. argn # Add /debugexe and name of the exe before args unshift(@$$args, "/debugexe"); unshift(@$$args, "$$exe"); } elsif ( $debugger eq "windbg" ) { # windbg exe arg1 .. argn # Add name of the exe before args unshift(@$$args, "$$exe"); } else { mtr_error("Unknown argument \"$debugger\" passed to --debugger"); } # Set exe to debuggername $$exe= $debugger; } # # Modify the exe and args so that program is run in valgrind # Loading Loading @@ -3588,6 +3637,8 @@ Options for debugging the product client-gdb Start mysqltest client in gdb ddd Start mysqld in ddd client-ddd Start mysqltest client in ddd debugger=NAME Start mysqld in the selected debugger client-debugger=NAME Start mysqltest in the selected debugger strace-client FIXME master-binary=PATH Specify the master "mysqld" to use slave-binary=PATH Specify the slave "mysqld" to use Loading mysys/my_mmap.c +1 −4 Original line number Diff line number Diff line Loading @@ -43,22 +43,19 @@ int my_getpagesize(void) void *my_mmap(void *addr, size_t len, int prot, int flags, int fd, my_off_t offset) { DWORD flProtect=0; HANDLE hFileMap; LPVOID ptr; HANDLE hFile= (HANDLE)_get_osfhandle(fd); if (hFile == INVALID_HANDLE_VALUE) return MAP_FAILED; flProtect|=SEC_COMMIT; hFileMap=CreateFileMapping(hFile, &mmap_security_attributes, PAGE_READWRITE, 0, (DWORD) len, NULL); if (hFileMap == 0) return MAP_FAILED; ptr=MapViewOfFile(hFileMap, flags & PROT_WRITE ? FILE_MAP_WRITE : FILE_MAP_READ, prot & PROT_WRITE ? FILE_MAP_WRITE : FILE_MAP_READ, (DWORD)(offset >> 32), (DWORD)offset, len); /* Loading storage/csv/ha_tina.cc +20 −11 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ #include "mysql_priv.h" #include "ha_tina.h" #include <sys/mman.h> #include <mysql/plugin.h> Loading Loading @@ -161,7 +160,7 @@ int get_mmap(TINA_SHARE *share, int write) share->mapped_file= (byte *)my_mmap(NULL, share->file_stat.st_size, PROT_READ, MAP_PRIVATE, share->data_file, 0); if ((share->mapped_file ==(caddr_t)-1)) if ((share->mapped_file == MAP_FAILED)) { /* Bad idea you think? See the problem is that nothing actually checks Loading Loading @@ -499,7 +498,7 @@ ha_tina::ha_tina(TABLE_SHARE *table_arg) records_is_known(0) { /* Set our original buffers from pre-allocated memory */ buffer.set(byte_buffer, IO_SIZE, system_charset_info); buffer.set((char*)byte_buffer, IO_SIZE, system_charset_info); chain= chain_buffer; } Loading Loading @@ -877,7 +876,8 @@ int ha_tina::write_row(byte * buf) size= encode_quote(buf); if (my_write(share->data_file, buffer.ptr(), size, MYF(MY_WME | MY_NABP))) if (my_write(share->data_file, (byte*)buffer.ptr(), size, MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); /* Loading Loading @@ -929,7 +929,8 @@ int ha_tina::update_row(const byte * old_data, byte * new_data) if (chain_append()) DBUG_RETURN(-1); if (my_write(share->data_file, buffer.ptr(), size, MYF(MY_WME | MY_NABP))) if (my_write(share->data_file, (byte*)buffer.ptr(), size, MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); /* UPDATE should never happen on the log tables */ Loading Loading @@ -1130,7 +1131,7 @@ int ha_tina::rnd_end() if ((chain_ptr - chain) > 0) { tina_set *ptr; off_t length; size_t length; /* Setting up writable map, this will contain all of the data after the Loading @@ -1154,15 +1155,16 @@ int ha_tina::rnd_end() length= length - (size_t)(ptr->end - ptr->begin); } /* Truncate the file to the new size */ if (my_chsize(share->data_file, length, 0, MYF(MY_WME))) /* Unmap the file before the new size is set */ if (my_munmap(share->mapped_file, share->file_stat.st_size)) DBUG_RETURN(-1); /* We set it to null so that get_mmap() won't try to unmap it */ share->mapped_file= NULL; if (my_munmap(share->mapped_file, length)) /* Set the file to the new size */ if (my_chsize(share->data_file, length, 0, MYF(MY_WME))) DBUG_RETURN(-1); /* We set it to null so that get_mmap() won't try to unmap it */ share->mapped_file= NULL; if (get_mmap(share, 0) > 0) DBUG_RETURN(-1); } Loading Loading @@ -1281,6 +1283,13 @@ int ha_tina::delete_all_rows() if (!records_is_known) DBUG_RETURN(my_errno=HA_ERR_WRONG_COMMAND); /* Unmap the file before the new size is set */ if (share->mapped_file && my_munmap(share->mapped_file, share->file_stat.st_size)) DBUG_RETURN(-1); share->mapped_file= NULL; /* Truncate the file to zero size */ rc= my_chsize(share->data_file, 0, 0, MYF(MY_WME)); if (get_mmap(share, 0) > 0) Loading storage/csv/ha_tina.h +3 −3 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ typedef struct st_tina_share { ha_rows rows_recorded; /* Number of rows in tables */ } TINA_SHARE; typedef struct tina_set { struct tina_set { off_t begin; off_t end; }; Loading Loading
include/my_sys.h +1 −0 Original line number Diff line number Diff line Loading @@ -850,6 +850,7 @@ my_bool my_gethwaddr(uchar *to); #define PROT_WRITE 2 #define MAP_NORESERVE 0 #define MAP_SHARED 0x0001 #define MAP_PRIVATE 0x0002 #define MAP_NOSYNC 0x0800 #define MAP_FAILED ((void *)-1) #define MS_SYNC 0x0000 Loading
mysql-test/mysql-test-run.pl +53 −2 Original line number Diff line number Diff line Loading @@ -230,6 +230,8 @@ our $opt_client_ddd; our $opt_manual_gdb; our $opt_manual_ddd; our $opt_manual_debug; our $opt_debugger; our $opt_client_debugger; our $opt_gprof; our $opt_gprof_dir; Loading Loading @@ -633,6 +635,8 @@ sub command_line_setup () { 'manual-debug' => \$opt_manual_debug, 'ddd' => \$opt_ddd, 'client-ddd' => \$opt_client_ddd, 'debugger=s' => \$opt_debugger, 'client-debugger=s' => \$opt_client_debugger, 'strace-client' => \$opt_strace_client, 'master-binary=s' => \$exe_master_mysqld, 'slave-binary=s' => \$exe_slave_mysqld, Loading Loading @@ -812,7 +816,8 @@ sub command_line_setup () { # Check debug related options if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd || $opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug) $opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug || $opt_debugger || $opt_client_debugger ) { # Indicate that we are using debugger $glob_debugger= 1; Loading Loading @@ -2798,6 +2803,10 @@ sub mysqld_start ($$$$$) { { ddd_arguments(\$args, \$exe, "$type"."_$idx"); } elsif ( $opt_debugger ) { debugger_arguments(\$args, \$exe, "$type"."_$idx"); } elsif ( $opt_manual_debug ) { print "\nStart $type in your debugger\n" . Loading Loading @@ -3324,6 +3333,10 @@ sub run_mysqltest ($) { { ddd_arguments(\$args, \$exe, "client"); } elsif ( $opt_client_debugger ) { debugger_arguments(\$args, \$exe, "client"); } if ($glob_use_libtool and $opt_valgrind) { Loading Loading @@ -3476,6 +3489,42 @@ sub ddd_arguments { mtr_add_arg($$args, "$save_exe"); } # # Modify the exe and args so that program is run in the selected debugger # sub debugger_arguments { my $args= shift; my $exe= shift; my $debugger= $opt_debugger || $opt_client_debugger; if ( $debugger eq "vcexpress" or $debugger eq "vc") { # vc[express] /debugexe exe arg1 .. argn # Add /debugexe and name of the exe before args unshift(@$$args, "/debugexe"); unshift(@$$args, "$$exe"); } elsif ( $debugger eq "windbg" ) { # windbg exe arg1 .. argn # Add name of the exe before args unshift(@$$args, "$$exe"); } else { mtr_error("Unknown argument \"$debugger\" passed to --debugger"); } # Set exe to debuggername $$exe= $debugger; } # # Modify the exe and args so that program is run in valgrind # Loading Loading @@ -3588,6 +3637,8 @@ Options for debugging the product client-gdb Start mysqltest client in gdb ddd Start mysqld in ddd client-ddd Start mysqltest client in ddd debugger=NAME Start mysqld in the selected debugger client-debugger=NAME Start mysqltest in the selected debugger strace-client FIXME master-binary=PATH Specify the master "mysqld" to use slave-binary=PATH Specify the slave "mysqld" to use Loading
mysys/my_mmap.c +1 −4 Original line number Diff line number Diff line Loading @@ -43,22 +43,19 @@ int my_getpagesize(void) void *my_mmap(void *addr, size_t len, int prot, int flags, int fd, my_off_t offset) { DWORD flProtect=0; HANDLE hFileMap; LPVOID ptr; HANDLE hFile= (HANDLE)_get_osfhandle(fd); if (hFile == INVALID_HANDLE_VALUE) return MAP_FAILED; flProtect|=SEC_COMMIT; hFileMap=CreateFileMapping(hFile, &mmap_security_attributes, PAGE_READWRITE, 0, (DWORD) len, NULL); if (hFileMap == 0) return MAP_FAILED; ptr=MapViewOfFile(hFileMap, flags & PROT_WRITE ? FILE_MAP_WRITE : FILE_MAP_READ, prot & PROT_WRITE ? FILE_MAP_WRITE : FILE_MAP_READ, (DWORD)(offset >> 32), (DWORD)offset, len); /* Loading
storage/csv/ha_tina.cc +20 −11 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ #include "mysql_priv.h" #include "ha_tina.h" #include <sys/mman.h> #include <mysql/plugin.h> Loading Loading @@ -161,7 +160,7 @@ int get_mmap(TINA_SHARE *share, int write) share->mapped_file= (byte *)my_mmap(NULL, share->file_stat.st_size, PROT_READ, MAP_PRIVATE, share->data_file, 0); if ((share->mapped_file ==(caddr_t)-1)) if ((share->mapped_file == MAP_FAILED)) { /* Bad idea you think? See the problem is that nothing actually checks Loading Loading @@ -499,7 +498,7 @@ ha_tina::ha_tina(TABLE_SHARE *table_arg) records_is_known(0) { /* Set our original buffers from pre-allocated memory */ buffer.set(byte_buffer, IO_SIZE, system_charset_info); buffer.set((char*)byte_buffer, IO_SIZE, system_charset_info); chain= chain_buffer; } Loading Loading @@ -877,7 +876,8 @@ int ha_tina::write_row(byte * buf) size= encode_quote(buf); if (my_write(share->data_file, buffer.ptr(), size, MYF(MY_WME | MY_NABP))) if (my_write(share->data_file, (byte*)buffer.ptr(), size, MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); /* Loading Loading @@ -929,7 +929,8 @@ int ha_tina::update_row(const byte * old_data, byte * new_data) if (chain_append()) DBUG_RETURN(-1); if (my_write(share->data_file, buffer.ptr(), size, MYF(MY_WME | MY_NABP))) if (my_write(share->data_file, (byte*)buffer.ptr(), size, MYF(MY_WME | MY_NABP))) DBUG_RETURN(-1); /* UPDATE should never happen on the log tables */ Loading Loading @@ -1130,7 +1131,7 @@ int ha_tina::rnd_end() if ((chain_ptr - chain) > 0) { tina_set *ptr; off_t length; size_t length; /* Setting up writable map, this will contain all of the data after the Loading @@ -1154,15 +1155,16 @@ int ha_tina::rnd_end() length= length - (size_t)(ptr->end - ptr->begin); } /* Truncate the file to the new size */ if (my_chsize(share->data_file, length, 0, MYF(MY_WME))) /* Unmap the file before the new size is set */ if (my_munmap(share->mapped_file, share->file_stat.st_size)) DBUG_RETURN(-1); /* We set it to null so that get_mmap() won't try to unmap it */ share->mapped_file= NULL; if (my_munmap(share->mapped_file, length)) /* Set the file to the new size */ if (my_chsize(share->data_file, length, 0, MYF(MY_WME))) DBUG_RETURN(-1); /* We set it to null so that get_mmap() won't try to unmap it */ share->mapped_file= NULL; if (get_mmap(share, 0) > 0) DBUG_RETURN(-1); } Loading Loading @@ -1281,6 +1283,13 @@ int ha_tina::delete_all_rows() if (!records_is_known) DBUG_RETURN(my_errno=HA_ERR_WRONG_COMMAND); /* Unmap the file before the new size is set */ if (share->mapped_file && my_munmap(share->mapped_file, share->file_stat.st_size)) DBUG_RETURN(-1); share->mapped_file= NULL; /* Truncate the file to zero size */ rc= my_chsize(share->data_file, 0, 0, MYF(MY_WME)); if (get_mmap(share, 0) > 0) Loading
storage/csv/ha_tina.h +3 −3 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ typedef struct st_tina_share { ha_rows rows_recorded; /* Number of rows in tables */ } TINA_SHARE; typedef struct tina_set { struct tina_set { off_t begin; off_t end; }; Loading