Dan:~/mdev-23002/server$ git diff
diff --git a/sql/item.h b/sql/item.h
index 3073a4d240d..ebc6e4e4e5e 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -231,7 +231,7 @@ struct Name_resolution_context: Sql_alloc
     SELECT list and this->table_list. If FALSE, items are resolved
     only against this->table_list.
   */
-  bool resolve_in_select_list;
+  bool resolve_in_select_list:1;
 
   /*
     Security context of this name resolution context. It's used for views
@@ -282,7 +282,7 @@ class Name_resolution_context_state
   TABLE_LIST *save_table_list;
   TABLE_LIST *save_first_name_resolution_table;
   TABLE_LIST *save_next_name_resolution_table;
-  bool        save_resolve_in_select_list;
+  bool        save_resolve_in_select_list:1;
   TABLE_LIST *save_next_local;
 
 public:
@@ -536,7 +536,7 @@ class Rewritable_query_parameter
   */
   uint len_in_query;
 
-  bool limit_clause_param;
+  bool limit_clause_param:1;
 
   Rewritable_query_parameter(uint pos_in_q= 0, uint len_in_q= 0)
     : pos_in_query(pos_in_q), len_in_query(len_in_q),
@@ -684,10 +684,10 @@ class Tmp_field_src
 
 class Tmp_field_param
 {
-  bool m_group;
-  bool m_modify_item;
-  bool m_table_cant_handle_bit_fields;
-  bool m_make_copy_field;
+  bool m_group:1;
+  bool m_modify_item:1;
+  bool m_table_cant_handle_bit_fields:1;
+  bool m_make_copy_field:1;
 public:
   Tmp_field_param(bool group,
                   bool modify_item,
@@ -928,16 +928,14 @@ class Item: public Value_source,
    */
   Item *next;
   int  marker;
-  bool maybe_null;                     /* If item may be null */
-  bool in_rollup;                       /* If used in GROUP BY list
+  bool maybe_null:1;
+  bool in_rollup:1;                    /* If used in GROUP BY list
                                            of a query with ROLLUP */ 
-  bool null_value;                     /* if item is null */
-  bool with_param;                      /* True if contains an SP parameter */
-  bool with_window_func;             /* True if item contains a window func */
-  /**
-    True if any item except Item_sum contains a field. Set during parsing.
-  */
-  bool with_field;
+  bool null_value;                     /* if item is null */
+  bool with_param:1;                   /* True if contains an SP parameter */
+  bool with_window_func:1;             /* True if item contains a window func*/
+  bool with_field:1;                     /* True if any item except Item_sum 
+                                        contains a field. Set during parsing.*/
   uint8 common_flags;
   bool is_autogenerated_name()
   { return (common_flags & IS_AUTO_GENERATED_NAME); }
@@ -2119,7 +2117,7 @@ class Item: public Value_source,
     st_select_lex_unit *nest_level_base;
     uint count;
     int nest_level;
-    bool collect;
+    bool collect:1;
   };
 
   /*
@@ -2453,7 +2451,7 @@ class DbugStringItemTypeValue: public StringBuffer<128>
 class With_sum_func_cache
 {
 protected:
-  bool m_with_sum_func; // True if the owner item contains a sum func
+  bool m_with_sum_func:1; // True if the owner item contains a sum func
 public:
   With_sum_func_cache()
    :m_with_sum_func(false)
@@ -2500,7 +2498,7 @@ class With_sum_func_cache
 class With_subquery_cache
 {
 protected:
-  bool m_with_subquery;
+  bool m_with_subquery:1;
 public:
   With_subquery_cache(): m_with_subquery(false) { }
   void join(const Item *item) { m_with_subquery|= item->with_subquery(); }
@@ -2679,7 +2677,7 @@ class Item_string;
 class Item_fixed_hybrid: public Item
 {
 public:
-  bool fixed;                           // If item was fixed with fix_fields
+  bool fixed:1;                           // If item was fixed with fix_fields
 public:
   Item_fixed_hybrid(THD *thd): Item(thd), fixed(false)
   { }
@@ -3245,7 +3243,7 @@ class Item_ident :public Item_result_field
   LEX_CSTRING db_name;
   LEX_CSTRING table_name;
   LEX_CSTRING field_name;
-  bool alias_name_used; /* true if item was resolved against alias */
+  bool alias_name_used:1; /* true if item was resolved against alias */
   /* 
     Cached value of index for this field in table->field array, used by prep. 
     stmts for speeding up their re-execution. Holds NO_CACHED_FIELD_INDEX 
@@ -3271,7 +3269,7 @@ class Item_ident :public Item_result_field
     about this ident item dependency, so we should cache the condition in
     this variable.
   */
-  bool can_be_depended;
+  bool can_be_depended:1;
   Item_ident(THD *thd, Name_resolution_context *context_arg,
              const LEX_CSTRING &db_name_arg, const LEX_CSTRING &table_name_arg,
              const LEX_CSTRING &field_name_arg);
@@ -3309,7 +3307,7 @@ class Item_field :public Item_ident,
   */
   privilege_t have_privileges;
   /* field need any privileges (for VIEW creation) */
-  bool any_privileges;
+  bool any_privileges:1;
   Item_field(THD *thd, Name_resolution_context *context_arg,
              const LEX_CSTRING &db_arg, const LEX_CSTRING &table_name_arg,
             const LEX_CSTRING &field_name_arg);
@@ -3747,6 +3745,7 @@ class Item_param :public Item_basic_value,
   } state;
 
   void fix_temporal(uint32 max_length_arg, uint decimals_arg);
