Commit graph

199452 commits

Author SHA1 Message Date
Oleksandr Byelkin
f30244d13c Merge branch '10.11' into mariadb-10.11.7 2024-02-07 08:18:05 +01:00
Alexander Barkov
c4c167778e MDEV-33392 Server crashes when using RANDOM_BYTES function and GROUP BY clause on a column with a negative value
Item_func_random_bytes did not set its NULL-ability flag.
2024-02-07 09:05:28 +04:00
Daniel Bartholomew
7f3839ab8c
bump the VERSION 2024-02-06 08:25:30 -05:00
Vladislav Vaintroub
c79f19a5ed MDEV-33374 main.mysql_connector_net fails on new Windows 11
Additionally pass `-ExecutionPolicy Bypass` to powershell.exe when
executing script
2024-02-02 17:32:32 +01:00
Marko Mäkelä
93189df44e MDEV-33361 Excessive delays in SET GLOBAL innodb_log_file_size
innodb_log_file_size_update(): Wait for buf_pool.done_flush_list
(that a flush batch has completed), not buf_pool.do_flush_list
(that the buf_flush_page_cleaner was woken up).

The condition variable buf_pool.done_flush_list is broadcast by the
buf_flush_page_cleaner() at the end of each batch, which is when the
log checkpoint can advance and where any log resizing may be completed.
The purpose of the condition variable buf_pool.do_flush_list is to
wake up the buf_flush_page_cleaner() thread because there is work to do.
If no thread is signaling that condition variable, this loop could
unnecessarily wait for up to 5 seconds too long for the log resizing
to be completed. By consuming signals it could also prevent the
buf_flush_page_cleaner() thread from waking up.

Tested by: Matthias Leich
2024-02-02 10:48:10 +02:00
Daniel Black
ea9a6a1494 MDEV-33095 MariaDB-backup - no OS_DATA_FILE_NO_O_DIRECT on some platforms
Postfix for a6290a5bc5, in 10.11
where OS_DATA_FILE_NO_O_DIRECT gets used. Same #ifdef conditions
as other uses of OS_DATA_FILE_NO_O_DIRECT.

Noticed on aarch64-macos builder.
2024-02-02 17:58:39 +11:00
Sergei Golubchik
87e13722a9 Merge branch '10.6' into 10.11 2024-02-01 18:36:14 +01:00
Sergei Golubchik
b5c367cd88 MDEV-32815 test main.func_sformat Locale + test failures under Fedora 39 (fmt-10.0.0+)
FMT_STATIC_THOUSANDS_SEPARATOR stopped working in 10.0.0
Let's not use this fmt version for now
2024-02-01 18:35:18 +01:00
Sergei Golubchik
15c75ad083 pcre.cmake: always check the library with check_library_exists()
even if pkg-config has it. otherwise build dependencies
aren't detected.
2024-02-01 11:26:36 +01:00
Brandon Nesterenko
dd95c58b58 MDEV-33331: IO Thread Relay Log Inconsistent Statistics After MDEV-32551
After MDEV-32551, in a master/slave setup, if the replica's IO thread
quickly and successively reconnects (i.e quickly running
STOP SLAVE IO_THREAD followed by START SLAVE IO_THREAD), the relay log
rotation behavior changes. That is, MDEV-32551 changed the logic of the
binlog_dump_thread on the primary, such that it can stop itself before
sending any events if it sees a new connection has been created to a
replica with the same server_id. Pre MDEV-32551, the connection would
establish and it would send a "fake" rotate event to populate the
log name. Post MDEV-32551, the connection stops itself, and a rotate
event is not sent.

This made the test rpl.rpl_mariadb_slave_capability unstable because
it is reliant on the name of the relay logs (which is dependent on the
number of rotates); and the pre-amble of the test would quickly
start/stop the IO thread. There a binlog dump thread could end itself
before sending a rotate event to the replica, thereby changing the name
of the relay log.

