1
0
mirror of https://github.com/MariaDB/server.git synced 2025-10-12 12:25:37 +03:00
Commit Graph

185563 Commits

Author SHA1 Message Date
Marko Mäkelä
5633f83ca4 Fix integer type mismatch 2019-04-02 13:46:36 +03:00
Marko Mäkelä
8650848ec3 MDEV-19128 fil_name_parse() for MLOG_FILE_ is not portable
On Microsoft Windows, InnoDB writes the path separator \ to the
redo log file, while on all other platforms, / is being used.

fil_name_parse(): Normalize the parsed path separators to the
native format. This allows backups or data sets to be portable
between Windows and other systems.
2019-04-02 13:43:22 +03:00
Nikita Malyavin
610ec192ec MDEV-17320 add Feature_application_time_periods status variable
Closes #1225
2019-04-02 11:03:32 +02:00
Nikita Malyavin
5fc6ad95d4 MDEV-18921 Server crashes in bitmap_bits_set or bitmap_is_set upon UPDATE IGNORE .. FOR PORTION with binary logging
The fix is same as for MDEV-18859: initialize table->rpl_write_set in
FOR PORTION OF case.
2019-04-02 11:03:32 +02:00
Nikita Malyavin
7e3e2d060b MDEV-18859 Server crashes in bitmap_bits_set / pack_row / THD::binlog_write_row upon DELETE .. FOR PORTION with binary logging
rpl_write_set is initialized in TABLE::mark_columns_per_binlog_row_image.
Since we just call use_all_columns for PORTION OF case, no need in
column marking logic here. Instead, initialize table->rpl_write_set in
place.
2019-04-02 11:03:32 +02:00
Nikita Malyavin
04055060b6 MDEV-18852 MDEV-18853 fix period.delete, period.update tests crashes with `--ps-protocol
The main problem was lack of proper QueryArena handling in
`period_setup_conds`. Since mysql_prepare_update/mysql_prepare_delete
are called during `PREPARE` statement, period conditions, should be
allocated on statement query arena.

Another problem is incorrect statement state handling in
period_setup_conds, which led to unexpected mysql_update termination.

* mysql_update: move period_setup_conds() to mysql_prepare_update to
  store conditions in statement's mem_root

* mtr: add period suite to default list, since --ps-protocol is now
  fixed

Fixes bugs:
MDEV-18853 Assertion `0' failed in Protocol::end_statement upon DELETE .. FOR PORTION via prepared statement
MDEV-18852 Server crashes in reinit_stmt_before_use upon UPDATE .. FOR PORTION via prepared statement
2019-04-02 11:03:32 +02:00
Daniel Black
74c9872a9a MDEV-10797 RPM includes init script and a systemd unit
Closes #593
2019-04-02 11:03:32 +02:00
Sergei Golubchik
4975d25390 don't run SysV scripts in scriptlets if systemd is used 2019-04-02 11:03:32 +02:00
Sergei Golubchik
4a7d7e79a2 update test results 2019-04-02 11:03:32 +02:00
Sergei Golubchik
79fe17567a gcc 8 warnings 2019-04-02 12:00:04 +03:00
Marko Mäkelä
f3adfcb523 After-merge fix: Initialize all fields 2019-04-02 11:59:55 +03:00
Marko Mäkelä
5c3ff5cb93 Merge 10.3 into 10.4 2019-04-02 11:04:54 +03:00
Marko Mäkelä
f9ab7b473a MDEV-18623 Assertion after DROP FULLTEXT INDEX and removing NOT NULL
instant_alter_column_possible(): Do not support instantaneous removal
of NOT NULL if the table needs to be rebuilt for removing the hidden
FTS_DOC_ID column. This is not ideal and should ultimately be fixed
properly in MDEV-17459.
2019-04-02 11:03:44 +03:00
Marko Mäkelä
43c20542dd MDEV-19030: Assertion failed in rec_init_offsets() after DROP COLUMN
This basically is a duplicate of MDEV-18219, proving that the
assertion was not relaxed correctly.

