Commit graph

195337 commits

Author SHA1 Message Date
Daniel Bartholomew
d0e853b38e
bump the VERSION 2022-02-12 13:59:39 -05:00
Daniel Bartholomew
c62720d07f
bump the VERSION 2022-02-12 13:39:28 -05:00
Daniel Bartholomew
8274c207df
bump the VERSION 2022-02-12 13:09:01 -05:00
Vladislav Vaintroub
91d9e9bd80 MDEV-27813 Windows, compiling : RelWithDebInfo should use /Ob2
Fixed inlining flags. Remove /Ob1 added by CMake for RelWithDebInfo.
(the actual compiler default is /Ob2 if optimizations are enabled)

Allow to define custom /Ob flag with new variable MSVC_INLINE, if desired
2022-02-11 14:27:57 +01:00
Marko Mäkelä
1a7573d5a5 Disable innodb_gis.rtree_compress2 2022-02-11 12:58:42 +02:00
Krunal Bauskar
fb875055c6 MDEV-27805: tpcc workload shows regression with MDB-10.6
- regression got revealed while running tpcc workload.

- as part of MDEV-25919 changes logic for statistics computation was revamped.

- if the table has changed to certain threshold then table is added to
  statistics recomputation queue (dict_stats_recalc_pool_add)

- after the table is added to queue the background statistics thread is
  notified

- during revamp the condition to notify background statistics threads was
  wrongly updated to check if the queue/vector is empty when it should
  check if there is queue/vector has entries to process.

- vec.begin() == vec.end() : only when vector is empty

- also accessing these iterator outside the parallely changing vector is not
  safe

- fix now tend to notify background statistics thread if the logic adds
  an entry to the queue/vector.
2022-02-11 12:32:11 +02:00
Marko Mäkelä
bd70ae0565 MDEV-27774 fixup: Replace sspin_lock with srw_lock
srw_lock in log_sys.append_prepare() turned out to yield best throughput.
We might try a NUMA aware spin lock implementation later.
2022-02-11 11:44:40 +02:00
Vlad Lesin
3b10e8f80c MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB causes rows count mismatch for clustered and secondary indexes during non-locking read
row_sel_sec_rec_is_for_clust_rec() treats empty BLOB prefix field in
secondary index as a field equal to any external BLOB field in clustered
index. Row_sel_get_clust_rec_for_mysql::operator() doesn't zerro out
clustered record pointer in row_search_mvcc(), and row_search_mvcc()
thinks that delete-marked secondary index record has visible for
"CHECK TABLE"'s read view old-versioned clustered index record, and
row_scan_index_for_mysql() counts it as a row.

The fix is to execute row_sel_sec_rec_is_for_blob() in
row_sel_sec_rec_is_for_clust_rec() if clustered field contains BLOB's
reference.
2022-02-11 12:26:27 +03:00
Shunsuke Tokunaga
d644cd6bfb
MDEV-27662 Spider: remove #ifdef SPIDER_SUPPORT_CREATE_OR_REPLACE_TABLE 2022-02-11 17:47:33 +09:00
Kento Takeuchi
362c5fb10f
MDEV-27660 Spider: remove #ifdef SPIDER_HANDLER_START_BULK_INSERT_HAS_FLAGS (#2012)
Remove unnecessary #ifdefs and dead code in Spider.
ha_spider::start_bulk_insert without uint flags is not used because
handler::ha_start_bulk_insert calls start_bulk_insert for each storage engine
with flags. Therefore, dead code and #ifdef related to
SPIDER_HANDLER_START_BULK_INSERT_HAS_FLAGS have been removed.
2022-02-11 14:58:20 +09:00
Samuel Thibault
7c6ec0a53b MDEV-27804 Fails to build - perf schema - thread id of type uintptr_t requires header
While building on GNU/Hurd and kfreebsd.

On the C++ standard uintptr_t can be defined in <cstdint>
ref: https://www.cplusplus.com/reference/cstdint/

Fixes: 0d44792a83
2022-02-11 14:40:46 +11:00
Sergei Golubchik
7dade0adbd Merge branch '10.7' into 10.8 2022-02-10 21:33:14 +01:00
Sergei Golubchik
65f602310c Merge branch '10.6' into 10.7 2022-02-10 21:16:50 +01:00
Sergei Golubchik
e3894f5d39 Merge branch '10.5 into 10.6 2022-02-10 21:07:03 +01:00
Sergei Golubchik
9aa3564e8a Merge branch '10.4' into 10.5 2022-02-10 21:04:51 +01:00
Sergei Golubchik
b4477ae73c Merge branch '10.3' into 10.4 2022-02-10 20:39:13 +01:00
Sergei Golubchik
a36fc80aeb Merge branch '10.2' into 10.3 2022-02-10 20:23:56 +01:00
Sergei Petrunia
3a52569499 MDEV-25636: Bug report: abortion in sql/sql_parse.cc:6294
The asserion failure was caused by this query

  select /*id=1*/ from t1
  where
   col= ( select /*id=2*/ from ... where corr_cond1
          union
          select /*id=4*/ from ... where corr_cond2)