This patch fixes this by adding in a synchronization in-between IO thread
restarts, such that it waits for the primary's binlog dump threads to
sync up with the state of the replica.
2024-01-31 22:18:31 +01:00
Sergei Golubchik
2278f3503e fix columnstore compilation on fc39 2024-01-31 22:02:59 +01:00
Sergei Golubchik
3f6038bc51 Merge branch '10.5' into 10.6 2024-01-31 18:04:03 +01:00
Sergei Golubchik
01f6abd1d4 Merge branch '10.4' into 10.5 2024-01-31 17:32:53 +01:00
Sergei Golubchik
46e3a7658b funcs_1.innodb_views times out in --ps 2024-01-31 17:07:46 +01:00
Sergei Golubchik
e5147c8140 regression introduced by MDEV-14448 2024-01-31 15:32:37 +01:00
Sergei Golubchik
d1744ee7a2 MDEV-33343 spider.mdev_28739_simple fails in buildbot
test disabled, until fixed
2024-01-31 15:32:37 +01:00
Oleksandr Byelkin
908c9cf90c workaround for MDEV-33218 2024-01-30 17:00:15 +01:00
Brandon Nesterenko
c75905cacb MDEV-33327: rpl_seconds_behind_master_spike Sensitive to IO Thread Stop Position
rpl.rpl_seconds_behind_master_spike uses the DEBUG_SYNC mechanism to
count how many format descriptor events (FDEs) have been executed,
to attempt to pause on a specific relay log FDE after executing
transactions. However, depending on when the IO thread is stopped,
it can send an extra FDE before sending the transactions, forcing
the test to pause before executing any transactions, resulting in a
table not existing, that is attempted to be read for COUNT.

This patch fixes this by no longer counting FDEs, but rather by
programmatically waiting until the SQL thread has executed the
transaction and then automatically activating the DEBUG_SYNC point
to trigger at the next relay log FDE.
2024-01-30 06:58:44 +01:00
Dishon Merkhai
f5ca4077d8 MDEV-30839: Add new options to mini-benchmark and fixes
Add new options to mini-benchmark.sh so it is more useful, such as
`--log` to avoid output from `lscpu` and other commands being lost.

Also fix following errors:

- Fix if condition for the cycle count regression verdict. The condition
  checked if the cycle count was greater than 850 billion, but `$RESULT`
  is only 3 digits and represents the number of cycles in billions.

- Fix flamegraph width. The original width caused the flamegraph to be
  cut-off on most screen sizes in the browser.

- Fix ShellCheck warnings and suggestions.

- Fix condition to check if perf has permission to run on the system.

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.
2024-01-30 12:26:09 +11:00
Monty
4dbf55bbfc Disable perfschema.misc_session_status for 32 bit
32bit uses less memory so the test for max_memory_usage does not work
2024-01-27 16:51:45 +02:00
Monty
ed76a2e8ac Updated some 32 bit result files in sys_vars 2024-01-27 16:51:15 +02:00
Monty
e20693c167 Fixed some wrong printf() usage after changing m_table_id to ulonglong
This caused some crashes on 32 bit platforms.
2024-01-27 16:29:40 +02:00
Brandon Nesterenko
112eb14f7e MDEV-27850: rpl_seconds_behind_master_spike debug_sync fix
A debug_sync signal could remain for the SQL thread that should have begun
a wait_for upon seeing a GTID event, but would instead see the old signal
and continue on without waiting. This broke an "idle" condition in
SHOW SLAVE STATUS
which should have automatically negated Seconds_Behind_Master. Instead,
because the SQL thread had already processed the GTID event, it set
sql_thread_caught_up to false, and thereby calculated the value of
Seconds_behind_master, when the test expected 0.

This patch fixes this by resetting the debug_sync state before creating a
new transaction which sends a GTID event to the replica
2024-01-26 11:43:34 -07:00
Rucha Deodhar
daca0c059b fix failing test on buildbot for MDEV-27087 2024-01-26 16:56:07 +05:30
Vladislav Vaintroub
e96a05948b update C/C 2024-01-26 10:48:54 +01:00
Marko Mäkelä
220c0fb405 MDEV-33317 [Warning] InnoDB: Could not free any blocks in the buffer pool!
Let us suppress this timing-sensitive warning globally.
We added it in commit d34479dc66 (MDEV-33053)
so that in case InnoDB hangs due to running out of buffer pool, there
would be a warning about it. On a heavily loaded system that is running
with a small buffer pool, these warnings may be occasionally issued
while page writes are in progress.
2024-01-26 11:21:14 +02:00
Vladislav Vaintroub
b62f25c650 MDEV-26579 fixup 2024-01-26 00:15:13 +01:00
Vladislav Vaintroub
0f59810b99 MDEV-26579 Support minor MSI in Windows installer.
With this patch, 4-component MSI version can be used, e.g by setting
TINY_VERSION variable in CMake, or by adding a string, e.g
MYSQL_VERSION_EXTRA=-2
which sets TINY_VERSION to 2, and also changes the package name.

