Commit graph

185156 commits

Author SHA1 Message Date
Marko Mäkelä
c676de1692 Fix the non-debug build 2019-04-03 21:00:13 +03:00
Marko Mäkelä
28636a92ed Merge 10.1 into 10.2 2019-04-03 19:58:47 +03:00
Marko Mäkelä
cad56fbaba MDEV-18733 MariaDB slow start after crash recovery
If InnoDB crash recovery was needed, the InnoDB function srv_start()
would invoke extra validation, reading something from every InnoDB
data file. This should be unnecessary now that MDEV-14717 made
RENAME operations crash-safe inside InnoDB (which can be
disabled in MariaDB 10.2 by setting innodb_safe_truncate=OFF).

dict_check_sys_tables(): Skip tables that would be dropped by
row_mysql_drop_garbage_tables(). Perform extra validation only
if innodb_safe_truncate=OFF, innodb_force_recovery=0 and
crash recovery was needed.

dict_load_table_one(): Validate the root page of the table.
In this way, we can deny access to corrupted or mismatching tables
not only after crash recovery, but also after a clean shutdown.
2019-04-03 19:56:03 +03:00
Marko Mäkelä
7984ea80de Remove a useless CHECK TABLE printout for debug builds 2019-04-03 19:56:03 +03:00
Marko Mäkelä
6a9b216301 Fix clang -Wunused-private-field 2019-04-03 19:50:51 +03:00
Marko Mäkelä
1f3bcff1f2 Remove unused declarations 2019-04-03 19:46:34 +03:00
Marko Mäkelä
fa14784301 Fix more -Wnonnull-compare
For some reason, GCC 8 did not issue warnings for all such comparisons.
2019-04-03 19:21:54 +03:00
Marko Mäkelä
a1ec7ac4f4 Clean up table_name_t
row_is_mysql_tmp_table_name(): Replaced with
dict_table_t::is_temporary_name() and table_name_t::is_temporary().

table_name_t: Add constructors.
2019-04-03 16:09:16 +03:00
Marko Mäkelä
532fffb4cc Fix the non-debug build 2019-04-03 14:07:18 +03:00
Marko Mäkelä
c6b8b05be4 Merge 10.2 into 10.3 2019-04-03 11:22:51 +03:00
Marko Mäkelä
03672a0573 MDEV-11487: Remove dict_table_get_n_sys_cols()
In MariaDB, InnoDB tables will always contain DATA_N_SYS_COLS = 3
columns, 2 or 3 of which are present in the clustered index.
We remove the predicate that was added in MySQL 5.7 as part of WL#7682.
2019-04-03 11:02:55 +03:00
Marko Mäkelä
dbc716675b Merge 10.1 into 10.2 2019-04-03 10:32:21 +03:00
Marko Mäkelä
c0fca2863b Fix -Wnonnull-compare
InnoDB and XtraDB had redundant assertions for checking that
function parameters that were declared as nonnull were not NULL.
2019-04-03 09:46:49 +03:00
Marko Mäkelä
977d7a7572 Merge 10.2 into 10.3 2019-04-03 08:21:43 +03:00
Marko Mäkelä
849734376a Merge bb-10.3-release into 10.3 2019-04-03 08:21:00 +03:00
Sergei Golubchik
65d758aa89 MDEV-18298 Crashes server with segfault during role grants
it was supposed to be `*(p-1)` not `*p-1`
(the crash happens if `*p==0`)
2019-04-02 18:22:37 +02:00
Sergei Golubchik
409f69cd74 cmake: only search for libraries that are needed
in particular, don't search for libjemalloc.a, which is only
needed for tokudb's ftcxx tests, when the tests aren't going
to be built.
2019-04-02 18:22:37 +02:00
Sergei Golubchik
7b527e6334 cmake: fix krb5 detection on SUSE
`zypper install krb5-devel` installs executables outside of $PATH.
It also installs /etc/profile.d/krb5.sh that is sourced by a new
shell to add the new location to the $PATH. But this doesn't affect
the current shell.

