1. 13 Aug, 2024 7 commits
    • Yuchen Pei's avatar
      MDEV-34716 [to-squash] 11.6 fixup caused by MDEV-31340 · 8698db63
      Yuchen Pei authored
      To be squashed with the top MDEV-34716 commit
      8698db63
    • Yuchen Pei's avatar
      MDEV-15696 Implement SHOW CREATE SERVER · f65ce2ad
      Yuchen Pei authored
      One change is that if the port is not supplied or out of bound, the
      old behaviour is to print 3306. The new behaviour is to not print
      it (if not supplied) or the out of bound value.
      f65ce2ad
    • Yuchen Pei's avatar
      MDEV-34716 Allow arbitrary options in CREATE SERVER · 8918f6bc
      Yuchen Pei authored
      The existing syntax for CREATE SERVER
      
      CREATE [OR REPLACE] SERVER [IF NOT EXISTS] server_name
          FOREIGN DATA WRAPPER wrapper_name
          OPTIONS (option [, option] ...)
      
      option:
        { HOST character-literal
        | DATABASE character-literal
        | USER character-literal
        | PASSWORD character-literal
        | SOCKET character-literal
        | OWNER character-literal
        | PORT numeric-literal }
      
      With this change we have:
      
      option:
        { HOST character-literal
        | DATABASE character-literal
        | USER character-literal
        | PASSWORD character-literal
        | SOCKET character-literal
        | OWNER character-literal
        | PORT numeric-literal
        | PORT quoted-numerical-literal
        | identifier character-literal}
      
      We store these options as a JSON field in the mysql.servers system
      table. We retain the restriction that PORT needs to be a number, but
      also allow it to be a quoted number, so that SHOW CREATE SERVER can be
      used for dumping. Without an accompanied implementation of SHOW CREATE
      SERVER, some mysqldump tests will fail. Therefore this commit should
      be immediately followed by the one implementating SHOW CREATE SERVER,
      with testing covering both.
      8918f6bc
    • Yuchen Pei's avatar
      MDEV-34716 Fix mysql.servers socket max length too short · a30bfbef
      Yuchen Pei authored
      The limit of socket length on unix according to libc is 108, see
      sockaddr_un::sun_path, but in the table it is a string of max length
      64, which results in truncation of socket and failure to connect by
      plugins using servers such as spider.
      a30bfbef
    • Yuchen Pei's avatar
      MDEV-34716 spider: some trivial cleanups and documentation · 43670367
      Yuchen Pei authored
      - document tmp_share, which are temporary spider shares with only one
      link (no ha)
      - simplify spider_get_sys_tables_connect_info() where link_idx is
      always 0
      43670367
    • Yuchen Pei's avatar
      MDEV-32627 Spider: use CONNECTION string in SQLDriverConnect · 0f1399cb
      Yuchen Pei authored
      This is the CS part of the implementation of MENT-2070.
      0f1399cb
    • Alexey Botchkov's avatar
      4bd01401
  2. 12 Aug, 2024 2 commits
    • Vladislav Vaintroub's avatar
      MDEV-34741 - remove LOCK TABLE from mariadb-import · ff865b08
      Vladislav Vaintroub authored
      It currently serves no real purpose, but is suspected to cause occasional
      error when foreign keys are used.
      "Error: 1100, Table 'child' was not locked with LOCK TABLES, when using table: parent"
      as seen on CI
      ff865b08
    • Sergei Golubchik's avatar
      Two problems with auth_parsec.so · 05fe3f1c
      Sergei Golubchik authored
      1. it links with ${SSL_LIBRARIES}, in WolfSSL builds it's a static
         library, so when a plugin is loaded there will be two copies of
         wolfssl in the same address space. It breaks odr (at least).
      2. Plugin can linked with OpenSSL and the server with WolfSSL or
         vice versa. It might load, but then we'll have both WolfSSL and
         OpenSSL at the same time. Kind of risky.
      
      Fix: link the plugin statically into the server if it's a WolfSSL build
      
      adjust tests to work with static and dynamic parsec
      05fe3f1c
  3. 10 Aug, 2024 3 commits
  4. 09 Aug, 2024 6 commits
  5. 08 Aug, 2024 1 commit
  6. 07 Aug, 2024 2 commits
  7. 06 Aug, 2024 1 commit
  8. 05 Aug, 2024 5 commits
    • Oleksandr Byelkin's avatar
      Merge branch '11.4' into 11.5 · ea75a0b6
      Oleksandr Byelkin authored
      ea75a0b6
    • Vladislav Vaintroub's avatar
      Merge 11.5 into 11.6 · 523ef2a1
      Vladislav Vaintroub authored
      523ef2a1
    • Vladislav Vaintroub's avatar
      c175f498
    • Hugo Wen's avatar
      Extend Unix socket authentication to support authentication_string · 9e1923ca
      Hugo Wen authored
      Before this change the unix socket auth plugin returned true only when
      the OS socket user id matches the MariaDB user name.
      The authentication string was ignored.
      
      Now if an authentication string is defined with in `unix_socket`
      authentication rule, then the authentication string will be used to
      compare with the socket's user name, and the plugin will return a
      positive if matching.
      
      Make the plugin to fill in the @@external_user variable.
      
      This change is similar to MySQL commit of
      https://github.com/mysql/mysql-server/commit/6ddbc58e.
      However there's one difference with above commit:
      
      - For MySQL, both Unix user matches DB user name and Unix user matches the
        authentication string will be allowed to connect.
      - For MariaDB, we only allows the Unix user matches the authentication
        string to connect, if the authentication string is defined.
        This is because allowing both Unix user names has risks and couldn't
        handle the case that a customer only wants to allow one single Unix user
        to connect which doesn't matches the DB user name.
      
      If DB user is created with multiple unix_socket options for example:
      `create user A identified via unix_socket as 'B' or unix_socket as 'C';`
      Then both Unix user of B and C are accepted.
      
      Existing MTR test of `plugins.unix_socket` is not impacted.
      Also add a new MTR test to verify authentication with authentication
      string. See the MTR test cases for supported/unsupported cases.
      
      All new code of the whole pull request, including one or several files
      that are either new files or modified ones, are contributed under the
      BSD-new license. I am contributing on behalf of my employer Amazon Web
      Services, Inc.
      9e1923ca
    • Sergei Golubchik's avatar
      fix plugins.rpl_auth failure in bintars · 5ab81ffe
      Sergei Golubchik authored
      in bintars the server is linked with wolfssl, while the connector
      is linked with gnutls. Thus client_ed25519.so gets gnutls
      dependency, unresolved symbols and it cannot be loaded into the
      server and gnutls symbols aren't present there.
      
      linking the plugin statically with gnutls fixes that and the test passes.
      but when such a plugin is loaded into the client, the client gets
      two copies of gnutls - they conflict and ssl doesn't work at all.
      
      let's detect this and disable the test for now.
      5ab81ffe
  9. 04 Aug, 2024 4 commits
  10. 03 Aug, 2024 5 commits
  11. 02 Aug, 2024 1 commit
  12. 31 Jul, 2024 2 commits
    • Brandon Nesterenko's avatar
      MDEV-15393: Fix rpl_mysqldump_gtid_slave_pos · 001608de
      Brandon Nesterenko authored
      The slave would try to sync_with_master_gtid.inc,
      but the master never actually saved its gtid position
      so the test would move on too quickly.
      001608de
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-34670 IMPORT TABLESPACE unnecessary traverses tablespace list · 533e6d5d
      Thirunarayanan Balathandayuthapani authored
      Problem:
      ========
      - After the commit ada1074b (MDEV-14398)
      fil_crypt_set_encrypt_tables() iterates through all tablespaces to
      fill the default_encrypt tables list. This was a trigger to
      encrypt or decrypt when key rotation age is set to 0. But import
      tablespace does call fil_crypt_set_encrypt_tables() unnecessarily.
      The motivation for the call is to signal the encryption threads.
      
      Fix:
      ====
      ha_innobase::discard_or_import_tablespace: Remove the
      fil_crypt_set_encrypt_tables() and add the import tablespace
      to the default encrypt list if necessary
      533e6d5d
  13. 30 Jul, 2024 1 commit
    • Andrew Hutchings's avatar
      MDEV-34605 Fix tmp_table_count-7586 · 06a7352d
      Andrew Hutchings authored
      This test ran `show status like '%Created_tmp%'`. This captures
      `Created_tmp_files` as well as the intended `Created_tmp_tables`.
      In 11.5, the former got moved to `FLUSH GLOBAL`, so when testing, the
      result can now be random.
      
      This fix makes the test just use `Created_tmp_tables`.
      06a7352d