1. 29 Mar, 2018 16 commits
    • Monty's avatar
      MDEV-14275 Improving memory utilization for information schema · e2664ee8
      Monty authored
      SELECT queries on information_schema table will now not store data
      in the temporary table for columns that are not used in the query.
      This can drastically reduce memory when there are many rows involved
      in a query, like using
      SELECT table_name FROM information_schema.table
      on a system with many tables.
      The difference for the above query is about 14K per existing table.
      
      The code works this way:
      - Create a bitmap for all information_schema fields used in the query
      - For BLOB and VARCHAR fields that are not use, create a Field_null field.
      e2664ee8
    • Monty's avatar
      Ensure that map->mutex is reset in my_bitmap_init · 33fa6abd
      Monty authored
      33fa6abd
    • Monty's avatar
      Fixed compiler warnings · 75dd94c7
      Monty authored
      Remove compiler warnings in sphinx, item_sum.cc and opt_split.cc
      75dd94c7
    • Michael Widenius's avatar
      Added flush tables to acl_load_mutex-5170.test · d572c19f
      Michael Widenius authored
      This is needed as otherwise a lot of MyISAM tables may be marked
      as crashed, depending on in which order tests are run
      d572c19f
    • Monty's avatar
      410d0930
    • Michael Widenius's avatar
      Move mysql-test-run/extra/rpl_tests to suite/rpl/include · 39018f2a
      Michael Widenius authored
      Renamed suite/rpl/include/rpl_sync.inc to rpl_sync_test.inc to
      remove clash with include/rpl_sync.inc
      39018f2a
    • Michael Widenius's avatar
    • Michael Widenius's avatar
    • Monty's avatar
      Move alter partition flags to alter_info->partition_flags · ab194126
      Monty authored
      This is done to get more free flag bits for alter_info->flags
      
      Renamed all ALTER PARTITION defines to start with ALTER_PARTITION_
      Renamed ALTER_PARTITION to ALTER_PARTITION_INFO
      Renamed ALTER_TABLE_REORG to ALTER_PARTITION_TABLE_REORG
      
      Other things:
      - Shifted some ALTER_xxx defines to get empty bits at end
      ab194126
    • Monty's avatar
      Changed static const in Alter_info and Alter_online_info to defines · 2dbeebdb
      Monty authored
      Main reason was to make it easier to print the above structures in
      a debugger. Additional benefits is that I was able to use same
      defines for both structures, which simplifes some code.
      
      Most of the code is just removing Alter_info:: and Alter_inplace_info::
      from alter table flags.
      
      Following renames was done:
      HA_ALTER_FLAGS        -> alter_table_operations
      CHANGE_CREATE_OPTION  -> ALTER_CHANGE_CREATE_OPTION
      Alter_info::ADD_INDEX -> ALTER_ADD_INDEX
      DROP_INDEX            -> ALTER_DROP_INDEX
      ADD_UNIQUE_INDEX      -> ALTER_ADD_UNIQUE_INDEX
      DROP_UNIQUE_INDEx     -> ALTER_DROP_UNIQUE_INDEX
      ADD_PK_INDEX          -> ALTER_ADD_PK_INDEX
      DROP_PK_INDEX         -> ALTER_DROP_PK_INDEX
      Alter_info:ALTER_ADD_COLUMN    -> ALTER_PARSE_ADD_COLUMN
      Alter_info:ALTER_DROP_COLUMN   -> ALTER_PARSE_DROP_COLUMN
      Alter_inplace_info::ADD_INDEX  -> ALTER_ADD_NON_UNIQUE_NON_PRIM_INDEX
      Alter_inplace_info::DROP_INDEX -> ALTER_DROP_NON_UNIQUE_NON_PRIM_INDEX
      
      Other things:
      - Added typedef alter_table_operatons for alter table flags
      - DROP CHECK CONSTRAINT can now be done online
      - Added checks for Aria tables in alter_table_online.test
      - alter_table_flags now takes an ulonglong as argument.
      - Don't support online operations if checksum option is used.
      - sql_lex.cc doesn't add ALTER_ADD_INDEX if index is not created
      2dbeebdb
    • Monty's avatar
      Fixed some DBUG_PRINT to use %p properly · 0631f20f
      Monty authored
      0631f20f
    • Monty's avatar
      Fixed alter online table for Aria tables · c3f37c07
      Monty authored
      fill_alter_table() always thought that index was changed because of
      of a wrong check of block_size. Some engines had code to correct this
      that should not be needed, Aria didn't and because of this some online
      operations didn't work.
      
      This code fixes the comparision of block_size to only compare if it's set.
      c3f37c07
    • halfspawn's avatar
    • Sergey Vojtovich's avatar
      Clean-up trx_sys.mutex misuse · 4faf34ad
      Sergey Vojtovich authored
      Currently trx_sys.mutex protects only trx_sys.mysql_trx_list and
      trx_sys.m_views, which are not accessed by lock0lock debug routines.
      Thus there's no need to bother trx_sys.mutex here.
      
      Removed trx_assert_started(): this assertion is fully covered by
      check_trx_state().
      4faf34ad
    • Sergey Vojtovich's avatar
      MDEV-15612 - Latching violation in trx_roll_must_shutdown · b36da48a
      Sergey Vojtovich authored
      recv_sys_t::mutex and rw_trx_hash_elementi_t::mutex were acquired
      in reverse (to recorded) order.
      
      Fixed by releasing recv_sys_t::mutex, before iterating rw_trx_hash.
      Statistics gathering doesn't really need recv_sys_t::mutex protection,
      since it is always done in one thread (trx_roll_crash_recv_trx) and
      thus it can't go wrong.
      b36da48a
    • Alexander Barkov's avatar
  2. 28 Mar, 2018 4 commits
  3. 27 Mar, 2018 5 commits
    • Daniel Bartholomew's avatar
      bump the VERSION · aafb9d44
      Daniel Bartholomew authored
      aafb9d44
    • Alexander Barkov's avatar
      MDEV-15689 Fix Item_func_set_collation to pass the collation using CHARSET_INFO instead of Item · 068450a3
      Alexander Barkov authored
      Main changes:
      
      - Changing the constructor to accept a CHARSET_INFO pointer, instead of an Item pointer
      - Updating the bison grammar accordingly
      
      Additional cleanups:
      
      - Simplifying Item_func_set_collation::eq() by reusing Item_func::eq()
      - Removing unused binary_keyword
      068450a3
    • Alexander Barkov's avatar
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-15325 Incomplete validation of missing tablespace during recovery · 73af8af0
      Thirunarayanan Balathandayuthapani authored
      Problem:
      =======
      	During validation of missing tablespace, missing tablespace id is
      being compared with hash table of redo logs (recv_sys->addr_hash). But if the
      hash table ran out of memory then there is a possibility that it will not contain
      the redo logs of all tablespace. In that case, Server will load the InnoDB
      even though there is a missing tablespace.
      
      Solution:
      ========
      	If the recv_sys->addr_hash hash table ran out of memory then InnoDB needs
      to scan the remaining redo log again to validate the missing tablespace.
      73af8af0
    • Alexander Barkov's avatar
      MDEV-15620 Crash when using "SET @@NEW.a=expr" inside a trigger · 902ace09
      Alexander Barkov authored
      The problem resided in this branch of the "option_value_no_option_type" rule:
      
      | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
      
      Summary:
      
      1. internal_variable_name initialized tmp.var to trg_new_row_fake_var (0x01).
      2. The condition "if (tmp.var == NULL)" did not check
         the special case with trg_new_row_fake_var,
         so Lex->set_system_variable(&tmp, $3, $6) was
         called with tmp.var pointing to trg_new_row_fake_var,
         which created a sys_var instance pointing to 0x01 instead of
         a real system variable.
      3. Later, at the trigger invocation time, this method was called:
         sys_var::do_deprecated_warning (this=0x1, thd=0x7ffe6c000a98)
         Notice, "this" is equal to trg_new_row_fake_var (0x01)
      
      Solution:
      
      The old implementation with separate rules
      internal_variable_name (in sql_yacc.yy and sql_yacc_ora.yy) and
      internal_variable_name_directly_assignable (in sql_yacc_ora.yy only)
      was too complex and hard to follow.
      
      Rewriting the code in a more straightforward way.
      
      1. Changing LEX::set_system_variable()
      
      from:
      
      bool set_system_variable(struct sys_var_with_base *, enum_var_type, Item *);
      
      to:
      
      bool set_system_variable(enum_var_type, sys_var *, const LEX_CSTRING *, Item *);
      
      2. Adding new methods in LEX, which operate with variable names:
      
      bool set_trigger_field(const LEX_CSTRING *, const LEX_CSTRING *, Item *);
      bool set_system_variable(enum_var_type var_type, const LEX_CSTRING *name,
                               Item *val);
      bool set_system_variable(THD *thd, enum_var_type var_type,
                               const LEX_CSTRING *name1,
                               const LEX_CSTRING *name2,
                               Item *val);
      bool set_default_system_variable(enum_var_type var_type,
                                       const LEX_CSTRING *name,
                                       Item *val);
      bool set_variable(const LEX_CSTRING *name, Item *item);
      
      3. Changing the grammar to call the new methods directly
         in option_value_no_option_type,
         Removing rules internal_variable_name and
         internal_variable_name_directly_assignable.
      
      4. Removing "struct sys_var_with_base" and trg_new_row_fake_var.
      
      Good side effect:
      
      - The code in /sql reduced from 314 to 183 lines.
      - MDEV-15615 Unexpected syntax error instead of "Unknown system variable" ...
        was also fixed automatically
      902ace09
  4. 26 Mar, 2018 5 commits
  5. 25 Mar, 2018 1 commit
  6. 24 Mar, 2018 6 commits
  7. 23 Mar, 2018 3 commits