1. 22 Jan, 2018 1 commit
    • Marko Mäkelä's avatar
      MDEV-14941 Timeouts on persistent statistics tables caused by MDEV-14511 · 4f8555f1
      Marko Mäkelä authored
      MDEV-14511 tried to avoid some consistency problems related to InnoDB
      persistent statistics. The persistent statistics are being written by
      an InnoDB internal SQL interpreter that requires the InnoDB data dictionary
      cache to be locked.
      
      Before MDEV-14511, the statistics were written during DDL in separate
      transactions, which could unnecessarily reduce performance (each commit
      would require a redo log flush) and break atomicity, because the statistics
      would be updated separately from the dictionary transaction.
      
      However, because it is unacceptable to hold the InnoDB data dictionary
      cache locked while suspending the execution for waiting for a
      transactional lock (in the mysql.innodb_index_stats or
      mysql.innodb_table_stats tables) to be released, any lock conflict
      was immediately be reported as "lock wait timeout".
      
      To fix MDEV-14941, an attempt to reduce these lock conflicts by acquiring
      transactional locks on the user tables in both the statistics and DDL
      operations was made, but it would still not entirely prevent lock conflicts
      on the mysql.innodb_index_stats and mysql.innodb_table_stats tables.
      
      Fixing the remaining problems would require a change that is too intrusive
      for a GA release series, such as MariaDB 10.2.
      
      Thefefore, we revert the change MDEV-14511. To silence the
      MDEV-13201 assertion, we use the pre-existing flag trx_t::internal.
      4f8555f1
  2. 21 Jan, 2018 2 commits
    • Monty's avatar
      Reset thd->lex->current_select for SP · 6b7dcefd
      Monty authored
      current_select may point to data from old parser states
      when calling a stored procedure with CALL
      
      The failure happens in Item::Item when testing if we are
      in having.
      
      Fixed by explicitely reseting current_select in do_execute_sp()
      and in sp_rcontext::create(). The later is also needed for
      stored functions().
      6b7dcefd
    • Monty's avatar
      Fixed wrong arguments to printf in InnoDB · f67b8273
      Monty authored
      f67b8273
  3. 18 Jan, 2018 4 commits
    • Igor Babaev's avatar
      Fixed mdev-14969 Non-recursive Common Table Expressions used in view · 30289a27
      Igor Babaev authored
      caused an error
      
      The function subselect_single_select_engine::print() did not print
      the WITH clause attached to a subselect with single select engine.
      As a result views using suqueries with attached WITH clauses lost
      these clauses when saved in frm files.
      30289a27
    • Marko Mäkelä's avatar
      MDEV-14985 innodb_undo_log_truncate may be blocked if transactions were recovered at startup · 6c09a654
      Marko Mäkelä authored
      The field trx_rseg_t::trx_ref_count that was added in WL#6965 in
      MySQL 5.7.5 is being incremented twice if a recovered transaction
      includes both undo log partitions insert_undo and update_undo.
      
      This reference count is being used in trx_purge(), which invokes
      trx_purge_initiate_truncate() to try to truncate an undo tablespace
      file. Because of the double-increment, the trx_ref_count would never
      reach 0.
      
      It is possible that after the failed truncation attempt, the undo
      tablespace would be disabled for logging any new transactions until
      the server is restarted (hopefully after committing or rolling back
      all transactions, so that no transactions would be recovered
      on the next startup).
      
      trx_resurrect_insert(), trx_resurrect_update(): Do not increment
      trx_ref_count. Instead, let the caller do that.
      
      trx_lists_init_at_db_start(): Increment rseg->trx_ref_count only
      once for each recovered transaction. Adjust comments.
      Finally, if innodb_force_recovery prevents the undo log scan,
      do not bother iterating the empty lists.
      6c09a654
    • Monty's avatar
      cc915cd5
    • Monty's avatar
      Fixed MDEV-14326 engine ARIA with row_format=FIXED is broken · 50de7d13
      Monty authored
      The problem was that max_size was acciently set to 1 in some
      cases.
      
      Other things:
      - Adjust max_rows if min_rows > max_rows.
      - Removed not used variable varchar_length
      - Adjusted max_pack_length (safety fix)
      50de7d13
  4. 16 Jan, 2018 5 commits
  5. 15 Jan, 2018 8 commits
  6. 14 Jan, 2018 1 commit
    • Eugene Kosov's avatar
      Compilation speed (#546) · 72136ae7
      Eugene Kosov authored
      Speed up compilation
      
      Standard C++ headers contribute a lot to compilation time. Avoid algorithm
      and sstream in frequently used headers.
      72136ae7
  7. 13 Jan, 2018 2 commits
  8. 12 Jan, 2018 6 commits
  9. 11 Jan, 2018 7 commits
  10. 10 Jan, 2018 4 commits