1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-30 05:23:50 +03:00
Commit Graph

176599 Commits

Author SHA1 Message Date
Alexey Botchkov
d123ed852a MDEV-11938 json.json_no_table crashes or fails with valgrind warnings in json_find_path / Item_func_json_length::val_int.
Paths with quoted keynames handled improperly.
2017-02-02 18:56:15 +04:00
Marko Mäkelä
650ffcd3a0 Extend the innodb.log_corruption test.
Remove the dependency on unzip. Instead, generate the InnoDB files
with perl.

log_block_checksum_is_ok(): Correct the error message.

recv_scan_log_recs(): Remove the duplicated error message for
log block checksum mismatch.

innobase_start_or_create_for_mysql(): If the server is in read-only
mode or if innodb_force_recovery>=3, do not try to modify the system
tablespace. (If the doublewrite buffer or the non-core system tables
do not exist, do not try to create them.)

innodb_shutdown(): Relax a debug assertion. If the system tablespace
did not contain a doublewrite buffer and if we started up in
innodb_read_only mode or with innodb_force_recovery>=3, it will not
be created.

dict_create_or_check_sys_tablespace(): Set the flag
srv_sys_tablespaces_open when the tables exist.
2017-02-02 10:20:22 +02:00
Igor Babaev
8481c70ede Fixed bug mdev-11867.
If a window function with aggregation is over the result
set of a grouping query then the argument of the aggregate
function from the window function is allowed to be an
aggregate function itself.
2017-02-01 19:15:28 -08:00
Vladislav Vaintroub
5875633c2a MDEV-11901 : MariaRocks on Windows
fixed compilation, disabled unix-only tests (the ones that use bash
etc).

Changed plugin library name to ha_rocksdb.dll/so
2017-02-01 21:27:13 +00:00
Igor Babaev
69114862f2 Adjusted more tests after the fix for mdev-9976. 2017-02-01 13:09:07 -08:00
Nirbhay Choubey
b0ea044d12 Update galera tests to adapt to recent changes in 10.2. 2017-02-01 15:43:40 -05:00
Georg Richter
23628d123b Fix for MDEV-11174:
A GCM encrypted ciphertext must contain an authentication tag with AES_BLOCK_SIZE length, so we need to check that the length of ciphertext is at least AES_BLOCK_SIZE.
2017-02-01 12:14:37 +01:00
Marko Mäkelä
e1977712cc Clean up a test.
Import and adapt the changes from MySQL 5.7.
2017-02-01 09:30:55 +02:00
Marko Mäkelä
81b7fe9d38 Shut down InnoDB after aborted startup.
This fixes memory leaks in tests that cause InnoDB startup to fail.

buf_pool_free_instance(): Also free buf_pool->flush_rbt, which would
normally be freed when crash recovery finishes.

fil_node_close_file(), fil_space_free_low(), fil_close_all_files():
Relax some debug assertions to tolerate !srv_was_started.

innodb_shutdown(): Renamed from innobase_shutdown_for_mysql().
Changed the return type to void. Do not assume that all subsystems
were started.

que_init(), que_close(): Remove (empty functions).

srv_init(), srv_general_init(): Remove as global functions.

srv_free(): Allow srv_sys=NULL.

srv_get_active_thread_type(): Only return SRV_PURGE if purge really
is running.

srv_shutdown_all_bg_threads(): Do not reset srv_start_state. It will
be needed by innodb_shutdown().

innobase_start_or_create_for_mysql(): Always call srv_boot() so that
innodb_shutdown() can assume that it was called. Make more subsystems
dependent on SRV_START_STATE_STAT.

srv_shutdown_bg_undo_sources(): Require SRV_START_STATE_STAT.

trx_sys_close(): Do not assume purge_sys!=NULL. Do not call
buf_dblwr_free(), because the doublewrite buffer can exist while
the transaction system does not.

logs_empty_and_mark_files_at_shutdown(): Do a faster shutdown if
!srv_was_started.

recv_sys_close(): Invoke dblwr.pages.clear() which would normally
be invoked by buf_dblwr_process().

recv_recovery_from_checkpoint_start(): Always release log_sys->mutex.

