Commit graph

186353 commits

Author SHA1 Message Date
Vladislav Vaintroub
0179aad633 Windows, compiling : Reenable /MP for connect engine.
Remove this flag only from domdoc.cpp, which uses #import directive.
2019-06-30 17:48:19 +02:00
Vladislav Vaintroub
460de628a9 In case WITH_WSREP is enabled, build wsrep as plugin
If it is not enabled, build wsrep as static "stub" library from wsrep_dummy.cc
´

Allow static plugins to export symbols (on Unix)
wsrep_info relies on wsrep defined symbols (e.g  LOCK_wsrep_config_state)
exported from mysqld
2019-06-30 17:48:19 +02:00
Vladislav Vaintroub
db80f04751 Cleanup - do not dllexport statically built plugins 2019-06-30 17:48:19 +02:00
Vladislav Vaintroub
6dc71d4f10 improve build, allow sql library to be built in parallel with builtins 2019-06-30 17:48:19 +02:00
Vladislav Vaintroub
a89f1faf7b Remove feedback from Windows MSI
Not much use of this feature so far.
2019-06-30 17:48:19 +02:00
Alexander Barkov
cccfa9dcfe MDEV-19908 Add class Type_collection 2019-06-29 09:48:54 +04:00
Alexander Barkov
5de9dd7b47 A cleanup for MDEV-19897 Rename source code variable names from utf8 to utf8mb3
`cmake . -DWITH_EXTRA_CHARSETS=complex` did not compile.
Fixing forgotten "utf8" to "utf8mb3" in definitions of
CHARSET and CHARSETS_AVAILABLE in cmake/character_sets.cmake
2019-06-28 21:12:57 +04:00
Alexander Barkov
3e7e87ddcc MDEV-19897 Rename source code variable names from utf8 to utf8mb3 2019-06-28 12:37:04 +04:00
Alexander Barkov
323a87b591 MDEV-19888 Add abstract class Item_json_func 2019-06-28 12:35:02 +04:00
Vladislav Vaintroub
cff7cf15d7 Windows MSI : small cleanups, disable Windows 7/8 2019-06-27 20:05:01 +02:00
Vladislav Vaintroub
74a744b51f Windows : Do not package redistributable C runtime , nor merge modules into Windows
installers

Rely on Universal CRT to be on every computer we install.
2019-06-27 19:33:25 +02:00
Vladislav Vaintroub
b60aee58c7 MDEV-17279 Windows : link C runtime dynamically
Improve previous patch so we do not depend on (tiny) compiler-version
dependent libraries, i.e vcruntime140.dll, and msvcp140.dll

The remaining dependency is Universal CRT, is part of Win10+ OS,
and should already be installed by Windows update on most downlevel
systems.
2019-06-27 19:25:33 +02:00
Vladislav Vaintroub
93942dfe8f Windows - simplify code in my_getsystime.
Do not load GetSystemTimePreciseAsFileTime() dynamically - it is available
since Windows 8. Win7 is going out of support before 10.5 reaches GA.
2019-06-27 19:19:37 +02:00
Monty
79cd2f5ef1 Added type conversion to fix compilation error on windows 2019-06-27 01:58:48 +03:00
Monty
e133aa1e2e Added testcase for MDEV-19585
MDEV-19585  Assertion with S3 table and flush_tables
2019-06-27 01:33:15 +03:00
Monty
1a41fc77dd Merge remote-tracking branch 'origin/10.4' into 10.5 2019-06-27 01:21:41 +03:00
Monty
8e2a24bb33 Added s3_protocol_version=auto 2019-06-26 23:39:13 +03:00
Monty
0765d823e4 Updated to latest libmarias3 to fix some compatiblity issues 2019-06-26 23:39:12 +03:00
Monty
f48943468f MDEV-19575 Fixed assert in ma_pagecache
There was a bug in the page cache that didn't take into account that
another thread could be waiting for a page to be read by read_big_block().
Fixed by releasing all waiters in read_big_block()
2019-06-26 23:39:12 +03:00
Monty
f44c687815 S3: Don't do discover in mysql database (makes boot faster and safer) 2019-06-26 23:32:30 +03:00
Monty
9ca517613a BUILD scripts: Don't build with-plugin-test_sql_discovery staticly 2019-06-26 23:32:30 +03:00
Vlad Lesin
5c5ea59bf8 MDEV-19867: fix mysqldump to by default not copy S3 tables
There are two options when coping S3 tables with mysqldump
(there is startup option --copy_s3_tables, boolean, default no)
1) Ignore all tables with engine S3, as the data is already safe in S3 and any
computer where you restore the backup will automatically discover the S3 table.
2) Copy the table as a normal table with the following 2 changes:
- Change ENGINE=S3 to ENGINE=ARIA;
- After copy add to log 'ALTER TABLE table_name ENGINE=S3'
2019-06-26 20:59:35 +03:00
Monty
bb702c2e4c Limit minium aria_block_size to 4096
MDEV-19585  Assertion with S3 table and flush_tables

