Commit graph

176060 commits

Author SHA1 Message Date
Sergei Petrunia
1f0c28f36e MariaRocks port: move include/atomic_stat.h into storage/rocksdb 2017-01-21 22:58:57 +03:00
Sergei Petrunia
7fb3b348d7 MariaRocks port: Remove handler::init_with_fields
- It turns out, ha_rocksdb::table_flags() can return
  HA_PRIMARY_KEY_IN_READ_INDEX for all kinds of tables (as its meaning
  is "if there is a PK, PK columns contribute to the secondary index
  tuple". There is no assumption that a certain PK column can be decoded
  from the secondary index.
  (Should probably be fixed in the upstream, too, but I was unable to
   construct a testcase showing this is necessary).

- Following the above, we can undo the init_with_fields() changes in
  table.cc. MyRocks calls init_with_fields() from ha_rocksdb::open()
  which sets index-only read capabilities properly.
2017-01-21 22:58:04 +03:00
Sergei Petrunia
2d789dd9dd MariaRocks: fix a few tests in rocksdb_sys_vars test suite 2017-01-11 22:29:34 +03:00
Sergei Petrunia
81ed973b1a MariaRocks port: fix the build: fetch git submodules earlier
mariadb_connector_c fetches all submodules in the tre.
Invoke it betfore the CONFIGURE_PLUGINS().

This is generally useful, as one can imagine many plugins have
submodules.
2017-01-11 22:13:52 +03:00
Sergei Petrunia
1a8731952d MariaRocks port: get rocksdb_sys_vars.rocksdb_deadlock_detect_basic to work 2017-01-11 19:40:25 +03:00
Sergei Petrunia
80be676fc0 MariaRocks port
- Use rocksdb_sys_vars/my.cnf so that one can run tests from that suite
  by just  "./mtr rocksdb_sys_vars.$TESTNAME"
- Add rocksdb and rocksdb_sys_vars to the set of default test suites.
  Don't run with embedded server, yet.
2017-01-11 17:32:47 +03:00
Sergei Petrunia
edfe980aa1 MariaRocks port: fix rocksdb.rpl_row_stats test
"Userstat" feature in MariaDB does not have
I_S.table_statistics.rows_requested column.

We'll use I_S.table_statistics.rows_read instead. The testcase
doesn't do anything where rows_requested != rows_read.
2017-01-11 13:14:52 +03:00
Sergei Petrunia
f89e07785a MariaRocks port: Get rocksdb.autoinc_vars_thread test to work
MariaDB doesn't have NO_CLEAR_EVENT support in DEBUG_SYNC facility.
Luckily, the test can be re-written to use two different sync points
instead. (I've checked that the modified test fails with fb/mysql-5.6
without the fix for e004fd9f (PR #394)
2017-01-11 12:41:22 +03:00
Sergei Petrunia
520d206365 MariaRocks port: get rocksdb.rocksdb_icp[_rev] to work
- Fix the test cases to not use userstat counters specific to
  facebook/mysql-5.6
- Make testcase also check MariaDB's ICP counters
- Remove ha_rocksdb::check_index_cond(), call handler_index_cond_check
  instead.
2017-01-08 18:29:14 +00:00
Sergei Petrunia
93d3a39ba9 MariaRocks port: fix rocksdb.rocksdb_row_stats test
Make rocksdb_rows_XXX counters to work
2017-01-07 19:43:27 +00:00
Sergei Petrunia
ebbe59fa33 MariaRocks port: fix rocksdb.bloomfilter3 test
In MySQL 5.6, QUICK_SELECT_DESC calls handler->set_end_range() to
inform the storage engine about the bounds of the range being scanned.

MariaDB doesn't have that (handler::set_end_range call was back-ported
but it is not called from QUICK_SELECT_DESC).
Instead, it got prepare_*scan() methods from TokuDB.

Implement these methods so that MyRocks has information about the range
end.
2017-01-07 16:03:47 +00:00
Sergei Petrunia
69d5ee58c6 MariaRocks port: Temporarily disable tests related to Gap Lock detector (MDEV-11735) 2017-01-06 23:36:23 +03:00
Sergei Petrunia
e3df50c4b9 MariaRocks port: fix rocksdb.table_stats
- Need to manually enable userstat
- MariaDB has a lot fewer columns in table_statistics table.
2017-01-03 00:21:04 +03:00
Sergei Petrunia
31b2237c68 Merge branch '10.2' of github.com:MariaDB/server into 10.2-mariarocks
and a few trivial test result updates
2017-01-02 21:09:31 +00:00
Sergei Petrunia
a597e0e164 MariaRocks port: fix tests
- rocksdb.tmpdir works (however @@rocksdb_tmpdir has no effect yet!)
- trx_info_rpl is only run in RBR mode
- type_char_indexes_collation now works
  = take into account that characters with the same weight can have
    any order after sorting (and they do in MariaDB)
  = MariaDB doesn't use index-only for extended keys that have partially-
    covered columns.
2017-01-02 22:50:35 +03:00
Sergei Petrunia
3ecd9e0bfc Post-merge fixes for rocksdb.add_index_inplace_crash 2017-01-02 00:15:45 +00:00
Sergei Petrunia
7c4ebec82d MariaRocks: trivial post-merge test fixes 2017-01-02 00:06:26 +00:00
Sergei Petrunia
302ec9ab26 Merge branch '10.2-mariarocks' of github.com:MariaDB/server into 10.2-mariarocks 2017-01-01 23:33:50 +00:00
Sergei Petrunia
d8288b306c Merge remote-tracking branch 'mergetrees/merge-myrocks' into 10.2-mariarocks 2017-01-01 23:33:18 +00:00
Sachin Setiya
efcd0935f7 MDEV-11636 Extra persistent columns on slave always gets NULL in RBR
Problem:- In replication if slave has extra persistent column then these
column are not computed while applying write-set from master.

Solution:- While applying row events from server, we will generate values
for extra persistent columns.
2017-01-01 17:38:41 +05:30
Sergei Petrunia
3e7e559150 Fix the "fatal error: mysqld_error.h: No such file or directory" compile error 2017-01-01 01:50:17 +03:00
Sergei Petrunia
cfb59f3196 Copy of
commit f6ed777697db4ad7aee1e98c53243dced2b5891c
Author: Chenyu Yan <seayan@outlook.com>
Date:   Thu Dec 29 16:10:25 2016 -0800

    Fix BIG_TIMEOUT constant

    Summary: Update the constant to reflect what the comments indicates.

    Reviewed By: gunnarku

    Differential Revision: D4374476

    fbshipit-source-id: dd7f484
2016-12-31 23:30:09 +03:00
Sergei Petrunia
ae0a490eb3 MariaRocks port: Remove ifdef in ha_rocksdb::set_skip_unique_check_tables
We expose @@rocksdb_skip_unique_check_tables anyway, so it's not
really disabled.
2016-12-31 22:08:05 +03:00
Sergei Petrunia
d1af31b3c2 MariaRocks port: Make rocksdb_sys_vars suite pass
- Fix include paths, add suite.opt
- Add a test for @@rocksdb_supported_compression_types
Now all tests pass, except rocksdb_sysvars.rocksdb_rpl_skip_tx_api_basic
2016-12-31 21:31:50 +03:00
Marko Mäkelä
b727213de2 MDEV-11687 innodb_use_fallocate has no effect
Deprecate the variable in MariaDB 10.2, saying
that it will be removed in 10.3.
2016-12-30 16:14:33 +02:00
Marko Mäkelä
63574f1275 MDEV-11690 Remove UNIV_HOTBACKUP
The InnoDB source code contains quite a few references to a closed-source
hot backup tool which was originally called InnoDB Hot Backup (ibbackup)
and later incorporated in MySQL Enterprise Backup.

The open source backup tool XtraBackup uses the full database for recovery.
So, the references to UNIV_HOTBACKUP are only cluttering the source code.
2016-12-30 16:05:42 +02:00
Marko Mäkelä
9ebd767331 Merge 10.1 into 10.2 2016-12-30 13:48:22 +02:00
Marko Mäkelä
1ab3866de2 MDEV-11687 innodb_use_fallocate has no effect
The configuration parameter innodb_use_fallocate, which is mapped to
the variable srv_use_posix_fallocate, has no effect in MariaDB 10.2.2
or MariaDB 10.2.3.
Thus the configuration parameter and the variable should be removed.
2016-12-30 12:26:05 +02:00
Marko Mäkelä
d4342702bf Remove dead references to NO_FALLOCATE. 2016-12-30 12:15:06 +02:00
Marko Mäkelä
cbf80b0de8 Fix tests that were forgotten to run after the merge. 2016-12-30 12:12:34 +02:00
Marko Mäkelä
8451e09073 MDEV-11556 InnoDB redo log apply fails to adjust data file sizes
fil_space_t::recv_size: New member: recovered tablespace size in pages;
0 if no size change was read from the redo log,
or if the size change was implemented.

fil_space_set_recv_size(): New function for setting space->recv_size.

innodb_data_file_size_debug: A debug parameter for setting the system
tablespace size in recovery even when the redo log does not contain
any size changes. It is hard to write a small test case that would
cause the system tablespace to be extended at the critical moment.

recv_parse_log_rec(): Note those tablespaces whose size is being changed
by the redo log, by invoking fil_space_set_recv_size().

innobase_init(): Correct an error message, and do not require a larger
innodb_buffer_pool_size when starting up with a smaller innodb_page_size.

innobase_start_or_create_for_mysql(): Allow startup with any initial
size of the ibdata1 file if the autoextend attribute is set. Require
the minimum size of fixed-size system tablespaces to be 640 pages,
not 10 megabytes. Implement innodb_data_file_size_debug.

open_or_create_data_files(): Round the system tablespace size down
to pages, not to full megabytes, (Our test truncates the system
tablespace to more than 800 pages with innodb_page_size=4k.
InnoDB should not imagine that it was truncated to 768 pages
and then overwrite good pages in the tablespace.)

fil_flush_low(): Refactored from fil_flush().

fil_space_extend_must_retry(): Refactored from
fil_extend_space_to_desired_size().

fil_mutex_enter_and_prepare_for_io(): Extend the tablespace if
fil_space_set_recv_size() was called.

The test case has been successfully run with all the
innodb_page_size values 4k, 8k, 16k, 32k, 64k.
2016-12-30 09:52:24 +02:00
Marko Mäkelä
f493e395b0 Make the test work with any innodb_page_size. 2016-12-30 09:51:11 +02:00
Marko Mäkelä
970f17cbfc Merge 10.1 into 10.2 2016-12-30 08:56:13 +02:00
Marko Mäkelä
341c375d4b Merge 10.1 into 10.2 2016-12-30 08:53:54 +02:00
Sergei Petrunia
d379963d73 MariaRocks port: remove target_lsn parameter of rocksdb_flush_wal
- It's from a webscalesql feature that we dont have
- MyRocks ignores it anyway
2016-12-30 02:18:56 +03:00
Marko Mäkelä
f2fe65106f MDEV-11679 Remove redundant function fsp_header_get_crypt_offset()
fsp_header_get_crypt_offset(): Remove.

xdes_arr_size(): Remove.

fsp_header_get_encryption_offset(): Make this an inline function.

The correctness of this change was ensured with the following patch
that ensures that the two functions returned the same value, only
differing by FSP_HEADER_OFFSET (38 bytes):

diff --git a/storage/innobase/fsp/fsp0fsp.cc b/storage/innobase/fsp/fsp0fsp.cc
index f2a4c6bf218..e96c788b7df 100644
--- a/storage/innobase/fsp/fsp0fsp.cc
+++ b/storage/innobase/fsp/fsp0fsp.cc
@@ -850,6 +850,7 @@ fsp_parse_init_file_page(
 	return(ptr);
 }

+static ulint fsp_header_get_encryption_offset(const page_size_t&);
 /**********************************************************************//**
 Initializes the fsp system. */
 void
@@ -868,6 +869,31 @@ fsp_init(void)
 #endif

 	/* Does nothing at the moment */
+
+	for (ulint sz = 4096; sz <= 65536; sz *= 2) {
+		ulint m;
+		if (sz <= 16384) {
+			for (ulint ph = 1024; ph <= sz; ph *= 2) {
+				const page_size_t ps(ph, sz, true);
+				ulint maria = fsp_header_get_crypt_offset(ps, &m),
+					oracle = fsp_header_get_encryption_offset(ps);
+				if (maria != oracle + 38) {
+					ib::error() << "zip size mismatch: "
+						    << maria << "!=" << oracle
+						    << "(" << ph <<","<<sz<<")"
+						    << m;
+				}
+			}
+		}
+		const page_size_t p(sz, sz, false);
+		ulint maria = fsp_header_get_crypt_offset(p, &m),
+			oracle = fsp_header_get_encryption_offset(p);
+		if (maria != oracle + 38) {
+			ib::error() << "size mismatch: "
+				    << maria << "!=" << oracle
+				    << "(" <<sz<<")" << m;
+		}
+	}
 }

 /**********************************************************************//**
2016-12-29 15:27:24 +02:00
Marko Mäkelä
7bcae22bf1 Merge branch 'bb-10.2-mdev-6076' into 10.2 2016-12-29 15:05:04 +02:00
Sergei Golubchik
ab89359dde enable tests that were skipped because of have_xtradb
* some of these tests run just fine with InnoDB:
   -> s/have_xtradb/have_innodb/
* sys_var tests did basic tests for xtradb only variables
   -> remove them, they're useless anyway (sysvar_innodb does it better)
* multi_update had innodb specific tests
   -> move to multi_update_innodb.test
2016-12-29 13:23:49 +01:00
Sergei Golubchik
b3d6cbc25a cleanup: binlog.binlog_killed_simulate 2016-12-29 13:23:42 +01:00
Sergei Golubchik
0d897c2ceb cleanup: binlog.binlog_row_annotate 2016-12-29 13:23:35 +01:00
Sergei Golubchik
4a5d25c338 Merge branch '10.1' into 10.2 2016-12-29 13:23:18 +01:00
Sergei Golubchik
48dc7cc66e cleanup: redundant memcmp() 2016-12-29 11:29:28 +01:00
Oleksandr Byelkin
23cc1be270 MDEV-11584: GRANT inside an SP does not work well on 2nd execution
Allocate password hash in statment memory
2016-12-28 20:35:19 +01:00
Oleksandr Byelkin
100f721c0a MDEV-11584: GRANT inside an SP does not work well on 2nd execution
Allocate password hash in statment memory
2016-12-28 18:07:39 +01:00
Jan Lindström
283e9cf4cb MDEV-11656: 'Data structure corruption' IMPORT TABLESPACE doesn't work for encrypted InnoDB tables if space_id changed
Problem was that for encryption we use temporary scratch area for
reading and writing tablespace pages. But if page was not really
decrypted the correct updated page was not moved to scratch area
that was then written. This can happen e.g. for page 0 as it is
newer encrypted even if encryption is enabled and as we write
the contents of old page 0 to tablespace it contained naturally
incorrect space_id that is then later noted and error message
was written. Updated page with correct space_id was lost.

If tablespace is encrypted we use additional
temporary scratch area where pages are read
for decrypting readptr == crypt_io_buffer != io_buffer.

Destination for decryption is a buffer pool block
block->frame == dst == io_buffer that is updated.
Pages that did not require decryption even when
tablespace is marked as encrypted are not copied
instead block->frame is set to src == readptr.

If tablespace was encrypted we copy updated page to
writeptr != io_buffer. This fixes above bug.

For encryption we again use temporary scratch area
writeptr != io_buffer == dst
that is then written to the tablespace

(1) For normal tables src == dst ==  writeptr
ut_ad(!encrypted && !page_compressed ?
	src == dst && dst == writeptr + (i * size):1);
(2) For page compressed tables src == dst == writeptr
ut_ad(page_compressed && !encrypted ?
	src == dst && dst == writeptr + (i * size):1);
(3) For encrypted tables src != dst != writeptr
ut_ad(encrypted ?
	src != dst && dst != writeptr + (i * size):1);
2016-12-28 16:32:45 +02:00
Marko Mäkelä
d50cf42bc0 MDEV-9282 Debian: the Lintian complains about "shlib-calls-exit" in ha_innodb.so
Replace all exit() calls in InnoDB with abort() [possibly via ut_a()].
Calling exit() in a multi-threaded program is problematic also for
the reason that other threads could see corrupted data structures
while some data structures are being cleaned up by atexit() handlers
or similar.

In the long term, all these calls should be replaced with something
that returns an error all the way up the call stack.
2016-12-28 15:54:24 +02:00
Elena Stepanova
dc9f5dfcbb Replication tests fail on valgrind due to waiting-related timeouts
MTR raises default wait_for_pos_timeout from 300 to 1500 when tests
are run with valgrind. The same needs to be done for other
replication-related waits
2016-12-27 20:41:32 +02:00
Sergei Petrunia
9ca608028f MariaRocks port: make rocksdb.rocksdb_qcache test pass 2016-12-27 00:13:32 +00:00
Sergei Petrunia
4faa9da81c MariaRocks port: Make SQL layer allow errors in start_consistent_snapshot().
rocksdb.cons_snapshot_read_committed test used to crash.
This happened, because
- MyRocks produces an error when one attempts to do a START TRANSACTION
  WITH CONSISTENT SNAPSHOT with @@tx_isolation=REPEATABLE_READ
- MariaDB's SQL layer didn't assume that errors are possible inside
  hton->start_constistent_snapshot() call.
2016-12-27 01:55:05 +03:00
Sergei Petrunia
8f2d58b26b MariaRocks port: run rocksdb.rpl_row_stats with binlog_format=row only
The test still fails but at least we do not try to run it with
wrong binlog_format.
2016-12-26 22:31:46 +03:00