Commit graph

179894 commits

Author SHA1 Message Date
Aleksey Midenkov
0ab99d2f34 SQL: no_replicate for VTMD [fixes #289] 2017-11-13 19:11:02 +03:00
Aleksey Midenkov
335bfb3421 Tests: view.test combinations 2017-11-13 19:11:02 +03:00
Aleksey Midenkov
7ebd12e779 SQL: VIEW of UNION [fixes #293] 2017-11-13 19:11:02 +03:00
Aleksey Midenkov
d70bb5e64e SQL: delete from VIEW [fixes #291] 2017-11-13 19:11:02 +03:00
Aleksey Midenkov
c9520cb0c4 SQL: sysvar versioning_asof_timestamp [fixes #292, #279] 2017-11-13 19:11:02 +03:00
Aleksey Midenkov
a86d6bad54 Scripts: check PLUGIN_ROCKSDB to skip cloning it 2017-11-13 19:11:02 +03:00
Aleksey Midenkov
497c6add88 System Versioning pre1.0
Merge branch '10.3' into trunk
2017-11-13 19:09:46 +03:00
Marko Mäkelä
a48aa0cd56 Merge bb-10.2-ext into 10.3 2017-11-10 16:12:45 +02:00
Marko Mäkelä
8409f721ff setval(): Do not fall through from GET_FLAGSET to GET_BIT 2017-11-10 16:11:15 +02:00
Marko Mäkelä
386e5d476e Merge 10.2 into bb-10.2-ext 2017-11-10 16:07:01 +02:00
Marko Mäkelä
589b0b3655 Allow innodb_open_files to be exceeded 2017-11-10 16:06:44 +02:00
Marko Mäkelä
fa00fedaac MDEV-14100 Assertion `!is_user_rec || leaf || ...
rec_get_offsets_func(): Relax a bogus debug assertion.
It would fail when we are operating on a copied prefix
of a node pointer record.
2017-11-10 15:58:52 +02:00
Marko Mäkelä
9618c04e3f Follow-up fix of MDEV-13795/MDEV-14332
row_log_table_apply_op(): Remove references to dict_table_t::n_vcols.
Virtual column information is no longer being written to the log.

row_log_t: Remove the unused fields n_old_col, n_old_vcol.
2017-11-10 15:58:52 +02:00
Oleksandr Byelkin
623ed1c204 MDEV-13723: Server crashes in ha_heap::find_unique_row or Assertion `0' failed in st_select_lex_unit::optimize with INTERSECT
With INTERSECT/EXCEPT fact that subquery item of IN/ALL/ANY was not assigned value does not mean that temporary table used for calculating unit is empty (records could be deleted).
2017-11-10 14:31:50 +01:00
Marko Mäkelä
1ca72a0c0d Merge 10.2 into bb-10.2-ext 2017-11-10 08:27:09 +02:00
Marko Mäkelä
5d142f9958 MDEV-13795/MDEV-14332 Corruption during online table-rebuilding ALTER when VIRTUAL columns exist
When MySQL 5.7 introduced indexed virtual columns, it introduced
several bugs into the online table-rebuilding ALTER, that is,
the row_log_table_apply() family of functions.

The online_log format that was introduced for online table-rebuilding
ALTER in MySQL 5.6 should be sufficient. Ideally, any indexed virtual
column values would be evaluated based on the log records in the temporary
file. There is no need to log virtual column values.

(For ADD INDEX, that is row_log_apply(), we always must log the values of
the keys, no matter if the columns are virtual.)

Because omitting the virtual column values removes any chance of
row_log_table_apply() working with indexed virtual columns, we
will for now refuse LOCK=NONE in table-rebuilding ALTER operations
when indexes on virtual columns exist. This restriction would be
lifted in MDEV-14341.

innobase_indexed_virtual_exist(): New predicate, to determine if
indexed virtual columns exist in a table definition.

ha_innobase::check_if_supported_inplace_alter(): Refuse online rebuild
if indexed virtual columns exist.

rec_get_converted_size_temp_v(), rec_convert_dtuple_to_temp_v(): Remove.

row_log_table_delete(), row_log_table_update(, row_log_table_insert():
Remove parameters for virtual columns.

trx_undo_read_v_rows(): Remove the col_map parameter.

row_log_table_apply(): Do not deal with virtual columns.
2017-11-09 23:39:12 +02:00
Monty
0bb0d52221 Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
Conflicts:
	mysql-test/r/cte_recursive.result
	mysql-test/r/derived_cond_pushdown.result
	mysql-test/t/cte_recursive.test
	mysql-test/t/derived_cond_pushdown.test
	sql/datadict.cc
	sql/handler.cc
2017-11-09 23:21:41 +02:00
Sergei Petrunia
e2376e8137 MDEV-14334: Update test results for rocksdb.bulk_load_rev_data 2017-11-09 19:52:55 +03:00
Monty
d40c23570f Cleanup up after failed alter table in add_index_inplace_crash 2017-11-09 14:58:26 +02:00
Marko Mäkelä
761cf49265 Merge 10.1 into 10.2 2017-11-09 14:45:39 +02:00
Marko Mäkelä
d2ffafe00f MDEV-14333 Mariabackup --apply-log-only crashes if incomplete transactions with update_undo logs are present
trx_undo_free_prepared(): Relax the assertion for
mariabackup --apply-log-only.
2017-11-09 14:37:03 +02:00
Alexander Barkov
62333983e4 Merge remote-tracking branch 'origin/10.1' into 10.2 2017-11-09 15:41:26 +04:00
Alexander Barkov
0fdb0bdf27 Merge remote-tracking branch 'origin/10.0' into 10.1 2017-11-09 14:05:53 +04:00
Oleksandr Byelkin
c2c93fc6e4 MDEV-14164: Unknown column error when adding aggregate to function in oracle style procedure FOR loop
Make differentiation between pullout for merge and pulout of outer field during exists2in transformation.
In last case the field was outer and so we can safely start from name resolution context of the SELECT where it was pulled.
Old behavior lead to inconsistence between list of tables and outer name resolution context (which skips one SELECT for merge purposes) which creates problem vor name resolution.
2017-11-09 09:31:03 +01:00
Monty
7dbff2c513 Fixed failing test case as part of adding MAX_MEMORY_USED 2017-11-09 08:26:52 +02:00
Alexander Barkov
8d576bcbdd Test cleanup for Monty's bce807f70f
Recording mtr.add_suppression("Could not use .*")
instead of mtr.add_suppression("Could not open .*")
in tests:
- binlog_encryption.rpl_binlog_errors
- binlog_encryption.binlog_index
2017-11-09 08:26:50 +04:00
Marko Mäkelä
7c85a8d936 Merge 10.1 into 10.2 2017-11-08 13:12:11 +02:00
Alexander Barkov
e6ab6c4252 MDEV-14320 main.subselect failed in buildbot, results mismatch
There was a problem in the recent patch for MDEV-10817:
get_date() must "return true" on null_value rather than "return 0"

(forgot to fix Item_sum_hybrid::get_date() after copying and pasting
from Item_sum_hybrid::val_str()).
2017-11-08 15:00:26 +04:00
Marko Mäkelä
644ffdeb92 Fix integer type mismatch in WSREP debug output 2017-11-08 09:26:46 +02:00
Marko Mäkelä
843e4508c0 Merge 10.1 into 10.2 2017-11-07 23:02:39 +02:00
Marko Mäkelä
a4feb04ace MDEV-14310 ALTER TABLE…ADD INDEX may corrupt the InnoDB system tablespace
FlushObserver::flush(): Never discard unwritten changes.
We do not want to risk corrupting the system tablespace
or .ibd files that are not part of a table-rebuilding ALTER.
2017-11-07 23:00:51 +02:00
Marko Mäkelä
d04c4b3905 MDEV-14304 Unnecessary conditions in buf_page_get_gen()
Ever since MDEV-10813 cleaned up InnoDB use of atomic memory operations
and made buf_block_fix() an atomic operation, some conditions around
buf_block_fix() have been unnecessary.
2017-11-07 22:45:41 +02:00
Alexander Barkov
ca695888e0 MDEV-14116 INET6_NTOA output is set as null to varchar(39) variable 2017-11-07 21:57:42 +04:00
Vesa Pentti
28c3459aa7 MDEV-10728 test excluded from embedded tests 2017-11-07 13:31:55 +00:00
Alexander Barkov
fff7fc500b MDEV-10817 CAST(MAX(DATE'2001-01-01') AS TIME) returns a wrong result 2017-11-07 15:03:58 +04:00
Alexander Barkov
c09f22bab5 MDEV-8867 Wrong field type or metadata for COALESCE(bit_column, 1)
This problem was earlier fixed by the patch for MDEV-8910. Adding tests only.
2017-11-07 12:57:11 +04:00
Alexander Barkov
06a9a366a3 MDEV-14235 main.mysql_upgrade_noengine failed, results mismatch 2017-11-07 12:06:15 +04:00
Aleksey Midenkov
d8d7251019 System Versioning pre0.12
Merge remote-tracking branch 'origin/archive/2017-10-17' into 10.3
2017-11-07 00:37:49 +03:00
Vladislav Vaintroub
120f848f75 Fix test case 2017-11-06 21:01:21 +00:00
Marko Mäkelä
f830314fd5 Remove dead code for non-debug builds 2017-11-06 22:35:03 +02:00
Igor Babaev
8128ae48ef Test case for mdev-13753 CTE is not visible during view creation
The bug was fixed by the patch for the bug mdev-13780.
2017-11-06 12:18:36 -08:00
Vladislav Vaintroub
40bae98c3d MDEV-12108 Fix backup for Innodb tables with DATA DIRECTORY 2017-11-06 19:21:23 +00:00
Marko Mäkelä
5691109689 Merge 10.0 into 10.1 2017-11-06 18:10:23 +02:00
Marko Mäkelä
51b4366bfb MDEV-13328 ALTER TABLE…DISCARD TABLESPACE takes a lot of time
With a big buffer pool that contains many data pages,
DISCARD TABLESPACE took a long time, because it would scan the
entire buffer pool to remove any pages that belong to the tablespace.
With a large buffer pool, this would take a lot of time, especially
when the table-to-discard is empty.

The minimum amount of work that DISCARD TABLESPACE must do is to
remove the pages of the to-be-discarded table from the
buf_pool->flush_list because any writes to the data file must be
prevented before the file is deleted.

If DISCARD TABLESPACE does not evict the pages from the buffer pool,
then IMPORT TABLESPACE must do it, because we must prevent pre-DISCARD,
not-yet-evicted pages from being mistaken for pages of the imported
tablespace.

It would not be a useful fix to simply move the buffer pool scan to
the IMPORT TABLESPACE step. What we can do is to actively evict those
pages that could be mistaken for imported pages. In this way, when
importing a small table into a big buffer pool, the import should
still run relatively fast.

Import is bypassing the buffer pool when reading pages for the
adjustment phase. In the adjustment phase, if a page exists in
the buffer pool, we could replace it with the page from the imported
file. Unfortunately I did not get this to work properly, so instead
we will simply evict any matching page from the buffer pool.

buf_page_get_gen(): Implement BUF_EVICT_IF_IN_POOL, a new mode
where the requested page will be evicted if it is found. There
must be no unwritten changes for the page.

buf_remove_t: Remove. Instead, use trx!=NULL to signify that a write
to file is desired, and use a separate parameter bool drop_ahi.

buf_LRU_flush_or_remove_pages(), fil_delete_tablespace():
Replace buf_remove_t.

buf_LRU_remove_pages(), buf_LRU_remove_all_pages(): Remove.

PageConverter::m_mtr: A dummy mini-transaction buffer

PageConverter::PageConverter(): Complete the member initialization list.

PageConverter::operator()(): Evict any 'shadow' pages from the
buffer pool so that pre-existing (garbage) pages cannot be mistaken
for pages that exist in the being-imported file.

row_discard_tablespace(): Remove a bogus comment that seems to
refer to IMPORT TABLESPACE, not DISCARD TABLESPACE.
2017-11-06 18:08:33 +02:00
Marko Mäkelä
57ba66b9ab Remove redundant function parameters
buf_flush_or_remove_pages(), buf_flush_dirty_pages(): Remove the
redundant parameter flush=(trx!=NULL).
2017-11-06 18:08:33 +02:00
Vesa Pentti
9f3c014ca3 MDEV-10728 -- mysqlbinlog can't be input to mysql client
String comparison with utf8_bin collation is case sensitive.
  Hence "DELIMITER" did not match with "delimiter".
  The delimiter command matching now uses my_charset_latin1.
2017-11-06 12:56:56 +00:00
Marko Mäkelä
6a524fcfdd MDEV-14140 IMPORT TABLESPACE must not go beyond FSP_FREE_LIMIT
ibuf_check_bitmap_on_import(): Only access the pages that
are below FSP_FREE_LIMIT. It is possible that especially with
ROW_FORMAT=COMPRESSED, the FSP_SIZE will be much bigger than
the FSP_FREE_LIMIT, and the bitmap pages (page_size*N, 1+page_size*N)
are filled with zero bytes.

buf_page_is_corrupted(), buf_page_io_complete(): Make the
fault injection compatible with MariaDB 10.2.

Backport the IMPORT tests from 10.2.
2017-11-06 14:55:34 +02:00
Marko Mäkelä
51679e5c38 MDEV-14132 InnoDB page corruption
On some old GNU/Linux systems, invoking posix_fallocate() with
offset=0 would sometimes cause already allocated bytes in the
data file to be overwritten.

Fix a correctness regression that was introduced in
commit 420798a81a
by invoking posix_fallocate() in a safer way.
A similar change was made in MDEV-5746 earlier.

os_file_get_size(): Avoid changing the state of the file handle,
by invoking fstat() instead of lseek().

os_file_set_size(): Determine the current size of the file
by os_file_get_size(), and then extend the file from that point
onwards.
2017-11-06 08:53:51 +02:00
Marko Mäkelä
30a8764b92 MDEV-14244 MariaDB fails to run with O_DIRECT
os_file_set_size(): If posix_fallocate() returns EINVAL, fall back
to writing zero bytes to the file. Also, remove some error log output,
and make it possible for a server shutdown to interrupt the fall-back
code.

MariaDB used to ignore any possible return value from posix_fallocate()
ever since innodb_use_fallocate was introduced in MDEV-4338. If EINVAL
was returned, the file would not be extended.

Starting with MDEV-11520, MariaDB would treat EINVAL as a hard error.

Why is the EINVAL returned? The GNU posix_fallocate() function
would first try the fallocate() system call, which would return
-EOPNOTSUPP for many file systems (notably, not ext4). Then, it
would fall back to extending the file one block at a time by invoking
pwrite(fd, "", 1, offset) where offset is 1 less than a multiple of
the file block size. This would fail with EINVAL if the file is in
O_DIRECT mode, because O_DIRECT requires aligned operation.
2017-11-06 08:53:50 +02:00
Igor Babaev
343bcb152f Fixed mdev-14237 Server crash on query with regexp_substr
It's better to prohibit pushdown of conditions that involve
regexp_substr() and regexp_replace() into materialized derived
tables / views until proper implementations of the get_copy()
virtual method are provided for those functions.
2017-11-05 22:52:41 -08:00