Merge bb-10.2-ext into 10.3

This commit is contained in:
Marko Mäkelä 2017-09-07 12:30:56 +03:00
commit ae02407ce3
35 changed files with 243 additions and 132 deletions

View file

@ -1938,7 +1938,7 @@ cleanup:
ctxt->ret = ret;
os_thread_exit(NULL);
os_thread_exit();
OS_THREAD_DUMMY_RETURN;
}

View file

@ -840,7 +840,7 @@ stop_thread:
os_event_set(kill_query_thread_stopped);
os_thread_exit(NULL);
os_thread_exit();
OS_THREAD_DUMMY_RETURN;
}

View file

@ -76,5 +76,6 @@ perl;
my $res=@matches ? "FOUND " . scalar(@matches) : "NOT FOUND";
$ENV{SEARCH_FILE} =~ s{^.*?([^/\\]+)$}{$1};
print "$res /$search_pattern/ in $ENV{SEARCH_FILE}\n";
exit $ENV{SEARCH_ABORT} && $res =~ /^$ENV{SEARCH_ABORT}/;
die "$ENV{SEARCH_ABORT}\n"
if $ENV{SEARCH_ABORT} && $res =~ /^$ENV{SEARCH_ABORT}/;
EOF

View file

@ -5052,6 +5052,11 @@ sub mysqld_start ($$) {
}
}
# "Dynamic" version of MYSQLD_CMD is reevaluated with each mysqld_start.
# Use it to restart the server at testing a failing server start (e.g
# due to incompatible options).
$ENV{'MYSQLD_LAST_CMD'}= "$exe @$args";
if ( $opt_gdb || $opt_manual_gdb )
{
gdb_arguments(\$args, \$exe, $mysqld->name());
@ -5148,11 +5153,6 @@ sub mysqld_start ($$) {
# Remember options used when starting
$mysqld->{'started_opts'}= $extra_opts;
# "Dynamic" version of MYSQLD_CMD is reevaluated with each mysqld_start.
# Use it to restart the server at testing a failing server start (e.g
# due to incompatible options).
$ENV{'MYSQLD_LAST_CMD'}= "$exe @$args";
return;
}

View file

@ -8088,6 +8088,34 @@ CALL sp1();
CALL sp1();
drop user 'foo'@'%';
drop procedure sp1;
#
# MDEV-10972: Insert from select / view / union --
# repeatable crash in 10.1, 10.2 Linux/Mac/Windows
#
create table t (id int auto_increment primary key);
insert into t values (9494),(9495),(9496),(9497),(9498),(9499),(9500),(9501),(9502),(9503);
create VIEW v AS
select id from t
union
select id from t
;
drop procedure if exists p;
Warnings:
Note 1305 PROCEDURE test.p does not exist
create procedure p()
insert into tmp_t select t.id from (
select id from v
union
select id from v
) sq
inner join t on (sq.id = t.id);
CALL p();
ERROR 42S02: Table 'test.tmp_t' doesn't exist
create table tmp_t (id int null);
CALL p();
drop procedure p;
drop view v;
drop table t, tmp_t;
#End of 10.1 tests
#
# MDEV-11081: CURSOR for query with GROUP BY

View file

@ -6603,6 +6603,41 @@ use test;
drop database test_db;
drop user foo@localhost;
#
# MDEV-13523: Group By in a View, called within a Stored Routine
# causes Error Code 1356 when a non-root user runs the routine for
# a second time
#
CREATE DATABASE bugTest;
USE bugTest;
CREATE TABLE `procViewTable` (`id` int(10), `someText` varchar(50) NOT NULL);
insert into `procViewTable` values (1,'Test'), (2,'Test 2');
CREATE USER 'procView'@'%';
GRANT ALL PRIVILEGES ON `bugTest`.* TO 'procView'@'%';
CREATE DEFINER=`procView`@`%` VIEW `procViewSimple` AS (
select * from (
select `id` from `bugTest`.`procViewTable`
) `innerQuery`
group by `innerQuery`.`id`
);
connect con1,localhost,procView,,;
use bugTest;
prepare stmt from "SELECT * FROM procViewSimple";
execute stmt;
id
1
2
execute stmt;
id
1
2
disconnect con1;
connection default;
drop user procView;
drop view procViewSimple;
drop table procViewTable;
use test;
drop database bugTest;
#
# End of 10.2 tests
#
#

View file

@ -1,37 +1,17 @@
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB DEFAULT CHARSET=UTF8 ROW_FORMAT=DYNAMIC;
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB ROW_FORMAT=REDUNDANT;
SHOW WARNINGS;
Level Code Message
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B');
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
INSERT INTO t1 SET a=CONCAT('A', SPACE(8000), 'B');
INSERT INTO t1 SELECT a FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
UPDATE t1 SET a=CONCAT(a, RAND(), a);
SELECT * from t1;
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB DEFAULT CHARSET=UTF8 ROW_FORMAT=REDUNDANT;
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB ROW_FORMAT=DYNAMIC;
SHOW WARNINGS;
Level Code Message
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B');
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
INSERT INTO t1 SET a=CONCAT('A', SPACE(8000), 'B');
INSERT INTO t1 SELECT a FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
UPDATE t1 SET a=CONCAT(a, RAND(), a);
SELECT * from t1;

View file

@ -181,7 +181,6 @@ a
SELECT * FROM tp;
a
DROP TABLE tr,tc,td,tz,tp;
ib_buffer_pool
ib_logfile0
ib_logfile1
ibdata1

View file

@ -1,5 +1,4 @@
--innodb-file-per-table
--innodb-buffer-pool-size=32M
--innodb-log-file-size=32M
--innodb-page-size=64k
--innodb-strict-mode=OFF

View file

@ -1,24 +1,13 @@
--source include/have_innodb.inc
--source include/innodb_page_size.inc
#
# MDEV-13227: Assertion failure len < 16384 in file rem0rec.cc line 1285
# Crashes with innodb_page_size=64K. Does not crash at <= 32K.
#
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB DEFAULT CHARSET=UTF8 ROW_FORMAT=DYNAMIC;
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB ROW_FORMAT=REDUNDANT;
SHOW WARNINGS;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B');
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
INSERT INTO t1 SET a=CONCAT('A', SPACE(8000), 'B');
INSERT INTO t1 SELECT a FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
UPDATE t1 SET a=CONCAT(a, RAND(), a);
# random data no output we are only interested if fails
@ -27,20 +16,10 @@ SELECT * from t1;
--enable_result_log
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB DEFAULT CHARSET=UTF8 ROW_FORMAT=REDUNDANT;
CREATE TABLE t1 (a LONGTEXT) ENGINE=INNODB ROW_FORMAT=DYNAMIC;
SHOW WARNINGS;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B');
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
INSERT INTO t1 SELECT CONCAT('A', SPACE(4087), 'B') FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
INSERT INTO t1 SET a=CONCAT('A', SPACE(8000), 'B');
INSERT INTO t1 SELECT a FROM t1;
UPDATE t1 SET a=CONCAT(a, RAND(), a);
UPDATE t1 SET a=CONCAT(a, RAND(), a);
# random data no output we are only interested if fails

View file

@ -204,6 +204,11 @@ DROP TABLE tr,tc,td,tz,tp;
--let $restart_parameters=
--source include/restart_mysqld.inc
--error 0,1
--remove_file $bugdir/ibtmp1
--error 0,1
--remove_file $bugdir/ib_buffer_pool
--list_files $bugdir
--remove_files_wildcard $bugdir
--rmdir $bugdir

View file

@ -9549,6 +9549,37 @@ CALL sp1();
drop user 'foo'@'%';
drop procedure sp1;
--echo #
--echo # MDEV-10972: Insert from select / view / union --
--echo # repeatable crash in 10.1, 10.2 Linux/Mac/Windows
--echo #
create table t (id int auto_increment primary key);
insert into t values (9494),(9495),(9496),(9497),(9498),(9499),(9500),(9501),(9502),(9503);
create VIEW v AS
select id from t
union
select id from t
;
drop procedure if exists p;
create procedure p()
insert into tmp_t select t.id from (
select id from v
union
select id from v
) sq
inner join t on (sq.id = t.id);
--error ER_NO_SUCH_TABLE
CALL p();
create table tmp_t (id int null);
CALL p();
drop procedure p;
drop view v;
drop table t, tmp_t;
--echo #End of 10.1 tests

View file

@ -6312,6 +6312,44 @@ use test;
drop database test_db;
drop user foo@localhost;
--echo #
--echo # MDEV-13523: Group By in a View, called within a Stored Routine
--echo # causes Error Code 1356 when a non-root user runs the routine for
--echo # a second time
--echo #
CREATE DATABASE bugTest;
USE bugTest;
CREATE TABLE `procViewTable` (`id` int(10), `someText` varchar(50) NOT NULL);
insert into `procViewTable` values (1,'Test'), (2,'Test 2');
CREATE USER 'procView'@'%';
GRANT ALL PRIVILEGES ON `bugTest`.* TO 'procView'@'%';
CREATE DEFINER=`procView`@`%` VIEW `procViewSimple` AS (
select * from (
select `id` from `bugTest`.`procViewTable`
) `innerQuery`
group by `innerQuery`.`id`
);
--connect (con1,localhost,procView,,)
use bugTest;
prepare stmt from "SELECT * FROM procViewSimple";
execute stmt;
execute stmt;
# Cleanup
--disconnect con1
--connection default
drop user procView;
drop view procViewSimple;
drop table procViewTable;
use test;
drop database bugTest;
--echo #
--echo # End of 10.2 tests
--echo #

View file

@ -1249,6 +1249,7 @@ else
if ((c = *ptr) >= CHAR_8) break;
/* fall through */
/* Fall through with a digit less than 8 */
/* \0 always starts an octal number, but we may drop through to here with a
@ -5097,6 +5098,8 @@ for (;; ptr++)
either not match or match, depending on whether the class is or is
not negated. */
/* fall through */
default:
if (local_negate &&
(xclass || tempptr[2] != CHAR_RIGHT_SQUARE_BRACKET))
@ -7165,7 +7168,7 @@ for (;; ptr++)
goto FAILED;
}
/* Fall through to handle (?P< as (?< is handled */
/* fall through */
/* ------------------------------------------------------------ */
DEFINE_NAME: /* Come here from (?< handling */

