1. 10 Jun, 2020 19 commits
    • Alexander Barkov's avatar
      MDEV-14347 CREATE PROCEDURE returns no error when using an unknown variable · 6e2d967b
      Alexander Barkov authored
      CREATE PROCEDURE did not detect unknown SP variables in assignments like this:
      
        SET var=a_long_var_name_with_a_typo;
      
      The error happened only during the SP execution time, and only of the control
      flow reaches the erroneous statement.
      
      Fixing most expressions to detect unknown identifiers.
      This includes simple subqueries without tables:
      
      - Query specification: SELECT list, WHERE,
        HAVING (inside aggregate functions) clauses, e.g.
          SET var= (SELECT unknown_ident+1);
          SET var= (SELECT 1 WHERE unknown_identifier);
          SET var= (SELECT 1 HAVING SUM(unknown_identifier);
      
      - Table value constructor: VALUES clause, e.g.:
          SET var= (VALUES(unknown_ident));
      
      Note, in some more complex subquery cases unknown variables are still not detected
      (this will be fixed separately):
      
      - Derived tables:
        SET a=(SELECT unknown_ident FROM (SELECT 1 AS alias) t1);
        SET res=(SELECT * FROM t1 LEFT OUTER JOIN (SELECT unknown_ident) t2 USING (c1));
      
      - CTE:
        SET a=(WITH cte1 (a) AS (SELECT unknown_ident) SELECT * FROM cte1);
        SET a=(WITH cte1 (a,b) AS (VALUES (unknown,2),(3,4)) SELECT * FROM cte1);
        SET a=(WITH cte1 (a,b) AS (VALUES (1,2),(3,4)) SELECT unknown_ident FROM cte1);
      
      - SELECT .. GROUP BY unknown_identifier
      - SELECT .. ORDER BY unknown_identifier
      - HAVING with an unknown identifier outside of any aggregate functions:
        SELECT .. HAVING unknown_identifier;
      6e2d967b
    • Eugene Kosov's avatar
      MDEV-8069 DROP or rebuild of a large table may lock up InnoDB · 264a98ea
      Eugene Kosov authored
      Problematic mutex is dict_sys.mutex.
      Idea of the patch: unlink() fd under that mutex while
      it's still open. This way unlink() will be fast and
      actual file removal will happen on close().
      And close() will be called outside of dict_sys.mutex.
      This should be safe against crash which may happen between
      unlink() and close(): file will be removed by OS anyway.
      The same applies to both *nix and Windows.
      
      I created and removed a 4G file on some NVMe SSD on ext4:
      
      write(3, "\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1"..., 1048576) = 1048576 <0.000519>
      fdatasync(3)                            = 0 <3.533763>
      close(3)                                = 0 <0.000011>
      unlink("file")                          = 0 <0.411563>
      
      write(3, "\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1"..., 1048576) = 1048576 <0.000520>
      fdatasync(3)                            = 0 <3.544938>
      unlink("file")                          = 0 <0.000029>
      close(3)                                = 0 <0.407057>
      
      Such systems can benefit of this patch.
      
      fil_node_t::detach(): closes fil_node_t but not file handle,
        returns that file handle
      
      fil_node_t::prepare_to_close_or_deatch(): 'closes' fil_node_t
      
      fil_node_t:close_to_free(): new argument detach_handle
      
      fil_system_t::detach(): now can detach file handles
      
      fil_delete_tablespace(): now can detach file handles
      
      row_drop_table_for_mysql(): performs actual file removal
      264a98ea
    • Vladislav Vaintroub's avatar
      af194ab5
    • Otto Kekäläinen's avatar
      MDEV-19917: Install Spider with a simple spider.cnf · cc0205cf
      Otto Kekäläinen authored
      To install Spider one can simply drop a /etc/mysql/conf.d/spider.cnf like
      
        [mariadb]
        plugin-load-add=ha_spider.so
      
      This is automatically generated and installed when plugin is correctly
      registered to plugin.cmake with its own component name. Many other plugins
      such as Connect and RocksDB install in the same way.
      
      This solved MDEV-19917 as the mere adding and removing of spider.cnf
      automatically installs and uninstalls it.
      
      Remove the overly complex and uncecessary install.sql from Spider,
      if should not be needed in modern times anymore.
      
      With this change there is no need for a uninstall.sql either.
      cc0205cf
    • Otto Kekäläinen's avatar
      Deb: Clean up default configs for 10.5 era · aaaf005c
      Otto Kekäläinen authored
      - Recommend max_allowed_packet=1G which is the same as the default client
        value.
      - Remove thread_concurrency removed in 10.5.
      - Remove query cache, not recommended practice anymore.
      - Remove binlog_*, should not recommend those too easily but rather require
        the database administrator to read up on those themselves.
      - Remove chroot setting, not relevant in modern container era.
      - Show explicitly innodb_buffer_pool_size example as the most likely thing
        a database administrator should change.
      - Don't recommend rate limiting in slow log, logging once in a 1000
        would not be optimal for the basic case, hence bad example.
      - Install the example configs in /usr/share/mysql.
      - Use correct path /run/ instead of /var/run/.
      aaaf005c
    • Otto Kekäläinen's avatar
      MDEV-19933: Sync mariadb-common and update-alternatives based /etc/mysql/ · 680a1395
      Otto Kekäläinen authored
      Split the big my.cnf into multiple smaller files with the same filenames
      and contents as official Debian/Ubuntu packaging has.
      
      The config contents stays the same apart from following additions
      which the original MariaDB upstream configs had and probably needs
      to be kept:
      - lc-messages=en_US and skip-external-locking in server config
      
      Configs the original MariaDB upstream had that are seemingly
      unnecessary and thus removed:
      - port=3306 removed from the client config
      - log_warnings=2 removed from server config
      
      Also adopt update-alternatives system using
      mysql-common/configure-symlinks. This way it is aligned with
      downstream Debian/Ubuntu packaging.
      680a1395
    • Sujatha's avatar
      MDEV-22059: MSAN report at replicate_ignore_table_grant · 800eee42
      Sujatha authored
      Analysis:
      ========
      List of values provided for "replicate_ignore_table" and "replicate_do_table"
      are stored in HASH.  When an empty list is provided the HASH structure doesn't
      get initialized. Existing code treats empty element list as an error and tries
      to clean the uninitialized HASH. This results in above MSAN issue.
      
      Fix:
      ===
      The clean up should be initiated only when there is an error while parsing the
      'replicate_do_table' or 'replicate_ignore_table' list and the HASH is in
      initialized state. Otherwise for empty list it should simply return success.
      800eee42
    • Daniel Black's avatar
      cmake: merge_static_libs - correct duplicate assumptions (#1583) · dc068734
      Daniel Black authored
      This corrects build failures on ppc64{,le} with the
      WITH_EMBEDDED_SERVER option enabled.
      
      MDEV-22641 added an unusual case in which the same object
      file in was included twice with a different function
      defination. The original cmake/merge_archives_unix.cmake
      did not tolerate such eventualities.
      
      So we move to the highest voted answer on Stack Overflow
      for the merging of static libraries.
      https://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one
      
      Thin archives generated compile failures and the libtool
      mechanism would of been another dependency and using .la
      files that isn't part of a normal cmake output. The straight
      Apple mechanism of libtool with static archives also failed
      on Linux.
      
      This leaves the MRI script mechansim which was implemented
      in this change.
      dc068734
    • Otto Kekäläinen's avatar
      MDEV-19917: Install Spider with a simple spider.cnf · ba414869
      Otto Kekäläinen authored
      To install Spider one can simply drop a /etc/mysql/conf.d/spider.cnf like
      
        [mariadb]
        plugin-load-add=ha_spider.so
      
      This is automatically generated and installed when plugin is correctly
      registered to plugin.cmake with its own component name. Many other plugins
      such as Connect and RocksDB install in the same way.
      
      This solved MDEV-19917 as the mere adding and removing of spider.cnf
      automatically installs and uninstalls it.
      
      Remove the overly complex and uncecessary install.sql from Spider,
      if should not be needed in modern times anymore.
      
      With this change there is no need for a uninstall.sql either.
      ba414869
    • Otto Kekäläinen's avatar
      Deb: Clean up default configs for 10.5 era · bb847777
      Otto Kekäläinen authored
      - Recommend max_allowed_packet=1G which is the same as the default client
        value.
      - Remove thread_concurrency removed in 10.5.
      - Remove query cache, not recommended practice anymore.
      - Remove binlog_*, should not recommend those too easily but rather require
        the database administrator to read up on those themselves.
      - Remove chroot setting, not relevant in modern container era.
      - Show explicitly innodb_buffer_pool_size example as the most likely thing
        a database administrator should change.
      - Don't recommend rate limiting in slow log, logging once in a 1000
        would not be optimal for the basic case, hence bad example.
      - Install the example configs in /usr/share/mysql.
      - Use correct path /run/ instead of /var/run/.
      bb847777
    • Otto Kekäläinen's avatar
      MDEV-19933: Sync mariadb-common and update-alternatives based /etc/mysql/ · 7c2079f6
      Otto Kekäläinen authored
      Split the big my.cnf into multiple smaller files with the same filenames
      and contents as official Debian/Ubuntu packaging has.
      
      The config contents stays the same apart from following additions
      which the original MariaDB upstream configs had and probably needs
      to be kept:
      - lc-messages=en_US and skip-external-locking in server config
      
      Configs the original MariaDB upstream had that are seemingly
      unnecessary and thus removed:
      - port=3306 removed from the client config
      - log_warnings=2 removed from server config
      
      Also adopt update-alternatives system using
      mysql-common/configure-symlinks. This way it is aligned with
      downstream Debian/Ubuntu packaging.
      7c2079f6
    • Sujatha's avatar
      MDEV-22059: MSAN report at replicate_ignore_table_grant · 840fb495
      Sujatha authored
      Analysis:
      ========
      List of values provided for "replicate_ignore_table" and "replicate_do_table"
      are stored in HASH.  When an empty list is provided the HASH structure doesn't
      get initialized. Existing code treats empty element list as an error and tries
      to clean the uninitialized HASH. This results in above MSAN issue.
      
      Fix:
      ===
      The clean up should be initiated only when there is an error while parsing the
      'replicate_do_table' or 'replicate_ignore_table' list and the HASH is in
      initialized state. Otherwise for empty list it should simply return success.
      840fb495
    • Daniel Black's avatar
      cmake: merge_static_libs - correct duplicate assumptions (#1583) · 6e4e097b
      Daniel Black authored
      This corrects build failures on ppc64{,le} with the
      WITH_EMBEDDED_SERVER option enabled.
      
      MDEV-22641 added an unusual case in which the same object
      file in was included twice with a different function
      defination. The original cmake/merge_archives_unix.cmake
      did not tolerate such eventualities.
      
      So we move to the highest voted answer on Stack Overflow
      for the merging of static libraries.
      https://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one
      
      Thin archives generated compile failures and the libtool
      mechanism would of been another dependency and using .la
      files that isn't part of a normal cmake output. The straight
      Apple mechanism of libtool with static archives also failed
      on Linux.
      
      This leaves the MRI script mechansim which was implemented
      in this change.
      6e4e097b
    • Vladislav Vaintroub's avatar
      MDEV-22841 ut_new_get_key_by_file is unnecessarily expensive · dd77f072
      Vladislav Vaintroub authored
      Change how lookup for the "auto" PSI_memory_keys is done.
      Lookup for filename hashes (integers), instead of C strings
      
      Generate these hashes at the compile time with constexpr,
      rather than at runtime.
      dd77f072
    • Marko Mäkelä's avatar
      MDEV-22110 preparation: Remove mtr_memo_contains macros · 17a7bafe
      Marko Mäkelä authored
      Let us invoke the debug member functions of mtr_t directly.
      
      mtr_t::memo_contains(): Change the parameter type to
      const rw_lock_t&. This function cannot be invoked on
      buf_block_t::lock.
      
      The function mtr_t::memo_contains_flagged() is intended to be invoked
      on buf_block_t* or rw_lock_t*, and it along with
      mtr_t::memo_contains_page_flagged() are the way to check whether
      a buffer pool page has been latched within a mini-transaction.
      17a7bafe
    • Marko Mäkelä's avatar
      MDEV-22110 preparation: Remove some unused function parameters · d6f8c484
      Marko Mäkelä authored
      xdes_get_state(), fseg_get_nth_frag_page_no(),
      fseg_find_free_frag_page_slot(), fseg_find_last_used_frag_page_slot(),
      fseg_get_n_frag_pages(), fseg_n_reserved_pages_low(),
      fseg_print_low(): Remove the unused parameter mtr, and add
      a const qualifier to the pointer to the buffer pool page frame.
      d6f8c484
    • Marko Mäkelä's avatar
      MDEV-15053: Adjust results for innodb_page_hash_locks=64 · 59762ac4
      Marko Mäkelä authored
      This should have been part of
      commit 70d4e55d.
      59762ac4
    • Marko Mäkelä's avatar
      Fix GCC -Wunused-function · e76ca24b
      Marko Mäkelä authored
      debug_sync_set_action(): Declare the dummy function inline,
      to silence a warning about declared-but-unused static function.
      This amends commit 3ccd6766.
      e76ca24b
    • Julius Goryavsky's avatar
  2. 09 Jun, 2020 7 commits
  3. 08 Jun, 2020 6 commits
  4. 07 Jun, 2020 8 commits