1. 30 Jan, 2018 7 commits
  2. 29 Jan, 2018 20 commits
    • Vladislav Vaintroub's avatar
      Fix result file · 4808996b
      Vladislav Vaintroub authored
      4808996b
    • Marko Mäkelä's avatar
      MDEV-14209 innodb_gis.rtree_debug produces huge server error logs · 5010ab26
      Marko Mäkelä authored
      Do not SET DEBUG_DBUG=-d,... in tests. To disable debug instrumentation,
      save and restore the original value of the variable DEBUG_DBUG.
      Assigning -d,... will enable the output of a lot of unrelated DBUG
      messages to the server error log.
      5010ab26
    • Vladislav Vaintroub's avatar
      160a94ee
    • Sergei Petrunia's avatar
    • Sergei Petrunia's avatar
    • Vladislav Vaintroub's avatar
      Fix type truncation warnings. · 28d41241
      Vladislav Vaintroub authored
      rx_i_s_cache_t is now bool, not ibool.
      28d41241
    • Marko Mäkelä's avatar
      Fix an integer type mismatch · 8b673d44
      Marko Mäkelä authored
      8b673d44
    • Vladislav Vaintroub's avatar
      Fix warnings. · 9bb93b86
      Vladislav Vaintroub authored
      9bb93b86
    • Vladislav Vaintroub's avatar
    • Alexander Barkov's avatar
      MDEV-15112 Inconsistent evaluation of spvariable=0 in strict mode · 8317ce73
      Alexander Barkov authored
      The patch for MDEV-15107 fixed this problem. Adding tests only.
      8317ce73
    • Alexander Barkov's avatar
      Fixing versioning.insert and versioning.replace test failes. · 2e43c458
      Alexander Barkov authored
      Tests started to fail after a merge of MDEV-15107 (from bb-10.2-ext to 10.3),
      because MDEV-15107 additionally fixed this problem:
        MDEV-15112 Inconsistent evaluation of spvariable=0 in strict mode
      
      Modifying tests not to reply on the pre-MDEV-15112 behavior.
      2e43c458
    • Marko Mäkelä's avatar
      Revert "MDEV-6928: Add trx pointer to struct mtr_t" · d9c77f03
      Marko Mäkelä authored
      This reverts commit 3486135b.
      
      The commit comment ended in the words: "This is needed later."
      Apparently the "later" never arrived.
      d9c77f03
    • Marko Mäkelä's avatar
      MDEV-15090 Reduce the overhead of writing undo log records · f74023b9
      Marko Mäkelä authored
      Remove unnecessary repeated lookups for undo pages.
      
      trx_undo_assign(), trx_undo_assign_low(), trx_undo_seg_create(),
      trx_undo_create(): Return the undo log block to the caller.
      f74023b9
    • Marko Mäkelä's avatar
      MDEV-15090 Reduce the overhead of writing undo log records · 5d3c3b49
      Marko Mäkelä authored
      Inside InnoDB, each mini-transaction that generates any redo log records
      will acquire log_sys->mutex during mtr_t::commit() in order to copy the
      records into the global log_sys->buf for writing into the redo log file.
      
      For single-row transactions, this incurs quite a bit of overhead.
      We would use two mini-transactions for writing a record into a
      freshly updated undo log page. (Only if the undo record will
      not fit in that page, then we will have to commit and restart
      the mini-transaction.)
      
      trx_undo_assign(): Assign undo log for a persistent transaction,
      or return the already assigned one.
      
      trx_undo_assign_low(): Assign undo log for an operation on a
      persistent or temporary table.
      
      trx_undo_create(), trx_undo_reuse_cached(): Remove redundant parameters.
      Merge the logic from trx_undo_mark_as_dict_operation().
      5d3c3b49
    • Marko Mäkelä's avatar
      4981f95f
    • Michael Widenius's avatar
      Fixed failing tests rpl_semi_sync_skip_repl.test · a7e12fd4
      Michael Widenius authored
      Removed not used have_semisync_plugin.inc
      a7e12fd4
    • Alexander Barkov's avatar
    • Alexander Barkov's avatar
      MDEV-15107 Add virtual Field::sp_prepare_and_store_item(), make sp_rcontext... · b12430ad
      Alexander Barkov authored
      MDEV-15107 Add virtual Field::sp_prepare_and_store_item(), make sp_rcontext symmetric for scalar and ROW
      
      After MDEV-14212, the Virtual_tmp_table instance that stores a ROW
      variable elements is accessible from the underlying Field_row
      (rather than Item_field_row).
      
      This patch makes some further changes by moving the code from
      sp_instr_xxx, sp_rcontext, Item_xxx to Virtual_tmp_table and Field_xxx.
      
      The data type specific code (scalar vs ROW) now resides in
      a new virtual method Field_xxx::sp_prepare_and_store_item().
      The the code in sp_rcontext::set_variable() and sp_eval_expr()
      is now symmetric for scalar and ROW values.
      The code in sp_rcontext::set_variable_row_field(), sp_rcontext::set_variable_row_field(), sp_rcontext::set_variable_row()
      is now symmetric for ROW elements (i.e. scalar and ROW elements inside a ROW).
      
      Rationale:
      
      Prepare the code to implement these tasks soon easier:
      
      - MDEV-12252 ROW data type for stored function return values
      - MDEV-12307 ROW data type for built-in function return values
      - MDEV-6121 Data type: Array
      - MDEV-10593 sql_mode=ORACLE: TYPE .. AS OBJECT: basic functionality
      - ROW with ROW fields (no MDEV yet)
      
      Details:
      
      1. Moving the code in sp_eval_expr() responsible to backup/restore
         thd->count_cuted_fields, thd->abort_on_warning,
         thd->transaction.stmt.modified_non_trans_table
         into a new helper class Sp_eval_expr_state, to reuse it easier.
         Fixing sp_eval_expr() to use this new class.
      
      2. Moving sp_eval_expr() and sp_prepare_func_item() from public functions
         to methods in THD, so they can be reused in *.cc files easier without
         a need to include "sp_head.h".
      
         Splitting sp_prepare_func_item() into two parts.
         Adding a new function sp_fix_func_item(), which fixes
         the underlying items, but does not do check_cols() for them.
         Reusing sp_fix_func_item() in Field_row::sp_prepare_and_store_item().
      
      3. Moving the code to find ROW fields by name from Item to Virtual_tmp_table
      
         Moving the code searching for ROW fields by their names
         from Item_field_row::element_index_by_name() to a new method
         Item_field_row to Virtual_tmp_table::sp_find_field_by_name().
      
         Adding wrapper methods sp_rcontext::find_row_field_by_name() and
         find_row_field_by_name_or_error(), to search for a ROW variable
         fields by the variable offset and its field name.
      
         Changing Item_splocal_row_field_by_name::fix_fields() to do
         use sp_rcontext::find_row_field_by_name_or_error().
         Removing virtual Item::element_index_by_name().
      
      4. Splitting sp_rcontext::set_variable()
      
         Adding a new virtual method Field::sp_prepare_and_store_item().
         Spliting the two branches of the code in sp_rcontext::set_variable()
         into two virtual implementations of Field::sp_prepare_and_store_item(),
         (for Field and for Field_row).
      
         Moving the former part of sp_rcontext::set_variable() with the loop
         doing set_null() for all ROW fields into a new method
         Virtual_tmp_table::set_all_fields_to_null() and using it in
         Field_row::sp_prepare_and_store_item().
      
         Moving the former part of sp_rcontext::set_variable() with the loop
         doing set_variable_row_field() into a new method
         Virtual_tmp_table::set_all_fields_from_item() and using it in
         Field_row::sp_prepare_and_store_item().
         The loop in the new method now uses sp_prepare_and_store_item()
         instead of set_variable_row_field(), because saving/restoring
         THD flags is now done on the upper level. No needs to save/restore
         on every iteration.
      
      5. Fixing sp_eval_expr() to simply do two things:
         - backup/restore THD flags
         - call result_field->sp_prepare_and_store_item()
         So now sp_eval_expr() can be used for both scalar and ROW variables.
         Reusing it in sp_rcontext::set_variable*().
      
      6. Moving the loop in sp_rcontext::set_variable_row() into a
         new method Virtual_tmp_table::sp_set_all_fields_from_item_list().
      
         Changing the loop body to call field->sp_prepare_and_store_item()
         instead of doing set_variable_row_field(). This removes
         saving/restoring of the THD flags from every interation.
         Instead, adding the code to save/restore the flags around
         the entire loop in set_variable_row(), using Sp_eval_expr_state.
         So now saving/restoring is done only once for the entire ROW
         (a slight performance improvement).
      
      7. Removing the code in sp_instr_set::exec_core() that sets
         a variable to NULL if the value evaluation failed.
         sp_rcontext::set_variable() now makes sure to reset
         the variable properly by effectively calling sp_eval_expr(),
         which calls virtual Field::sp_prepare_and_store_item().
      
         Removing the similar code from sp_instr_set_row_field::exec_core()
         and sp_instr_set_row_field_by_name::exec_core().
      
         Removing the method sp_rcontext::set_variable_row_field_to_null(),
         as it's not used any more.
      
      8. Removing the call for sp_prepare_func_item() from
         sp_rcontext::set_variable_row_field(), as it was duplicate:
         it was done inside sp_eval_expr(). Now it's done inside
         virtual Field::sp_prepare_and_store_item().
      
      9. Moving the code from sp_instr_set_row_field_by_name::exec_core()
         into sp_rcontext::set_variable_row_field_by_name(), for symmetry
         with other sp_instr_set*::exec_core()/sp_rcontext::set_variable*() pairs.
         Now sp_instr_set_row_field_by_name::exec_core() calls
         sp_rcontext::set_variable_row_field_by_name().
      
      10. Misc:
         - Adding a helper private method sp_rcontext::virtual_tmp_table_for_row(),
           reusing it in a new sp_rcontext methods.
         - Removing Item_field_row::get_row_field(), as it's not used any more.
         - Removing the "Item *result_item" from sp_eval_expr(),
           as it's not needed any more.
      b12430ad
    • Vladislav Vaintroub's avatar
      MDEV-14485 Server hangs on startup in THD::init · 7cdf759c
      Vladislav Vaintroub authored
      Solve 3 way deadlock between plugin_initialiaze(), THD::init() and
      mysql_sys_var_char().
      
      The deadlock exists because of the lock order inversion between
      LOCK_global_system_variables mutex and LOCK_system_variables_hash
      read-write lock-
      
      In this case, it is enough to change LOCK_system_variables_hash to prefer
      reads to fix the deadlock, i.e change it to mysql_prlock_t
      7cdf759c
    • Alexey Botchkov's avatar
      MDEV-11084 Select statement with partition selection against MyISAM table opens all partitions. · b4a2baff
      Alexey Botchkov authored
              Now we don't open partitions if it was explicitly cpecified.
              ha_partition::m_opened_partition bitmap added to track
              partitions that were actually opened.
      b4a2baff
  3. 28 Jan, 2018 3 commits
  4. 27 Jan, 2018 4 commits
  5. 26 Jan, 2018 6 commits