The limit has to be increased so that MariaDB can create system tables.
It should not have any notable impact on performance.

There should not be any notable performance differences between 1K and 4K,
especially for temporary tables. In most cases using bigger blocks is also
faster (with the possible exception of doing key reads of not fixed length
keys).
2019-06-26 20:41:44 +03:00
Monty
4dbe6776fb MDEV-19585 Assertion with S3 table and flush_tables
The problem was two fault:
- flush_tables() wrongly gave errors when failing to open read only tables
- backup_block_ddl() didn't properly ignores errors from flush_tables()

The test case for this will be pushed in 10.5 as the test involves
S3 tables.
2019-06-26 19:58:27 +03:00
Eugene Kosov
12ce066edf MDEV-17441 InnoDB transition to C++11 atomics
os0once.h: remove as not used now
2019-06-26 13:12:30 +03:00
Eugene Kosov
adb640e25a MDEV-17441 InnoDB transition to C++11 atomics
zip_pad_info_t::mutex_created: remove along with corresponding stuff

zip_pad_info_t::mutex: make member value instead of a pointer
2019-06-26 13:12:29 +03:00
Eugene Kosov
52a5097764 MDEV-17441 InnoDB transition to C++11 atomics
dict_table_t::stats_latch_created: remove along with related stuff

dict_table_t::stats_latch: make value member, not pointer. And always lock this
for simplicity, even to stats cloned table.

based on the work of Sergey Vojtovich
2019-06-26 13:12:29 +03:00
Sergey Vojtovich
e9a5f288f2 MDEV-17441 - InnoDB transition to C++11 atomics
Get rid of os_once.
2019-06-26 13:12:29 +03:00
Vlad Lesin
878ad986fd MDEV-19464: Altering partitioned table into S3 causes an obscure error
The error occured because aria_copy_to_s3() function tried to copy .frm file
of partition, but partition does not have it's own .frm file. The same is true
for aria_rename_s3().

To fix this issue the new parameter was added to those two functions to specify
if .frm file must be copied or not. The parameter is set to 'false' for
partitions.

Also there was other issue with EXCHANGE PARTITION. Briefly, there is the
following sequence of operations(see  exchange_name_with_ddl_log() for details):
1) rename swap table to temporary table,
2) rename partition to swap table,
3) rename temporary table to partition.

On step (1) .frm file is renamed too. On step (2) the swap table does not
have .frm file, as partition does not have it. On step (3) partition will have
.frm file, because it will be renamed from temporary table. All of this causes
error on different stages of the table access. To fix it, .frm is not touched
at all for s3 during EXCHANGE PARTITION operation. This is implemented in
ha_s3::rename_table() by additional checking of
current_thd->lex->alter_info.partition_flags(see also ALTER_PARTITION_EXCHANGE
in sql_yacc.yy).
2019-06-26 13:01:32 +03:00
Sachin
04ee96199e MDEV-19049 Server crashes in check_duplicate_long_entry_key, ASAN stack-buffer-overflow in Field_blob::get_key_image
Long Unique keys should always be last unique key.
2019-06-26 11:31:26 +05:30
Alexander Barkov
6f3612fa4d MDEV-19861 Add intfastructure to have ENUM columns in INFORMATION_SCHEMA 2019-06-26 06:46:55 +04:00
Alexander Barkov
677133f1b3 MDEV-19863 Add const to TYPELIB pointers 2019-06-26 05:29:44 +04:00
Vladislav Vaintroub
9e0ed0fabd MDEV-19860 - do not produce huge strings wtih comp_sql anymore.
Limit lines to ~16K
2019-06-25 23:53:42 +02:00
Igor Babaev
1a518aa1d2 MDEV-19820 Wrong result with multiple single column index request
The bug occured when the optimizer decided to use a rowid filter built
by a range index scan to access an InnoDB table with generated clustered
index.
When a table is accessed by a secondary index Idx employing a rowid filter the
the value of pk contained in the found index tuple is checked against the
filter. A call of the handler function position is supposed to put the
pk value into the handler::ref buffer. However for generated clustered
primary keys it did not happened. The patch fixes this problem.
2019-06-25 08:06:39 -07:00
Monty
8d4c159b1b Added s3_debug to be able to debug s3 connections 2019-06-25 13:09:06 +03:00
Ian Gilfillan
65368255ff MDEV-6521: Update server HELP contents 2019-06-25 12:33:56 +03:00
Monty
e6297bbe37 Updated to latest libmarias3 2019-06-24 12:14:31 +03:00
Monty
6aebaafe03 Added S3 test case with InnoDB 2019-06-24 12:13:19 +03:00
Alexander Barkov
c62eaa7bdf MDEV-19843 Modify ST_FIELD_INFO to use Type_handler and LEX_CSTRING 2019-06-24 06:25:16 +04:00
Alexander Barkov
5e474f92b5 MDEV-19836 Reuse new I_S table definition helper classes for RocksDB 2019-06-24 06:25:16 +04:00
Eugene Kosov
a82e42fd13 NFC: refactor Field::is_equal() and related stuff
Make Field::is_equal() const and return bool as it's a naturally fitting
type for it. Also it's agrument was narrowed to Column_definition.

