1. 13 Oct, 2023 4 commits
  2. 12 Oct, 2023 4 commits
  3. 11 Oct, 2023 7 commits
    • Alexander Barkov's avatar
      MDEV-32249 strings/ctype-ucs2.c:2336: my_vsnprintf_utf32: Assertion `(n % 4)... · 6400b199
      Alexander Barkov authored
      MDEV-32249 strings/ctype-ucs2.c:2336: my_vsnprintf_utf32: Assertion `(n % 4) == 0' failed in my_vsnprintf_utf32 on INSERT
      
      The crash inside my_vsnprintf_utf32() happened correctly,
      because the caller methods:
        Field_string::sql_rpl_type()
        Field_varstring::sql_rpl_type()
      mis-used the charset library and sent pure ASCII data to the
      virtual function snprintf() of a utf32 CHARSET_INFO.
      
      It was wrong to use Field::charset() in sql_rpl_type().
      We're printing the metadata (the data type) here, not the column data.
      The string contraining the data type of a CHAR/VARCHAR column
      is a pure ASCII string.
      
      Fixing to use res->charset() to print, like all virtual implementations
      of sql_type() do.
      
      Review was done by Andrei Elkin.
      Thanks to Andrei for proposing MTR test improvents.
      6400b199
    • Marko Mäkelä's avatar
      MDEV-31890: Remove COMPILE_FLAGS · 3f1a2562
      Marko Mäkelä authored
      The cmake configuration step is single-threaded and already consuming
      too much time. We should not make it worse by adding invocations like
      MY_CHECK_CXX_COMPILER_FLAG().
      
      Let us prefer something that works on any supported version
      of GCC (4.8.5 or later) or clang, as well as recent versions
      of the Intel C compiler.
      
      This replaces commit 1fde7853
      3f1a2562
    • Sergei Golubchik's avatar
      MDEV-32024 disable failing test · 702dc2ec
      Sergei Golubchik authored
      702dc2ec
    • Sergei Golubchik's avatar
      MDEV-30658 fix failing test · 3e2b1295
      Sergei Golubchik authored
      followup for 96ae37ab
      3e2b1295
    • Sergei Golubchik's avatar
      fix groonga to compile with -Werror=enum-int-mismatch · 69089c71
      Sergei Golubchik authored
      gcc 13.2.1
      69089c71
    • Yuchen Pei's avatar
      MDEV-31996 Create connection on demand in spider_db_delete_all_rows · 2556fe1a
      Yuchen Pei authored
      When spider_db_delete_all_rows() is called, the supplied spider->conns
      may have already been freed. The existing mechanism has spider_trx own
      the connections in trx_conn_hash and it may free a conn during the
      cleanup after a query. When running a delete query and if the table is
      in the table cache, ha_spider::open() would not be called which would
      recreate the conn. So we recreate the conn when necessary during
      delete by calling spider_check_trx_and_get_conn().
      
      We also reduce code duplication as delete_all_rows() and truncate()
      has almost identical code, and there's no need to assign
      wide_handler->sql_command in these functions because it has already
      been correctly assigned.
      2556fe1a
    • Vladislav Vaintroub's avatar
  4. 10 Oct, 2023 3 commits
    • Vladislav Vaintroub's avatar
      MDEV-32387 Windows - mtr output on is messed up with large MTR_PARALLEL. · f197f9a5
      Vladislav Vaintroub authored
      Windows C runtime does not implement line buffering mode for stdio.
      
      This sometimes makes output from different tests interleaved in MTR
      MTR relies on this buffering (lines won't  output until "\n") to correctly
      work in parallel scenarios.
      
      Implement do-it-yourself line buffering on Windows, to workaround.
      f197f9a5
    • Vladislav Vaintroub's avatar
      MDEV-32387 Windows - mtr output on is messed up with large MTR_PARALLEL. · 19423636
      Vladislav Vaintroub authored
      Windows C runtime does not implement line buffering mode for stdio.
      
      This sometimes makes output from different tests interleaved in MTR
      MTR relies on this buffering (lines won't  output until "\n") to correctly
      workin parallel scenarios.
      
      Implement do-it-yourself line buffering on Windows, to workaround.
      19423636
    • Oleg Smirnov's avatar
      MDEV-30664 mysqldump output is truncated on Windows · cbe61bf8
      Oleg Smirnov authored
      Flush stdout on finalizing of mysqldump/mysqlbinlog output
      to avoid truncation.
      
      The same patch has been applied to the mysqltest.cc code with
        commit 34ff714b
        Author: Magnus Svensson <msvensson@mysql.com>
        Date:   Fri Nov 14 11:06:56 2008 +0100
          WL#4189 Make mysqltest flush log file at close if logfile is stdout
      
      but not to mysqldump.c/mysqlbinlog.cc
      cbe61bf8
  5. 09 Oct, 2023 1 commit
  6. 06 Oct, 2023 2 commits
  7. 05 Oct, 2023 3 commits
  8. 04 Oct, 2023 2 commits
    • Alexander Barkov's avatar
      MDEV-32275 getting error 'Illegal parameter data types row and bigint for... · 534a2bf1
      Alexander Barkov authored
      MDEV-32275 getting error 'Illegal parameter data types row and bigint for operation '+' ' when using ITERATE in a FOR..DO
      
      An "ITERATE innerLoop" did not work properly inside
      a WHILE loop, which itself is inside an outer FOR loop:
      
      outerLoop:
        FOR
         ...
         innerLoop:
          WHILE
            ...
            ITERATE innerLoop;
            ...
          END WHILE;
          ...
        END FOR;
      
      It erroneously generated an integer increment code for the outer FOR loop.
      There were two problems:
      1. "ITERATE innerLoop" worked like "ITERATE outerLoop"
      2. It was always integer increment, even in case of FOR cursor loops.
      
      Background:
      - A FOR loop automatically creates a dedicated sp_pcontext stack entry,
        to put the iteration and bound variables on it.
      
      - Other loop types (LOOP, WHILE, REPEAT), do not generate a dedicated
        slack entry.
      
        The old code erroneously assumed that sp_pcontext::m_for_loop
        either describes the most inner loop (in case the inner loop is FOR),
        or is empty (in case the inner loop is not FOR).
      
        But in fact, sp_pcontext::m_for_loop is never empty inside a FOR loop:
        it describes the closest FOR loop, even if this FOR loop has nested
        non-FOR loops inside.
      
        So when we're near the ITERATE statement in the above script,
        sp_pcontext::m_for_loop is not empty - it stores information about
        the FOR loop labeled as "outrLoop:".
      
      Fix:
      - Adding a new member sp_pcontext::Lex_for_loop::m_start_label,
        to remember the explicit or the auto-generated label correspoding
        to the start of the FOR body. It's used during generation
        of "ITERATE loop_label" code to check if "loop_label" belongs
        to the current FOR loop pointed by sp_pcontext::m_for_loop,
        or belongs to a non-FOR nested loop.
      
      - Adding LEX methods sp_for_loop_intrange_iterate() and
        sp_for_loop_cursor_iterate() to reuse the code between
        methods handling:
        * ITERATE
        * END FOR
      
      - Adding a test for Lex_for_loop::is_for_loop_cursor()
        and generate a code either a cursor fetch, or for an integer increment.
        Before this change, it always erroneously generated an integer increment
        version.
      
      - Cleanup: Initialize Lex_for_loop_st::m_cursor_offset inside
        Lex_for_loop_st::init(), to avoid not initialized members.
      
      - Cleanup: Removing a redundant method:
          Lex_for_loop_st::init(const Lex_for_loop_st &other)
        Using Lex_for_loop_st::operator(const Lex_for_loop_st &other) instead.
      534a2bf1
    • Alexander Barkov's avatar
      MDEV-28835 Assertion `(length % 4) == 0' failed in my_lengthsp_utf32 on INSERT · e2da748c
      Alexander Barkov authored
      Problem:
      
      Item_func_date_format::val_str() and make_date_time() did not take into
      account that the format string and the result string
      (separately or at the same time) can be of a tricky character set
      like UCS2, UTF16, UTF32. As a result, DATE_FORMAT() could generate
      an ill-formed result which crashed on DBUG_ASSERTs testing well-formedness
      in other parts of the code.
      
      Fix:
      
      1. class String changes
         Removing String::append_with_prefill(). It was not compatible with
         tricky character sets. Also it was inconvenient to use and required
         too much duplicate code on the caller side.
         Adding String::append_zerofill() instead. It's compatible with tricky
         character sets and is easier to use.
         Adding helper methods Static_binary_string::q_append_wc() and
         String::append_wc(), to append a single wide character
         (a Unicode code point in my_wc_t).
      
      2. storage/spider changes
         Removing spider_string::append_with_prefill().
         It used String::append_with_prefix() inside, but it was unused itself.
      
      3. Changing tricky charset incompatible code pieces in make_date_time()
         to compatible replacements:
      
         - Fixing the loop scanning the format string to iterate in terms
           of Unicode code points (using mb_wc()) rather than in terms
           of "char" items.
         - Using append_wc(my_wc_t) instead of append(char) to append
           a single character to the result string.
         - Using append_zerofill() instead of append_with_prefill() to
           append date/time numeric components to the result string.
      e2da748c
  9. 03 Oct, 2023 1 commit
  10. 29 Sep, 2023 3 commits
  11. 28 Sep, 2023 3 commits
  12. 27 Sep, 2023 5 commits
  13. 26 Sep, 2023 2 commits