View file

@ -1053,6 +1053,8 @@ for (;;)
group. At this point, the return is converted into MATCH_NOMATCH so that
previous backup points can be taken. */
/* fall through */
case OP_ONCE:
case OP_BRA:
case OP_SBRA:

View file

@ -45,12 +45,6 @@ static const LEX_STRING metadata_lock_info_lock_mode[] = {
{ C_STRING_WITH_LEN("MDL_EXCLUSIVE") },
};
static const LEX_STRING metadata_lock_info_duration[] = {
{ C_STRING_WITH_LEN("MDL_STATEMENT") },
{ C_STRING_WITH_LEN("MDL_TRANSACTION") },
{ C_STRING_WITH_LEN("MDL_EXPLICIT") },
};
static ST_FIELD_INFO i_s_metadata_lock_info_fields_info[] =
{
{"THREAD_ID", 20, MYSQL_TYPE_LONGLONG, 0,
@ -129,8 +123,6 @@ static int i_s_metadata_lock_info_init(
== MDL_key::NAMESPACE_END);
compile_time_assert(sizeof(metadata_lock_info_lock_mode)/sizeof(LEX_STRING)
== MDL_TYPE_END);
compile_time_assert(sizeof(metadata_lock_info_duration)/sizeof(LEX_STRING)
== MDL_DURATION_END);
ST_SCHEMA_TABLE *schema = (ST_SCHEMA_TABLE *) p;
DBUG_ENTER("i_s_metadata_lock_info_init");

View file

@ -357,18 +357,18 @@ EOF
readonly RSYNC_PORT=${WSREP_SST_OPT_PORT:-4444}
# If the IP is local listen only in it
if is_local_ip $RSYNC_ADDR
if is_local_ip "$RSYNC_ADDR"
then
rsync --daemon --no-detach --address $RSYNC_ADDR --port $RSYNC_PORT --config "$RSYNC_CONF" &
rsync --daemon --no-detach --address "$RSYNC_ADDR" --port "$RSYNC_PORT" --config "$RSYNC_CONF" &
else
# Not local, possibly a NAT, listen in all interface
rsync --daemon --no-detach --port $RSYNC_PORT --config "$RSYNC_CONF" &
rsync --daemon --no-detach --port "$RSYNC_PORT" --config "$RSYNC_CONF" &
# Overwrite address with all
RSYNC_ADDR="*"
fi
RSYNC_REAL_PID=$!
until check_pid_and_port $RSYNC_PID $RSYNC_REAL_PID $RSYNC_ADDR $RSYNC_PORT
until check_pid_and_port "$RSYNC_PID" "$RSYNC_REAL_PID" "$RSYNC_ADDR" "$RSYNC_PORT"
do
sleep 0.2
done

View file

@ -7910,7 +7910,7 @@ uint32 ha_partition::calculate_key_hash_value(Field **field_array)
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_VAR_STRING:
case MYSQL_TYPE_GEOMETRY:
/* fall through. */
/* fall through */
default:
DBUG_ASSERT(0); // New type?
/* Fall through for default hashing (5.5). */

View file

@ -807,6 +807,7 @@ static sp_head *sp_compile(THD *thd, String *defstr, sql_mode_t sql_mode,
else
{
sp= thd->lex->sphead;
sp->set_select_number(thd->select_number);
}
thd->pop_internal_handler();

View file

@ -558,7 +558,7 @@ sp_head::sp_head(const Sp_handler *sph)
m_defstr(null_clex_str),
m_sp_cache_version(0),
m_creation_ctx(0),
unsafe_flags(0),
unsafe_flags(0), m_select_number(1),
m_created(0),
m_modified(0),
m_recursion_level(0),
@ -2041,8 +2041,26 @@ sp_head::execute_procedure(THD *thd, List<Item> *args)
if (!err_status)
{
/*
Normally the counter is not reset between parsing and first execution,
but it is possible in case of error to have parsing on one CALL and
first execution (where VIEW will be parsed and added). So we store the
counter after parsing and restore it before execution just to avoid
repeating SELECT numbers.
*/
thd->select_number= m_select_number;
err_status= execute(thd, TRUE);
DBUG_PRINT("info", ("execute returned %d", (int) err_status));
/*
This execution of the SP was aborted with an error (e.g. "Table not
found"). However it might still have consumed some numbers from the
thd->select_number counter. The next sp->exec() call must not use the
consumed numbers, so we remember the first free number (We know that
nobody will use it as this execution has stopped with an error).
*/
if (err_status)
set_select_number(thd->select_number);
}
if (save_log_general)

View file

@ -235,6 +235,7 @@ private:
*/
uint32 unsafe_flags;
uint m_select_number;
public:
inline Stored_program_creation_ctx *get_creation_ctx()
{
@ -817,6 +818,8 @@ public:
sp_pcontext *get_parse_context() { return m_pcont; }
void set_select_number(uint num) { m_select_number= num; }
bool check_execute_access(THD *thd) const;
private:

View file

@ -716,6 +716,7 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
/* statement id */ 0),
rli_fake(0), rgi_fake(0), rgi_slave(NULL),
protocol_text(this), protocol_binary(this),
m_current_stage_key(0),
in_sub_stmt(0), log_all_errors(0),
binlog_unsafe_warning_flags(0),
binlog_table_maps(0),

View file

@ -1173,6 +1173,7 @@ static int execute_ddl_log_action(THD *thd, DDL_LOG_ENTRY *ddl_log_entry)
action in the log entry by stepping up the phase.
*/
}
/* fall through */
case DDL_LOG_RENAME_ACTION:
{
error= TRUE;

View file

@ -1173,28 +1173,20 @@ buf_page_is_corrupted(
}
#ifndef UNIV_INNOCHECKSUM
/** Prints a page to stderr.
@param[in] read_buf a database page
@param[in] page_size page size
@param[in] flags 0 or BUF_PAGE_PRINT_NO_CRASH or
BUF_PAGE_PRINT_NO_FULL */
/** Dump a page to stderr.
@param[in] read_buf database page
@param[in] page_size page size */
UNIV_INTERN
void
buf_page_print(
const byte* read_buf,
const page_size_t& page_size,
ulint flags)
buf_page_print(const byte* read_buf, const page_size_t& page_size)
{
dict_index_t* index;
if (!(flags & BUF_PAGE_PRINT_NO_FULL)) {
ib::info() << "Page dump in ascii and hex ("
<< page_size.physical() << " bytes):";
ib::info() << "Page dump in ascii and hex ("
<< page_size.physical() << " bytes):";
ut_print_buf(stderr, read_buf, page_size.physical());
fputs("\nInnoDB: End of page dump\n", stderr);
}
ut_print_buf(stderr, read_buf, page_size.physical());
fputs("\nInnoDB: End of page dump\n", stderr);
if (page_size.is_compressed()) {
/* Print compressed page. */
@ -1351,8 +1343,6 @@ buf_page_print(
stderr);
break;
}
ut_ad(flags & BUF_PAGE_PRINT_NO_CRASH);
}
# ifdef PFS_GROUP_BUFFER_SYNC
@ -5976,8 +5966,7 @@ database_corrupted:
<< ". You may have to recover from "
<< "a backup.";
buf_page_print(frame, bpage->size,
BUF_PAGE_PRINT_NO_CRASH);
buf_page_print(frame, bpage->size);
ib::info()
<< "It is also possible that your"

View file

@ -827,7 +827,7 @@ buf_dblwr_assert_on_corrupt_block(
/*==============================*/
const buf_block_t* block) /*!< in: block to check */
{
buf_page_print(block->frame, univ_page_size, BUF_PAGE_PRINT_NO_CRASH);
buf_page_print(block->frame, univ_page_size);
ib::fatal() << "Apparent corruption of an index page "
<< block->page.id

View file

@ -698,11 +698,12 @@ fil_space_encrypt(
fprintf(stderr, "ok %d corrupted %d corrupted1 %d err %d different %d\n",
ok , corrupted, corrupted1, err, different);
fprintf(stderr, "src_frame\n");
buf_page_print(src_frame, page_size, BUF_PAGE_PRINT_NO_CRASH);
buf_page_print(src_frame, page_size);
fprintf(stderr, "encrypted_frame\n");
buf_page_print(tmp, page_size, BUF_PAGE_PRINT_NO_CRASH);
buf_page_print(tmp, page_size);
fprintf(stderr, "decrypted_frame\n");
buf_page_print(tmp_mem, page_size, 0);
buf_page_print(tmp_mem, page_size);
ut_ad(0);
}
free(tmp_mem);

View file

@ -313,7 +313,8 @@ fil_compress_page(
if (buf_page_is_corrupted(false, uncomp_page, univ_page_size,
space)) {
buf_page_print(uncomp_page, univ_page_size, 0);
buf_page_print(uncomp_page, univ_page_size);
ut_ad(0);
}
ut_free(comp_page);
@ -641,6 +642,7 @@ err_exit:
<< " compression method: "
<< fil_get_compression_alg_name(compression_alg) << ".";
buf_page_print(buf, univ_page_size, 0);
buf_page_print(buf, univ_page_size);
fil_space_release_for_io(space);
ut_ad(0);
}

View file

@ -893,24 +893,13 @@ buf_print(void);
/*============*/
#endif /* UNIV_DEBUG_PRINT || UNIV_DEBUG || UNIV_BUF_DEBUG */
enum buf_page_print_flags {
/** Do not crash at the end of buf_page_print(). */
BUF_PAGE_PRINT_NO_CRASH = 1,
/** Do not print the full page dump. */
BUF_PAGE_PRINT_NO_FULL = 2
};
/** Prints a page to stderr.
@param[in] read_buf a database page
@param[in] page_size page size
@param[in] flags 0 or BUF_PAGE_PRINT_NO_CRASH or
BUF_PAGE_PRINT_NO_FULL */
/** Dump a page to stderr.
@param[in] read_buf database page
@param[in] page_size page size */
UNIV_INTERN
void
buf_page_print(
const byte* read_buf,
const page_size_t& page_size,
ulint flags);
buf_page_print(const byte* read_buf, const page_size_t& page_size)
ATTRIBUTE_COLD __attribute__((nonnull));
/********************************************************************//**
Decompress a block.
@return TRUE if successful */

View file

@ -3525,6 +3525,7 @@ recv_reset_logs(
log_sys->next_checkpoint_no = 0;
log_sys->last_checkpoint_lsn = 0;
memset(log_sys->buf, 0, log_sys->buf_size);
log_block_init(log_sys->buf, log_sys->lsn);
log_block_set_first_rec_group(log_sys->buf, LOG_BLOCK_HDR_SIZE);

View file

@ -1796,6 +1796,7 @@ rec_loop:
switch (err) {
case DB_SUCCESS_LOCKED_REC:
err = DB_SUCCESS;
/* fall through */
case DB_SUCCESS:
break;
default:
@ -1856,6 +1857,7 @@ skip_lock:
switch (err) {
case DB_SUCCESS_LOCKED_REC:
err = DB_SUCCESS;
/* fall through */
case DB_SUCCESS:
break;
default:
@ -4606,6 +4608,7 @@ wait_table_again:
switch (err) {
case DB_SUCCESS_LOCKED_REC:
err = DB_SUCCESS;
/* fall through */
case DB_SUCCESS:
break;
default:
@ -4688,6 +4691,7 @@ rec_loop:
switch (err) {
case DB_SUCCESS_LOCKED_REC:
err = DB_SUCCESS;
/* fall through */
case DB_SUCCESS:
break;
default:
@ -4949,6 +4953,7 @@ no_gap_lock:
prebuilt->new_rec_locks = 1;
}
err = DB_SUCCESS;
/* fall through */
case DB_SUCCESS:
break;
case DB_LOCK_WAIT:

View file

@ -146,7 +146,10 @@ ADD_CONVENIENCE_LIBRARY(rocksdb_aux_lib
ADD_DEPENDENCIES(rocksdb_aux_lib GenError)
# MARIAROCKS-TODO: how to properly depend on -lrt ?
TARGET_LINK_LIBRARIES(rocksdb_aux_lib rocksdblib ${ZLIB_LIBRARY} -lrt)
TARGET_LINK_LIBRARIES(rocksdb_aux_lib rocksdblib ${ZLIB_LIBRARY})
if (UNIX AND NOT APPLE)
TARGET_LINK_LIBRARIES(rocksdb_aux_lib -lrt)
endif()
TARGET_LINK_LIBRARIES(rocksdb rocksdb_aux_lib)
@ -182,7 +185,9 @@ ENDIF()
# ADD_SUBDIRECTORY(unittest)
#ENDIF()
SET(rocksdb_static_libs ${rocksdb_static_libs} "-lrt")
if (UNIX AND NOT APPLE)
SET(rocksdb_static_libs ${rocksdb_static_libs} "-lrt")
endif()
ADD_LIBRARY(rocksdb_tools STATIC
rocksdb/tools/ldb_tool.cc

View file

@ -173,7 +173,7 @@ Rdb_ddl_manager ddl_manager;
const char *m_mysql_gtid;
Rdb_binlog_manager binlog_manager;
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__APPLE__)
Rdb_io_watchdog *io_watchdog = nullptr;
#endif
/**
@ -554,7 +554,7 @@ static void rocksdb_set_io_write_timeout(
void *const var_ptr MY_ATTRIBUTE((__unused__)), const void *const save) {
DBUG_ASSERT(save != nullptr);
DBUG_ASSERT(rdb != nullptr);
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__APPLE__)
DBUG_ASSERT(io_watchdog != nullptr);
#endif
@ -563,7 +563,7 @@ static void rocksdb_set_io_write_timeout(
const uint32_t new_val = *static_cast<const uint32_t *>(save);
rocksdb_io_write_timeout_secs = new_val;
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__APPLE__)
io_watchdog->reset_timeout(rocksdb_io_write_timeout_secs);
#endif
RDB_MUTEX_UNLOCK_CHECK(rdb_sysvars_mutex);
@ -3984,7 +3984,7 @@ static int rocksdb_init_func(void *const p) {
directories.push_back(myrocks::rocksdb_wal_dir);
}
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__APPLE__)
io_watchdog = new Rdb_io_watchdog(directories);
io_watchdog->reset_timeout(rocksdb_io_write_timeout_secs);
#endif
@ -4076,7 +4076,7 @@ static int rocksdb_done_func(void *const p) {
delete commit_latency_stats;
commit_latency_stats = nullptr;
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__APPLE__)
delete io_watchdog;
io_watchdog = nullptr;
#endif

View file

@ -21,6 +21,7 @@ b CHAR(30),
PRIMARY KEY(pk) COMMENT "rev:cf1",
KEY(a)
) COLLATE 'latin1_bin' PARTITION BY KEY() PARTITIONS 4;
connect other,localhost,root,,;
set session transaction isolation level repeatable read;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
@ -29,6 +30,7 @@ start transaction with consistent snapshot;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
DB_NUM_SNAPSHOTS 1
connection default;
set rocksdb_bulk_load=1;
set rocksdb_bulk_load_size=100000;
LOAD DATA INFILE <input_file> INTO TABLE t1;
@ -79,4 +81,5 @@ count(b)
5000000
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
test.bulk_load.tmp
disconnect other;
DROP TABLE t1, t2, t3;

View file

@ -22,7 +22,7 @@
#include <vector>
/* Rdb_io_watchdog doesn't work on Windows [yet] */
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__APPLE__)
namespace myrocks {

View file

@ -35,7 +35,7 @@
namespace myrocks {
// Rdb_io_watchdog does not support Windows ATM.
#ifndef _WIN32
#if !defined(_WIN32) && !defined(__APPLE__)
class Rdb_io_watchdog {
const int RDB_IO_WRITE_BUFFER_SIZE = 4096;