row_mysql_close(): Allow the subsystem not to exist.
2017-02-01 09:30:55 +02:00
Marko Mäkelä
774056c825 MDEV-11671 Duplicated message for innodb_page_size
Display a NOTE, not a WARNING for non-default page size.
2017-02-01 09:30:55 +02:00
Marko Mäkelä
16bc16f9ba Actually invoke free() in ut_allocator::deallocate().
The necessary call was inadvertently commented out in a
merge of MySQL 5.7.14 to MariaDB 10.2.1
(commit fec844aca8).
2017-02-01 09:30:55 +02:00
Marko Mäkelä
a5d8dc1818 Make the innochecksum tests more robust.
As noted in MDEV-11947, we should disable the InnoDB doublewrite buffer
during the tests, because when rewriting page checksums, innochecksum
would skip the pages that are in the doublewrite buffer area. Because
the doublewrite buffer is emptied on server startup and not shutdown,
we should initially start with the doublewrite buffer disabled, so that
there will be no warning messages for wrong page checksums in the
doublewrite buffer.

Also, correct the obvious typo where restart_options should have been
$restart_parameters, so that InnoDB is actually verifying that the
checksums were rewritten.
2017-02-01 09:30:55 +02:00
Igor Babaev
ba8ab6a79c Adjusted tests after the fix for bug mdev-9976.
Now ROWS is a reserved key word, so cannot be used
as an alias name.
2017-01-31 20:37:26 -08:00
Igor Babaev
9073f9fd7d Fixed bug mdev-9976.
This bug happens due to a conflict in the construct window_spec.
(win_ref conflicts with the non-reserved key word ROWS).
The standard SQL-2003 says that ROWS is a reserved key word.
Made this key word reserved in our grammar and removed
the conflict.
2017-01-31 20:37:26 -08:00
Igor Babaev
81c1abe8cf Fixed bug mdev-10875.
Now, after the implementation of mdev-8646
"Re-engineer the code for post-join operations"
create_sort_index() can be called for subqueries.
2017-01-31 20:37:25 -08:00
Alexander Barkov
1d96b09890 MDEV-9979 Keywords UNBOUNDED, PRECEDING, FOLLOWING, TIES, OTHERS should be non-reserved
Adding keywords the following keywords into the "keyword" rules:
- EXCLUDE
- UNBOUNDED
- PRECEDING
- FOLLOWING
- TIES
- OTHERS

They are non-reserved words in the SQL standard (checked in a SQL-2011 draft),
and they don't cause any conflicts in sql_yacc.yy.
2017-01-31 23:41:10 +04:00
Nirbhay Choubey
bc4686f0f4 Minor test improvement 2017-01-31 12:28:09 -05:00
Nirbhay Choubey
cd8482c19e MDEV-11945: Fix description for "max_statement_time" in --help
max_statement_time also applies to non-SELECT queries.
2017-01-31 12:28:09 -05:00
Nirbhay Choubey
aa9db4c162 MDEV-11817: Altering a table with more rows than ..
.. wsrep_max_ws_rows causes cluster to break when running
Galera cluster in TOI mode

Problem:
While copying records to temporary table during ALTER TABLE,
if there are more than wsrep_max_wsrep_rows records, the
command fails.

Fix:
Since, the temporary table records are not placed into the
binary log, wsrep_affected_rows must not be incremented.
Added a test.
2017-01-31 12:28:09 -05:00
Jan Lindström
17cc619847 MDEV-11671: Duplicated [NOTE] output for changed innodb_page_size
Remove duplicated output and change output level to info.
2017-01-31 15:42:52 +02:00
Marko Mäkelä
642077ea5a srv_get_active_thread_type(): Remove a potential race condition.
Call trx_purge_state() only once, to avoid a race condition if the
value changes while the conditions are being evaluated.
2017-01-31 10:23:22 +02:00
Marko Mäkelä
7128328d41 Remove a work-around for MDEV-11689.
Also, work around MDEV-11948 by disabling native asynchronous I/O.
2017-01-31 10:23:21 +02:00
Marko Mäkelä
1293e5e59b Rewrite the innodb.log_file_size test with DBUG_EXECUTE_IF.
Remove the debug parameter innodb_force_recovery_crash that was
introduced into MySQL 5.6 by me in WL#6494 which allowed InnoDB
to resize the redo log on startup.

Let innodb.log_file_size actually start up the server, but ensure
that the InnoDB storage engine refuses to start up in each of the
scenarios.
2017-01-31 10:23:20 +02:00
Sachin Setiya
41997d148d MDEV-10812 WSREP causes responses being sent to protocol commands
that must not send a response

Problem:- When using wsrep (w/ galera) and issuing commands that can
cause deadlocks, deadlock exception errors are sent in responses to
commands such as close prepared statement and close connection which,
by spec, must not send a response.