+  bool m_empty_string_is_null:1;
 
   struct CONVERSION_INFO
   {
@@ -3789,7 +3788,6 @@ class Item_param :public Item_basic_value,
     }
   };
 
-  bool m_empty_string_is_null;
 
   class PValue_simple
   {
@@ -4079,7 +4077,7 @@ class Item_param :public Item_basic_value,
 
 private:
   Send_field *m_out_param_info;
-  bool m_is_settable_routine_parameter;
+  bool m_is_settable_routine_parameter:1;
   /*
     Array of all references of this parameter marker used in a CTE to its clones
     created for copies of this marker used the CTE's copies. It's used to
@@ -4931,7 +4929,7 @@ class Used_tables_and_const_cache
     (even internally in Item_func_* code).
   */
   table_map used_tables_cache;
-  bool const_item_cache;
+  bool const_item_cache:1;
 
   Used_tables_and_const_cache()
    :used_tables_cache(0),
@@ -5150,11 +5148,11 @@ class Item_ref :public Item_ident,
 {
 protected:
   void set_properties();
-  bool set_properties_only; // the item doesn't need full fix_fields
+  bool set_properties_only:1; // the item doesn't need full fix_fields
 public:
   enum Ref_Type { REF, DIRECT_REF, VIEW_REF, OUTER_REF, AGGREGATE_REF };
   Item **ref;
-  bool reference_trough_name;
+  bool reference_trough_name:1;
   Item_ref(THD *thd, Name_resolution_context *context_arg,
            const LEX_CSTRING &db_arg, const LEX_CSTRING &table_name_arg,
            const LEX_CSTRING &field_name_arg):
@@ -5822,8 +5820,8 @@ class Item_outer_ref :public Item_direct_ref
     TRUE <=> that the outer_ref is already present in the select list
     of the outer select.
   */
-  bool found_in_select_list;
-  bool found_in_group_by;
+  bool found_in_select_list:1;
+  bool found_in_group_by:1;
   Item_outer_ref(THD *thd, Name_resolution_context *context_arg,
                  Item_field *outer_field_arg):
     Item_direct_ref(thd, context_arg, 0, outer_field_arg->table_name,
@@ -6147,7 +6145,7 @@ class Item_copy_timestamp: public Item_copy
 class Cached_item :public Sql_alloc
 {
 public:
-  bool null_value;
+  bool null_value:1;
   Cached_item() :null_value(0) {}
   /*
     Compare the cached value with the source value. If not equal, copy
@@ -6446,7 +6444,7 @@ class Item_trigger_field : public Item_field,
     Trigger field is read-only unless it belongs to the NEW row in a
     BEFORE INSERT of BEFORE UPDATE trigger.
   */
-  bool read_only;
+  bool read_only:1;
 public:
   bool check_vcol_func_processor(void *arg);
 };
@@ -6477,7 +6475,7 @@ class Item_cache: public Item,
     cache_value() will be called to actually cache value of saved item.
     cache_value() will set this flag to TRUE.
   */
-  bool value_cached;
+  bool value_cached:1;
 
   table_map used_table_map;
 public:
@@ -6884,7 +6882,7 @@ class Item_cache_str: public Item_cache
 {
   char buffer[STRING_BUFFER_USUAL_SIZE];
   String *value, value_buff;
-  bool is_varbinary;
+  bool is_varbinary:1;
   
 public:
   Item_cache_str(THD *thd, const Item *item):
@@ -6939,7 +6937,7 @@ class Item_cache_row: public Item_cache
 {
   Item_cache  **values;
   uint item_count;
-  bool save_array;
+  bool save_array:1;
 public:
   Item_cache_row(THD *thd):
     Item_cache(thd), values(0), item_count(2),
(END)