InnoDB can change type of some columns by itself. InnoDB-specific code used to
reside in Field_xxx:is_equal() methods. Now engine-specific stuff was
moved to a virtual methods of handler::can_convert{string,varstring,blob,geom}.
These methods are called by Field::can_be_converted_by_engine() which is a
double dispatch pattern.

Some InnoDB-specific code still resides in compare_keys_but_name(). It should
be moved from here someday to handler::compare_key_parts(...) or similar.

IS_EQUAL_WITH_REINTERPRET_COMPATIBLE_CHARSET
IS_EQUAL_WITH_REINTERPRET_COMPATIBLE_CHARSET_BUT_COLLATE: both was removed

IS_EQUAL_NO, IS_EQUAL_YES are not needed now and should be removed
along with deprecated handler::check_if_incompatible_data().

HA_EXTENDED_TYPES_CONVERSION: was removed as such logic is not needed now by
server code.

ALTER_COLUMN_EQUAL_PACK_LENGTH: was renamed to a more generic
ALTER_COLUMN_TYPE_CHANGE_BY_ENGINE
2019-06-22 14:09:12 +03:00
Eugene Kosov
854c219a7f MDEV-17301 Change of COLLATE unnecessarily requires ALGORITHM=COPY
Patch is about two cases:
1) On some collate changes it's possible to rebuild only secondary indexes
2) For non-indexed columns collate can be changed INSTANTly

Implemented mostly in Field_{string,varstring,blob}::is_equal().
Make this method return how exactly collationa differs.
This information is later used by fill_alter_inplace_info() to pass
correct info to engine.
2019-06-22 14:09:12 +03:00
Vladislav Vaintroub
72d3676fe5 remove workaround from MDEV-9409 2019-06-22 11:56:59 +02:00
Alexander Barkov
8d0983330f MDEV-19833 Reuse new I_S table definition helper classes for Mronga 2019-06-22 06:03:33 +04:00
Alexander Barkov
1cbbe35450 MDEV-19832 Reuse new I_S table definition helper classes for Spider 2019-06-22 05:45:48 +04:00
Alexander Barkov
e9a692fe1e MDEV-19819 ALTER from POINT to LINESTRING erroneously preserves POINT values 2019-06-21 17:18:28 +04:00
Alexander Barkov
1c27a050e5 MDEV-19818 Reuse new I_S table definition helper classes for TokuDB 2019-06-21 06:48:04 +04:00
Alexander Barkov
9561b0b47e MDEV-19810 Reuse new I_S table definition helper classes for InnoDB 2019-06-20 11:40:33 +04:00
Varun Gupta
8b576616b4 MDEV-19776: Assertion `to_len >= 8' failed in convert_to_printable with optimizer trace enabled
Introduced the convert_to_printable_required_length to return the correct length(taking into
consideration of dots in the case of error messages).
2019-06-20 12:03:32 +05:30
Marko Mäkelä
49e5323dbd Merge 10.4 into 10.5 2019-06-20 09:22:10 +03:00