1. 09 Jul, 2019 5 commits
    • Aleksey Midenkov's avatar
      MDEV-16222 Assertion `0' failed in row_purge_remove_sec_if_poss_leaf on table... · cf7a8b9e
      Aleksey Midenkov authored
      MDEV-16222 Assertion `0' failed in row_purge_remove_sec_if_poss_leaf on table with virtual columns and indexes
      
      Cause
      Stale thd->m_stmt_da->m_sql_errno which is from different invocation.
      
      Fix
      Reset error state before attempt to open table.
      cf7a8b9e
    • Aleksey Midenkov's avatar
      MDEV-19175 Server crashes in ha_partition::vers_can_native upon INSERT DELAYED... · b0dd048e
      Aleksey Midenkov authored
      MDEV-19175 Server crashes in ha_partition::vers_can_native upon INSERT DELAYED into versioned partitioned table
      
      Uninitialized LEX::part_info on ha_partition::vers_can_native().
      b0dd048e
    • Aleksey Midenkov's avatar
    • Aleksey Midenkov's avatar
      MDEV-19785 Storage CONNECT compilation error: unknown type name 'UNZFAM' · e91fb70f
      Aleksey Midenkov authored
      Another fail fix:
      
      undefined reference to `ZipLoadFile`
      e91fb70f
    • sysprg's avatar
      MDEV-18565: Galera mtr-suite fails if galera library is not installed (#1243) · 41f4f6be
      sysprg authored
      * MDEV-18565: Galera mtr-suite fails if galera library is not installed
      
      Currently, running mtr with an incorrect (for example, new or
      obsolete) version of wsrep_provider (for example, with the 26
      version of libgalera_smm.so) leads to the failure of tests in
      several suites with vague error diagnostics.
      
      As for the galera_3nodes suite, the mtr also does not effectively
      check all the prerequisites after merge with MDEV-18426 fixes.
      For example, tests that using mariabackup do not check for presence
      of ss and socat/nc. This is due to improper handling of relative
      paths in mtr scripts.
      
      In addition, some tests in different suites can be run without
      setting the environment variables such as MTR_GALERA_TFMT, XBSTREAM,
      and so on.
      
      To eliminate all these issues, this patch makes the following changes:
      
      1. Added auxiliary wsrep_mtr_check utility (which located in the
      mysql-test/lib/My/SafeProcess subdirectory), which compares the
      versions of the wsrep API that used by the server and by the wsrep
      provider library, and it does this comparison safely, without
      accessing the API if the versions do not match.
      
      2. All checks related to the presence of mariabackup and utilities
      that necessary for its operation transferred from the local directories
      of different mtr suites (from the suite.pm files) to the main suite.pm
      file. This not only reduces the amount of code and eliminates duplication
      of identical code fragments, but also avoids problems due to the inability
      of mtr to consider relative paths to include files when checking skip
      combinations.
      
      3. Setting the values of auxiliary environment variables that
      are necessary for Galera, SST scripts and mariabackup (to work
      properly) is moved to the main mysql-test-run.pl script, so as
      not to duplicate this code in different suites, and to avoid
      partial corrections of the same errors for different suites
      (while other suites remain uncorrected).
      
      4. Fixed duplication of the have_file_key_management.inc and
      have_filekeymanagement.inc files between different suites,
      these checks are also transferred to the top level.
      
      https://jira.mariadb.org/browse/MDEV-18565
      
      * Build without additional utility in configurations without wsrep support
      41f4f6be
  2. 03 Jul, 2019 2 commits
  3. 02 Jul, 2019 7 commits
  4. 01 Jul, 2019 9 commits
  5. 28 Jun, 2019 2 commits
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-17228 Encrypted temporary tables are not encrypted · 723a4b1d
      Thirunarayanan Balathandayuthapani authored
      - Introduce a new variable called innodb_encrypt_temporary_tables which is
      a boolean variable. It decides whether to encrypt the temporary tablespace.
      - Encrypts the temporary tablespace based on full checksum format.
      - Introduced a new counter to track encrypted and decrypted temporary
      tablespace pages.
      - Warnings issued if temporary table creation has conflict value with
      innodb_encrypt_temporary_tables
      - Added a new test case which reads and writes the pages from/to temporary
      tablespace.
      723a4b1d
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-19781 Add page id matching check in innochecksum tool · e4a0dbfb
      Thirunarayanan Balathandayuthapani authored
      Added the condition in innochecksum tool to check page id mismatch.
      This could catch the write corruption caused by InnoDB.
      
      Added the debug insert inside fil_io() to check whether it writes
      the page to wrong offset.
      e4a0dbfb
  6. 27 Jun, 2019 8 commits
    • Monty's avatar
      f7a4a871
    • Monty's avatar
      MDEV-17551 assert or crashed table when using blobs · 9053047f
      Monty authored
      The bug was that when long item-strings was converted to VARCHAR,
      type_handler::string_type_handler() didn't take into account max
      VARCHAR length.  The resulting Aria temporary table was created with
      a VARCHAR field of length 1 when it should have been 65537. This caused
      MariaDB to send impossible records to ma_write() and Aria reported
      eventually the table as crashed.
      
      Fixed by updating Type_handler::string_type_handler() to not create too long
      VARCHAR fields. To make things extra safe, I also added checks in when
      writing dynamic Aria records to ensure we find the wrong record during write
      instead of during read.
      9053047f
    • Vladislav Vaintroub's avatar
      51c3a5c8
    • Vladislav Vaintroub's avatar
    • Marko Mäkelä's avatar
      MDEV-19886 InnoDB returns misleading ER_NO_SUCH_TABLE_IN_ENGINE · 92feac53
      Marko Mäkelä authored
      A fix in MySQL 5.7.6 was not completely merged to MariaDB:
      Bug#19419026 WHEN A TABLESPACE IS NOT FOUND, DO NOT REPORT "TABLE NOT FOUND"
      92feac53
    • Marko Mäkelä's avatar
      MDEV-19845: Fix the build on some platforms · f5c080c7
      Marko Mäkelä authored
      On some platforms, MY_RELAX_CPU() falls back to an atomic
      memory operation, but my_cpu.h fails to include my_atomic.h.
      f5c080c7
    • Marko Mäkelä's avatar
      MDEV-19845: Fix the build on some x86 targets · 0b7fa5a0
      Marko Mäkelä authored
      The RDTSC instruction, which was introduced in the Intel Pentium,
      has been used in MariaDB for a long time. But, the __rdtsc()
      wrapper is not available by default in some x86 build environments.
      The simplest solution seems to replace the inlined instruction
      with a call to the wrapper function my_timer_cycles(). The overhead
      for the call should not affect the measurement threshold.
      
      On Windows and on AMD64, we will keep using __rdtsc() directly.
      0b7fa5a0
    • Marko Mäkelä's avatar
      MDEV-19845: Adaptive spin loops · 042fc295
      Marko Mäkelä authored
      Starting with the Intel Skylake microarchitecture, the PAUSE
      instruction latency is about 140 clock cycles instead of earlier 10.
      On AMD processors, the latency could be 10 or 50 clock cycles,
      depending on microarchitecture.
      
      Because of this big range of latency, let us scale the loops around
      the PAUSE instruction based on timing results at server startup.
      
      my_cpu_relax_multiplier: New variable: How many times to invoke PAUSE
      in a loop. Only defined for IA-32 and AMD64.
      
      my_cpu_init(): Determine with RDTSC the time to run 16 PAUSE instructions
      in two unrolled loops according, and based on the quicker of the two
      runs, initialize my_cpu_relax_multiplier. This form of calibration was
      suggested by Mikhail Sinyavin from Intel.
      
      LF_BACKOFF(), ut_delay(): Use my_cpu_relax_multiplier when available.
      
      ut_delay(): Define inline in my_cpu.h.
      
      UT_COMPILER_BARRIER(): Remove. This does not seem to have any effect,
      because in our ut_delay() implementation, no computations are being
      performed inside the loop. The purpose of UT_COMPILER_BARRIER() was to
      prohibit the compiler from reordering computations. It was not
      emitting any code.
      042fc295
  7. 26 Jun, 2019 1 commit
  8. 25 Jun, 2019 2 commits
  9. 24 Jun, 2019 3 commits
  10. 23 Jun, 2019 1 commit