Commit graph

176421 commits

Author SHA1 Message Date
Jan Lindström
3dd6fca774 Fix test failure on innodb-trim.
Skip test if system can't do trim operation.
2017-01-27 14:18:41 +02:00
Marko Mäkelä
406e113e9a MDEV-11915 Detect InnoDB system tablespace size mismatch early
InnoDB would refuse to start up if there is a mismatch on
the size of the system tablespace files. However, before this
check is conducted, the system tablespace may already have been
heavily modified.

InnoDB should perform the size check as early as possible.

recv_recovery_from_checkpoint_finish():
Move the recv_apply_hashed_log_recs() call to
innobase_start_or_create_for_mysql().

innobase_start_or_create_for_mysql(): Test the mutex functionality
before doing anything else. Use a compile_time_assert() for a
sizeof() constraint. Check the size of the system tablespace as
early as possible.
2017-01-27 13:05:07 +02:00
Marko Mäkelä
3271da11c4 MDEV-11814 Refuse innodb_read_only startup if crash recovery is needed
recv_scan_log_recs(): Remember if redo log apply is needed,
even if starting up in innodb_read_only mode.

recv_recovery_from_checkpoint_start_func(): Refuse
innodb_read_only startup if redo log apply is needed.
2017-01-27 13:01:56 +02:00
Marko Mäkelä
8daa87dc06 Fix a test. 2017-01-27 12:21:31 +02:00
Marko Mäkelä
ea9caea87e MDEV-11814 test fix
Do not kill the server after call mtr.add_suppression(), because
the procedure modifies a crash-unsafe table, and we do not want to
corrupt that table.
2017-01-27 12:17:03 +02:00
Jan Lindström
4ee7174479 Fix test failure on innodb-trim.
Do wait only if innodb_num_page_compressed_trim_op shows that
we have succeed to do at least few trim operations (and
that will happen on insert if possible).
2017-01-27 11:26:28 +02:00
Marko Mäkelä
732672c304 MDEV-11233 CREATE FULLTEXT INDEX with a token longer than 127 bytes
crashes server

This bug is the result of merging the Oracle MySQL follow-up fix
BUG#22963169 MYSQL CRASHES ON CREATE FULLTEXT INDEX
without merging the base bug fix:
Bug#79475 Insert a token of 84 4-bytes chars into fts index causes
server crash.

Unlike the above mentioned fixes in MySQL, our fix will not change
the storage format of fulltext indexes in InnoDB or XtraDB
when a character encoding with mbmaxlen=2 or mbmaxlen=3
and the length of a word is between 128 and 84*mbmaxlen bytes.
The Oracle fix would allocate 2 length bytes for these cases.

Compatibility with other MySQL and MariaDB releases is ensured by
persisting the used maximum length in the SYS_COLUMNS table in the
InnoDB data dictionary.

This fix also removes some unnecessary strcmp() calls when checking
for the legacy default collation my_charset_latin1
(my_charset_latin1.name=="latin1_swedish_ci").

fts_create_one_index_table(): Store the actual length in bytes.
This metadata will be written to the SYS_COLUMNS table.

fts_zip_initialize(): Initialize only the first byte of the buffer.
Actually the code should not even care about this first byte, because
the length is set as 0.

FTX_MAX_WORD_LEN: Define as HA_FT_MAXCHARLEN * 4 aka 336 bytes,
not as 254 bytes.

row_merge_create_fts_sort_index(): Set the actual maximum length of the
column in bytes, similar to fts_create_one_index_table().

row_merge_fts_doc_tokenize(): Remove the redundant parameter word_dtype.
Use the actual maximum length of the column. Calculate the extra_size
in the same way as row_merge_buf_encode() does.
2017-01-27 10:19:39 +02:00
Jan Lindström
ebdf70db2a Fix test failure on innodb-wl5522
Added flush tables to avoid corruption of mtr/test_suppressions
table.
2017-01-27 09:13:48 +02:00
Jan Lindström
fea4959a0d Fix test failure on gcol.innodb_virtual_basic. 2017-01-27 09:08:15 +02:00
Marko Mäkelä
f1f8ebc325 Merge 10.0 into 10.1 2017-01-26 23:40:11 +02:00
Marko Mäkelä
afb461587c MDEV-11915 Detect InnoDB system tablespace size mismatch early
InnoDB would refuse to start up if there is a mismatch on
the size of the system tablespace files. However, before this
check is conducted, the system tablespace may already have been
heavily modified.

