Commit graph

187918 commits

Author SHA1 Message Date
Alexey Botchkov
25ecf8ed4b MDEV-24965 With ALTER USER ...IDENTIFIED BY command, password doesn't replaced by asterisks in audit log.
Check for the ALTER USER command added.
2021-02-26 13:26:00 +04:00
Monty
1d80e8e4f3 MENT-1098 Crash during update on 10.4.17 after upgrade from 10.4.10
The reason for the crash was that there was not a write lock to
protect against file rotations in the server_audit plugin after an
audit plugin patch to changed audit mutexes to read & write locks.

The fixes are:
* Moving server_audit.c to use read & write locks (which improves
  performance).
* Added functionality in file_logger.c to not do file rotations until
  it is allowed by the caller (done without any interface changes for
  the logging service).
* Move checking of file size limit to server_audit.c and if it is time to
  do a rotation change the read lock to a write lock and tell file_logger
  that it is now allowed to rotate the log files.
2021-02-25 13:23:59 +02:00
Marko Mäkelä
4473d17430 Merge 10.2 into 10.3 2021-02-25 12:19:11 +02:00
Varun Gupta
0a95c922c8 Fixed the innodb_ext_key test by adding replace_column 2021-02-25 12:42:01 +05:30
Daniel Black
48b5f8a544 mysys: lf_hash - fix l_search size_t keylen
Correcting an incorrect merge from 10.2
2021-02-25 15:44:49 +11:00
Daniel Black
3e2afcb3f4 Merge remote-tracking branch 'origin/10.2' into 10.3 2021-02-25 12:16:13 +11:00
Daniel Black
577c970c52 MDEV-24728: Debian include client caching_sha2_password plugin
Backport of 4bc31a904f

Include client libraries for auth caching_sha2_password and
sha256_password in the libmariadb3 client library package.
2021-02-25 12:12:04 +11:00
Daniel Black
1635686b50 MDEV-23510: arm64 lf_hash alignment of pointers
volatile != atomic.

volatile has no memory barrier schemantics, its for mmaped IO
so lets allow some optimizer gains and stop pretending it helps
with memory atomicity.

The MDEV lists a SEGV an assumption is made that an address was
partially read. As C packs structs strictly in order and on arm64 the
cache line size is 128 bits. A pointer (link - 64 bits), followed
by a hashnr (uint32 - 32 bits), leaves the following key (uchar *
64 bits), neither naturally aligned to any pointer and worse, split
across a cache line which is the processors view of an atomic
reservation of memory.

lf_dynarray_lvalue is assumed to return a 64 bit aligned address.

As a solution move the 32bit hashnr to the end so we don't get the
*key pointer split across two cache lines.

Tested by: Krunal Bauskar
Reviewer: Marko Mäkelä
2021-02-25 09:13:10 +11:00
Igor Babaev
bf6484e7bb MDEV-24910 Crash with SELECT that uses table value constructor as a subselect
This bug caused crashes of the server when processing queries with table
value constructors (TVC) that contained subqueries and were used itself as
subselects. For such TVCs the following transformation is applied at the
prepare stage:
  VALUES (v1), ... (vn) => SELECT * FROM (VALUES (v1), ... (vn)) tvc_x.
This transformation allows to reduce the problem of evaluation of TVCs used
as subselects to the problem of evaluation of regular subselects.
The transformation is implemented in the wrap_tvc(). The code the function
to mimic the behaviour of the parser when processing the result of the
transformation. However this imitation was not free of some flaws. First
the function called the method exclude() that completely destroyed the
select tree structures below the transformed TVC. Second the function
used the procedure mysql_new_select to create st_select_lex nodes for
both wrapping select of the transformation and TVC. This also led to
constructing of invalid select tree structures.
The patch actually re-engineers the code of wrap_tvc().

Approved by Oleksandr Byelkin <sanja@mariadb.com>
2021-02-24 13:51:47 -08:00
Vicențiu Ciorbaru
13f0e1e139 Merge branch '10.2' into 10.3 2021-02-23 21:43:05 +02:00
Vicențiu Ciorbaru
9e259d58c2 Remove race condition during make dist
Introduced by 85828b8f22

