Commit graph

180807 commits

Author SHA1 Message Date
Vladislav Vaintroub
ae05c1bb34 Keep the ER_OUT_OF_RESOURCES message short and OS neutral.
Remove the  tutorial about troubleshooting OOM on Unix from the message.
2018-01-18 14:35:26 +00:00
Marko Mäkelä
745e6498ea After-merge fix to a test 2018-01-18 09:28:37 +02:00
Marko Mäkelä
4ef2e43080 Merge bb-10.2-ext into 10.3 2018-01-17 16:33:40 +02:00
Marko Mäkelä
c6cd64f3cb Merge 10.2 into bb-10.2-ext 2018-01-17 16:22:27 +02:00
Marko Mäkelä
656f66def2 Follow-up fix to MDEV-14585 Automatically remove #sql- tables in InnoDB dictionary during recovery
If InnoDB is killed while ALTER TABLE...ALGORITHM=COPY is in progress,
after recovery there could be undo log records some records that were
inserted into an intermediate copy of the table. Due to these undo log
records, InnoDB would resurrect locks at recovery, and the intermediate
table would be locked while we are trying to drop it. This would cause
a call to row_rename_table_for_mysql(), either from
row_mysql_drop_garbage_tables() or from the rollback of a RENAME
operation that was part of the ALTER TABLE.

row_rename_table_for_mysql(): Do not attempt to parse FOREIGN KEY
constraints when renaming from #sql-something to #sql-something-else,
because it does not make any sense.

row_drop_table_for_mysql(): When deferring DROP TABLE due to locks,
do not rename the table if its name already starts with the #sql-
prefix, which is what row_mysql_drop_garbage_tables() uses.
Previously, the too strict prefix #sql-ib was used, and some
tables were renamed unnecessarily.
2018-01-17 16:21:56 +02:00
Marko Mäkelä
04eef79bf9 Do not define unused function mark_blocks_free()
Follow-up to commit 9ec19b9b41
2018-01-17 11:28:02 +02:00
Sergei Golubchik
8f102b584d Merge branch 'github/10.3' into bb-10.3-temporal 2018-01-17 00:45:02 +01:00
Sergei Golubchik
715a507e33 MDEV-14786 Server crashes in Item_cond::transform on 2nd execution of SP querying from a view
instead of skipping invalid items in setup_conds(),
don't pass them into a JOIN at all

(test case in versioning.select2)
2018-01-17 00:44:16 +01:00
Sergei Golubchik
1ea2b2956b Revert "MDEV-14786 Server crashes in Item_cond::transform on 2nd execution of SP querying from a view [fixes #436]"
This reverts commit 7069071d7d

And add a test to show that optimization steps that
a) are repeated for every execution
b) create new items
cannot be done on the statement arena
2018-01-17 00:44:16 +01:00
Sergei Golubchik
edb6375910 compilation warning on windows 2018-01-17 00:44:11 +01:00
Marko Mäkelä
f44017384a MDEV-14968 On upgrade, InnoDB reports "started; log sequence number 0"
srv_prepare_to_delete_redo_log_files(): Initialize srv_start_lsn.
2018-01-16 20:02:38 +02:00
Alexander Barkov
81378b3947 Moving a change_list related methods from THD to Item_change_list
1. Moving the following methods from THD to Item_change_list:
   nocheck_register_item_tree_change()
   check_and_register_item_tree_change()
   rollback_item_tree_changes()
   as they work only with the "change_list" member and don't
   require anything else from THD.
2. Deriving THD from Item_change_list

This change will help to fix "MDEV-14603 signal 11 with short stacktrace" easier.
2018-01-16 16:18:50 +04:00
Marko Mäkelä
d87531a6a0 Follow-up to MDEV-14952: Remove some more btr_get_search_latch()
Replace some !rw_lock_own() assertions with the stronger
!btr_search_own_any(). Remove some redundant btr_get_search_latch()
calls.

btr_search_update_hash_ref(): Remove a duplicated assertion.

btr_search_build_page_hash_index(): Remove a duplicated assertion.
rw_lock_s_lock() asserts that the latch is not being held.

btr_search_disable_ref_count(): Remove an assertion. The only caller
is acquiring all adaptive hash index latches.
2018-01-16 14:08:48 +02:00
Marko Mäkelä
2281fcf38a Follow-up fix to MDEV-14952 for Mariabackup
innodb_init_param(): Initialize btr_ahi_parts=1 for Mariabackup.