The 4-component MSI versions do not support MSI major upgrades, only minor
ones, i.e do not reinstall components, just update existing ones based
on versioning rules.

To support these rules, add DefaultVersion for the files that won't
otherwise be versioned - headers, static and import libraries,
pdbs, text - xml, python and perl scripts Also silence WiX warning
that MSI won't store hashes for those files anymore.
2024-01-26 00:15:13 +01:00
Vladislav Vaintroub
c9c4f15e99 Remove bogus "perl not found" on Windows.
Testing exit code from popen(), comparing it with 1, and deciding that
perl.exe is not there, is a) wrong conclusion, and b) uninteresting,
because MTR always runs with perl, and with MTR_PERL set.

Background:
Recent change in 7af50e4df4 introduced
exit code 1 from perl snippet, that broke Windows CI. Do not want
to debug this ever again.
2024-01-25 14:44:42 +01:00
Yuchen Pei
1070575a89
MDEV-33191 spider: fix dbton_id when iterating over links
There are two array fields in spider_share with similar names:

share->use_sql_dbton_ids that maps from i to the i-th dbton used by
share. Thus it should be used only when i iterates over all distinct
dbtons used by share.

share->sql_dbton_ids that maps from i to the dbton used by the i-th
link of the share. Thus it should be used only when i iterates over
all links of a share.

We correct instances where share->sql_dbton_ids should be used instead
of share->use_sql_dbton_ids.
2024-01-25 12:33:52 +11:00
Alexander Barkov
97fcafb9ec MDEV-32837 long unique does not work like unique key when using replace
write_record() when performing REPLACE has an optimization:
- if the unique violation happened in the last unique key, then do UPDATE
- otherwise, do DELETE+INSERT

This patch changes the way of detecting if this optimization
can be applied if the table has long (hash based) unique
(i.e. UNIQUE..USING HASH) constraints.

Problem:

The old condition did not take into account that
TABLE_SHARE and TABLE see long uniques differently:
- TABLE_SHARE sees as HA_KEY_ALG_LONG_HASH and HA_NOSAME
- TABLE sees as usual non-unique indexes
So the old condition could erroneously decide that the UPDATE optimization
is possible when there are still some unique hash constraints in the table.

Fix:

- If the current key is a long unique, it now works as follows:

  UPDATE can be done if the current long unique is the last
  long unique, and there are no in-engine (normal) uniques.

- For in-engine uniques nothing changes, it still works as before:

  If the current key is an in-engine (normal) unique:
  UPDATE can be done if it is the last normal unique.
2024-01-24 17:19:54 +04:00
Alexander Barkov
f738cc9876 MDEV-29095 REGEXP_REPLACE treats empty strings different than REPLACE in ORACLE mode
Turning REGEXP_REPLACE into two schema-qualified functions:
- mariadb_schema.regexp_replace()
- oracle_schema.regexp_replace()

Fixing oracle_schema.regexp_replace(subj,pattern,replacement) to treat
NULL in "replacement" as an empty string.

Adding new classes implementing oracle_schema.regexp_replace():
- Item_func_regexp_replace_oracle
- Create_func_regexp_replace_oracle

Adding helper methods:
- String *Item::val_str_null_to_empty(String *to)
- String *Item::val_str_null_to_empty(String *to, bool null_to_empty)

and reusing these methods in both Item_func_replace and
Item_func_regexp_replace.
2024-01-24 10:59:17 +04:00
Alexey Botchkov
9d88c5b8b4 MDEV-31616 Problems with a stored function EMPTY() on upgrade to 10.6.
The IDENT_sys doesn't include keywords, so the function with the
keyword name can be created, but cannot be called.
Moving keywords to new rules keyword_func_sp_var_and_label and
keyword_func_sp_var_not_label so the functions with these
names are allowed.
2024-01-24 09:59:55 +04:00
Daniel Black
3699a7e1a9 macos: Fix CMAKE_OSX_ARCHITECTURES when not set
When CMAKE_OSX_ARCHITECTURES isn't set we end up with
"Packaging as: mariadb-10.4.33-osx10.19-x86_64" on arm64 builders.