This is running 2 git processes in parallel, which, if unlucky can cause
either of them to fail with "File already exists" error.
2021-02-23 17:26:08 +02:00
Marko Mäkelä
69bf55ffb6 Merge 10.2 into 10.3 2021-02-23 10:56:00 +02:00
Thirunarayanan Balathandayuthapani
787c47586e MDEV-24913 Assertion !recv_no_log_write in log_write_up_to()
- The commit 5fd3c7471e3e0673b50d309567c9747d36f09412(MDEV-24709)
resets the recv_no_ibuf_operations in
recv_recovery_from_checkpoint_start(), but InnoDB fails to reset
the variable recv_no_log_write() during that time and that leads
to the assert failure.
2021-02-23 13:56:40 +05:30
Monty
640f42311a MDEV-24929 Server crash in thr_multi_unlock or in get_schema_tables_result
This was caused by two different bugs:
1) Information_schema tables where not locked by lock_tables, but
   get_lock_data() was not filtering these out. This caused a crash when
   mysql_unlock_some_tables() tried to unlock tables early, including
   not locked information schema tables.

Fixed by not locking SYSTEM_TMP_TABLES

2) In some cases the optimizer will notice that we do not need to read
   the information_schema tables at all. In this case
   join_tab->read_record is not set, which caused a crash in
   get_schema_tables_result()

Fixed by ignoring const tables in get_schema_tables_result()
2021-02-22 22:42:38 +01:00
Sergei Golubchik
0ab1e3914c Merge branch '10.2' into 10.3 2021-02-22 22:42:27 +01:00
Sergei Golubchik
ca126d96f5 Merge branch 'bb-10.3-release' into 10.3 2021-02-22 21:03:41 +01:00
Sergei Golubchik
3c021485c9 fix binlog_xa_recover test
1. wait for the binlog thread to reach the certain state, don't use
   a debug_sync that's incorrectly placed to detect the state
2. no need to do a (non-deterministic) `show binlog events` to verify
   what is guaranteed by the directly preceding line
2021-02-22 19:43:08 +01:00
Sergei Golubchik
bb98c6bf44 cleanup: renames, no need to create a new .inc file
if it's the whole content of a test anyway.
2021-02-22 19:43:08 +01:00
Sergei Golubchik
7fe351aba4 mtr fixes for old (5.10.1) perl 2021-02-22 19:43:08 +01:00
Sergei Golubchik
77c23c62ae support for mtr --valgdb
add a new "debugger" to mtr, that runs the executable
under valgrind in gdb. valgrind pid is auto-detected,
but the delay (sleep) and vgdb path are hard-coded for now
2021-02-22 19:43:08 +01:00
Sergei Golubchik
feacc0aaf2 unify mtr handling of debuggers
"debugger" is anything that wraps execution of a target
binary (mysqld or mysqltest). Currently the list includes:
gdb, ddd, dbx, lldb, valgrind, strace, ktrace, rr,
devenv, windbg, vsjitdebugger.

