-
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:
Annamalai Gurusami <annamalai.gurusami@oracle.com> Reviewed-by:
Marcin Babij <marcin.babij@oracle.com> Reviewed-by:
Oystein Grovlen <oystein.grovlen@oracle.com>
Krzysztof Kapuścik authoredChanges 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:
Annamalai Gurusami <annamalai.gurusami@oracle.com> Reviewed-by:
Marcin Babij <marcin.babij@oracle.com> Reviewed-by:
Oystein Grovlen <oystein.grovlen@oracle.com>
Loading