1. 14 Jun, 2018 3 commits
    • Sergei Golubchik's avatar
      fix compilation w/o partitioning · 776fc876
      Sergei Golubchik authored
      followup for d8da9202
      776fc876
    • Sergei Golubchik's avatar
      Merge branch '10.0' into 10.1 · 5d6b7f46
      Sergei Golubchik authored
      5d6b7f46
    • Marko Mäkelä's avatar
      MDEV-13103 Deal with page_compressed page corruption · f5eb3712
      Marko Mäkelä authored
      fil_page_decompress(): Replaces fil_decompress_page().
      Allow the caller detect errors. Remove
      duplicated code. Use the "safe" instead of "fast" variants of
      decompression routines.
      
      fil_page_compress(): Replaces fil_compress_page().
      The length of the input buffer always was srv_page_size (innodb_page_size).
      Remove printouts, and remove the fil_space_t* parameter.
      
      buf_tmp_buffer_t::reserved: Make private; the accessors acquire()
      and release() will use atomic memory access.
      
      buf_pool_reserve_tmp_slot(): Make static. Remove the second parameter.
      Do not acquire any mutex. Remove the allocation of the buffers.
      
      buf_tmp_reserve_crypt_buf(), buf_tmp_reserve_compression_buf():
      Refactored away from buf_pool_reserve_tmp_slot().
      
      buf_page_decrypt_after_read(): Make static, and simplify the logic.
      Use the encryption buffer also for decompressing.
      
      buf_page_io_complete(), buf_dblwr_process(): Check more failures.
      
      fil_space_encrypt(): Simplify the debug checks.
      
      fil_space_t::printed_compression_failure: Remove.
      
      fil_get_compression_alg_name(): Remove.
      
      fil_iterate(): Allocate a buffer for compression and decompression
      only once, instead of allocating and freeing it for every page
      that uses compression, during IMPORT TABLESPACE.
      
      fil_node_get_space_id(), fil_page_is_index_page(),
      fil_page_is_lzo_compressed(): Remove (unused code).
      f5eb3712
  2. 13 Jun, 2018 8 commits
  3. 12 Jun, 2018 7 commits
    • Vicențiu Ciorbaru's avatar
      Merge branch '10.0-galera' into 10.1 · 6e55236c
      Vicențiu Ciorbaru authored
      6e55236c
    • Vicențiu Ciorbaru's avatar
      Merge branch '10.0' into 10.1 · aa59ecec
      Vicențiu Ciorbaru authored
      aa59ecec
    • Vicențiu Ciorbaru's avatar
      Merge branch '5.5' into 10.0 · 170bec36
      Vicențiu Ciorbaru authored
      170bec36
    • Andrei Elkin's avatar
      MDEV-13577 slave_parallel_mode=optimistic should not report the mode's · 7bbe324f
      Andrei Elkin authored
                 specific temporary errors
      
      The optimistic parallel slave's worker thread could face a run-time error due to
      the algorithm's specifics which allows for conflicts like the reported
      "Can't find record in 'table'".
      A typical stack is like
      
      {noformat}
      #0  handler::print_error (this=0x61c00008f8a0, error=149, errflag=0) at handler.cc:3650
      #1  0x0000555555e95361 in write_record (thd=thd@entry=0x62a0000a2208, table=table@entry=0x61f00008ce88, info=info@entry=0x7fffdee356d0) at sql_insert.cc:1944
      #2  0x0000555555ea7767 in mysql_insert (thd=thd@entry=0x62a0000a2208, table_list=0x61b00012ada0, fields=..., values_list=..., update_fields=..., update_values=..., duplic=<optimized out>, ignore=<optimized out>) at sql_insert.cc:1039
      #3  0x0000555555efda90 in mysql_execute_command (thd=thd@entry=0x62a0000a2208) at sql_parse.cc:3927
      #4  0x0000555555f0cc50 in mysql_parse (thd=0x62a0000a2208, rawbuf=<optimized out>, length=<optimized out>, parser_state=<optimized out>) at sql_parse.cc:7449
      #5  0x00005555566d4444 in Query_log_event::do_apply_event (this=0x61200005b9c8, rgi=<optimized out>, query_arg=<optimized out>, q_len_arg=<optimized out>) at log_event.cc:4508
      #6  0x00005555566d639e in Query_log_event::do_apply_event (this=<optimized out>, rgi=<optimized out>) at log_event.cc:4185
      #7  0x0000555555d738cf in Log_event::apply_event (rgi=0x61d0001ea080, this=0x61200005b9c8) at log_event.h:1343
      #8  apply_event_and_update_pos_apply (ev=ev@entry=0x61200005b9c8, thd=thd@entry=0x62a0000a2208, rgi=rgi@entry=0x61d0001ea080, reason=<optimized out>) at slave.cc:3479
      #9  0x0000555555d8596b in apply_event_and_update_pos_for_parallel (ev=ev@entry=0x61200005b9c8, thd=thd@entry=0x62a0000a2208, rgi=rgi@entry=0x61d0001ea080) at slave.cc:3623
      #10 0x00005555562aca83 in rpt_handle_event (qev=qev@entry=0x6190000fa088, rpt=rpt@entry=0x62200002bd68) at rpl_parallel.cc:50
      #11 0x00005555562bd04e in handle_rpl_parallel_thread (arg=arg@entry=0x62200002bd68) at rpl_parallel.cc:1258
      {noformat}
      
      Here {{handler::print_error}} computes whether to error log the
      current error when --log-warnings > 1. The decision flag is consulted
      bu {{my_message_sql()}} which can be eventually called.
      In the bug case the decision is to log.
      However in the optimistic mode slave applier case any conflict is
      attempted to resolve with rollback and retry to success. Hence the
      logging is at least extraneous.
      
      The case is fixed with adding a new flag {{ME_LOG_AS_WARN}} which
      {{handler::print_error}} may propagate further on through {{my_error}}
      when the error comes from an optimistically running slave worker thread.
      
      The new flag effectively requests the warning level for the errlog record,
      while the thread's DA records the actual error (which is regarded as temporary one
      by the parallel slave error handler).
      7bbe324f
    • Alexey Botchkov's avatar
      MDEV-14668 ADD PRIMARY KEY IF NOT EXISTS on composite key. · 6b8d34fe
      Alexey Botchkov authored
      Check the name of the primary key to be 'PRIMARY'. Than
      differs it from any implicit primary keys created by an engine.
      6b8d34fe
    • Marko Mäkelä's avatar
      MDEV-16456 InnoDB error "returned OS error 71" complains about wrong path · 0ad9c3a0
      Marko Mäkelä authored
      When attempting to rename a table to a non-existing database,
      InnoDB would misleadingly report "OS error 71" when in fact the
      error code is InnoDB's own (OS_FILE_NOT_FOUND), and not report
      both pathnames. Errors on rename could occur due to reasons
      connected to either pathname.
      
      os_file_handle_rename_error(): New function, to report errors in
      renaming files.
      0ad9c3a0
    • Alexander Barkov's avatar
      MDEV-12060 Crash in EXECUTE IMMEDIATE with an expression returning a GRANT command · 26be5072
      Alexander Barkov authored
      Backporting (partially) the fix for MDEV-14603.
      26be5072
  4. 11 Jun, 2018 4 commits
  5. 10 Jun, 2018 15 commits
  6. 09 Jun, 2018 2 commits
    • Varun Gupta's avatar
      MDEV-16191: Analyze format=json gives incorrect value for r_limit inside a dependent · c17468d4
      Varun Gupta authored
      subquery when ORDER BY is present
      
      Currently for setting r_limit we divide with the number of iterations we invoke the dependent subquery.
      This is not needed for the case of limit. For varying limits we produce the output that the limit varies with
      execution.
      Also there is a type for filtered , we forgot to multiply by 100 as it is represented as a percent.
      c17468d4
    • Varun Gupta's avatar
      MDEV-16374: Filtered shows 0 for materilization scan for a semi join, which... · cd33280b
      Varun Gupta authored
      MDEV-16374: Filtered shows 0 for materilization scan for a semi join, which makes optimizer always picks
      materialization scan over materialization lookup
      
      For non-mergeable semi-joins we don't store the estimates of the IN subquery in table->file->stats.records.
      In the function TABLE_LIST::fetch_number_of_rows, we store the number of rows in the tables
      (estimates in case of derived table/views).
      Currently we don't store the estimates for non-mergeable semi-joins, which leads to a problem of selecting
      materialization scan over materialization lookup.
      Fixed this by storing these estimated appropriately
      cd33280b
  7. 08 Jun, 2018 1 commit