for every debugger xxx, mtr will recognize four options:
--xxx, --boot-xxx, --manual-xxx, --client-xxx.
They all support an optional "=string" argument. String
being a semicolon-separated list of commands (e.g. for gdb)
or one (not semicolon-separated) command line of options
(e.g. for valgrind). Or both (e.g. --gdb='-quiet -nh;info files'

In embedded both --xxx and --client-xxx work.

Functionality changed/removed:
* --rr-args is gone
* --rr-dir is gone
* --manual-debug is gone
* --debugger={devenv|vc|windbg|vc_express|vsjitdebugger} is gone
* --strace-option is gone
* --stracer={strace|ktrace} is gone
* --valgrind only enables it for the server, not for everything
* --valgrind-all is gone
* --valgrind-mysqltest is gone
* --valgrind-mysqld is gone
* --valgrind-options is gone
* --valgrind-option is gone
* --valgrind-path is gone
* --callgrind is gone
* one cannot combine --valgrind --gdb anymore
* valgrind report doesn't add a fake test line to the output
* vc and vcexpress on windows are no longer supported
2021-02-22 19:43:08 +01:00
Sergei Golubchik
3b0b4e614c cleanup: remove dead code in mtr 2021-02-22 19:27:12 +01:00
Sergei Golubchik
c4f0133444 cleanup: stat tables
don't allocate Column_statistics_collected objects that won't
be used.

minor style fixes (StringBuffer<>, etc)
2021-02-22 19:27:12 +01:00
Sergei Golubchik
06a791aa12 MDEV-23753: SIGSEGV in Column_stat::store_stat_fields
only collect persistent stats for columns explicitly listed
by the user in the  ANALYZE TABLE PERSISTENT FOR COLUMNS (...)
clause. The engine can extend table->read_set as much as
it wants, it should not affect the collected statistics.

Test case from the 3b94309a6c applies - it used to crash,
because ha_partition extended table->read_set after the loop that
initialized some objects based on bits in the read_set but before the
loop that used these objects based on bits in the read_set.
2021-02-22 19:27:12 +01:00
Sergei Golubchik
caad32ca92 Revert "MDEV-23753: SIGSEGV in Column_stat::store_stat_fields"
This reverts the commit 3b94309a6c but keeps the test

Because the fix is a hack that isn't supposed to do anything,
and relies on a side-effect of rnd_init inside ha_partition.

A different fix is coming up.
2021-02-22 19:27:12 +01:00
Sergei Golubchik
a638f1577a Merge branch 'bb-10.2-release' into 10.2 2021-02-22 18:43:03 +01:00
Igor Babaev
a5b18613ec MDEV-24936 EXPLAIN for query based on table value constructor lacks info
on used subqueries

If a query was based on a table value constructor that contained subqueries
then EXPLAIN for such query did not contain any lines explaining the
execution plans of the subqueries.
This happened because
- no optimize() method was called for any subquery used by the table value
  constructor when EXPLAIN command for the query was processed;
- EXPLAIN node created for the table value constructor itself did not
  assume that some child nodes could be attached to it.

Approved by Oleksandr Byelkin <sanja@mariadb.com>
2021-02-22 09:19:13 -08:00
Daniel Bartholomew
6aa909745d
bump the VERSION 2021-02-22 10:04:25 -05:00
Daniel Bartholomew
a49ce0bf93
bump the VERSION 2021-02-22 09:44:23 -05:00
Thirunarayanan Balathandayuthapani
d7fc4f5236 MDEV-24863 AHI entries mismatch with the index while reloading the evicted tables.
- This is caused by commit ad6171b91c
(MDEV-22456). InnoDB reloads the evicted table again from dictionary.
In that case, AHI entries and current index object mismatches
happens. When index object mismatches then InnoDB should drop
the page hash AHI entries for the block. In
btr_search_drop_page_hash_index(), InnoDB should take exclusive
lock on the AHI latch if index is already freed to avoid the
freed memory access during buf_pool_resize()
2021-02-22 18:08:10 +05:30
Jan Lindström
374f4c3f8c Suppress warning on galera_ssl_upgrade test. 2021-02-22 13:57:28 +02:00
Monty
8db5274dce MDEV-22703 DEFAULT() on a BLOB column can overwrite the default record
This can cause crashes when accessing already released memory

The issue was the Item_default created a internal field, pointing to
share->default_values, to be used with the DEFAULT() function.
This does not work for BLOB fields as these are freed at end of query.
Fixed by storing BLOB field data inside and area allocated by
Item_default_value,  like we do for nondeterministic default values.
2021-02-21 20:43:28 +02:00
Sergei Golubchik
0d55b020e1 Merge branch 'bb-10.2-release' into bb-10.3-release 2021-02-18 22:09:53 +01:00
Sergei Golubchik
ce3a2a688d make @@wsrep_provider and @@wsrep_notify_cmd read-only
this should simplify run-time cluster management
2021-02-18 19:03:01 +01:00
Sergei Golubchik
cbbbdb9c3b don't allocate 64K on the stack 2021-02-18 12:16:11 +01:00
Jan Lindström
5ecaf52d42 MDEV-24873 : galera.galera_as_slave_ctas MTR failed: Assertion `(&(&LOCK_thd_data)->m_mutex)->count > 0 && pthread_equal(pthread_self(), (&(&LOCK_thd_data)->m_mutex)->thread)' failed in sql_class.cc on THD::awake(killed_state)
Problem was that thd::awake assumes now that you hold THD::LOCK_thd_data
so we need to keep it when we call wsrep_thd_awake from
wsrep_abort_transaction.
2021-02-17 10:28:37 +02:00
Jan Lindström
45e33e05e2 MDEV-24872 : galera.galera_insert_multi MTR failed: crash with SIGABRT
Problem was that we tried to lock THD::LOCK_thd_data after we have
acquired lock_sys mutex. This is against mutex ordering rules.
2021-02-17 10:28:37 +02:00
Jan Lindström
4d300ab1a8 MDEV-24867 : wsrep.variables MTR failed: Result length mismatch
Stabilize test case.
2021-02-17 10:28:37 +02:00
Marko Mäkelä
067465cd2f MDEV-15641 fixup: Make the test faster
Let us avoid the excessive allocation of explicit record locks
(a work-around of MDEV-24813) so that the test will execute
much faster under AddressSanitizer, MemorySanitizer, Valgrind.
2021-02-16 12:07:48 +02:00
Varun Gupta
3544643f09 MDEV-23291: SUM column from a derived table returns invalid values
The issue here was the read_set bitmap was not set for a field which
was used as a reference in an inner select.
We need to make sure that if we are in an inner select and we have
references from outer select then we update the table bitmaps for
such references.

Introduced a function in the class Item_subselect that would
update bitmaps of table for the references within a
subquery that are defined in outer selects.
2021-02-16 11:53:13 +05:30
Varun Gupta
7e9a6b7f09 MDEV-24779: main.subselect fails in buildbot with --ps-protocol
Follow-up fix to commit 26f5033(MDEV-23449)
The GROUP BY clause inside IN/ALL/ANY subquery is removed
when there is no aggregate function or HAVING clause in the subquery.

When the GROUP BY clause is removed, a subquery can also be removed
if it part of the GROUP BY clause. This is done inside the function
remove_redundant_subquery_clauses. Here we walk over the GROUP BY list
and remove a subselect from its unit via the callback function
eliminate_subselect_processor.

The issue here was that when the query was being re-executed it was trying
to reinitialize the select that was removed as stated above.
This is not required, so the fix would be to remove select_lex
both from tree lex structure and the global list of nodes so that
we don't do the reinitialization again.
2021-02-16 11:53:13 +05:30
Varun Gupta
a461e4d306 MDEV-19474: Histogram statistics are used even with optimizer_use_condition_selectivity=3
The issue here was histogram statistics were being used even when
the level of optimizer_use_condition_selectivity doesn't allow
usage of statistics from histogram.

The histogram statistics are read for a table only when
optimizer_use_condition_selectivity > 3. But the TABLE structure can be
stored in the internal table cache and be reused for the next query.
So in this case the histogram statistics will be available for the next query.

The fix would be to make sure to use the histogram statistics only when
optimizer_use_condition_selectivity > 3.
2021-02-16 11:53:13 +05:30
Marko Mäkelä
e926964cb8 Remove useless test innodb.innodb_bug60049
The test innodb.innodb_bug60049 used to check that the record
(ID,NAME)=(12,'SYS_FOREIGN_COLS') is the last record in the
secondary index of the system table SYS_TABLES.
But, ever since commit 2336558423
or mysql/mysql-server@082d59670f
that record no longer is the last one in the table!

The more recent test innodb.purge_secondary covers the purge
functionality much better.
2021-02-15 18:12:31 +02:00
Alice Sherepa
6f14230643 MDEV-11862 rpl.rpl_semi_sync_event_after_sync 'fails if there is no semisync plugin 2021-02-15 13:41:44 +01:00
Marko Mäkelä
da3211e487 MDEV-24763 fixup: Use deterministic ORDER BY 2021-02-12 14:03:25 +02:00
Marko Mäkelä
6f3f191cfa MDEV-24763 ALTER TABLE fails to rename a column in SYS_FIELDS
innobase_rename_column_try(): When renaming SYS_FIELDS records
for secondary indexes, try to use both formats of SYS_FIELDS.POS
as keys, in case the PRIMARY KEY includes a column prefix.

Without this fix, an ALTER TABLE that renames a column followed
by a server restart (or LRU eviction of the table definition
from dict_sys) would make the table inaccessible.
2021-02-12 09:48:36 +02:00
Marko Mäkelä
028ba10d0b MDEV-18468 fixup: Make test case robust w.r.t. deferred DROP TABLE 2021-02-12 09:41:15 +02:00
Julius Goryavsky
95003eab45 MDEV-19950: Galera test failure on galera_ssl_upgrade
The test requires adaptation for MariaDB, which is done
in this patch. In addition, this patch includes a fix for
the SST script startup code that adds escaping for special
characters on the command line (in case they are contained
in the arguments to mysqld). The fix does not require
separate tests, as the required tests are already part
of the mtr suite for Galera.
2021-02-11 13:44:01 +01:00
Igor Babaev
da88e1ec12 MDEV-24840 Crash caused by query with IN subquery containing union
of two table value costructors

This bug affected queries with a [NOT] IN/ANY/ALL subquery whose top level
unit contained several table value constructors.
The problem appeared because the code of the function
Item_subselect::fix_fields() that was responsible for wrapping table
value constructors encountered at the top level unit of a [NOT] IN/ANY/ALL
subquery did not take into account that the chain of the select objects
comprising the unit were not immutable.

Approved by Oleksandr Byelkin <sanja@mariadb.com>
2021-02-10 23:38:52 -08:00
Jan Lindström
362dcf9e01 Update Galera disabled.def 2021-02-11 08:02:24 +02:00