← Back to team overview

maria-developers team mailing list archive

Re: 21eb8969ce9: Improved storage size for Item, Field and some other classes

 

Hi, Monty!

Looks ok, but again it doesn't seem you've squashed intermediate commits
as you said you did.

Bit fields and non-existent commits in columnstore - it's is clearly an
intermediate work-in-progress state, all fixed in your later commits.

On Sep 08, Michael Widenius wrote:
> revision-id: 21eb8969ce9 (mariadb-10.5.2-270-g21eb8969ce9)
> parent(s): c3ecf0d6243
> author: Michael Widenius <michael.widenius@xxxxxxxxx>
> committer: Michael Widenius <michael.widenius@xxxxxxxxx>
> timestamp: 2020-09-02 20:58:34 +0300
> message:
> 
> Improved storage size for Item, Field and some other classes
> 
> - Changed order of class fields to remove dead alignment space.
> - Changed bool fields in Item to bit fields.
> - Used packed enum's for some fields in common classes
> - Removed not used Item::rsize.
> - Changed some class variables from uint/int to smaller type int's.
> - Ensured that field_index is uint16 in all classes and functions. Fixed
>   also that we proparly compare with NO_CACHED_FIELD_INDEX when checking
>   if variable is not set.
> - Removed checking of highest bit of unireg_check (has not been used in
>   a long time)
> - Fixed wrong arguments to make_cond_for_table() for join_tab_idx_arg
>   from false to 0.
> 
> One of the result was reducing the size if class Item with ~24 bytes
 
 ...
> @@ -929,18 +904,48 @@ class Item: public Value_source,
> +
> +  /*
> +    str_values's main purpose is to be used to cache the value in
> +    save_in_field
> +  */
> +  String str_value;
> +
> +  LEX_CSTRING name;			/* Name of item */
> +  /* Original item name (if it was renamed)*/
> +  const char *orig_name;
> +
> +  uint32                                         /* All common bool variables for Item stored here */
> +    maybe_null:1,                          /* If item may be null */
> +    in_rollup:1,                               /* If used in GROUP BY list of a query with ROLLUP */
> +    with_param:1,                         /* True if Item contains an SP parameter */
> +    with_window_func:1,            /* True if item contains a window func */
> +    with_field:1,                            /* True if any item except Item_sum contains a field.
> +                                                          Set during parsing. */
> +    fixed:1;                                     /* If item was fixed with fix_fields */
> +
> +  int16 marker;
> +
> diff --git a/storage/columnstore/columnstore b/storage/columnstore/columnstore
> index b6b02ed516f..f606e76fb77 160000
> --- a/storage/columnstore/columnstore
> +++ b/storage/columnstore/columnstore
> @@ -1 +1 @@
> -Subproject commit b6b02ed516f92055127d416370799d91a82754ea
> +Subproject commit f606e76fb779e40f3376693fff9969e4f2b7669a

Regards,
Sergei
VP of MariaDB Server Engineering
and security@xxxxxxxxxxx


Follow ups