Solution:- In dispatch_command, we will handle COM_QUIT and COM_STMT_CLOSE
commands even in case of error.

Patch Credit:- Jaka Močnik
2017-01-31 13:34:49 +05:30
Sachin Setiya
bb1e8e4367 Mdev-4774- Fix tests cases 2017-01-31 10:12:22 +05:30
Sergei Golubchik
9f918b9cf4 take into account scientific notation of floats in regex_replace
this fixes occasional main.cte_recursive failures
2017-01-30 17:57:02 +01:00
Marko Mäkelä
31a9b3f4c8 Fix a suppression that did not work on Windows. 2017-01-30 14:10:17 +02:00
Marko Mäkelä
8ab806d2f1 Do not remove the master error log file. 2017-01-30 11:23:27 +02:00
Sergei Golubchik
2a4881800c InnoDB: don't pthread_join() a thread that wasn't created
this fixes the crash in innodb.101_compatibility test
2017-01-30 10:12:18 +01:00
Sergei Golubchik
9189284ba3 remove a race-condition prone assertion
on shutdown it might happen that
1. the server starts killing THDs
2. it sets thd->killed in srv_purge_coordinator
3. srv_purge_coordinator notices that and tells srv_workers to exit
4. srv_worker will notice that and will start exiting,
    ... assert here ...
5. server sets thd->killed in worker threads

that is, it might happen that the assert is tested before
srv_worker's THD got the kill signal.

this fixes various random crashes (on this assertion) on shutdown
in tests
2017-01-30 10:11:26 +01:00
Sergei Golubchik
3d12587ca4 MDEV-11611 fix Ninja build
ninja doesn't like when a dummy target name matches a generated file name
2017-01-29 23:05:10 +01:00
Sergei Golubchik
78712eb52f MDEV-11708 cmake -DWITH_ASAN no longer works
fix the check (must be have_ not HAVE_)

also remove -O1 and -Wno-error, they aren't not needed for asan
2017-01-29 23:04:54 +01:00
Sergei Golubchik
a7d6271cbf skip innodb.log_corruption test if no unzip executable is found
also move *.zip files from t/ to std_data/
2017-01-29 13:50:30 +01:00
Igor Babaev
abfcdb8fbc Fixed bug mdev-10773.
The temporary tables created for recursive table references
should be closed in close_thread_tables(), because they might
be used in the statements like ANALYZE WITH r AS (...) SELECT * from r
where r is defined through recursion.
2017-01-28 15:47:11 -08:00
Sergei Golubchik
64b5e94236 mysqlbinlog memory leaks
that failed main.mysqlbinlog
2017-01-28 18:04:51 +01:00
Sergei Golubchik
30ba310057 cleanup: thd_destructor_proxy
1. wait for thd_destructor_proxy thread to start after creating it.
   this ensures that the thread is ready to receive a shutdown signal
   whenever we want to send it.
2. join it at shutdown, this guarantees that no innodb THD will exist
   after innobase_end().

this fixes crashes and memory leaks in main.mysqld_option_err
(were innodb was started and then immediately shut down).
2017-01-28 18:03:28 +01:00
Marko Mäkelä
2de0e42af5 Import and adjust the InnoDB redo log tests from MySQL 5.7. 2017-01-27 17:53:02 +02:00
Marko Mäkelä
0f34160d1d Clean up a few tests that kill the server.
As noted in MDEV-8841, any test that kills the server must issue
FLUSH TABLES, so that tables of crash-unsafe storage engines will
not be corrupted. Consistently issue this statement after any
call mtr.add_suppression() calls.

Also, do not invoke shutdown_server directly, but use helpers instead.
2017-01-27 17:07:45 +02:00
Marko Mäkelä
1ebfeceeb2 Merge 10.0 into 10.1 (test-only changes)
Adjust the 10.1 tests innodb.doublewrite and innodb.101_compatibility
in the same way.
2017-01-27 16:34:09 +02:00
Marko Mäkelä
4e82aaab2f Clean up a few tests that kill the server.
As noted in MDEV-8841, any test that kills the server must issue
FLUSH TABLES, so that tables of crash-unsafe storage engines will
not be corrupted. Consistently issue this statement after any
call mtr.add_suppression() calls.

Also, do not invoke shutdown_server directly, but use helpers instead.
2017-01-27 16:03:56 +02:00
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