Now decent Linux distros remind the user to run `. /etc/profile`
to reload paths in such a case. SUSE doesn't and for a good reason -
it doesn't work there. Because SUSE sets PROFILEREAD=true in the
environment and /etc/profile does not do anything.

By this point, one should not really expect `unset PROFILEREAD` to help,
and it does not - PROFILEREAD is readonly, and cannot be unset.

Apparently SUSE really *really* wants you to re-login between installing
MariaDB build dependencies and actually running the rpmbuild.

Which we cannot do it buildbot. And it would look very user-un-friendly
in the Build Instructions section of the manual.

So, we work around it - by adding SUSE krb5 path to the search list.

THIS IS SUSEEEEEE!!!
2019-04-02 18:22:37 +02:00
Sergei Golubchik
0b2042fdca speedup RPM builds
Filter out most common file types from automatic dependency collection.
This makes `make package`  in centos73 VM three times faster
2019-04-02 18:22:37 +02:00
Daniel Bartholomew
f5176c2dfa bump the VERSION 2019-04-02 11:31:53 -04:00
Marko Mäkelä
e3f44d8d0e MDEV-19085: Remove a bogus debug assertion
MariaDB does support InnoDB tables with no stored columns.
(They are necessarily empty.)
2019-04-02 16:40:27 +03:00
Marko Mäkelä
44e64fd7e0 Merge 10.2 into 10.3 2019-04-02 13:48:42 +03:00
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
Marko Mäkelä
7b42d892de Merge 10.2 into 10.3 2019-04-02 09:19:34 +03:00
Marko Mäkelä
bce380f2a5 Merge 10.1 into 10.2 2019-04-02 09:14:15 +03: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
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 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ä
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
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
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
Sergei Golubchik
a82cfe109c cleanup: move rbr-only test to rpl_row.test 2019-03-29 12:51:19 +01:00
Nikita Malyavin
39d7e5969b MDEV-16252: MINIMAL binlog_row_image does not work for versioned tables
* mark columns for binlog before inserting history row

Closes #822
2019-03-29 12:51:19 +01:00
Sergei Golubchik
8123d79911 MDEV-15951 system versioning by trx id doesn't work with partitioning
Clarify the error message, use the wording from the manual.

Closes #870
2019-03-29 12:51:19 +01:00
Nikita Malyavin
e6230e844c MDEV-15951 system versioning by trx id doesn't work with partitioning
Fix partitioning for trx_id-versioned tables.
`partition by hash`, `range` and others now work.
`partition by system_time` is forbidden.
Currently we cannot use row_start and row_end in `partition by`, because
insertion of versioned field is done by engine's handler, as well as
row_start/row_end's value set up, which is a transaction id -- so it's
also forbidden.

The drawback is that it's now impossible to use `partition by key()`
without parameters for such tables, because it references row_start and
row_end implicitly.

* add handler::vers_can_native()
* drop Table_scope_and_contents_source_st::vers_native()
* drop partition_element::find_engine_flag as unused
* forbid versioning partitioning for trx_id as not supported
* adopt vers tests for trx_id partitioning
* forbid any row_end referencing in `partition by` clauses,
  including implicit `by key()`
2019-03-29 12:51:19 +01:00
Aleksey Midenkov
f6ee132491 Versioning tests stability improvement
Fix SELECT resultset order.
2019-03-29 12:51:19 +01:00
Aleksey Midenkov
8df04fb894 MDEV-15412 For any non-existing transaction ID, AS OF provides the current table contents without a warning
Fail with error on non-existing TRX_ID.

Closes #832
2019-03-29 12:51:19 +01:00
Ian Gilfillan
65bd38204b Update 10.2 man pages 2019-03-29 14:11:29 +04:00
Ian Gilfillan
5c0bb0766d Update 10.3 man pages 2019-03-29 13:59:26 +04:00
Sergei Golubchik
cc71e7501c post-merge: -Werror fixes in 10.2 2019-03-29 10:58:25 +01:00