1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Fix for bug#49465: valgrind warnings and incorrect live checksum...

Problem: inserting a record we don't set unused null bits in the
record buffer if no default field values used.
That may lead to wrong live checksum calculation.

Fix: set unused null bits in the record buffer in such cases.
This commit is contained in:
Ramil Kalimullin
2009-12-17 09:55:03 +04:00
parent 8d329aa720
commit 092f25caeb
3 changed files with 39 additions and 1 deletions

View File

@@ -787,12 +787,21 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
restore_record(table,s->default_values); // Get empty record
else
{
TABLE_SHARE *share= table->s;
/*
Fix delete marker. No need to restore rest of record since it will
be overwritten by fill_record() anyway (and fill_record() does not
use default values in this case).
*/
table->record[0][0]= table->s->default_values[0];
table->record[0][0]= share->default_values[0];
/* Fix undefined null_bits. */
if (share->null_bytes > 1 && share->last_null_bit_pos)
{
table->record[0][share->null_bytes - 1]=
share->default_values[share->null_bytes - 1];
}
}
if (fill_record_n_invoke_before_triggers(thd, table->field, *values, 0,
table->triggers,