Skip to content
  • Krzysztof Kapuścik's avatar
    a99b21e0
    WL#11452 Support for BLOBs in temptable engine · a99b21e0
    Krzysztof Kapuścik authored
    
    
    Changes done (temptable engine):
    - BLOB (and derived) columns are stored same way as VARCHAR in Temptable
    row format.
    - Conversion to/from mysql format for the new column types.
    - Modified update so it holds the old row contents until done.
    -- Fixed problem in update which was first modifying the row and then
    was using indexes to find the row; the indexes (order) were already
    broken sometimes at this point as they only holds pointers to row -
    so there was new data but old order.
    - Modified Column class to use union for field that was used for two
    different things (length value or offset).
    - Moved column type logic from Row class to Column class for clarity.
    - General code cleanup ("unused" macros, nullptr).
    - Fixed bug #28139527 - ASSERTION `SRC' IN IN MY_STRNXFRM_UNICODE_TMPL
    -- Fix for assertion in string function. In some cases empty (non-NULL)
    BLOB is stored in row as NULL ptr + 0 bytes length . The NULL is then
    read in make_sort_key leading to an (debug) assert in string function.
    -- Extra assertions added to temptable engine.
    -- Field_blob::make_sort_key for empty blobs returns local empty
    string (not even trying to read ptr from row).
    -- Test case added. Problem is visible only with MyISAM engine.
    
    Changes done (server):
    - Enabled usage of temptable engine for temporary tables with blobs.
    - Proper handling of tables with blobs in Aggregator_distinct when
      temptable engine is used.
    - Proper handling of tables with blobs in remove_duplicates when
      temptable engine is used.
    Changed done (tests):
    - Added new MTR test to check BLOBs support.
    - Added new temptable unit tests.
    - Forced order of records in many tests as it was random for tables
    with blobs as temptable may return different order of records comparing
    to disk storage for temporary tables (innodb/myisam).
    
    RB: 19219
    Reviewed-by: default avatarAnnamalai Gurusami <annamalai.gurusami@oracle.com>
    Reviewed-by: default avatarMarcin Babij <marcin.babij@oracle.com>
    Reviewed-by: default avatarOystein Grovlen <oystein.grovlen@oracle.com>
    a99b21e0
    WL#11452 Support for BLOBs in temptable engine
    Krzysztof Kapuścik authored
    
    
    Changes done (temptable engine):
    - BLOB (and derived) columns are stored same way as VARCHAR in Temptable
    row format.
    - Conversion to/from mysql format for the new column types.
    - Modified update so it holds the old row contents until done.
    -- Fixed problem in update which was first modifying the row and then
    was using indexes to find the row; the indexes (order) were already
    broken sometimes at this point as they only holds pointers to row -
    so there was new data but old order.
    - Modified Column class to use union for field that was used for two
    different things (length value or offset).
    - Moved column type logic from Row class to Column class for clarity.
    - General code cleanup ("unused" macros, nullptr).
    - Fixed bug #28139527 - ASSERTION `SRC' IN IN MY_STRNXFRM_UNICODE_TMPL
    -- Fix for assertion in string function. In some cases empty (non-NULL)
    BLOB is stored in row as NULL ptr + 0 bytes length . The NULL is then
    read in make_sort_key leading to an (debug) assert in string function.
    -- Extra assertions added to temptable engine.
    -- Field_blob::make_sort_key for empty blobs returns local empty
    string (not even trying to read ptr from row).
    -- Test case added. Problem is visible only with MyISAM engine.
    
    Changes done (server):
    - Enabled usage of temptable engine for temporary tables with blobs.
    - Proper handling of tables with blobs in Aggregator_distinct when
      temptable engine is used.
    - Proper handling of tables with blobs in remove_duplicates when
      temptable engine is used.
    Changed done (tests):
    - Added new MTR test to check BLOBs support.
    - Added new temptable unit tests.
    - Forced order of records in many tests as it was random for tables
    with blobs as temptable may return different order of records comparing
    to disk storage for temporary tables (innodb/myisam).
    
    RB: 19219
    Reviewed-by: default avatarAnnamalai Gurusami <annamalai.gurusami@oracle.com>
    Reviewed-by: default avatarMarcin Babij <marcin.babij@oracle.com>
    Reviewed-by: default avatarOystein Grovlen <oystein.grovlen@oracle.com>
Loading