InnoDB should perform the size check as early as possible.

recv_recovery_from_checkpoint_finish():
Move the recv_apply_hashed_log_recs() call to
innobase_start_or_create_for_mysql().

innobase_start_or_create_for_mysql(): Test the mutex functionality
before doing anything else. Use a compile_time_assert() for a
sizeof() constraint. Check the size of the system tablespace as
early as possible.
2017-01-26 23:10:36 +02:00
Vladislav Vaintroub
a5f6b4f9fd Fix the code to determine sector size on Windows volume.
DeviceIoControl(IOCTL_STORAGE_QUERY_PROPERTY) needs volume handle,
not the handle to ordinary file.
2017-01-26 17:39:36 +00:00
Vladislav Vaintroub
def258061b increase default for max threads in the pool to max allowed value (64K) currently 2017-01-26 17:39:36 +00:00
Marko Mäkelä
6fbfb4c83c Merge pull request #298 from iangilfillan/10.1
Minor typo
2017-01-26 16:19:29 +02:00
Alexey Botchkov
d96ee168a1 MDEV-11557 port MySQL-5.7 JSON tests to MariaDB.
paths ending on [0]..[0] should be handled in conforming manner.
2017-01-26 16:35:05 +04:00
Marko Mäkelä
49fe9bad01 MDEV-11814 Refuse innodb_read_only startup if crash recovery is needed
recv_scan_log_recs(): Remember if redo log apply is needed,
even if starting up in innodb_read_only mode.

