mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-36536 Add option to not collect statistics for long char/varchars
This is needed to make it easy for users to automatically ignore long char and varchars when using ANALYZE TABLE PERSISTENT. These fields can cause problems as they will consume 'CHARACTERS * MAX_CHARACTER_LENGTH * 2 * number_of_rows' space on disk during analyze, which can easily be much bigger than the analyzed table. This commit adds a new user variable, analyze_max_length, default value 4G. Any field that is bigger than this in bytes, will be ignored by ANALYZE TABLE PERSISTENT unless it is specified in FOR COLUMNS(). While doing this patch, I noticed that we do not skip GEOMETRY columns from ANALYZE TABLE, like we do with BLOB. This should be fixed when merging to the 'main' branch. At the same time we should add a resonable default value for analyze_max_length, probably 1024, like we have for max_sort_length.
This commit is contained in:
@@ -988,8 +988,9 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
||||
types here.
|
||||
*/
|
||||
enum enum_field_types type= field->type();
|
||||
if (type < MYSQL_TYPE_TINY_BLOB ||
|
||||
type > MYSQL_TYPE_BLOB)
|
||||
if ((type < MYSQL_TYPE_TINY_BLOB ||
|
||||
type > MYSQL_TYPE_BLOB) &&
|
||||
field->field_length <= thd->variables.analyze_max_length)
|
||||
{
|
||||
field->register_field_in_read_map();
|
||||
bitmap_set_bit(&tab->has_value_set, field->field_index);
|
||||
|
Reference in New Issue
Block a user