1. 31 Jan, 2018 1 commit
  2. 30 Jan, 2018 20 commits
    • Monty's avatar
      Don't give warning about usage of --language with full path · a1e0e64a
      Monty authored
      Only give warning if warnings > 2, as there is no plan to change
      the current behavior.
      a1e0e64a
    • Monty's avatar
      Remove compiler warnings · f10fae7e
      Monty authored
      f10fae7e
    • Monty's avatar
      Added some checking that LEX_CSTRING is \0 terminated · 486c86dd
      Monty authored
      - When adding LEX_CSTRING to String, we are now checking that
        string is \0 terminated (as normally LEX_CSTRING should be
        usable for printf(). In the cases when one wants to avoid the
        checking one can use String->append(ptr, length) instead of just
        String->append(LEX_CSTRING*)
      486c86dd
    • Monty's avatar
      Change C_STRING_WITH_LEN to STRING_WITH_LEN · f55dc7f7
      Monty authored
      This preserves const str for constant strings
      
      Other things
      - A few variables where changed from LEX_STRING to LEX_CSTRING
      - Incident_log_event::Incident_log_event and record_incident where
        changed to take LEX_CSTRING* as an argument instead of LEX_STRING
      f55dc7f7
    • Monty's avatar
      Removed not used functions and variables · 18e22cb6
      Monty authored
      18e22cb6
    • Monty's avatar
      Added defines for mysqld_error_find_printf_error_used · bbe0055f
      Monty authored
      This is to make it easier to use the
      create_mysqld_error_find_printf_error tool to find wrong print
      bbe0055f
    • Monty's avatar
      Renamed Item_user_var_as_out_param::name to org_name · 29fd049a
      Monty authored
      Rename was done as the old 'name' hide the original item name.
      29fd049a
    • Monty's avatar
      b9b17e63
    • Monty's avatar
      Fixed wrong arguments to printf · a2393ff2
      Monty authored
      a2393ff2
    • Monty's avatar
      Changed database, tablename and alias to be LEX_CSTRING · a7e352b5
      Monty authored
      This was done in, among other things:
      - thd->db and thd->db_length
      - TABLE_LIST tablename, db, alias and schema_name
      - Audit plugin database name
      - lex->db
      - All db and table names in Alter_table_ctx
      - st_select_lex db
      
      Other things:
      - Changed a lot of functions to take const LEX_CSTRING* as argument
        for db, table_name and alias. See init_one_table() as an example.
      - Changed some function arguments from LEX_CSTRING to const LEX_CSTRING
      - Changed some lists from LEX_STRING to LEX_CSTRING
      - threads_mysql.result changed because process list_db wasn't always
        correctly updated
      - New append_identifier() function that takes LEX_CSTRING* as arguments
      - Added new element tmp_buff to Alter_table_ctx to separate temp name
        handling from temporary space
      - Ensure we store the length after my_casedn_str() of table/db names
      - Removed not used version of rename_table_in_stat_tables()
      - Changed Natural_join_column::table_name and db_name() to never return
        NULL (used for print)
      - thd->get_db() now returns db as a printable string (thd->db.str or "")
      a7e352b5
    • Marko Mäkelä's avatar
      Merge bb-10.2-ext into 10.3 · 921c5e93
      Marko Mäkelä authored
      MDEV-11415 Remove excessive undo logging during ALTER TABLE…ALGORITHM=COPY
      
      Move a test from innodb.rename_table_debug to innodb.alter_copy.
      
      ha_innobase::extra(HA_EXTRA_BEGIN_ALTER_COPY): Register id-versioned
      tables so that mysql.transaction_registry will be updated, even for
      empty tables that are subjected to ALTER TABLE…ALGORITHM=COPY.
      921c5e93
    • Marko Mäkelä's avatar
      Merge bb-10.2-ext into 10.3 · 33714d20
      Marko Mäkelä authored
      33714d20
    • Marko Mäkelä's avatar
      Merge 10.2 into bb-10.2-ext · 0c1f2206
      Marko Mäkelä authored
      0c1f2206
    • Marko Mäkelä's avatar
      MDEV-11415 Remove excessive undo logging during ALTER TABLE…ALGORITHM=COPY · 0ba6aaf0
      Marko Mäkelä authored
      If a crash occurs during ALTER TABLE…ALGORITHM=COPY, InnoDB would spend
      a lot of time rolling back writes to the intermediate copy of the table.
      To reduce the amount of busy work done, a work-around was introduced in
      commit fd069e2b in MySQL 4.1.8 and 5.0.2,
      to commit the transaction after every 10,000 inserted rows.
      
      A proper fix would have been to disable the undo logging altogether and
      to simply drop the intermediate copy of the table on subsequent server
      startup. This is what happens in MariaDB 10.3 with MDEV-14717,MDEV-14585.
      In MariaDB 10.2, the intermediate copy of the table would be left behind
      with a name starting with the string #sql.
      
      This is a backport of a bug fix from MySQL 8.0.0 to MariaDB,
      contributed by jixianliang <271365745@qq.com>.
      
      Unlike recent MySQL, MariaDB supports ALTER IGNORE. For that operation
      InnoDB must for now keep the undo logging enabled, so that the latest
      row can be rolled back in case of an error.
      
      In Galera cluster, the LOAD DATA statement will retain the existing
      behaviour and commit the transaction after every 10,000 rows if
      the parameter wsrep_load_data_splitting=ON is set. The logic to do
      so (the wsrep_load_data_split() function and the call
      handler::extra(HA_EXTRA_FAKE_START_STMT)) are joint work
      by Ji Xianliang and Marko Mäkelä.
      
      The original fix:
      
      Author: Thirunarayanan Balathandayuthapani <thirunarayanan.balathandayuth@oracle.com>
      Date:   Wed Dec 2 16:09:15 2015 +0530
      
      Bug#17479594 AVOID INTERMEDIATE COMMIT WHILE DOING ALTER TABLE ALGORITHM=COPY
      
      Problem:
      
      During ALTER TABLE, we commit and restart the transaction for every
      10,000 rows, so that the rollback after recovery would not take so long.
      
      Fix:
      
      Suppress the undo logging during copy alter operation. If fts_index is
      present then insert directly into fts auxiliary table rather
      than doing at commit time.
      
      ha_innobase::num_write_row: Remove the variable.
      
      ha_innobase::write_row(): Remove the hack for committing every 10000 rows.
      
      row_lock_table_for_mysql(): Remove the extra 2 parameters.
      
      lock_get_src_table(), lock_is_table_exclusive(): Remove.
      Reviewed-by: default avatarMarko Mäkelä <marko.makela@oracle.com>
      Reviewed-by: default avatarShaohua Wang <shaohua.wang@oracle.com>
      Reviewed-by: default avatarJon Olav Hauglid <jon.hauglid@oracle.com>
      0ba6aaf0
    • Marko Mäkelä's avatar
      Merge 10.2 into bb-10.2-ext · 6d390bab
      Marko Mäkelä authored
      6d390bab
    • Jan Lindström's avatar
      MDEV-14875: galera_new_cluster crashes mysqld when existing server contains databases · 446b3d35
      Jan Lindström authored
      Fortify wsrep_hton so that wsrep calls are not done to NULL-pointers.
      446b3d35
    • Alexey Botchkov's avatar
      MDEV-14694 ALTER COLUMN IF EXISTS .. causes syntax error. · 926adcfe
      Alexey Botchkov authored
              Implementing the 'IF EXISTS' option for statements
              ALTER TABLE ALTER COLUMN SET/DROP DEFAULT.
      926adcfe
    • Monty's avatar
      Fixed failing tests · 5478547c
      Monty authored
      - Galera tests that was not updated with connection change
        messages
      - Test where out of memory error was changed (We are now using the
        standard out of memory error in most places)
      - Removed tokudb tests that uses include files that doesn't exist
        in MariaDB
      - Removed not supported mariadb startup option from option file
      5478547c
    • Monty's avatar
      Fix some wrong test result · cea431e1
      Monty authored
      - Galera tests that was not updated with connection change
        messages
      - Disabled some TokuDB tests that always timed out.
        These should be enabled again when we have an option to
        specicy timeouts per tests.
      cea431e1
    • Igor Babaev's avatar
      Fixed mdev-15017 Server crashes in in st_join_table::fix_splitting · 775aa554
      Igor Babaev authored
      Do not apply splitting for constant tables.
      775aa554
  3. 29 Jan, 2018 19 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