recv_recovery_from_checkpoint_start_func(): Refuse
innodb_read_only startup if redo log apply is needed.
2017-01-26 13:58:58 +02:00
iangilfillan
ee3febae04 Minor typo 2017-01-26 13:51:03 +02:00
Jan Lindström
71495a1748 MDEV-11849: Fix storage/innobase/* compile warnings 2017-01-26 08:05:24 +02:00
Jan Lindström
45f451c769 MDEV-11850: Can't create foreign key referencing a virtual column
Both dict_foreign_find_index and dict_foreign_qualify_index
did not consider virtual columns as possible foreign key
columns and there was assertion to disable virtual columns.

Fixed by also looking referencing and referenced column
from virtual columns if needed.
2017-01-26 08:05:23 +02:00
Sergei Petrunia
4113f1a7b7 Merge branch 'grooverdan-10.1-MDEV-11866-ANALYZE-FORMAT=JSON-volatility-normalise' into 10.1 2017-01-26 02:57:12 +03:00
Sergei Petrunia
9394bc06d8 Merge branch '10.1-MDEV-11866-ANALYZE-FORMAT=JSON-volatility-normalise' of git://github.com/grooverdan/mariadb-server into grooverdan-10.1-MDEV-11866-ANALYZE-FORMAT=JSON-volatility-normalise 2017-01-26 02:56:49 +03:00
Marko Mäkelä
c6039a11c6 Fix a test. 2017-01-25 16:38:45 +02:00
Marko Mäkelä
e92ee13254 Import and adjust a test from MySQL 5.7. 2017-01-25 16:05:32 +02:00
Marko Mäkelä
0b1a40852c Replace fil_node_t::is_open with fil_node_t::is_open().
This should be a non-functional change (apart from removing the
redundant data field).
2017-01-25 16:00:34 +02:00
Marko Mäkelä
8afe4faab9 Fix fil_ibd_open() on Windows.
In the merge of MDEV-11623 from 10.1 to 10.2, we added a call to
fsp_flags_try_adjust() which causes the data file to be opened
via the buffer pool while fil_ibd_open() is holding another open
handle to the file.
2017-01-25 15:57:21 +02:00
Sachin Setiya
86ca1357b0 Revert "MDEV-7409 On RBR, extend the PROCESSLIST info to include at least the name of the recently used table"
This reverts commit 15f46d5174.
2017-01-25 17:15:14 +05:30
Jan Lindström
8531e19771 buf_page_t is class on 10.2 not struct. 2017-01-25 12:33:39 +02:00
Jan Lindström
4b28798f95 Fix compiler error on x86. 2017-01-25 10:04:14 +02:00
Jan Lindström
17430a802b MDEV-11905: encryption.innodb-discard-import test fails
Problem was that on import with buffered input/output
trim is not possible as we write several pages in
one write.
2017-01-25 08:54:02 +02:00
Jan Lindström
ddc14d8eb7 MDEV-10942: innodb_zip.innochecksum_3, innodb_zip.innochecksum_2
fail in buildbot.

Fixed test results.
2017-01-25 08:54:02 +02:00
Jan Lindström
84895c3cd7 Fix compiler error on x86. 2017-01-25 08:54:02 +02:00
Igor Babaev
423b7da36f Fixed bug mdev-11820.
The fields st_select_lex::cond_pushed_into_where and
st_select_lex::cond_pushed_into_having should be re-initialized
for the unit specifying a derived table at every re-execution
of the query that uses this derived table, because the result
of condition pushdown may be different for different executions.
2017-01-24 13:12:20 -08:00
Alexey Botchkov
35760c0000 MDEV-11557 Port MySQL-5.7 JSON tests to MariaDB.
more fixes.
2017-01-25 00:13:15 +04:00
Alexey Botchkov
1782102d97 MDEV-11042 Implement GeoJSON functions.
Typenames made into proper character case.
2017-01-24 22:39:55 +04:00
Varun Gupta
6cdbf2027e MDEV-11108: adjusted test results 2017-01-24 21:02:43 +05:30
Alexey Botchkov
50831b0f19 MDEV-11557 port MySQL-5.7 JSON tests to MariaDB.
json_no_table.test ported.
2017-01-24 17:34:44 +04:00
Jan Lindström
e5398aca76 Native AIO should also punch_hole if available. 2017-01-24 15:33:42 +02:00
Alexander Barkov
106fbadaba MDEV-11848 Automatic statement repreparation changes query semantics 2017-01-24 17:29:51 +04:00
Alexander Barkov
ae91690d89 MDEV-11780 Crash with PREPARE + SP out parameter + literal
Before "MDEV-10709 Expressions as parameters to Dynamic SQL" only
user variables were syntactically allowed as EXECUTE parameters.
User variables were OK as both IN and OUT parameters.
When Item_param was bound to an actual parameter (a user variable),
it automatically meant that the bound Item was settable.
The DBUG_ASSERT() in Protocol_text::send_out_parameters() guarded that
the actual parameter is really settable.

After MDEV-10709, any kind of expressions are allowed as EXECUTE IN parameters.
But the patch for MDEV-10709 forgot to check that only descendants of
Settable_routine_parameter should be allowed as OUT parameters.
So an attempt to pass a non-settable parameter as an OUT parameter
made server crash on the above mentioned DBUG_ASSERT.

This patch changes Item_param::get_settable_routine_parameter(),
which previously always returned "this". Now, when Item_param is bound
to some Item, it caches if the bound Item is settable.
Item_param::get_settable_routine_parameter() now returns "this" only
if the bound actual parameter is settable, and returns NULL otherwise.
2017-01-24 17:22:06 +04:00
Jan Lindström
8368044997 Fix compiler error on native AIO. 2017-01-24 15:10:45 +02:00
Jan Lindström
51b248cfdd MDEV-11879: Duplicate option innochecksum -l (--log, --leaf)
Move --leaf under -e to avoid duplicate option and retain
-l for --log (to maintain compatibility with MySQL 5.7).
2017-01-24 15:04:50 +02:00
Jan Lindström
6495806e59 MDEV-11254: innodb-use-trim has no effect in 10.2
Problem was that implementation merged from 10.1 was incompatible
with InnoDB 5.7.

buf0buf.cc: Add functions to return should we punch hole and
how big.

buf0flu.cc: Add written page to IORequest

fil0fil.cc: Remove unneeded status call and add test is
sparse files and punch hole supported by file system when
tablespace is created. Add call to get file system
block size. Used file node is added to IORequest. Added
functions to check is punch hole supported and setting
punch hole.

ha_innodb.cc: Remove unneeded status variables (trim512-32768)
and trim_op_saved. Deprecate innodb_use_trim and
set it ON by default. Add function to set innodb-use-trim
dynamically.

dberr.h: Add error code DB_IO_NO_PUNCH_HOLE
if punch hole operation fails.

fil0fil.h: Add punch_hole variable to fil_space_t and
block size to fil_node_t.

os0api.h: Header to helper functions on buf0buf.cc and
fil0fil.cc for os0file.h

os0file.h: Remove unneeded m_block_size from IORequest
and add bpage to IORequest to know actual size of
the block and m_fil_node to know tablespace file
system block size and does it support punch hole.

os0file.cc: Add function punch_hole() to IORequest
to do punch_hole operation,
get the file system block size and determine
does file system support sparse files (for punch hole).

page0size.h: remove implicit copy disable and
use this implicit copy to implement copy_from()
function.

buf0dblwr.cc, buf0flu.cc, buf0rea.cc, fil0fil.cc, fil0fil.h,
os0file.h, os0file.cc, log0log.cc, log0recv.cc:
Remove unneeded write_size parameter from fil_io
calls.

srv0mon.h, srv0srv.h, srv0mon.cc: Remove unneeded
trim512-trim32678 status variables. Removed
these from monitor tests.
2017-01-24 14:40:58 +02:00
Alexey Botchkov
0d107a85b3 MDEV-11042 Implement GeoJSON functions.
ST_AsGeoJSON and ST_GeomFromGeoJSON functions implemented.
2017-01-24 02:29:04 +04:00
Varun Gupta
8725b35d89 MDEV-11108: Assertion `uniq_tuple_length_arg <= table->file->max_key_length()' failed in SJ_TMP_TABLE::create_sj_weedout_tmp_table
Removed the assert from the if clause to the else clause.
2017-01-24 01:25:50 +05:30
Varun Gupta
1f3ad6a4ba MDEV-11108: Assertion `uniq_tuple_length_arg <= table->file->max_key_length()' failed in SJ_TMP_TABLE::create_sj_weedout_tmp_table
Removed the assert from the if clause to the else clause.
2017-01-24 01:21:43 +05:30
Alexander Barkov
45e40892c5 MDEV-11134 Assertion `fixed' failed in Item::const_charset_converter(THD*, CHARSET_INFO*, bool, const char*)
Problem: Item_param::basic_const_item() returned true when fixed==false.
This unexpected combination made Item::const_charset_converter() crash
on asserts.

Fix:
- Changing all Item_param::set_xxx() to set "fixed" to true.
  This fixes the problem.
- Additionally, changing all Item_param::set_xxx() to set
  Item_param::item_type, to avoid duplicate code, and for consistency,
  to make the code symmetric between different constant types.
  Before this patch only set_null() set item_type.
- Moving Item_param::state and Item_param::item_type from public to private,
  to make sure easier that these members are in sync with "fixed" and to
  each other.
- Adding a new argument "unsigned_arg" to Item::set_decimal(),
  and reusing it in two places instead of duplicate code.
- Adding a new method Item_param::fix_temporal() and reusing it in two places.
- Adding methods has_no_value(), has_long_data_value(), has_int_value(),
  instead of direct access to Item_param::state.
2017-01-23 22:25:29 +04:00
Sachin Setiya
15f46d5174 MDEV-7409 On RBR, extend the PROCESSLIST info to include at least the name of the recently used table
When RBR is used, add the db name to db Field and table name to Status
Field  of the "SHOW FULL PROCESSLIST" command for SQL thread.
2017-01-23 23:03:19 +05:30
Daniel Black
10b1f4dd09 MDEV-11866: ANALYZE FORMAT=JSON not predicatable for r_total_time_ms/r_buffer_size
[0-9]*[.]?[0-9]* wasn't a sufficient regex to cover the
%lg used in Json_writer::add_double. Exponent formats
where missed.

Here we normalize all the replace_regex expressions for
ANALYZE FORMAT=JSON into one include file.

Signed-off-by: Daniel Black <daniel.black@au.ibm.com>
2017-01-23 14:13:53 +11:00
Elena Stepanova
31031a52da MDEV-11870 Message "MariaDB Galera and flashback does not support"
Fixed the typo, updated result file and suppression in the test
file which did not work anyway
2017-01-23 01:06:31 +02:00
Elena Stepanova
beeacd2287 Follow-up for MDEV-11065 - add tests for compressed+encrypted binlog 2017-01-23 01:06:15 +02:00