List:Commits« Previous MessageNext Message »
From:Marc Alff Date:September 20 2010 9:01pm
Subject:bzr push into mysql-trunk-bugfixing branch (marc.alff:3269 to 3270)
View as plain text  
 3270 Marc Alff	2010-09-20 [merge]
      Merge mysql-5.5-bugfixing --> mysql-trunk-bugfixing

    modified:
      storage/perfschema/pfs_engine_table.cc
 3269 Marc Alff	2010-09-17 [merge]
      Merge mysql-5.5-bugfixing --> mysql-trunk-bugfixing

    modified:
      mysql-test/suite/perfschema/r/server_init.result
      mysql-test/suite/perfschema/t/server_init.test
=== modified file 'storage/perfschema/pfs_engine_table.cc'
--- a/storage/perfschema/pfs_engine_table.cc	2010-08-12 15:25:01 +0000
+++ b/storage/perfschema/pfs_engine_table.cc	2010-09-20 20:59:48 +0000
@@ -223,6 +223,8 @@ int PFS_engine_table::read_row(TABLE *ta
                                Field **fields)
 {
   my_bitmap_map *org_bitmap;
+  Field *f;
+  Field **fields_reset;
 
   /*
     Make sure the table structure is as expected before mapping
@@ -240,6 +242,16 @@ int PFS_engine_table::read_row(TABLE *ta
 
   /* We internally write to Fields to support the read interface */
   org_bitmap= dbug_tmp_use_all_columns(table, table->write_set);
+
+  /*
+    Some callers of the storage engine interface do not honor the
+    f->is_null() flag, and will attempt to read the data itself.
+    A known offender is mysql_checksum_table().
+    For robustness, reset every field.
+  */
+  for (fields_reset= fields; (f= *fields_reset) ; fields_reset++)
+    f->reset();
+
   int result= read_row_values(table, buf, fields, read_all);
   dbug_tmp_restore_column_map(table->write_set, org_bitmap);
 


Attachment: [text/bzr-bundle] bzr/marc.alff@oracle.com-20100920205948-zxiq0o7jg8oghkkg.bundle
Thread
bzr push into mysql-trunk-bugfixing branch (marc.alff:3269 to 3270) Marc Alff20 Sep