Commit graph

68112 commits

Author SHA1 Message Date
Marko Mäkelä
b68dac88b3 MDEV-15219 FOREIGN KEY CASCADE or SET NULL operations will not resume after lock wait
This corruption was introduced in MDEV-13331. It would have been caught
by the MySQL 5.7 test innodb.update-cascade which MariaDB was missing
until now.

row_ins_check_foreign_constraint(): Never replace err == DB_LOCK_WAIT
with other values than DB_LOCK_WAIT_TIMEOUT.
2018-02-07 10:39:12 +02:00
Marko Mäkelä
1789e0ff03 Remove useless debug instrumentation row_print_geometry_data 2018-02-07 10:39:12 +02:00
Igor Babaev
2ef41622e2 Fixed mdev-15162 Query with CTE hangs if assignment operator (:=) is used
If setting user variable was used in the specification of a recursive CTE
then Item_func_set_user_var::fix_fields() went into an infinite loop.
2018-02-06 12:12:19 -08:00
Igor Babaev
bdb87c4965 Fixed mdev-15119 CTE, referencing another CTE, that is declared after,
does not return error

Corrected the code of st_select_lex::find_table_def_in_with_clauses() for
a proper identification of CTE references used in embedded CTEs.
2018-02-06 08:32:49 -08:00
Igor Babaev
90885985b6 Fixed mdev-15120 CTE table should not belong to database, that is in use
When identifying a table name the following should be taken into account:
a CTE name cannot be qualified with a database name, otherwise the table
name is considered as the name of a non-CTE table.
2018-02-06 08:26:50 -08:00
Sergei Golubchik
4771ae4b22 Merge branch 'github/10.1' into 10.2 2018-02-06 14:50:50 +01:00
Jan Lindström
60f51af755 MDEV-15042: INSERT ON DUPLICATE KEY UPDATE produces error 1032 (Can't find record)
Problem was that wrong error message was returned when insert
returned FK-error and there was no duplicate key to process.

row_ins
	If error from insert was DB_NO_REFERENCED_ROW and there was
	no duplicate key we should ignore ON DUPLICATE KEY UPDATE
	and return original error message.
2018-02-05 18:21:28 +02:00
Marko Mäkelä
3f42529a6f Merge 10.0 into 10.1 2018-02-05 09:25:33 +02:00
Marko Mäkelä
cb5374801e MDEV-15202 innodb.log_file_size failed in buildbot
Suppress some messages that are emitted rarely
(when the FIL_PAGE_FILE_FLUSH_LSN of the first page of ibdata1
does not match the latest redo log checkpoint).
2018-02-05 09:23:36 +02:00
Elena Stepanova
aba15b864a Updated list of unstable tests for 10.1.31 release 2018-02-04 04:28:14 +02:00
Marko Mäkelä
a988c70922 After-merge test result fix 2018-02-03 12:49:41 +02:00
Sergei Golubchik
c383418cbf Merge branch 'github/10.0-galera' into 10.1 2018-02-03 08:09:06 +01:00
Marko Mäkelä
9390ff53fc MDEV-14958 Merge new release of InnoDB MySQL 5.7.21 to 10.2
Two follow-up tasks were filed for MySQL 5.7.21 changes that
were not applied here:

MDEV-15179 performance_schema.file_instances does not reflect RENAME TABLE
MDEV-14222 Unnecessary 'cascade' memory allocation for every updated
row when there is no FOREIGN KEY
2018-02-02 21:11:49 +02:00
Marko Mäkelä
009e872b1c Merge a test case from MySQL 5.7 (no code fix needed) 2018-02-02 16:15:13 +02:00
Marko Mäkelä
d4ea179e13 MDEV-13626: Merge InnoDB test cases from MySQL 5.7 (part 7)
Import and adjust the innodb.innodb_buffer_pool_resize tests,
except innodb.innodb_buffer_pool_resize_debug, which would time out.

buf_pool_clear_hash_index(): Adjust assertions.
2018-02-02 16:15:13 +02:00
Sergei Golubchik
d4df7bc9b1 Merge branch 'github/10.0' into 10.1 2018-02-02 10:09:44 +01:00
Marko Mäkelä
44314c768f MDEV-15165 InnoDB purge for index on virtual column is trying to access an incomplete record
The algorithm change is based on a MySQL 8.0 fix for
BUG #26818787: ASSERTION: DATA0DATA.IC:430:TUPLE
by Krzysztof Kapuścik
ee606e62bb

If a record had been inserted in place of a delete-marked purgeable
record by modifying that record, and purge was accessing that record
before the off-page columns were written, row_build_index_entry()
would have returned NULL, causing a crash.

row_vers_non_virtual_fields_equal(): Check whether all non-virtual fields
of an index are equal. Replaces row_vers_non_vc_match(). A more complex
version of this function was called row_vers_non_vc_index_entry_match()
in the MySQL 8.0 fix.

row_vers_impl_x_locked_low(): This change is not directly related to
the reported problem, but apparently to the removal of the function
row_vers_non_vc_match(). This function checks if a secondary index
record was modified by a transaction that has not been committed yet.
For comparing the non-virtual columns, construct a secondary index
tuple from the table row.

row_vers_vc_matches_cluster(): Replace row_vers_non_vc_match() with
code that is equivalent to the row_vers_non_vc_index_entry_match()
in the MySQL 8.0 fix. Also, deduplicate some code by using goto.
2018-02-01 18:53:41 +02:00
Oleksandr Byelkin
96cb428b35 MDEV-14862: Server crashes in Bitmap<64u>::merge / add_key_field
Do not unwrap view references to keep table info.
(Row-IN subselect does not unwrap items so it does not need fix)
2018-02-01 16:12:14 +01:00
Vladislav Vaintroub
27733c8b12 auth_gssapi - fix test result and let the test run on Windows buildbot 2018-02-01 12:50:58 +00:00
Vladislav Vaintroub
13479cef08 Tests : Fix result file 2018-02-01 12:50:58 +00:00
Jan Lindström
c7e5feb259 Merge tag 'mariadb-10.0.34' into 10.0-galera
Conflicts:
	storage/innobase/lock/lock0lock.cc
	storage/xtradb/lock/lock0lock.cc
	storage/xtradb/lock/lock0wait.cc
	support-files/mysql.server.sh
2018-02-01 14:09:48 +02:00
Jan Lindström
5a9c63ab55 MDEV-10949: innodb_disallow_writes does not work as expected
Test seems to pass fine.
2018-02-01 13:37:07 +02:00
Vladislav Vaintroub
313247db9c MDEV-15089 Ensure that connection ID is in 32bit range 2018-02-01 09:01:15 +00:00
Oleksandr Byelkin
80d3eee072 MDEV-14857: problem with 10.2.11 server crashing when executing stored procedure
Counter for select numbering made stored with the statement (before was global)
So now it does have always accurate value which does not depend on
interruption of statement prepare by errors like lack of table in
a view definition.
2018-02-01 09:51:47 +01:00
Marko Mäkelä
67d89e4d7d MDEV-15143 InnoDB: Rollback of trx with id 0 completed
When InnoDB has completed the rollback of a recovered transaction,
it used to display the transaction identifier.

This was broken in MySQL 5.7.2 in
2f5f3cd3ac
which was merged to MariaDB 10.2.2 in
commit 2e814d4702.

trx_rollback_active(): Cache the transaction ID before it will be
reset by transaction commit. Do not display the message if the
rollback was interrupted by shutdown (MDEV-13797, MDEV-12352).
2018-01-31 12:06:46 +02:00
Oleksandr Byelkin
f5f56a076b MDEV-15133: array bound (bulk) parameters of NULL propagate on next rows
Setting non_null value drops null_value flag.
Part 1 of 3.
Part 2 will be for 10.3 including change of ps.test results.
Part 3 is test for Connector C.
2018-01-31 10:40:17 +01:00
Vladislav Vaintroub
c744dde711 Roles : Initialize variables that are passed to update_role_db()
Fixes "uninitialized variable used"  crashes (Windows compiled for
debug  e.g /RTC1 option)

Also enable roles suite on buildbot.
2018-01-30 21:25:36 +00:00
Marko Mäkelä
0ba6aaf030 MDEV-11415 Remove excessive undo logging during ALTER TABLE…ALGORITHM=COPY
If a crash occurs during ALTER TABLE…ALGORITHM=COPY, InnoDB would spend
a lot of time rolling back writes to the intermediate copy of the table.
To reduce the amount of busy work done, a work-around was introduced in
commit fd069e2bb3 in MySQL 4.1.8 and 5.0.2,
to commit the transaction after every 10,000 inserted rows.

A proper fix would have been to disable the undo logging altogether and
to simply drop the intermediate copy of the table on subsequent server
startup. This is what happens in MariaDB 10.3 with MDEV-14717,MDEV-14585.
In MariaDB 10.2, the intermediate copy of the table would be left behind
with a name starting with the string #sql.

This is a backport of a bug fix from MySQL 8.0.0 to MariaDB,
contributed by jixianliang <271365745@qq.com>.

Unlike recent MySQL, MariaDB supports ALTER IGNORE. For that operation
InnoDB must for now keep the undo logging enabled, so that the latest
row can be rolled back in case of an error.

In Galera cluster, the LOAD DATA statement will retain the existing
behaviour and commit the transaction after every 10,000 rows if
the parameter wsrep_load_data_splitting=ON is set. The logic to do
so (the wsrep_load_data_split() function and the call
handler::extra(HA_EXTRA_FAKE_START_STMT)) are joint work
by Ji Xianliang and Marko Mäkelä.

The original fix:

Author: Thirunarayanan Balathandayuthapani <thirunarayanan.balathandayuth@oracle.com>
Date:   Wed Dec 2 16:09:15 2015 +0530

Bug#17479594 AVOID INTERMEDIATE COMMIT WHILE DOING ALTER TABLE ALGORITHM=COPY

Problem:

During ALTER TABLE, we commit and restart the transaction for every
10,000 rows, so that the rollback after recovery would not take so long.

Fix:

Suppress the undo logging during copy alter operation. If fts_index is
present then insert directly into fts auxiliary table rather
than doing at commit time.

ha_innobase::num_write_row: Remove the variable.

ha_innobase::write_row(): Remove the hack for committing every 10000 rows.

row_lock_table_for_mysql(): Remove the extra 2 parameters.

lock_get_src_table(), lock_is_table_exclusive(): Remove.

Reviewed-by: Marko Mäkelä <marko.makela@oracle.com>
Reviewed-by: Shaohua Wang <shaohua.wang@oracle.com>
Reviewed-by: Jon Olav Hauglid <jon.hauglid@oracle.com>
2018-01-30 20:24:23 +02:00
Monty
cea431e1f7 Fix some wrong test result
- Galera tests that was not updated with connection change
  messages
- Disabled some TokuDB tests that always timed out.
  These should be enabled again when we have an option to
  specicy timeouts per tests.
2018-01-30 14:56:33 +02:00
Alexey Botchkov
6b4a4a85a7 MDEV-14696 Server crashes in in prep_alter_part_table on 2nd execution of PS.
The thd->lex->part_info should be kept intact during PS
        execution. Or the second execution gets that modified part_info.
        Let's modify ths->work_part_info instead.
2018-01-30 11:28:21 +04:00
Alexander Barkov
c4a908cb56 MDEV-13790 UNHEX() of a somewhat complicated CONCAT() returns NULL 2018-01-30 11:35:27 +04:00
Alexander Barkov
dae4fb0acb MDEV-15118 ExtractValue(xml,something_complex) does not work
Item_xml_str_func::fix_fields() used a local "String tmp" as a buffer
for args[1]->val_str(). "tmp" was freed at the end of fix_fields(),
while Items created during my_xpath_parse() still pointed to its fragments.

Adding a new member Item_xml_str_func::m_xpath_query and store the result
of args[1]->val_str() into it.
2018-01-30 11:07:35 +04:00
Marko Mäkelä
5010ab26de MDEV-14209 innodb_gis.rtree_debug produces huge server error logs
Do not SET DEBUG_DBUG=-d,... in tests. To disable debug instrumentation,
save and restore the original value of the variable DEBUG_DBUG.
Assigning -d,... will enable the output of a lot of unrelated DBUG
messages to the server error log.
2018-01-29 23:02:12 +02:00
Marko Mäkelä
b76881a23c Do not SET DEBUG_DBUG=-d,... in tests
To disable debug instrumentation, save and restore the original value
of the variable DEBUG_DBUG. Assigning -d,... will enable the output of
a lot of unrelated DBUG messages to the server error log.
2018-01-29 16:39:54 +02:00
Marko Mäkelä
a5fcced7d1 Merge 5.5 into 10.0 2018-01-29 16:32:59 +02:00
Marko Mäkelä
547ec8ce27 Do not SET DEBUG_DBUG=-d,... in tests
To disable debug instrumentation, save and restore the original value
of the variable DEBUG_DBUG. Assigning -d,... will enable the output of
a lot of unrelated DBUG messages to the server error log.
2018-01-29 16:25:26 +02:00
Jan Lindström
2749d25096 MDEV-13499: Backing up table that "doesn't exist in engine" cause crash in mariabackup when using encryption
Problem was that there is intentional crah when .ibd file does
not found. In mariabackup case we should avoid this crash.
2018-01-29 14:23:22 +02:00
Elena Stepanova
d01dbe66a8 List of unstable tests for 10.0.34 release 2018-01-27 20:37:09 +02:00
Daniel Black
ac7610744a mtr: set @skip_auth_anonymous=1 (#538)
Since 736afe8680 the
mysql_system_tables_data.sql only installs the anonymous
user if skip_auth_anonymous IS NULL.

Its installation is prevented by setting this to 1.
2018-01-27 17:09:35 +02:00
Andrei Elkin
c09371dce6 MDEV-14721 Big transaction events get lost on semisync master when
replicate_events_marked_for_skip=FILTER_ON_MASTER

When events of a big transaction are binlogged offsetting over 2GB from
the beginning of the log the semisync master's dump thread
lost such events.
The events were skipped by the Dump thread that found their skipping
status erroneously.

The current fixes make sure the skipping status is computed correctly.
The test verifies them simulating the 2GB offset.
2018-01-27 14:35:54 +02:00
Vladislav Vaintroub
067b90c7a9 Fix MinSizeRel build on Windows.
do not include test suite in release zip anymore.
2018-01-26 10:37:46 +00:00
Sergei Golubchik
a0702dbcda MDEV-11539 test_if_reopen: Assertion `strcmp(share->unique_file_name,filename) || share->last_version' failed upon select from I_S
remove HA_EXTRA_PREPARE_FOR_RENAME - neither OPTIMIZE nor REPAIR need it
(was introduced in b58e79566c when replacing remove_table_from_cache()
with wait_while_table_is_used() even though remove_table_from_cache()
did not have it).
2018-01-25 14:03:24 +01:00
Vicențiu Ciorbaru
1c10b256b3 Port innodb_print_lock_wait_timeout_info_basic from Percona
The test checks the new sys_var added to xtradb from Percona
2018-01-25 12:16:27 +02:00
Vicențiu Ciorbaru
d69d488b8c Remove innodb.test "keep away" comment
This was a leftover post 5.5->10.0 merge. It should've been deleted
there.
2018-01-24 17:55:26 +02:00
Monty
0dbe3dbe79 MDEV-15057 Crash when using an unknown identifier as an SP parameter
It crashed because we accessed lex->current_select when
it was a NULL, which is the case for SP parameters or
local variables.
2018-01-24 16:38:47 +02:00
Vladislav Vaintroub
524221e7a3 try to fix [Warning] InnoDB: innodb_open_files=20 is exceeded (20) files stay open)
on Appveyor
2018-01-24 11:23:44 +00:00
Vicențiu Ciorbaru
d833bb65d5 Merge remote-tracking branch '5.5' into 10.0 2018-01-24 12:29:31 +02:00
Sergei Golubchik
e2da680c51 MDEV-13187 incorrect backslash parsing in clients
also cover USE and other built-in commands
2018-01-24 09:35:07 +01:00
Ian Gilfillan
e431d90065 Update sponsors 2018-01-24 12:11:29 +04:00
Monty
b3c7cf81e3 Fix for MDEV-14141 Crash in print_keydup_error()
May also fix: MDEV-14970 "MariaDB crashed with signal 11 and Aria table"

I am not able to reproduce a crash, however there was no protection in
print_keydup_error() if the storage engine reported the wrong key number.

This patch adds such a protection and should stop any further crashes
in this case.

Other things:
- Added extra protection in Aria to not set errkey to more than number of
  keys. (Don't think this is cause of this crash, but better safe than
  sorry)
- Extend test_if_equal_repl_errors() to handle different cases of
  ER_DUP_ENTRY. This is just mainly precaution for the future.
2018-01-24 00:09:34 +02:00