Add a debugger helper function that does this:
(gdb) p dbug_print_table_row(table) $33 = "SUBQUERY2_t1(col_int_key,col_varchar_nokey)=(7,c)"
This commit is contained in:
parent
097b644006
commit
260c802e7d
@ -398,6 +398,84 @@ static uchar *read_buffpek_from_file(IO_CACHE *buffpek_pointers, uint count,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
|
|
||||||
|
/* Buffer where record is returned */
|
||||||
|
char dbug_print_row_buff[512];
|
||||||
|
|
||||||
|
/* Temporary buffer for printing a column */
|
||||||
|
char dbug_print_row_buff_tmp[512];
|
||||||
|
|
||||||
|
/*
|
||||||
|
Print table's current row into a buffer and return a pointer to it.
|
||||||
|
|
||||||
|
This is intended to be used from gdb:
|
||||||
|
|
||||||
|
(gdb) p dbug_print_table_row(table)
|
||||||
|
$33 = "SUBQUERY2_t1(col_int_key,col_varchar_nokey)=(7,c)"
|
||||||
|
(gdb)
|
||||||
|
|
||||||
|
Only columns in table->read_set are printed
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char* dbug_print_table_row(TABLE *table)
|
||||||
|
{
|
||||||
|
Field **pfield;
|
||||||
|
String tmp(dbug_print_row_buff_tmp,
|
||||||
|
sizeof(dbug_print_row_buff_tmp),&my_charset_bin);
|
||||||
|
|
||||||
|
String output(dbug_print_row_buff, sizeof(dbug_print_row_buff),
|
||||||
|
&my_charset_bin);
|
||||||
|
|
||||||
|
output.length(0);
|
||||||
|
output.append(table->alias);
|
||||||
|
output.append("(");
|
||||||
|
bool first= true;
|
||||||
|
|
||||||
|
for (pfield= table->field; *pfield ; pfield++)
|
||||||
|
{
|
||||||
|
if (table->read_set && !bitmap_is_set(table->read_set, (*pfield)->field_index))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
first= false;
|
||||||
|
else
|
||||||
|
output.append(",");
|
||||||
|
|
||||||
|
output.append((*pfield)->field_name? (*pfield)->field_name: "NULL");
|
||||||
|
}
|
||||||
|
|
||||||
|
output.append(")=(");
|
||||||
|
|
||||||
|
first= true;
|
||||||
|
for (pfield= table->field; *pfield ; pfield++)
|
||||||
|
{
|
||||||
|
Field *field= *pfield;
|
||||||
|
|
||||||
|
if (table->read_set && !bitmap_is_set(table->read_set, (*pfield)->field_index))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
first= false;
|
||||||
|
else
|
||||||
|
output.append(",");
|
||||||
|
|
||||||
|
if (field->is_null())
|
||||||
|
output.append("NULL");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (field->type() == MYSQL_TYPE_BIT)
|
||||||
|
(void) field->val_int_as_str(&tmp, 1);
|
||||||
|
else
|
||||||
|
field->val_str(&tmp);
|
||||||
|
output.append(tmp.ptr(), tmp.length());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
output.append(")");
|
||||||
|
|
||||||
|
return output.c_ptr_safe();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Print a text, SQL-like record representation into dbug trace.
|
Print a text, SQL-like record representation into dbug trace.
|
||||||
|
|
||||||
@ -446,6 +524,7 @@ static void dbug_print_record(TABLE *table, bool print_rowid)
|
|||||||
fprintf(DBUG_FILE, "\n");
|
fprintf(DBUG_FILE, "\n");
|
||||||
DBUG_UNLOCK_FILE;
|
DBUG_UNLOCK_FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user