btr_search_enabled: Let the adaptive hash index be disabled
in Mariabackup. This would potentially only matter during --export,
and --export performs a table scan, not many index lookups.
2018-01-16 14:08:48 +02:00
Marko Mäkelä
be85c2dc88 Mariabackup --prepare: Do not access transactions or data dictionary
innobase_start_or_create_for_mysql(): Only start the data dictionary
and transaction subsystems in normal server startup and during
mariabackup --export.
2018-01-16 13:57:30 +02:00
Marko Mäkelä
33ecf8345d Follow-up fix to MDEV-14441: Fix a potential race condition
btr_cur_update_in_place(): Read block->index only once,
so that it cannot change to NULL after the first read.
When block->index != NULL, it must be equal to index.
2018-01-16 13:55:45 +02:00
Otto Kekäläinen
1d522353c8 Deb: wrap-and-sort -a the lib* packages in debian/control
This way all the libraries are listed in a logical order and it will later
be easier to compare the control file contents to downstream versions.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
3862d8bc89 Deb: wrap-and-sort -a 2018-01-16 13:48:00 +02:00
Otto Kekäläinen
72768cf188 Deb: Warn if sources contain a file that is not installed anywhere 2018-01-16 13:48:00 +02:00
Otto Kekäläinen
b5edb4ca3a Deb: Add missing files into correct packages and rest in not-installed
There was a lot of files generated by the sources that were not installed
in any package. This fixes most of those issues, but not all. Files still
outside any package are in the not-installed, which is used by dh_install.

Also make sure all configuration files are installed to the correct
location that matches layout used by Debian official packages.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
dbc9cfa52b Deb: .manpages files should only contain man pages unique to deb packages
All man pages that stem from the actual sources should be installed along
everything else in .install files.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
711e8c5634 MDEV-12642: Build deb source packages on buildbot, just not on Travis-CI 2018-01-16 13:48:00 +02:00
Otto Kekäläinen
a41192def8 Deb: Fix spelling etc Lintian complaints 2018-01-16 13:48:00 +02:00
Otto Kekäläinen
ed00fd2bce Deb: switch from usr/include/mysql to usr/include/mariadb
Matching libmariadb-dev package contents in official Debian repositories,
the MariaDB Connector/C files should go into a folder using the 'mariadb'
name. For compatibility with sources that expect to find 'mysql' stuff,
create a symlink from include/mysql to include/mariadb.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
5b3bf57be2 Deb: Install missing man pages 2018-01-16 13:48:00 +02:00
Otto Kekäläinen
be59851ad9 Deb: Match official Debian package libmariadb-dev-compat
Using this package any source that expects MySQL Client libraries should
build without changes. Sources that expect MariaDB Connector C should
build using only libmariadb-dev.

Current MariaDB Connector/C does not build quite identically in
this source tree compared to how it build in Debian official.
The remaining differences are tracked in MDEV-14921.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
9ef2268eda Deb: Simplify libmariadb.so.3 links
No path is required. These files always reside in the same directory
anyway.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
65db816c32 Deb: Split libmysqlclient19/20 compat links into a separate package
We already ship libmysqlclient18 that replaces any existing package
with the same name and install symlinks that point to out libmariadb.so.

Instead of creating more packages, we add just one more that does the
same and provides both libmysqlclient19 and -20 replacements symlinks.

This is a clean solution, because systems that only use (and are built
against) libmariadb will not need them and if somebody has done a mistake
in the linker parameters, they will spot it and can easily update the
filename to libmariadb.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
90f1f72622 Deb: Add missing files to packages
- tokuft_logprint should be shipped in the TokuDB plugin
- mysql_install_db is needed for installing/upgrading the datadir
  so it must be in the server core package so users can roll their
  own upgrades
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
503fcfb80f Deb: Re-remove unnecessary version suffixes from package names
There is no point in having version suffixes in plugin packages. They
will via their control file anyway depend on the correct server or client
version. Having version suffices has no benefit and it just complicates
upgrades when a new major version name package needs to replace all
possible previous version.

This issue was overlooked when merging commit
844a575946 from 10.2 into 10.3, so it
needs to be manually fixed now.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
9719fb4bef Deb: Re-rename *.files into *.install
The correct format for new Debian packages is to define install lists
as *.install files. This has already been fixed for 10.3, but it when
merging commit c5a525bda2 from 10.2, this
change was overlooked and a file of the old format slipped in.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
846517d9b7 Deb: Recover include/mariadb wrongly removed in commit 9b10b4181f
The libmariadb-dev package must include this directory so that downstream
developers can intentionally include MariaDB libraries as they want.

This matches the contents of the official Debian libmariadb-dev package.
2018-01-16 13:48:00 +02:00
Otto Kekäläinen
094938255d Deb: sync architecture restrictions from packaging in Debian official 2018-01-16 13:48:00 +02:00
Otto Kekäläinen
e260c6a087 Fix commit 9631d933fb so Travis CI doesn't fail
TokuDB and Mroonga are not built on Travis CI to save time. Previously
their packages were not created due to a hack in debian/rules, that got
removed in commit 9631d933fb. This change complements that commit.
2018-01-16 13:48:00 +02:00
Vladislav Vaintroub
da27dc995e Fix Windows build 2018-01-16 09:18:22 +00:00
Marko Mäkelä
822f4e6c10 Merge 10.2 into bb-10.2-ext 2018-01-16 07:51:02 +02:00
Marko Mäkelä
f5e158183c Follow-up fix to MDEV-14441: Correct a misplaced condition
btr_cur_update_in_place(): The call rw_lock_x_lock(ahi_latch) must
of course be inside the if (ahi_latch) condition. This is a mistake
that I made when backporting the fix-under-development from 10.3.
2018-01-16 07:50:15 +02:00
Sergei Petrunia
0292cd0a27 Better explanation why rpl_row_triggers is disabled. 2018-01-15 21:08:00 +03:00
Marko Mäkelä
0664d633e4 MDEV-14952 Avoid repeated calls to btr_get_search_latch()
btr_cur_search_to_nth_level(), btr_search_guess_on_hash(),
btr_pcur_open_with_no_init_func(), row_sel_open_pcur():
Replace the parameter has_search_latch with the ahi_latch
(passed as NULL if the caller does not hold the latch).