Instead of implying 64bit is x86, use CMAKE_SYSTEM_PROCESSOR to form
the filename.
2024-01-24 10:01:15 +11:00
Vicențiu Ciorbaru
7c2f082222
Improve READLINE_V5 detection
More in depth check to cover all used readline functions.
2024-01-23 18:38:22 +02:00
Rucha Deodhar
011d666ada reorder the log columns for MDEV-27087 2024-01-23 21:34:43 +05:30
Sergei Golubchik
a7ee3bc58b MDEV-29954 Unique hash key on column prefix is computed incorrectly
use the original, not the truncated, field in the long unique prefix,
that is, in the hash(left(field, length)) expression.

because MyISAM CHECK/REPAIR in compute_vcols() moves table->field
but not prefix fields from keyparts.

Also, implement Field_string::cmp_prefix() for prefix comparison
of CHAR columns to work.
2024-01-23 15:40:42 +01:00
Sergei Golubchik
14d00fdb15 cleanup: MY_STRNNCOLLSP_NCHARS_EMULATE_TRIMMED_TRAILING_SPACES
no need to use it when both arguments have the same length
2024-01-23 15:40:42 +01:00
Sergei Golubchik
8bb464899f cleanup: unused and undefined methods 2024-01-23 15:40:42 +01:00
Sergei Golubchik
dcb814c44e MDEV-11628 mysql.slow_log reports incorrect start time
use thd->start_time for the "start_time" column of the slow_log table.
"current_time" here refers to the current_time() function return value
not to the actual *current* time.

also fixes
MDEV-33267 User with minimal permissions can intentionally corrupt mysql.slow_log table
2024-01-23 15:40:42 +01:00
Sergei Golubchik
db9fad1562 cleanup: main.log_tables test 2024-01-23 15:40:42 +01:00
Sergei Golubchik
2bc940f7c9 disable perfschema in mtr bootstrap
should fix numerous failures of main.bootstrap tets
2024-01-23 15:40:42 +01:00
Vicențiu Ciorbaru
27459b413d
MDEV-14448: Ctrl-C should not exit client
Undo any Windows behaviour changes.
2024-01-23 16:25:58 +02:00
Oleksandr Byelkin
8c5db7a187 MDEV-29587 Allowing insert into a view with columns that are not part the table
We can check only fields which take part in inserts.
2024-01-23 15:13:06 +01:00
Monty
26c86c39fc Fixed some mtr tests that failed on windows
Most things where wrong in the test suite.
The one thing that was a bug was that table_map_id was in some places
defined as ulong and in other places as ulonglong. On Linux 64 bit this
is not a problem as ulong == ulonglong, but on windows this caused failures.
Fixed by ensuring that all instances of table_map_id are ulonglong.
2024-01-23 13:03:12 +02:00
Monty
6085fb199a Fixed compiler error/warning in backup_copy.cc 2024-01-23 13:03:12 +02:00
Monty
286d6f239a Fixed main.strict test to work with icc compiler 2024-01-23 13:03:12 +02:00
Monty
d2c431bccb Disable main.gis from embedded
Fails with:
query 'select ST_AsWKT(GeometryCollection(Point(44, 6), @g))' failed:
ER_ILLEGAL_VALUE_FOR_TYPE (1367): Illegal non geometric '@`g`' value
found during parsing
2024-01-23 13:03:12 +02:00
Monty
c777429cf9 MDEV-33279 Disable transparent huge pages after page buffers has been allocatedDisable transparent huge pages (THP)
The reason for disabling transparent huge pages (THP) is that they
do not work well with MariaDB (or other databases, see links in
MDEV-33279). The effect of using THP are that MariaDB will use much more
(10x) more memory and will no be able to release memory back to the system.

Disabling THP is done after all storage engines are started, to allow
buffer pools and keybuffers (big allocations) to be allocated as huge
pages.
2024-01-23 13:03:12 +02:00
Monty
740d3e7a74 Trivial fixes:
- Removed not used variable 'file' from MYSQL_BIN_LOG::open()
- Assigned not initialized variable in connect/tabext.cpp
2024-01-23 13:03:12 +02:00