Here,
- select with id=2 was correlated due to corr_cond1.
- select with id=4 was initially correlated due to corr_cond2, but then
  the optimizer optimized away the correlation, making the select with id=4
  uncorrelated.

However, since select with id=2 remained correlated, the execution had to
re-compute the whole UNION. When it tried to execute select with id=4, it
hit an assertion  (join buffer already free'd).

This is because select with id=4 has freed its execution structures after
it has been executed once. The select is uncorrelated, so it did not expect
it would need to be executed for the second time.

Fixed this by adding this logic in
st_select_lex::optimize_unflattened_subqueries():

  If a member of a UNION is correlated, mark all its members as
  correlated, so that they are prepared to be executed multiple times.
2022-02-10 20:35:32 +03:00
Vladislav Vaintroub
012e724deb MDEV-27796 Windows - starting server with huge innodb-log-buffer-size may fail
Fixed tpool::pread() and tpool::pwrite() to return SSIZE_T on Windows,
so that huge numbers are not converted to negatives.

Also, make sure to never attempt reading/writing more bytes than
DWORD can accomodate (4G)
2022-02-10 17:25:12 +01:00
Sergei Golubchik
9e2c26b0f6 MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra
don't let Aria create a table that it cannot open
2022-02-10 15:48:06 +01:00
Sergei Golubchik
1b8bb44106 MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra
use the correct check. before invoking handler methods we
need to know that the table was opened, not only created.
2022-02-10 15:48:06 +01:00
Marko Mäkelä
a635c40648 MDEV-27774 Reduce scalability bottlenecks in mtr_t::commit()
A prominent bottleneck in mtr_t::commit() is log_sys.mutex between
log_sys.append_prepare() and log_close().

User-visible change: The minimum innodb_log_file_size will be
increased from 1MiB to 4MiB so that some conditions can be
trivially satisfied.

log_sys.latch (log_latch): Replaces log_sys.mutex and
log_sys.flush_order_mutex. Copying mtr_t::m_log to
log_sys.buf is protected by a shared log_sys.latch.
Writes from log_sys.buf to the file system will be protected
by an exclusive log_sys.latch.

log_sys.lsn_lock: Protects the allocation of log buffer
in log_sys.append_prepare().

sspin_lock: A simple spin lock, for log_sys.lsn_lock.

Thanks to Vladislav Vaintroub for suggesting this idea, and for
reviewing these changes.

mariadb-backup: Replace some use of log_sys.mutex with recv_sys.mutex.

buf_pool_t::insert_into_flush_list(): Implement sorting of flush_list
because ordering is otherwise no longer guaranteed. Ordering by LSN
is needed for the proper operation of redo log checkpoints.

log_sys.append_prepare(): Advance log_sys.lsn and log_sys.buf_free by
the length, and return the old values. Also increment write_to_buf,
which was previously done in log_close().

mtr_t::finish_write(): Obtain the buffer pointer from
log_sys.append_prepare().

log_sys.buf_free: Make the field Atomic_relaxed,
to simplify log_flush_margin(). Use only loads and stores
to avoid costly read-modify-write atomic operations.

buf_pool.flush_list_requests: Replaces
export_vars.innodb_buffer_pool_write_requests
and srv_stats.buf_pool_write_requests.
Protected by buf_pool.flush_list_mutex.

buf_pool_t::insert_into_flush_list(): Do not invoke page_cleaner_wakeup().
Let the caller do that after a batch of calls.

recv_recover_page(): Invoke a minimal part of
buf_pool.insert_into_flush_list().

ReleaseBlocks::modified: A number of pages added to buf_pool.flush_list.

ReleaseBlocks::operator(): Merge buf_flush_note_modification() here.

log_t::set_capacity(): Renamed from log_set_capacity().
2022-02-10 16:37:12 +02:00
Marko Mäkelä
8c7c92adf3 MDEV-27787 mariadb-backup --backup is allocating extra memory for log records
In commit 685d958e38 (MDEV-14425),
the log parsing in mariadb-backup --backup was rewritten.
The parameter STORE_IF_EXISTS that is being passed to recv_sys.parse_mtr()
or recv_sys.parse_pmem() instead of STORE_NO caused unnecessary additional
memory allocation for redo log records.
2022-02-10 15:39:27 +02:00
Oleksandr Byelkin
0168d1eda3 MDEV-25766 Unused CTE lead to a crash in find_field_in_tables/find_order_in_list
Do not assume that subquery Item always present.
2022-02-10 14:36:25 +01:00
Sergei Golubchik
9e39d0ae44 MDEV-25787 Bug report: crash on SELECT DISTINCT thousands_blob_fields
fix a debug assert to account for not opened temp tables
2022-02-10 13:45:11 +01:00
Monty
ad1fb06982 MDEV-27789 mysql_upgrade / mariadb-upgrade in 10.6.6 is putting password in host argument
Removed all dependencies of command line arguments based on positions in
an array (this kind of code should never have been written).
Instead use option names, which are stable.

Reviewer: Sergei Golubchik
2022-02-10 12:29:37 +02:00
Nayuta Yanagisawa
c817fda22d MDEV-26912 Spider: Remove dead code related to Oracle OCI
Remove the dead-code, in Spider, which is related to the Spider's
Oracle OCI support. The code has been disabled for a long time and
it is unlikely that the code will be enabled.
2022-02-10 15:48:13 +09:00
Vincent Milum Jr
e375f51924 MDEV-27790: Fix mis-matched braces for non-Linux targets
Ran into this while compiling on FreeBSD 13.0-RELEASE

After this one change, it compiles and runs just fine on my FreeBSD Aarch64 server.
2022-02-10 17:18:37 +11:00
Nayuta Yanagisawa
7c339a65b8 MDEV-26178 fixup: Delete constants used nowhere 2022-02-10 15:08:44 +09:00
Nayuta Yanagisawa
de1bc7a157 MDEV-27659 Spider: remove #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS_WITH_HS 2022-02-10 14:58:27 +09:00
Nayuta Yanagisawa
08622739b7 MDEV-27658 Spider: remove #if defined(PARTITION_HAS_GET_CHILD_HANDLERS) 2022-02-10 14:58:27 +09:00
Nayuta Yanagisawa
61df84defb MDEV-27657 Spider: remove #ifdef SPIDER_HANDLER_SUPPORT_MULTIPLE_KEY_PARTS 2022-02-10 14:58:27 +09:00
Nayuta Yanagisawa
284f9226fb MDEV-27656 Spider: remove #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE 2022-02-10 14:58:27 +09:00
Nayuta Yanagisawa
e22b3fe6f6 MDEV-27655 Spider: remove #ifdef MARIADB_BASE_VERSION 2022-02-10 14:58:27 +09:00
Nayuta Yanagisawa
cf577bab6f MDEV-27652 Spider: remove dead code in #ifdef HA_HAS_CHECKSUM_EXTENDED 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
7d4ef290f8 MDEV-27650 Spider: remove #ifdef SPIDER_HAS_GROUP_BY_HANDLER 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
4defdb0db5 MDEV-27648 Spider: remove in #ifdef HASH_UPDATE_WITH_HASH_VALUE 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
0df6a95bc2 MDEV-27647 Spider: remove #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
4f353dc013 MDEV-27646 Spider: remove #ifdef SPIDER_HAS_HASH_VALUE_TYPE 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
3beefe8f98 MDEV-27645 Spider: remove #ifdef HA_MRR_USE_DEFAULT_IMPL 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
7ba4612108 MDEV-27644 Spider: remove #ifdef HANDLER_HAS_DIRECT_AGGREGATE 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
a4da96773d MDEV-27643 Spider: remove #ifdef HA_CAN_BULK_ACCESS 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
00ae4272b3 MDEV-27642 Spider: remove #ifdef WITHOUT_SPIDER_BG_SEARCH 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
cfd145faed MDEV-27641 Spider: remove #if MYSQL_VERSION_ID < ${VERSION} 2022-02-10 14:58:26 +09:00
Nayuta Yanagisawa
06bd93c377 MDEV-27637 Spider: remove #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= ${VERSION} 2022-02-10 14:58:26 +09:00
Sergei Golubchik
9bd7e526e7 support lzma < 5.1.3alpha
where `lzma_allocator *allocator` isn't declared const
2022-02-09 19:13:52 +01:00
Marko Mäkelä
c75e3770dc Merge 10.7 into 10.8 2022-02-09 16:24:19 +02:00
Marko Mäkelä
70a8875564 Merge 10.6 into 10.7 2022-02-09 16:04:49 +02:00
Marko Mäkelä
cce994057b Merge 10.5 into 10.6 2022-02-09 15:49:50 +02:00
Marko Mäkelä
fd101daa84 MDEV-27716 mtr_t::commit() acquires log_sys.mutex when writing no log
mtr_t::is_block_dirtied(), mtr_t::memo_push(): Never set m_made_dirty
for pages of the temporary tablespace. Ever since
commit 5eb539555b
we never add those pages to buf_pool.flush_list.

mtr_t::commit(): Implement part of mtr_t::prepare_write() here,
and avoid acquiring log_sys.mutex if no log is written.
During IMPORT TABLESPACE fixup, we do not write log, but we must
add pages to buf_pool.flush_list and for that, be prepared
to acquire log_sys.flush_order_mutex.

mtr_t::do_write(): Replaces mtr_t::prepare_write().
2022-02-09 15:10:10 +02:00