btr_search_update_hash_node_on_insert(),
btr_search_update_hash_on_insert(),
btr_search_build_page_hash_index(): Add the parameter ahi_latch.

btr_search_x_lock(), btr_search_x_unlock(),
btr_search_s_lock(), btr_search_s_unlock(): Remove.
2018-01-15 19:51:09 +02:00
Marko Mäkelä
4beb699a36 MDEV-14952 Avoid repeated calls to btr_get_search_latch()
btr_cur_search_to_nth_level(), row_sel(): Do not bother to yield to
waiting exclusive lock requests on the adaptive hash index latch.
When the btr_search_latch was split into an array of latches
in MySQL 5.7.8 as part of the Oracle Bug#20985298 fix, the "caching"
of the latch across storage engine API calls was removed. Thus,
X-lock requests should have a good chance of becoming served, and
starvation should not be possible.

btr_search_guess_on_hash(): Clean up a debug assertion.
2018-01-15 19:32:48 +02:00
Marko Mäkelä
542ad0fa3f btr_search_check_guess(): Remove the parameter 'mode'
Also, use 32-bit native reads to read the 32-bit aligned
FIL_PAGE_PREV and FIL_PAGE_NEXT reads, to compare them to the
byte order agnostic pattern FIL_NULL (0xffffffff).
2018-01-15 19:32:36 +02:00
Marko Mäkelä
12f804acfa MDEV-14441 Deadlock due to InnoDB adaptive hash index
This is mere code clean-up; the reported problem was already fixed
in commit 3fdd390791.

row_sel(): Remove the variable search_latch_locked.

row_sel_try_search_shortcut(): Remove the parameter
search_latch_locked, which was always passed as nonzero.

row_sel_try_search_shortcut(), row_sel_try_search_shortcut_for_mysql():
Do not expect the caller to acquire the AHI latch. Instead,
acquire and release it inside this function.

row_search_mvcc(): Remove a bogus condition on mysql_n_tables_locked.
When the btr_search_latch was split into an array of latches
in MySQL 5.7.8 as part of the Oracle Bug#20985298 fix, the "caching"
of the latch across storage engine API calls was removed, and
thus it is unnecessary to avoid adaptive hash index searches
during INSERT...SELECT.
2018-01-15 19:18:47 +02:00
Marko Mäkelä
458e33cfbc MDEV-14441 Deadlock due to InnoDB adaptive hash index
This is not fixing the reported problem, but a potential problem that was
introduced in MDEV-11369.

row_sel_try_search_shortcut(), row_sel_try_search_shortcut_for_mysql():
When an adaptive hash index search lands on top of rec_is_default_row(),
we must skip the candidate and perform a normal search. This is because
the adaptive hash index latch only protects the record from being deleted
but does not prevent concurrent inserts into the page. Therefore, it is not
safe to dereference the next-record pointer.
2018-01-15 19:12:30 +02:00
Marko Mäkelä
4ef25dbfd8 Merge bb-10.2-ext into 10.3 2018-01-15 19:11:28 +02:00
Marko Mäkelä
e2e740030d Merge 10.2 into bb-10.2-ext 2018-01-15 19:07:02 +02:00
Marko Mäkelä
3fdd390791 MDEV-14441 InnoDB hangs when setting innodb_adaptive_hash_index=OFF during UPDATE
This race condition is a regression caused by MDEV-12121.

btr_cur_update_in_place(): Determine block->index!=NULL only once
in order to determine whether an adaptive hash index bucket needs
to be exclusively locked and unlocked.

If we evaluated block->index multiple times, and the adaptive hash
index was disabled before we locked the adaptive hash index, then
we would never release the adaptive hash index bucket latch, which
would eventually lead to InnoDB hanging.
2018-01-15 19:02:38 +02:00
Monty
abbce9ed56 Fixed compiler warnings in guess_malloc_library 2018-01-15 16:44:44 +02:00
Marko Mäkelä
39f236a2f5 Merge 10.2 into bb-10.2-ext 2018-01-15 16:41:10 +02:00
Marko Mäkelä
9c6fc7b644 Fix -Wsign-compare introduced by Compilation speed (#546) 2018-01-15 16:38:16 +02:00
Marko Mäkelä
27b6b2625e Merge 10.1 into 10.2 2018-01-15 16:22:35 +02:00