dict_index_t::in_instant_init: A debug flag that will only be set in
btr_cur_instant_init_low() in order to suppress the assertion failure
in rec_init_offsets() for that code path only.
2019-04-02 11:03:44 +03:00
Marko Mäkelä
517486963b Adjust tests after commit b5615eff0d 2019-04-02 11:03:28 +03:00
Alexander Barkov
ea5cda5269 MDEV-18402 Assertion `sec.sec() <= 59' failed in Item_func_maketime::get_date 2019-04-02 11:40:22 +04:00
Alexander Barkov
b9ea778f6c MDEV-18503 Assertion `native.length() == binlen' failed in Type_handler_timestamp_common::make_sort_key 2019-04-02 11:06:07 +04:00
Marko Mäkelä
7b42d892de Merge 10.2 into 10.3 2019-04-02 09:19:34 +03:00
Alexander Barkov
d8e936a2af Tests for MDEV-18595 Assertion `0' failed in Item_cache_timestamp::val_datetime_packed / Predicant_to_list_comparator::cmp_arg
The patch for MDEV-18240 fixed this problem earlier. Adding tests only.
2019-04-02 10:14:39 +04:00
Marko Mäkelä
bce380f2a5 Merge 10.1 into 10.2 2019-04-02 09:14:15 +03:00
Alexander Barkov
5201a1d080 MDEV-18240 Assertion `0' failed in Item_cache_timestamp::val_datetime_packed 2019-04-02 09:56:31 +04:00
Marko Mäkelä
b88f378648 Omit the definition of unused function yyset_extra()
This is follow-up for commit 619d22dde5
to fix the cmake -DWITH_EMBEDDED_SERVER build.
2019-04-02 08:50:53 +03:00
Alexander Barkov
1b4bb3b5bb MDEV-19124 Assertion `0' failed in Item::val_native 2019-04-02 09:13:16 +04:00
Monty
8840045021 index_merge_innodb did sometimes give wrong results
Fixed by adding more rows to a table

Other things:
- Speed up index_merge tests 20% by adding begin/commit around loops that
  generated rows.
2019-04-01 19:47:24 +03:00
Monty
48810a0014 MDEV-19116 Speed up rotation of binary logs
Fixed by caching last binary log number used in last_used_log_number

Other things:
- Moved locking of LOCK_log form new_file_impl() to new_file(). This fixed
  a bug where LOCK_log could have been unlocked even if 'need_lock' was
  not set.  Removed not anymore used argument need_lock.
- Made generate_new_name() virtual to simplify the code between
  other logs and binary log.

Reviewed by Andrei Elkin
2019-04-01 19:47:24 +03:00
Monty
adb7016214 MDEV-19117 Don't keep binary log index file locked during show binary logs
On some systems with 10,000+ binlogs, show binary logs could block
log rotation for more than 10 seconds.

This patch fixes this by first caching all binary log names and
releases all mutexes while calculating the sizes of the binary logs.

Other things:
- Ensure that reinit_io_cache() sets end_of_file when moving to read_cache.
  This ensures that external changes of the underlying file is known to
  the cache.
- get_binlog_list() is made more efficent and show_binlogs() is changed
  to call get_binlog_list()

Reviewed by Andrei Elkin
2019-04-01 19:47:24 +03:00
Monty
e3bffd579f Removed some warnings from -Wimplicit-fallthrough= with build scripts 2019-04-01 19:47:24 +03:00
Michael Widenius
b5615eff0d Write information about restart in .result
Idea comes from MySQL which does something similar
2019-04-01 19:47:24 +03:00
Michael Widenius
6fd7a4b601 Fixed uninitialized bug in Range_rowid_filter_cost_info 2019-04-01 19:47:24 +03:00
Monty
5b15f68e0f Fixed valgrind warning: Wrong usage of c_ptr() 2019-04-01 19:47:24 +03:00
Michael Widenius
48c6726b13 Updated valgrind.supp for OpenSLL 1.0.1l 2019-04-01 19:47:24 +03:00
Marko Mäkelä
d59ad6972b MDEV-19085: Fix a typo that was caught by GCC 5.4 2019-04-01 18:13:11 +03:00
Elena Stepanova
ab7b9cf912 Updated list of unstable tests for 10.3.14 release mariadb-10.3.14 2019-04-01 16:58:37 +03:00
Marko Mäkelä
8f01a17292 Merge 10.2 into 10.3 2019-04-01 14:25:41 +03:00
Marko Mäkelä
f055da9b84 MDEV-19085 Assertion failures due to virtual columns after upgrading from 10.1
MariaDB before MDEV-5800 in version 10.2.2 did not support
indexed virtual columns. Non-persistent virtual columns were
hidden from storage engines. Only starting with MDEV-5800, InnoDB
would create internal metadata on virtual columns.

Similar to what was done in MDEV-18084, MDEV-18090, MDEV-18960, we adjust
one more code path for the old tables.

innobase_build_col_map(): Allocate space for virtual columns in col_map[]
but leave the entries at ULINT_UNDEFINED, noting that the virtual columns
were missing before the table was being rebuilt.
2019-04-01 14:24:15 +03:00
Marko Mäkelä
619d22dde5 Rebuild the InnoDB lexical analyzers with flex 2.6.4
InnoDB includes 3 parsers, which use 3 lexical analyzers that
are generated with flex. Flex versions before 2.6 emitted
the keyword "register", which is deprecated in C++17.

The lexical analyzers were regenerated as follows:

for s in storage/innobase storage/xtradb
do
	(cd "$s"/pars; ./make_flex.sh)
	touch "$s"/fts/*.l
	make -C "$s"/fts -f Makefile.query
done
2019-04-01 13:03:18 +03:00
Sergei Petrunia
833071b857 Disable tests in rocksdb_stress suite (which was enabled a few commits ago) 2019-04-01 12:58:51 +03:00
Marko Mäkelä
10dd290b4b MDEV-17380 innodb_flush_neighbors=ON should be ignored on SSD
For tablespaces that do not reside on spinning storage, it does
not make sense to attempt to write nearby pages when writing out
dirty pages from the InnoDB buffer pool. It is actually detrimental
to performance and to the life span of flash ROM storage.

With this change, MariaDB will detect whether an InnoDB file resides
on solid-state storage. The detection has been implemented for Linux
and Microsoft Windows. For other systems, we will err on the safe side
and assume that files reside on SSD.

As part of this change, we will reduce the number of fstat() calls
when opening data files on POSIX systems and slightly clean up some
file I/O code.

FIXME: os_is_sparse_file_supported() on POSIX works in a destructive
manner. Thus, we can only invoke it when creating files, not when
opening them.

For diagnostics, we introduce the column ON_SSD to the table
INFORMATION_SCHEMA.INNODB_TABLESPACES_SCRUBBING. The table
INNODB_SYS_TABLESPACES might seem more appropriate, but its purpose
is to reflect the contents of the InnoDB system table SYS_TABLESPACES,
which we would like to remove at some point.

On Microsoft Windows, querying StorageDeviceSeekPenaltyProperty
sometimes returns ERROR_GEN_FAILURE instead of ERROR_INVALID_FUNCTION
or ERROR_NOT_SUPPORTED. We will silently ignore also this error,
and assume that the file does not reside on SSD.

On Linux, the detection will be based on the files
/sys/block/*/queue/rotational and /sys/block/*/dev.
Especially for USB storage, it is possible that
/sys/block/*/queue/rotational will wrongly report 1 instead of 0.

fil_node_t::on_ssd: Whether the InnoDB data file resides on
solid-state storage.

fil_system_t::ssd: Collection of Linux block devices that reside on
non-rotational storage.

fil_system_t::create(): Detect ssd on Linux based on the contents
of /sys/block/*/queue/rotational and /sys/block/*/dev.

fil_system_t::is_ssd(dev_t): Determine if a Linux block device is
non-rotational. Partitions will be identified with the containing
block device by assuming that the least significant 4 bits of the
minor number identify a partition, and that the "partition number"
of the entire device is 0.
2019-04-01 12:00:56 +03:00
Marko Mäkelä
23eeecd68f MDEV-19111 Unused field INFORMATION_SCHEMA.INNODB_TABLESPACES_SCRUBBING.ROTATING_OR_FLUSHING
The MDEV-11738/MDEV-11581 fix was supposed to add the column
ROTATING_OR_FLUSHING to the INFORMATION_SCHEMA table
INNODB_TABLESPACES_ENCRYPTION, but it also added that column to
INNODB_TABLESPACES_SCRUBBING in InnoDB (not XtraDB).

The extra column was never initialized. We will remove it,
because key rotation has nothing to do with the scrubbing of
tablespace data.
2019-04-01 10:32:03 +03:00
Marko Mäkelä
0ffea01da5 Merge 10.2 into 10.3 2019-04-01 09:22:19 +03:00
Alexander Barkov
2d825e97df Cleanup: removing unused type LEX_TYPE and #include 2019-04-01 10:09:24 +04:00
Sergei Petrunia
fe1dfe3928 MDEV-19089, part #2: mark rocksdb.deadlock as "big test"
It turns out, moving it to rocksdb_stress test suite is not that easy.
2019-03-30 20:00:13 +03:00
Sergei Petrunia
c2d9a346ff MDEV-19089 part #1: adapt rocksdb_stress suite for MariaDB 2019-03-30 19:53:29 +03:00
Heckad
17cbae6501 Fix error failed to compile regex
This error occurred when the path to the project contained regular expression characters.
2019-03-30 01:59:13 +04:00
Eugene Kosov
76934212eb remove unneeded code
rec_get_offsets() was previously called in a btr_cur_optimistic_update()
2019-03-29 23:42:26 +04:00
Eugene Kosov
b66164ab56 remove dead code 2019-03-29 23:40:28 +04:00
Sergei Golubchik
ed661a0e59 post-merge: -Werror fixes in 10.3 2019-03-29 19:42:01 +01:00
Sergei Golubchik
4e1d3f83b7 Merge branch '10.2' into 10.3 2019-03-29 19:41:41 +01:00
Vladislav Vaintroub
39f195052c MDEV-19068 - rename eventlog source to MariaDB. 2019-03-29 16:50:38 +01:00
Sergei Golubchik
a82cfe109c cleanup: move rbr-only test to rpl_row.test 2019-03-29 12:51:19 +01:00