1. 17 Dec, 2019 2 commits
    • Sergei Golubchik's avatar
      Disable -Werror for rocksdb submodule · 0d70f40b
      Sergei Golubchik authored
      We cannot have -Werror for third-party submodules because
      whenever they break the build we cannot fix it as needed.
      0d70f40b
    • Varun Gupta's avatar
      MDEV-16579: Wrong result of query using DISTINCT COUNT(*) OVER (*) · 164cf4f4
      Varun Gupta authored
      The query requires 2 temporary tables for execution, the window function
      is always attached to the last temporary table, but in this case the
      result field of the window function points to the first temporary table
      rather than the last one.
      Fixed this by not changing window function items with temporary table
      items of the first temporary table.
      164cf4f4
  2. 13 Dec, 2019 1 commit
    • Anel Husakovic's avatar
      PR #1127 and PR #1150 · 8129ff14
      Anel Husakovic authored
      PR#1127: Fix is_check_constraints.result to be compatibile with 10.3
      
      The patch is done according to the original patch for MDEV-14474
      1edd09c325525cba33152 and not one which is merged on server
      d526679e.
      This patch includes:
      - Rename from `is_check_constraint` to `is_check_constraints` to tests
      and results
      - Per review, change the order of fields in IS check_constraints table by adding
      the column `table_name` before `constraint_name`. According to the standard
      2006 there is no `table_name` column.
      - Original patch and one in `10.3` supports embedded server this patch doesn't
      support. After the merge `10.3` will not support also.
      - Don't use patch c8b8b01b61 to change the length of `CHECK_CLAUSE` field
      
      PR#1150: MDEV-18440: Information_schema.check_constraints possible data leak
      
      This patch is extension of PR 1127 and includes:
      - Check for table grants
      - Additional test according to the MDEV specification
      Signed-off-by: default avatarVicențiu Ciorbaru <vicentiu@mariadb.org>
      8129ff14
  3. 12 Dec, 2019 2 commits
    • Eugene Kosov's avatar
      MDEV-20950 Reduce size of record offsets · f0aa073f
      Eugene Kosov authored
      offset_t: this is a type which represents one record offset.
      It's unsigned short int.
      
      a lot of functions: replace ulint with offset_t
      
      btr_pcur_restore_position_func(),
      page_validate(),
      row_ins_scan_sec_index_for_duplicate(),
      row_upd_clust_rec_by_insert_inherit_func(),
      row_vers_impl_x_locked_low(),
      trx_undo_prev_version_build():
        allocate record offsets on the stack instead of waiting for rec_get_offsets()
        to allocate it from mem_heap_t. So, reducing  memory allocations.
      
      RECORD_OFFSET, INDEX_OFFSET:
        now it's less convenient to store pointers in offset_t*
        array. One pointer occupies now several offset_t. And those constant are start
        indexes into array to places where to store pointer values
      
      REC_OFFS_HEADER_SIZE: adjusted for the new reality
      
      REC_OFFS_NORMAL_SIZE:
        increase size from 100 to 300 which means less heap allocations.
        And sizeof(offset_t[REC_OFFS_NORMAL_SIZE]) now is 600 bytes which
        is smaller than previous 800 bytes.
      
      REC_OFFS_SEC_INDEX_SIZE: adjusted for the new reality
      
      rem0rec.h, rem0rec.ic, rem0rec.cc:
        various arguments, return values and local variables types were changed to
        fix numerous integer conversions issues.
      
      enum field_type_t:
        offset types concept was introduces which replaces old offset flags stuff.
        Like in earlier version, 2 upper bits are used to store offset type.
        And this enum represents those types.
      
      REC_OFFS_SQL_NULL, REC_OFFS_MASK: removed
      
      get_type(), set_type(), get_value(), combine():
        these are convenience functions to work with offsets and it's types
      
      rec_offs_base()[0]:
        still uses an old scheme with flags REC_OFFS_COMPACT and REC_OFFS_EXTERNAL
      
      rec_offs_base()[i]:
        these have type offset_t now. Two upper bits contains type.
      f0aa073f
    • Vlad Lesin's avatar
      MDEV-21255: Deadlock of parallel slave and mariabackup (with failed log · beec9c0e
      Vlad Lesin authored
      copy thread)
      
      mariabackup hangs waiting until innodb redo log thread read log till certain
      LSN, and it waits under FTWRL. If there is redo log read error in the thread,
      it is finished, and main thread knows nothing about it, what leads to hanging.
      As it hangs under FTWRL, slave threads on server side can be blocked due
      to MDL lock conflict.
      
      The fix is to finish mariabackup with error message on innodb redo log read
      failure.
      beec9c0e
  4. 11 Dec, 2019 4 commits
  5. 10 Dec, 2019 7 commits
    • Marko Mäkelä's avatar
      Cleanup test sys_vars.innodb_buffer_pool_size_basic · f2d3b2ee
      Marko Mäkelä authored
      When using huge pages, the innodb_buffer_pool_size cannot necessarily
      be restored. Simplify things by restarting the server.
      f2d3b2ee
    • Marko Mäkelä's avatar
      MDEV-14482 - Cache line contention on ut_rnd_interval() · 41e6a154
      Marko Mäkelä authored
      InnoDB RNG maintains global state, causing otherwise unnecessary bus
      traffic. Even worse, this is cross-mutex traffic. That is, different
      mutexes suffer from contention.
      
      Fixed delay of 4 was verified to give best throughput by OLTP update
      index and read-write benchmarks on Intel Broadwell (2/20/40) and
      ARM (1/46/46).
      
      This is a backport of ce047900 from
      MariaDB Server 10.3.
      41e6a154
    • Marko Mäkelä's avatar
      MDEV-21256: Replace the 64-bit LCG with a 32-bit Galois LFSR · b1f2d3a8
      Marko Mäkelä authored
      We should not need anywhere near 32 bits of entropy, so we might
      just limit ourselves to a 32-bit random number generator.
      
      Also, it might be cheaper to use exclusive-or, bit shifting and
      conditional jumps, instead of multiplication and addition.
      
      We use relaxed atomic operations on the global random number generator
      state in order in an attempt to silence any warnings about race conditions.
      There is an obvious race condition between the load and store in
      ut_rnd_gen(), but we do not think that it matters much that the
      state of the random number generator could 'stutter'.
      
      This change seems makes the 'uncompress_ops' nondeterministic
      in innodb_zip.cmp_per_index after the restart. It looks like
      there is an inherent race condition in the test, because the
      table could be opened for InnoDB statistics recalculation
      already before innodb_cmp_per_index_enabled was set. We might
      end up having uncompress_ops anywhere between 0 and 9, or perhaps
      even more. Let us remove that part of the test.
      b1f2d3a8
    • Marko Mäkelä's avatar
      MDEV-21256: Simplify ut_rnd_interval() · d146e3dc
      Marko Mäkelä authored
      ut_rnd_interval(): Remove the first parameter, which was mostly
      passed as 0. Implement as a simple wrapper around ut_rnd_gen().
      Trivially return 0 if the size of the interval is smaller than 2.
      
      ut_rnd_ulint_counter, ut_rnd_gen_next_ulint(), ut_rnd_gen_ulint(): Remove.
      d146e3dc
    • Marko Mäkelä's avatar
      MDEV-21256: Reduce the use of ut_rnd_gen_next_ulint() · 51fc8ab7
      Marko Mäkelä authored
      ut_rnd_set_seed(): Unused function; remove.
      
      ut_rnd_gen(): Renamed from page_cur_lcg_prng().
      
      ut_rnd_current: The internal state of ut_rnd_gen().
      
      page_cur_open_on_rnd_user_rec(): Replace linear search with
      page_rec_get_nth().
      51fc8ab7
    • Eugene Kosov's avatar
      MDEV-21223 innodb_fts.sync_ddl fails in buildbot, server crashed in que_thr_step · 4c0854f2
      Eugene Kosov authored
      FreeState(): replace pointer to freed memory with NULL. This actually fixes a crash
      which is use-after-free as reported by ASAN
      
      DbugParse(): unconditionally lock mutex because we're touching shared init_settings.keywords
      4c0854f2
    • Oleksandr Byelkin's avatar
      MDEV-18460: Server crashed in strmake / tdc_create_key / THD::create_tmp_table_def_key · af650c76
      Oleksandr Byelkin authored
      When there is a WITH clause we postpone check for tables without
      database for later stages when tables in WITH will be defined.
      But we should not try to open such tables as temporary tables because
      temporary tables always belong to a some database.
      af650c76
  6. 09 Dec, 2019 3 commits
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      MDEV-21254 Remove unused keywords from the InnoDB SQL parser · 292015d4
      Marko Mäkelä authored
      The InnoDB internal SQL parser, which is used for updating the InnoDB
      data dictionary tables (to be removed in MDEV-11655), persistent
      statistics (to be refactored in MDEV-15020) and fulltext indexes,
      implements some unused keywords and built-in functions:
      
      OUT BINARY BLOB INTEGER FLOAT SUM DISTINCT READ
      COMPACT BLOCK_SIZE
      TO_CHAR TO_NUMBER BINARY_TO_NUMBER REPLSTR SYSDATE PRINTF ASSERT
      RND RND_STR ROW_PRINTF UNSIGNED
      
      Also, procedures are never declared with parameters. Only one top-level
      procedure is declared and invoked at a time, and parameters are being
      passed via pars_info_t.
      292015d4
    • Jan Lindström's avatar
      MDEV-21189: Dropping partition with 'wsrep_OSU_method=RSU' and 'SESSION... · 59e14b96
      Jan Lindström authored
      MDEV-21189: Dropping partition with 'wsrep_OSU_method=RSU' and 'SESSION sql_log_bin = 0' cases the galera node to hang
      
      Found two bugs
      
      (1) have_committing_connections was missing mutex unlock on one
      exit case. As this function is called on a loop it caused mutex
      lock when we already owned the mutex. This could cause hang.
      
      (2) wsrep_RSU_begin did set up error code when partition to
      be dropped could not be MDL-locked because of concurrent
      operations but wrong error code was propagated to upper layer
      causing error to be ignored. This could have also caused
      the hang.
      59e14b96
  7. 08 Dec, 2019 3 commits
  8. 04 Dec, 2019 2 commits
  9. 03 Dec, 2019 8 commits
  10. 02 Dec, 2019 2 commits
  11. 30 Nov, 2019 3 commits
  12. 29 Nov, 2019 3 commits
    • HF's avatar
      MENT-510 Failing test(s): perfschema.threads_insert_delayed. · 3fb0fe40
      HF authored
      orig_test_id should be set properly.
      Also fixed sporadic test failure.
      3fb0fe40
    • Anel Husakovic's avatar
    • Daniel Black's avatar
      MDEV-15503: mtr fix --strace · 866e5c25
      Daniel Black authored
      $glob_mysql_test_dir was the wrong directory for strace output as
      it was for in-tree builds only so failed for:
      * out of tree builds
      * --parallel; and
      * --mem
      
      strace output wasn't saved.
      
      strace-option never replaced existing arguments (so ammended
      documentation).
      
      strace-client didn't accept an argument as described.
      
      Replaced specification of client with this with 'stracer' to be
      consistent with --debugger option.
      
      For consistency with debugger options, --client-strace was added to
      execute the strace on the mysqltest.
      
      Example: Running one test
      
      $ ./mtr --strace --client-strace funcs_1.is_table_constraints
      Logging: ./mtr  --strace --client-strace funcs_1.is_table_constraints
      vardir: /home/anel/mariadb/5.5/mysql-test/var
      Checking leftover processes...
      Removing old var directory...
       - WARNING: Using the 'mysql-test/var' symlink
      Creating var directory '/home/anel/mariadb/5.5/mysql-test/var'...
      Checking supported features...
      MariaDB Version 5.5.67-MariaDB-debug
      Installing system database...
       - SSL connections supported
       - binaries are debug compiled
      Collecting tests...
      
      ==============================================================================
      
      TEST                                      RESULT   TIME (ms) or COMMENT
      --------------------------------------------------------------------------
      
      worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019
      funcs_1.is_table_constraints             [ pass ]   1270
      --------------------------------------------------------------------------
      The servers were restarted 0 times
      Spent 1.270 of 3 seconds executing testcases
      
      Completed: All 1 tests were successful
      
      $ find -L . -name \*strace -ls
            653     56 -rw-r--r--   1 anel     anel        57147 Nov 29 15:08 ./var/log/mysqltest.strace
            646   1768 -rw-r--r--   1 anel     anel      1809855 Nov 29 15:08 ./var/log/mysqld.1.strace
      
      Example: Running test in parallel
      
      $ mysql-test/mtr --strace --client-strace  --mem --parallel=3  main.select
      Logging: /home/dan/software_projects/mariadb-server/mysql-test/mysql-test-run.pl  --strace --client-strace --mem --parallel=3 main.select
      vardir: /home/dan/software_projects/build-mariadb-10.3/mysql-test/var
      Checking leftover processes...
      Removing old var directory...
      Creating var directory '/home/dan/software_projects/build-mariadb-10.3/mysql-test/var'...
       - symlinking 'var' to '/dev/shm/var_auto_0v2E'
      Checking supported features...
      MariaDB Version 5.5.67-MariaDB
       - SSL connections supported
      Collecting tests...
      Installing system database...
      
      ==============================================================================
      
      TEST                                  WORKER RESULT   TIME (ms) or COMMENT
      --------------------------------------------------------------------------
      
      worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019
      worker[3]  - 'localhost:16040' was not free
      worker[2] Using MTR_BUILD_THREAD 301, with reserved ports 16020..16039
      worker[3] Using MTR_BUILD_THREAD 303, with reserved ports 16060..16079
      main.select                              w1 [ pass ]   7310
      --------------------------------------------------------------------------
      The servers were restarted 0 times
      Spent 7.310 of 11 seconds executing testcases
      
      Completed: All 1 tests were successful.
      
      $ find mysql-test/var/ -name \*strace -ls
        5213766   1212 -rw-r--r--   1  dan      dan       1237817 May 20 16:47 mysql-test/var/1/log/mysqltest.strace
        5214733  13016 -rw-r--r--   1  dan      dan      13328335 May 20 16:47 mysql-test/var/1/log/mysqld.1.strace
      
      $ mysql-test/mtr --strace --client-strace --strace-option='-e' --strace-option='trace=openat'  --mem --parallel=3  main.select
      ...
      $ find mysql-test/var/ -name \*strace -ls
        5220790      8 -rw-r--r--   1  dan      dan          6291 May 20 17:02 mysql-test/var/3/log/mysqltest.strace
        5224140    308 -rw-r--r--   1  dan      dan        314356 May 20 17:02 mysql-test/var/3/log/mysqld.1.strace
      $ more mysql-test/var/3/mysqltest.strace
      1692  openat(AT_FDCWD, "/home/dan/software_projects/mariadb-server/libmysql/.libs/tls/x86_64/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) =
      -1 ENOENT (No such file or directory)
      1692  openat(AT_FDCWD, "/home/dan/software_projects/mariadb-server/libmysql/.libs/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOE
      NT (No such file or directory)
      
      Closes #600
      866e5c25