1. 02 Apr, 2019 2 commits
  2. 01 Apr, 2019 2 commits
    • Marko Mäkelä's avatar
      Rebuild the InnoDB lexical analyzers with flex 2.6.4 · 619d22dd
      Marko Mäkelä authored
      InnoDB includes 3 parsers, which use 3 lexical analyzers that
      are generated with flex. Flex versions before 2.6 emitted
      the keyword "register", which is deprecated in C++17.
      
      The lexical analyzers were regenerated as follows:
      
      for s in storage/innobase storage/xtradb
      do
      	(cd "$s"/pars; ./make_flex.sh)
      	touch "$s"/fts/*.l
      	make -C "$s"/fts -f Makefile.query
      done
      619d22dd
    • Marko Mäkelä's avatar
      MDEV-19111 Unused field INFORMATION_SCHEMA.INNODB_TABLESPACES_SCRUBBING.ROTATING_OR_FLUSHING · 23eeecd6
      Marko Mäkelä authored
      The MDEV-11738/MDEV-11581 fix was supposed to add the column
      ROTATING_OR_FLUSHING to the INFORMATION_SCHEMA table
      INNODB_TABLESPACES_ENCRYPTION, but it also added that column to
      INNODB_TABLESPACES_SCRUBBING in InnoDB (not XtraDB).
      
      The extra column was never initialized. We will remove it,
      because key rotation has nothing to do with the scrubbing of
      tablespace data.
      23eeecd6
  3. 28 Mar, 2019 3 commits
    • Marko Mäkelä's avatar
      Revert MDEV-18464 and MDEV-12009 · d0116e10
      Marko Mäkelä authored
      This reverts commit 21b2fada
      and commit 81d71ee6.
      
      The MDEV-18464 change introduces a few data race issues. Contrary to
      the documentation, the field trx_t::victim is not always being protected
      by lock_sys_t::mutex and trx_t::mutex. Most importantly, it seems
      that KILL QUERY could wrongly avoid acquiring both mutexes when
      invoking lock_trx_handle_wait_low(), in case another thread had
      already set trx->victim=true.
      
      We also revert MDEV-12009, because it should depend on the MDEV-18464
      fix being present.
      d0116e10
    • Jan Lindström's avatar
      MDEV-12009: Allow to force kill user threads/query which are flagged as high priority by Galera · 81d71ee6
      Jan Lindström authored
      As noted on kill_one_thread SUPER should be able to kill even
      system threads i.e. threads/query flagged as high priority or
      wsrep applier thread. Normal user, should not able to kill
      threads/query flagged as high priority (BF) or wsrep applier
      thread.
      81d71ee6
    • Jan Lindström's avatar
      MDEV-18464: Port kill_one_trx fixes from 10.4 to 10.1 · 21b2fada
      Jan Lindström authored
      Pushed the decision for innodb transaction and system
      locking down to lock0lock.cc level. With this,
      we can avoid releasing these mutexes for executions
      where these mutexes were acquired upfront.
      
      This patch will also fix BF aborting of native threads, e.g.
      threads which have declared wsrep_on=OFF. Earlier, we have
      used, for innodb trx locks, was_chosen_as_deadlock_victim
      flag, for marking inodb transactions, which are victims for
      wsrep BF abort. With native threads (wsrep_on==OFF), re-using
      was_chosen_as_deadlock_victim flag may lead to inteference
      with real deadlock, and to deal with this, the patch has added new
      flag for marking wsrep BF aborts only: victim=true
      
      Similar way if replication decides to abort one of the threads
      we mark victim by: victim=true
      
      innobase_kill_query
      	Remove lock sys and trx mutex handling.
      
      wsrep_innobase_kill_one_trx
      	Mark victim trx with victim=true
      
      trx0trx.h
      	Remove trx_abort_t type and abort type variable from
      	trx struct. Add victim variable to trx.
      
      wsrep_kill_victim
      	Remove abort_type
      
      lock_report_waiters_to_mysql
      	Take also trx mutex and mark trx as a victim for
      	replication abort.
      
      lock_trx_handle_wait_low
      	New low level function to check whether the transaction
      	has already been rolled back because it was selected as
      	a deadlock victim, or if it has to wait then cancel
      	the wait lock.
      
      lock_trx_handle_wait
      	If transaction is not marked as victim take lock sys
      	and trx mutex before calling lock_trx_handle_wait_low
      	and release them after that.
      
      row_search_for_mysql
      	Remove lock sys and trx mutex taking and releasing.
      
      trx_rollback_to_savepoint_for_mysql_low
      trx_commit_in_memory
      	Clean up victim variable.
      21b2fada
  4. 27 Mar, 2019 13 commits
    • Sergei Golubchik's avatar
      MDEV-18466 Unsafe to log updates on tables referenced by foreign keys with... · deff3f75
      Sergei Golubchik authored
      MDEV-18466 Unsafe to log updates on tables referenced by foreign keys with triggers in statement format
      
      ignore FK-prelocked tables when looking for write-prelocked tables
      with auto-increment to complain about "Statement is unsafe because
      it invokes a trigger or a stored function that inserts into an
      AUTO_INCREMENT column"
      deff3f75
    • Sergei Golubchik's avatar
      MDEV-7066 No Source RPMs ... (and so no "yum-builddep MariaDB-server" either) · d8084116
      Sergei Golubchik authored
      special cases:
      
      * change systemd detection to use CHECK_LIBRARY_EXISTS at least once,
        to have it detected by build_depends.cmake
      * similarly, use find_library for pam
      * unixODBC is weird, libodbc.so is in the unixODBC package, not
        in the unixODBC-devel, where normally all .so files belong.
        Packaging bug? As a workaround, use find_file(sql.h) instead of
        find_path(sql.h) to make sure that /usr/include/sql.h (not /usr/include)
        is cached by cmake, and later build_depends.cmake will select
        unixODBC-devel, as a package owning /usr/include/sql.h file.
      d8084116
    • Sergei Golubchik's avatar
      MDEV-7066 No Source RPMs ... (and so no "yum-builddep MariaDB-server" either) · b12f1496
      Sergei Golubchik authored
      automatic BuildRequires for source RPM: for every FILEPATH and
      "Have library XXX" cached variable, detect what rpm package it comes from
      and add it to the list of dependencies.
      
      That is, the source RPM will BuildRequire all those packages that
      were found by cmake when the source RPM was built. Presumably, our
      CMakeLists.txt won't check for libraries that aren't needed for a build.
      
      It supports libraries/executables/files found with
        FIND_LIBRARY
        FIND_FILE
        FIND_PROGRAM
        CHECK_LIBRARY_EXISTS
      b12f1496
    • Sergei Golubchik's avatar
      MDEV-7066 No Source RPMs ... (and so no "yum-builddep MariaDB-server" either) · ecc27113
      Sergei Golubchik authored
      create source RPM cpack-way
      
      when building binary packages, this source rpm will use
      same BUILD_CONFIG and WITH_SSL values that were used when
      creating the source RPM.
      
      Only do it for a reasonably new cmake, where
      source rpms are known to work (3.10.2 is ok, 3.5.2 is not).
      
      And force a shorter CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX so that
      a source rpm could be built from a standard location in /usr/src
      ecc27113
    • Sergei Golubchik's avatar
      cmake: don't do fake rpm Provides · 86e80f94
      Sergei Golubchik authored
      instead remove internal modules from Requires/Provides
      86e80f94
    • Sergei Golubchik's avatar
      cmake: fix cpack_source_ignore_files · 39cea72e
      Sergei Golubchik authored
      add defensive $ for filenames, don't include .gitattributes
      and *.rpm, correct rules for *.gz and *.zip
      39cea72e
    • Sergei Golubchik's avatar
      cmake: remove workarounds for cmake bugs #13248 and #12864 · 64172971
      Sergei Golubchik authored
      since long we use a different workaround, our own CPackRPM wrapper
      64172971
    • Sergei Golubchik's avatar
      cmake: re-enable -Werror in the maintainer mode · f97d879b
      Sergei Golubchik authored
      now we can afford it. Fix -Werror errors. Note:
      * old gcc is bad at detecting uninit variables, disable it.
      * time_t is int or long, cast it for printf's
      f97d879b
    • Sergei Golubchik's avatar
      Merge branch '5.5' into 10.1 · 1a4746e1
      Sergei Golubchik authored
      1a4746e1
    • Vladislav Vaintroub's avatar
      MDEV-19060 : mariabackup continues, despite failing to open a tablespace · 9a8b8ea6
      Vladislav Vaintroub authored
      Fix mariabackup to crash if opening tablespace fails, insitead of
      continuing after an error.
      9a8b8ea6
    • Marko Mäkelä's avatar
      Merge 10.0 into 10.1 · a6585d5c
      Marko Mäkelä authored
      a6585d5c
    • Marko Mäkelä's avatar
      MDEV-18417/MDEV-18656/MDEV-18417: Work around compiler ASAN bug · 828cc2ba
      Marko Mäkelä authored
      In a Ubuntu Xenial build environment, the compiler identified as
      g++-5.real (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
      seems to be emitting incorrect code for the compilation unit
      trx0rec.cc, triggering a bogus-looking AddressSanitizer report
      of an invalid read of something in the function trx_undo_rec_get_pars().
      This is potentially affecting any larger tests where the InnoDB
      purge subsystem is being exercised.
      
      When the optimization level of trx0rec.cc is limited to -O1, no
      bogus failure is being reported. With -O2 or -O3, a lot of things
      seemed to be inlined in the function, and the disassembly of the
      generated code did not make sense to me.
      828cc2ba
    • Sujatha Sivakumar's avatar
      MDEV-14784: Slave crashes in show_status_array upon running a trigger with · f2d549d8
      Sujatha Sivakumar authored
      select from I_S
      
      Problem:
      ========
      When applier thread tries to access 'variable_name' of
      INFORMATION_SCHEMA.SESSION_VARIABLES table through triggers, it results in an
      abnormal exit of slave server.
      
      Analysis:
      ========
      At the time of replication of stored routines and triggers, their associated
      security context will be sent by the master. The applier thread on the slave
      server will use this information to set the required security context for the
      execution of stored routines and triggers. This is achieved as follows.
      
      ->The stored routine object has a member named 'm_security_ctx' which holds the
        security context received from master.
      ->The applier thread's security_ctx is stored into a 'backup' object.
      
      ->Set the applier thread's security_ctx to 'm_security_ctx'.
      
      ->Upon the completion of stored routine execution restore the original security
        context of applier thread from the backup.
      
      During the above process the 'm_security_ctx' object is not initialized
      properly. Hence the 'external_user' of 'm_security_ctx' has invalid value for
      this variable and accessing this variable results in abnormal exit of server.
      
      Fix:
      ===
      Invoke the Security_context::init() call from the constructor of stored routine
      so that 'm_security_ctx' gets initialized properly.
      f2d549d8
  5. 26 Mar, 2019 6 commits
  6. 25 Mar, 2019 2 commits
  7. 24 Mar, 2019 1 commit
  8. 22 Mar, 2019 7 commits
  9. 21 Mar, 2019 4 commits