1. 30 Sep, 2024 1 commit
    • Rex's avatar
      MDEV-32294 2nd execution problem with inconsistent outer context paths · b52afb6b
      Rex authored
      Fields referencing tables more outward (i.e. closer to the top most
      query) embedded within subqueries can sometimes require further name
      resolution after query merges during optimization.
      An example of this is
      
      select * from
      (
        select * from t3
          where c in
          (
            select a from t1
              where ( select b from t2 where a > 0 and b < 3 ) <> 0
          )
      ) dt
      
      here field _a_ in a single row subselect has a context that points to
      the select "select a from t1".
      After optimization, this select lex has been merged with it's parent.
      If run as a prepared statement, on second execution, name resolution on
      this field will reference a context points to this (now invalid)
      select_lex.
      Further name resolution can also be invoked on the first execution when
      conditions are moved from having to where, such as this
      
      select * from
      (
        select * from t1
           where a in
           (
             select a from t1
             where ( select b from t2 where b < 3 group by a having a > 0 ) <> 0
           )
      ) dt
      
      Fixed by implementing a smart Name_resolution_context::outer_select()
      method that skips merged SELECT_LEXs and disabling direct access to
      these members of Name_resolution_context.
      b52afb6b
  2. 25 Sep, 2024 4 commits
  3. 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
  4. 23 Sep, 2024 3 commits
  5. 20 Sep, 2024 4 commits
  6. 18 Sep, 2024 3 commits
    • Lena Startseva's avatar
      MDEV-31005: Make working cursor-protocol · 0a5e4a01
      Lena Startseva authored
      Updated tests: cases with bugs or which cannot be run
      with the cursor-protocol were excluded with
      "--disable_cursor_protocol"/"--enable_cursor_protocol"
      
      Fix for v.10.5
      0a5e4a01
    • Lena Startseva's avatar
      MDEV-31005: Make working cursor-protocol · ab569524
      Lena Startseva authored
      Added ability to disable/enable (--disable_cursor_protocol/
      --enable_cursor_protocol) cursor-protocol in tests. If
      "--disable_cursor_protocol" is used then ps-protocol is also
      disabled. With cursor-protocol prepare statement is executed
      only once. For "--cursor-protocol" added filter for queries:
      it is executed only for "SELECT" queries.
      ab569524
    • Daniel Black's avatar
      MDEV-34952 main.log_slow test failure on opensuse builder · 450040e0
      Daniel Black authored
      The loose regex for the MDEV-34539 test ended up
      matching the opensuse in the path in buildbot.
      
      Adjust to more complete regex including space,
      backtick and \n, which becomes much less common
      as a path name.
      450040e0
  7. 17 Sep, 2024 2 commits
    • Brandon Nesterenko's avatar
      MDEV-33500 (part 2): rpl.rpl_parallel_sbm can still fail · 68938d2b
      Brandon Nesterenko authored
      The failing test case validates Seconds_Behind_Master for a delayed
      slave, while STOP SLAVE is executed during a delay. The test fixes
      initially added to the test (commit b04c8575) added a table lock
      to ensure a transaction could not finish before validating the
      Seconds_Behind_Master field after SLAVE START, but did not address a
      possibility that the transaction could finish before running the
      STOP SLAVE command, which invalidates the validations for the rest
      of the test case. Specifically, this would result in 1) a timeout in
      “Waiting for table metadata lock” on the replica, which expects the
      transaction to retry after slave restart and hit a lock conflict on
      the locked tables (added in b04c8575), and 2) that
      Seconds_Behind_Master should have increased, but did not.
      
      The failure can be reproduced by synchronizing the slave to the master
      before the MDEV-32265 echo statement (i.e. before the SLAVE STOP).
      
      This patch fixes the test by adding a mechanism to use DEBUG_SYNC to
      synchronize a MASTER_DELAY, rather than continually increase the
      duration of the delay each time the test fails on buildbot. This is
      to ensure that on slow machines, a delay does not pass before the
      test gets a chance to validate results. Additionally, it decreases
      overall test time because the test can continue immediately after
      validation, thereby bypassing the remainder of a full delay for each
      transaction.
      68938d2b
    • Alexander Barkov's avatar
      MDEV-25900 Assertion `octets < 1024' failed in... · a1adabdd
      Alexander Barkov authored
      MDEV-25900 Assertion `octets < 1024' failed in Binlog_type_info_fixed_string::Binlog_type_info_fixed_string OR Assertion `field_length < 1024' failed in Field_string::save_field_metadata
      
      A CHAR column cannot be longer than 1024, because
      Binlog_type_info_fixed_string::Binlog_type_info_fixed_string
      replies on this fact - it cannot store binlog metadata for longer columns.
      
      In case of the filename character set mbmaxlen is equal to 5,
      so only 1024/5=204 characters can fit into the 1024 limit.
      - In strict mode:
        Disallowing creation of a CHAR column with octet length grater than 1024.
      - In non-strict mode:
        Automatically convert CHAR with octet length>1024 into VARCHAR.
      a1adabdd
  8. 16 Sep, 2024 1 commit
  9. 15 Sep, 2024 12 commits
  10. 14 Sep, 2024 1 commit
    • Marko Mäkelä's avatar
      mtr_t::log_file_op(): Fix -Wnonnull · 4010dff0
      Marko Mäkelä authored
      GCC 12.2.0 could issue -Wnonnull for an unreachable call to
      strlen(new_path).  Let us prevent that by replacing the condition
      (type == FILE_RENAME) with the equivalent (new_path).
      This should also optimize the generated code, because the life time
      of the parameter "type" will be reduced.
      4010dff0
  11. 13 Sep, 2024 1 commit
    • Marko Mäkelä's avatar
      MDEV-34921 MemorySanitizer reports errors for non-debug builds · b331cde2
      Marko Mäkelä authored
      my_b_encr_write(): Initialize also block_length, and at the same time
      last_block_length, so that all 128 bits can be initialized with fewer
      writes. This fixes an error that was caught in the test
      encryption.tempfiles_encrypted.
      
      test_my_safe_print_str(): Skip a test that would attempt to
      display uninitialized data in the test unit.stacktrace.
      Previously, our CI did not build unit tests with MemorySanitizer.
      
      handle_delayed_insert(): Remove a redundant call to pthread_exit(0),
      which would for some reason cause MemorySanitizer in clang-19 to
      report a stack overflow in a RelWithDebInfo build. This fixes a
      failure of several tests.
      
      Reviewed by: Vladislav Vaintroub
      b331cde2
  12. 12 Sep, 2024 2 commits
  13. 10 Sep, 2024 3 commits