Below is the list of changes that have just been committed into a local
5.1 repository of istruewing. When istruewing does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-09-24 15:07:25+02:00, istruewing@stripped +1 -0
Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE corrupts a MERGE table
Not to be pushed. Internal TEST only.
Stupid "test" lines follow:
The problem was missing dump layout
I added dump layout
No test case. layout is used during debugging only.
dbug/dbug.c@stripped, 2007-09-24 15:07:19+02:00, istruewing@stripped +37 -7
Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE corrupts a MERGE table
Added dump layout.
diff -Nrup a/dbug/dbug.c b/dbug/dbug.c
--- a/dbug/dbug.c 2007-08-02 06:49:24 +02:00
+++ b/dbug/dbug.c 2007-09-24 15:07:19 +02:00
@@ -1,5 +1,7 @@
/******************************************************************************
* *
+
+ingo blabla
* N O T I C E *
* *
* Copyright Abandoned, 1987, Fred Fish *
@@ -75,6 +77,7 @@
#include <my_global.h>
#include <m_string.h>
#include <errno.h>
+#include <ctype.h> /* for isprint() */
#if defined(MSDOS) || defined(__WIN__)
#include <process.h>
#endif
@@ -1130,8 +1133,7 @@ void _db_doprnt_(const char *format,...)
DoPrefix(cs, cs->u_line);
if (TRACING)
Indent(cs, cs->level + 1);
- else
- (void) fprintf(cs->stack->out_file, "%s: ", cs->func);
+ (void) fprintf(cs->stack->out_file, "%s: ", cs->func);
(void) fprintf(cs->stack->out_file, "%s: ", cs->u_keyword);
(void) vfprintf(cs->stack->out_file, format, args);
(void) fputc('\n',cs->stack->out_file);
@@ -1164,6 +1166,10 @@ void _db_dump_(uint _line_, const char *
const unsigned char *memory, size_t length)
{
int pos;
+ uint tmp;
+ ulong lgt= length;
+ const unsigned char *ptr= memory;
+ const unsigned char *start= memory;
char dbuff[90];
CODE_STATE *cs=0;
@@ -1187,19 +1193,43 @@ void _db_dump_(uint _line_, const char *
keyword, (ulong) memory, (long) length);
(void) fputs(dbuff,cs->stack->out_file);
- pos=0;
- while (length-- > 0)
+ (void) fprintf(cs->stack->out_file, "%04x ", (uint) (memory - start));
+ pos= 6;
+ while (length)
{
- uint tmp= *((unsigned char*) memory++);
- if ((pos+=3) >= 80)
+ if (pos >= 54)
{
+ (void) fputc(' ', cs->stack->out_file);
+ (void) fputc('"', cs->stack->out_file);
+ while (lgt && (pos < 70))
+ {
+ tmp= *(ptr++);
+ (void) fputc(isprint(tmp) ? tmp : '~', cs->stack->out_file);
+ pos++;
+ lgt--;
+ }
+ (void) fputc('"', cs->stack->out_file);
fputc('\n',cs->stack->out_file);
- pos=3;
+ (void) fprintf(cs->stack->out_file, "%04x ", (uint) (memory - start));
+ pos=6;
}
+ tmp= *(memory++);
fputc(_dig_vec_upper[((tmp >> 4) & 15)], cs->stack->out_file);
fputc(_dig_vec_upper[tmp & 15], cs->stack->out_file);
fputc(' ',cs->stack->out_file);
+ pos+= 3;
+ length--;
+ }
+ while (pos++ < 55)
+ (void) fputc(' ', cs->stack->out_file);
+ (void) fputc('"', cs->stack->out_file);
+ while (lgt)
+ {
+ tmp= *(ptr++);
+ (void) fputc(isprint(tmp) ? tmp : '~', cs->stack->out_file);
+ lgt--;
}
+ (void) fputc('"', cs->stack->out_file);
(void) fputc('\n',cs->stack->out_file);
dbug_flush(cs);
}
| Thread |
|---|
| • bk commit into 5.1 tree (istruewing:1.2610) BUG#26379 | Ingo Struewing | 24 Sep |