• marko's avatar
    Merge a patch from MySQL AB: · 0af6b4a2
    marko authored
    ChangeSet@1.2288, 2006-08-29 15:35:05+02:00, guilhem@gbichot3.local +2 -0
      Fix for BUG#20866 "show table status on innodb raises assertion"
      and its duplicate BUG#19057 "Test 'rpl_row_func003' fails on SuSE SLES9 x86".
      It was an assertion failure, only in debug builds, not present
      in released versions (nothing to document).
      It happened when doing SHOW TABLE STATUS on an InnoDB table
      having an auto_increment column, right after creating the table.
    
      sql/ha_innodb.cc@1.288, 2006-08-29 15:35:02+02:00, guilhem@gbichot3.local +7 -1
        Before a val_() calls on a Field object, if that field was not marked
        for read, we need to mark it. This is explained here:
        ChangeSet 1.2119.601.1 2006/06/04 18:52:22 monty@mysql.com
        quoting the changeset's comment:
        
          - If a handler needs to call Field->val() or Field->store() on columns
            that are not used in the query, one should install a temporary
            all-columns-used map while doing so. For this, we provide the following
            functions:
          
            my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set);
            field->val();
            dbug_tmp_restore_column_map(table->read_set, old_map);
          
            and similar for the write map:
          
            my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->write_set);
            field->val();
            dbug_tmp_restore_column_map(table->write_set, old_map);
          
            If this is not done, you will sooner or later hit a DBUG_ASSERT
            in the field store() / val() functions.
            (For not DBUG binaries, the dbug_tmp_restore_column_map() and
            dbug_tmp_restore_column_map() are inline dummy functions and should
            be optimized away be the compiler).
        
        Note that I verified that the bug didn't exist in non-debug builds.
    0af6b4a2
ha_innodb.cc 213 KB