1. 02 Oct, 2024 2 commits
    • Sergei Petrunia's avatar
      MDEV-34993, part2: backport optimizer_adjust_secondary_key_costs · 1cda4726
      Sergei Petrunia authored
      ...and make the fix for MDEV-34993 switchable. It is enabled by default
      and controlled with @optimizer_adjust_secondary_key_costs=fix_card_multiplier
      1cda4726
    • Sergei Petrunia's avatar
      MDEV-34993: Incorrect cardinality estimation causes poor query plan · 8166a5d3
      Sergei Petrunia authored
      When calculate_cond_selectivity_for_table() takes into account multi-
      column selectivities from range access, it tries to take-into account
      that selectivity for some columns may have been already taken into account.
      
      For example, for range access on IDX1 using {kp1, kp2}, the selectivity
      of restrictions on "kp2" might have already been taken into account
      to some extent.
      So, the code tries to "discount" that using rec_per_key[] estimates.
      
      This seems to be wrong and unreliable: the "discounting" may produce a
      rselectivity_multiplier number that hints that the overall selectivity
      of range access on IDX1 was greater than 1.
      
      Do a conservative fix: if we arrive at conclusion that selectivity of
      range access on condition in IDX1 >1.0, clip it down to 1.
      8166a5d3
  2. 01 Oct, 2024 8 commits
  3. 30 Sep, 2024 7 commits
  4. 29 Sep, 2024 1 commit
  5. 27 Sep, 2024 3 commits
  6. 26 Sep, 2024 1 commit
    • Tony Chen's avatar
      ssl_cipher parameter cannot configure TLSv1.3 and TLSv1.2 ciphers at the same time · be164fc4
      Tony Chen authored
      SSL_CTX_set_ciphersuites() sets the TLSv1.3 cipher suites.
      
      SSL_CTX_set_cipher_list() sets the ciphers for TLSv1.2 and below.
      
      The current TLS configuration logic will not perform SSL_CTX_set_cipher_list()
      to configure TLSv1.2 ciphers if the call to SSL_CTX_set_ciphersuites() was
      successful. The call to SSL_CTX_set_ciphersuites() is successful if any TLSv1.3
      cipher suite is passed into `--ssl-cipher`.
      
      This is a potential security vulnerability because users trying to restrict
      specific secure ciphers for TLSv1.3 and TLSv1.2, would unknowingly still have
      the database support insecure TLSv1.2 ciphers.
      
      For example:
      If setting `--ssl_cipher=TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256`,
      the database would still support all possible TLSv1.2 ciphers rather than only
      ECDHE-RSA-AES128-GCM-SHA256.
      
      The solution is to execute both SSL_CTX_set_ciphersuites() and
      SSL_CTX_set_cipher_list() even if the first call succeeds.
      
      This allows the configuration of exactly which TLSv1.3 and TLSv1.2 ciphers to
      support.
      
      Note that there is 1 behavior change with this. When specifying only TLSv1.3
      ciphers to `--ssl-cipher`, the database will not support any TLSv1.2 cipher.
      However, this does not impose a security risk and considering TLSv1.3 is the
      modern protocol, this behavior should be fine.
      
      All TLSv1.3 ciphers are still supported if only TLSv1.2 ciphers are specified
      through `--ssl-cipher`.
      
      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.
      be164fc4
  7. 25 Sep, 2024 8 commits
  8. 24 Sep, 2024 3 commits
    • Max Kellermann's avatar
      MDEV-34994: sql/mysqld: stop accept() loop after the first EAGAIN · 53f5ee79
      Max Kellermann authored
      Each time a listener socket becomes ready, MariaDB calls accept() ten
      times (MAX_ACCEPT_RETRY), even if all but the first one return EAGAIN
      because there are no more connections.  This causes unnecessary CPU
      usage - on our server, the CPU load of that thread, which does nothing
      but accept(), saturates one CPU core by ~45%.  The loop should stop
      after the first EAGAIN.
      
      Perf report:
      
          11.01%  mariadbd  libc.so.6          [.] accept4
           6.42%  mariadbd  [kernel.kallsyms]  [k] finish_task_switch.isra.0
           5.50%  mariadbd  [kernel.kallsyms]  [k] _raw_spin_unlock_irqrestore
           5.50%  mariadbd  [kernel.kallsyms]  [k] syscall_enter_from_user_mode
           4.59%  mariadbd  [kernel.kallsyms]  [k] __fget_light
           3.67%  mariadbd  [kernel.kallsyms]  [k] kmem_cache_alloc
           2.75%  mariadbd  [kernel.kallsyms]  [k] fput
           2.75%  mariadbd  [kernel.kallsyms]  [k] mod_objcg_state
           1.83%  mariadbd  [kernel.kallsyms]  [k] __inode_wait_for_writeback
           1.83%  mariadbd  [kernel.kallsyms]  [k] __sys_accept4
           1.83%  mariadbd  [kernel.kallsyms]  [k] _raw_spin_unlock_irq
           1.83%  mariadbd  [kernel.kallsyms]  [k] alloc_inode
           1.83%  mariadbd  [kernel.kallsyms]  [k] call_rcu
      53f5ee79
    • Sergei Golubchik's avatar
      reformat galera sst error messages · 8fd1b060
      Sergei Golubchik authored
      put the command line at the end. so that when a very long command line
      is truncated, it doesn't take the actual error message with it
      8fd1b060
    • Sergei Golubchik's avatar
      galera_3nodes.MDEV-29171 fails · dd1cad7e
      Sergei Golubchik authored
      set transferfmt in .cnf file like other galera tests do.
      otherwise it defaults to socat when mtr detected that only nc is available
      dd1cad7e
  9. 23 Sep, 2024 3 commits
  10. 20 Sep, 2024 4 commits