Initial commit,

copy of
commit 86587affafe77ef555f7c3839839de44f0f203f3
Author: Tian Xia <tianx@fb.com>
Date:   Tue Oct 4 10:01:52 2016 -0700

    Allow filtering of show commands through admission control
This commit is contained in:
Sergei Petrunia 2016-10-06 17:24:09 +00:00
commit ebfc4e6ad0
822 changed files with 81367 additions and 0 deletions
storage/rocksdb
CMakeLists.txtREADMEevent_listener.ccevent_listener.hget_rocksdb_files.shha_rocksdb.ccha_rocksdb.hha_rocksdb_proto.hlogger.h
mysql-test/rocksdb
include
my.cnfoptimize_table_check_sst.pl
r
1st.resultadd_index_inplace.resultadd_index_inplace_sstfilewriter.resultallow_no_pk_concurrent_insert.resultallow_no_primary_key.resultallow_no_primary_key_with_sk.resultallow_os_buffer.resultalter_table.resultanalyze_table.resultapply_changes_iter.resultautoinc_secondary.resultautoinc_vars.resultautoincrement.resultbloomfilter.resultbloomfilter2.resultbloomfilter3.resultbloomfilter4.resultbloomfilter_skip.resultbulk_load.resultcardinality.resultcheck_table.resultcheckpoint.resultchecksum_table.resultchecksum_table_live.resultcol_opt_default.resultcol_opt_not_null.resultcol_opt_null.resultcol_opt_unsigned.resultcol_opt_zerofill.resultcollation.resultcollation_exception.resultcompact_deletes.resultcompression_zstd.resultconcurrent_alter.resultcons_snapshot_read_committed.resultcons_snapshot_repeatable_read.resultcons_snapshot_serializable.resultcorrupted_data_reads_debug.resultcreate_table.resultdeadlock.resultdelete.resultdelete_before_lock.resultdelete_ignore.resultdelete_quick.resultdelete_with_keys.resultdescribe.resultdrop_database.resultdrop_index_inplace.resultdrop_table.resultdrop_table2.resultdrop_table3.resultdup_key_update.resultduplicate_table.resultfail_system_cf.resultforeign_key.resultgap_lock_issue254.resultgap_lock_raise_error.resultget_error_message.resulthandler_basic.resulthermitage.resulti_s_ddl.resultindex.resultindex_file_map.resultindex_key_block_size.resultindex_primary.resultindex_type_btree.resultindex_type_hash.resultinformation_schema.resultinnodb_i_s_tables_disabled.resultinsert.resultinsert_optimized_config.resultinsert_with_keys.resultissue100.resultissue100_delete.resultissue111.resultissue290.resultissue314.resultlevel_read_committed.resultlevel_read_uncommitted.result

View file

@ -0,0 +1,108 @@
# TODO: Copyrights
IF (NOT EXISTS "${CMAKE_SOURCE_DIR}/rocksdb/Makefile")
MESSAGE(SEND_ERROR "Missing Makefile in rocksdb directory. Try \"git submodule update\".")
ENDIF()
# get a list of rocksdb library source files
# run with env -i to avoid passing variables
EXECUTE_PROCESS(
COMMAND env -i ${CMAKE_SOURCE_DIR}/storage/rocksdb/get_rocksdb_files.sh
OUTPUT_VARIABLE SCRIPT_OUTPUT
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
# split the list into lines
STRING(REGEX MATCHALL "[^\n]+" ROCKSDB_LIB_SOURCES ${SCRIPT_OUTPUT})
INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/rocksdb
${CMAKE_SOURCE_DIR}/rocksdb/include
${CMAKE_SOURCE_DIR}/rocksdb/third-party/gtest-1.7.0/fused-src
)
ADD_DEFINITIONS(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX -DOS_LINUX
-DZLIB)
SET(ROCKSDB_SOURCES
ha_rocksdb.cc ha_rocksdb.h ha_rocksdb_proto.h
logger.h
rdb_comparator.h
rdb_datadic.cc rdb_datadic.h
rdb_cf_options.cc rdb_cf_options.h
rdb_cf_manager.cc rdb_cf_manager.h
properties_collector.cc properties_collector.h
event_listener.cc event_listener.h
rdb_i_s.cc rdb_i_s.h
rdb_index_merge.cc rdb_index_merge.h
rdb_perf_context.cc rdb_perf_context.h
rdb_mutex_wrapper.cc rdb_mutex_wrapper.h
rdb_sst_info.cc rdb_sst_info.h
rdb_utils.cc rdb_utils.h rdb_buff.h
rdb_threads.cc rdb_threads.h
${ROCKSDB_LIB_SOURCES}
)
IF(WITH_FB_TSAN)
SET(PIC_EXT "_pic")
ELSE()
SET(PIC_EXT "")
ENDIF()
SET(rocksdb_static_libs )
IF (NOT "$ENV{WITH_SNAPPY}" STREQUAL "")
SET(rocksdb_static_libs ${rocksdb_static_libs}
$ENV{WITH_SNAPPY}/lib/libsnappy${PIC_EXT}.a)
ADD_DEFINITIONS(-DSNAPPY)
ELSE()
SET(rocksdb_static_libs ${rocksdb_static_libs} snappy)
ENDIF()
IF (NOT "$ENV{WITH_LZ4}" STREQUAL "")
SET(rocksdb_static_libs ${rocksdb_static_libs}
$ENV{WITH_LZ4}/lib/liblz4${PIC_EXT}.a)
ADD_DEFINITIONS(-DLZ4)
ELSE()
SET(rocksdb_static_libs ${rocksdb_static_libs} lz4)
ENDIF()
IF (NOT "$ENV{WITH_BZ2}" STREQUAL "")
SET(rocksdb_static_libs ${rocksdb_static_libs}
$ENV{WITH_BZ2}/lib/libbz2${PIC_EXT}.a)
ADD_DEFINITIONS(-DBZIP2)
ELSE()
SET(rocksdb_static_libs ${rocksdb_static_libs} bz2)
ENDIF()
# link ZSTD only if instructed
IF (NOT "$ENV{WITH_ZSTD}" STREQUAL "")
SET(rocksdb_static_libs ${rocksdb_static_libs}
$ENV{WITH_ZSTD}/lib/libzstd${PIC_EXT}.a)
ADD_DEFINITIONS(-DZSTD)
ENDIF()
SET(rocksdb_static_libs ${rocksdb_static_libs} ${ZLIB_LIBRARY} "-lrt")
MYSQL_ADD_PLUGIN(rocksdb_se ${ROCKSDB_SOURCES} STORAGE_ENGINE DEFAULT STATIC_ONLY
LINK_LIBRARIES ${rocksdb_static_libs}
)
IF(WITH_EMBEDDED_SERVER)
ADD_SUBDIRECTORY(unittest)
ENDIF()
IF (WITH_ROCKSDB_SE_STORAGE_ENGINE)
# TODO: read this file list from src.mk:TOOL_SOURCES
SET(ROCKSDB_TOOL_SOURCES
${CMAKE_SOURCE_DIR}/rocksdb/tools/ldb_tool.cc
${CMAKE_SOURCE_DIR}/rocksdb/tools/ldb_cmd.cc
${CMAKE_SOURCE_DIR}/rocksdb/tools/sst_dump_tool.cc
)
MYSQL_ADD_EXECUTABLE(sst_dump ${CMAKE_SOURCE_DIR}/rocksdb/tools/sst_dump.cc ${ROCKSDB_TOOL_SOURCES})
TARGET_LINK_LIBRARIES(sst_dump rocksdb_se)
MYSQL_ADD_EXECUTABLE(ldb ${CMAKE_SOURCE_DIR}/rocksdb/tools/ldb.cc ${ROCKSDB_TOOL_SOURCES})
TARGET_LINK_LIBRARIES(ldb rocksdb_se)
MYSQL_ADD_EXECUTABLE(mysql_ldb ${CMAKE_SOURCE_DIR}/storage/rocksdb/tools/mysql_ldb.cc ${ROCKSDB_TOOL_SOURCES})
TARGET_LINK_LIBRARIES(mysql_ldb rocksdb_se)
ENDIF()

38
storage/rocksdb/README Normal file
View file

@ -0,0 +1,38 @@
== Summary ==
This directory contains RocksDB-based Storage Engine (RDBSE) for MySQL = "MyRocks".
== Resources ==
See https://github.com/facebook/mysql-5.6/wiki/Getting-Started-with-MyRocks
Facebook group: https://www.facebook.com/groups/mysqlonrocksdb/
== Coding Conventions ==
The baseline for MyRocks coding conventions is the MySQL set, available at
http://dev.mysql.com/doc/internals/en/coding-guidelines.html.
Several refinements:
0. There is an umbrella C++ namespace named "myrocks" for all MyRocks code.
1. We introduced "RDB" as the super-short abbreviation for "RocksDB". We will
use it as a name prefix, with different capitalization (see below), to ease
up code navigation with ctags and grep.
N.B. For ease of matching, we'll keep the variables and functions dealing
with sysvars as close as possible to the outside visible names of
sysvars, which start with "rocksdb_" prefix, the outward storage
engine name.
2. The names for classes, interfaces, and C++ structures (which act as
classes), start with prefix "Rdb_".
NB: For historical reasons, we'll keep the "ha_<storage_engine_name>" class
name for ha_rocksdb class, which is an exception to the rule.
3. The names for global objects and functions start with prefix "rdb_".
4. The names for macros and constants start with prefix "RDB_".
5. Regular class member names start with "m_".
6. Static class member names start with "s_".
7. Given the 80 character per line limit, we'll not always use full English
words in names, when a well known or easily recognizable abbreviation
exists (like "tx" for "transaction" or "param" for "parameter" etc).
8. When needing to disambiguate, we use different suffixes for that, like
"_arg" for a function argument/parameter, "_arr" for a C style array, and
"_vect" for a std::vector etc.
== Running Tests ==
To run tests from rocksdb, rocksd_rpl or rocksdb_sys_vars packages, use the following parameters:
--mysqld=--default-storage-engine=rocksdb --mysqld=--skip-innodb --mysqld=--default-tmp-storage-engine=MyISAM --mysqld=--rocksdb

View file

@ -0,0 +1,80 @@
/*
Copyright (c) 2015, Facebook, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* The C++ file's header */
#include "./event_listener.h"
/* C++ standard header files */
#include <string>
#include <vector>
/* MySQL includes */
#include <mysql/plugin.h>
#include <my_global.h>
/* MyRocks includes */
#include "./ha_rocksdb.h"
#include "./properties_collector.h"
#include "./rdb_datadic.h"
namespace myrocks {
static std::vector<Rdb_index_stats>
extract_index_stats(
const std::vector<std::string>& files,
const rocksdb::TablePropertiesCollection& props
) {
std::vector<Rdb_index_stats> ret;
for (auto fn : files) {
auto it = props.find(fn);
DBUG_ASSERT(it != props.end());
std::vector<Rdb_index_stats> stats;
Rdb_tbl_prop_coll::read_stats_from_tbl_props(it->second, &stats);
ret.insert(ret.end(), stats.begin(), stats.end());
}
return ret;
}
void Rdb_event_listener::OnCompactionCompleted(
rocksdb::DB *db,
const rocksdb::CompactionJobInfo& ci
) {
DBUG_ASSERT(db != nullptr);
DBUG_ASSERT(m_ddl_manager != nullptr);
if (ci.status.ok()) {
m_ddl_manager->adjust_stats(
extract_index_stats(ci.output_files, ci.table_properties),
extract_index_stats(ci.input_files, ci.table_properties));
}
}
void Rdb_event_listener::OnFlushCompleted(
rocksdb::DB* db,
const rocksdb::FlushJobInfo& flush_job_info
) {
DBUG_ASSERT(db != nullptr);
DBUG_ASSERT(m_ddl_manager != nullptr);
auto tbl_props = std::make_shared<const rocksdb::TableProperties>(
flush_job_info.table_properties);
std::vector<Rdb_index_stats> stats;
Rdb_tbl_prop_coll::read_stats_from_tbl_props(tbl_props, &stats);
m_ddl_manager->adjust_stats(stats);
}
} // namespace myrocks

View file

@ -0,0 +1,40 @@
/*
Copyright (c) 2015, Facebook, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#pragma once
#include "rocksdb/listener.h"
namespace myrocks {
class Rdb_ddl_manager;
class Rdb_event_listener : public rocksdb::EventListener
{
public:
explicit Rdb_event_listener(Rdb_ddl_manager* ddl_manager) :
m_ddl_manager(ddl_manager) {
}
void OnCompactionCompleted(
rocksdb::DB *db, const rocksdb::CompactionJobInfo& ci) override;
void OnFlushCompleted(
rocksdb::DB* db, const rocksdb::FlushJobInfo& flush_job_info) override;
private:
Rdb_ddl_manager* m_ddl_manager;
};
} // namespace myrocks

View file

@ -0,0 +1,27 @@
#!/bin/bash
MKFILE=`mktemp`
# create and run a simple makefile
# include rocksdb make file relative to the path of this script
echo "include rocksdb/src.mk
all:
@echo \$(LIB_SOURCES)" > $MKFILE
for f in `make --makefile $MKFILE`
do
echo ../../rocksdb/$f
done
rm $MKFILE
# create build_version.cc file. Only create one if it doesn't exists or if it is different
# this is so that we don't rebuild mysqld every time
bv=rocksdb/util/build_version.cc
date=$(date +%F)
git_sha=$(pushd rocksdb >/dev/null && git rev-parse HEAD 2>/dev/null && popd >/dev/null)
if [ ! -f $bv ] || [ -z $git_sha ] || [ ! `grep $git_sha $bv` ]
then
echo "#include \"build_version.h\"
const char* rocksdb_build_git_sha =
\"rocksdb_build_git_sha:$git_sha\";
const char* rocksdb_build_git_date =
\"rocksdb_build_git_date:$date\";
const char* rocksdb_build_compile_date = __DATE__;" > $bv
fi

10699
storage/rocksdb/ha_rocksdb.cc Normal file

File diff suppressed because it is too large Load diff

1054
storage/rocksdb/ha_rocksdb.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,80 @@
/*
Copyright (c) 2012,2013 Monty Program Ab
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#pragma once
/* C++ standard header files */
#include <string>
#include <vector>
/* MySQL header files */
#include "./sql_string.h"
/* RocksDB includes */
#include "rocksdb/table.h"
namespace myrocks {
enum RDB_IO_ERROR_TYPE {
RDB_IO_ERROR_TX_COMMIT,
RDB_IO_ERROR_DICT_COMMIT,
RDB_IO_ERROR_BG_THREAD
};
void rdb_handle_io_error(rocksdb::Status status, RDB_IO_ERROR_TYPE err_type);
int rdb_normalize_tablename(const std::string& tablename, std::string* str)
__attribute__((__nonnull__, __warn_unused_result__));
int rdb_split_normalized_tablename(const std::string& fullname, std::string *db,
std::string *table = nullptr,
std::string *partition = nullptr)
__attribute__((__warn_unused_result__));
std::vector<std::string> rdb_get_open_table_names(void);
int rdb_get_table_perf_counters(const char *tablename,
Rdb_perf_counters *counters)
__attribute__((__nonnull__(2)));
void rdb_get_global_perf_counters(Rdb_perf_counters *counters)
__attribute__((__nonnull__(1)));
void rdb_queue_save_stats_request();
/*
Access to singleton objects.
*/
rocksdb::DB *rdb_get_rocksdb_db();
class Rdb_cf_manager;
Rdb_cf_manager& rdb_get_cf_manager();
rocksdb::BlockBasedTableOptions& rdb_get_table_options();
class Rdb_dict_manager;
Rdb_dict_manager *rdb_get_dict_manager(void)
__attribute__((__warn_unused_result__));
class Rdb_ddl_manager;
Rdb_ddl_manager *rdb_get_ddl_manager(void)
__attribute__((__warn_unused_result__));
class Rdb_binlog_manager;
Rdb_binlog_manager *rdb_get_binlog_manager(void)
__attribute__((__warn_unused_result__));
} // namespace myrocks

73
storage/rocksdb/logger.h Normal file
View file

@ -0,0 +1,73 @@
/*
Copyright (c) 2015, Facebook, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#pragma once
#include <log.h>
#include <sstream>
#include <string>
namespace myrocks {
class Rdb_logger : public rocksdb::Logger
{
public:
void Logv(const rocksdb::InfoLogLevel log_level,
const char* format,
va_list ap) override
{
DBUG_ASSERT(format != nullptr);
enum loglevel mysql_log_level;
if (m_logger) {
m_logger->Logv(log_level, format, ap);
}
if (log_level < GetInfoLogLevel()) {
return;
}
if (log_level >= rocksdb::InfoLogLevel::ERROR_LEVEL) {
mysql_log_level= ERROR_LEVEL;
} else if (log_level >= rocksdb::InfoLogLevel::WARN_LEVEL) {
mysql_log_level= WARNING_LEVEL;
} else {
mysql_log_level= INFORMATION_LEVEL;
}
// log to MySQL
std::string f("LibRocksDB:");
f.append(format);
error_log_print(mysql_log_level, f.c_str(), ap);
}
void Logv(const char* format, va_list ap) override
{
DBUG_ASSERT(format != nullptr);
// If no level is specified, it is by default at information level
Logv(rocksdb::InfoLogLevel::INFO_LEVEL, format, ap);
}
void SetRocksDBLogger(std::shared_ptr<rocksdb::Logger> logger)
{
m_logger = logger;
}
private:
std::shared_ptr<rocksdb::Logger> m_logger;
};
} // namespace myrocks

View file

@ -0,0 +1,69 @@
let $max_table = 2;
--disable_query_log
let $table = 1;
while ($table <= $max_table) {
let $max = 9;
let $i = 2;
while ($i <= $max) {
let $insert = INSERT INTO t$table VALUES ($i, $i, $i);
eval $insert;
inc $i;
}
inc $table;
}
--enable_query_log
let $table = 1;
while ($table <= $max_table) {
let $i = 1;
let $j = 9;
while ($i <= $max) {
let $insert = INSERT INTO t$table VALUES ($i, $i, $i) ON DUPLICATE KEY UPDATE id2 = $j;
eval $insert;
let $select = SELECT * FROM t$table WHERE id1 = $i;
eval $select;
let $select = SELECT * FROM t$table FORCE INDEX (id3) WHERE id3 = $i;
eval $select;
inc $j;
let $insert = INSERT INTO t$table VALUES ($i, $i, $i) ON DUPLICATE KEY UPDATE id2 = $j;
eval $insert;
let $select = SELECT * FROM t$table WHERE id1 = $i;
eval $select;
let $select = SELECT * FROM t$table FORCE INDEX (id3) WHERE id3 = $i;
eval $select;
inc $j;
let $insert = INSERT INTO t$table VALUES ($i, $i, $i) ON DUPLICATE KEY UPDATE id2 = $j;
eval $insert;
let $select = SELECT * FROM t$table WHERE id1 = $i;
eval $select;
let $select = SELECT * FROM t$table FORCE INDEX (id3) WHERE id3 = $i;
eval $select;
inc $j;
inc $i;
inc $i;
inc $i;
inc $i;
}
let $select = SELECT * FROM t$table;
eval $select;
let $select = SELECT * FROM t$table FORCE INDEX (id3);
eval $select;
inc $table;
}

View file

@ -0,0 +1,51 @@
#
# Check concurrent locking issues:
# Locking rows that do not exist when using all primary key columns in a
# WHERE clause
#
# To call this, set $isolation_level and call this file
#
# let $isolation_level = REPEATABLE READ;
# --source suite/rocksdb/include/locking_issues_case1_1.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 1.1:
--echo - Locking rows that do not exist when using all primary key columns in
--echo - a WHERE clause
--echo - using $isolation_level transaction isolation level
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t0;
--enable_warnings
CREATE TABLE t0(id1 INT, id2 INT, value INT, PRIMARY KEY(id1, id2));
INSERT INTO t0 VALUES (1,1,0), (3,3,0), (4,4,0), (6,6,0);
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
SELECT * FROM t0 WHERE id1=1 AND id2=5 FOR UPDATE;
connection con2;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
--error ER_LOCK_WAIT_TIMEOUT
INSERT INTO t0 VALUES (1,5,0);
--error ER_LOCK_WAIT_TIMEOUT
SELECT * FROM t0 WHERE id1=1 AND id2=5 FOR UPDATE;
connection con1;
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t0;

View file

@ -0,0 +1,48 @@
#
# Check concurrent locking issues:
# Locking rows that do not exist without using all primary key columns in a
# WHERE clause
#
# To call this, set $isolation_level and call this file
#
# let $isolation_level = REPEATABLE READ;
# --source suite/rocksdb/include/locking_issues_case1_2.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 1.2:
--echo - Locking rows that do not exist without using all primary key
--echo - columns in a WHERE clause
--echo - using $isolation_level transaction isolation level
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t0;
--enable_warnings
CREATE TABLE t0(id1 INT, id2 INT, value INT, PRIMARY KEY(id1, id2));
INSERT INTO t0 VALUES (1,1,0), (3,3,0), (4,4,0), (6,6,0);
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
SELECT * FROM t0 WHERE id1=1 FOR UPDATE;
connection con2;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
SELECT * FROM t0 WHERE id1=1 AND id2=4 FOR UPDATE;
INSERT INTO t0 VALUES (1,5,0);
connection con1;
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t0;

View file

@ -0,0 +1,97 @@
#
# Check concurrent locking issues:
# Rows that are scanned but do not match the WHERE clause are not locked.
#
# To call this, set $isolation_level and call this file
# If you want to enable rocksdb_lock_scanned_rows set $lock_scanned_rows=1
#
# let $isolation_level = REPEATABLE READ;
# let $lock_scanned_rows = 1 (optional)
# --source suite/rocksdb/include/locking_issues_case2.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 2:
--echo - Rows that are scanned but do not match the WHERE are not locked
--echo - using $isolation_level transaction isolation level unless
--echo - rocksdb_lock_scanned_rows is on
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t0;
--enable_warnings
SELECT @@global.rocksdb_lock_scanned_rows;
if ($lock_scanned_rows)
{
let $original_val=query_get_value(
select @@global.rocksdb_lock_scanned_rows as val, val, 1);
SET GLOBAL rocksdb_lock_scanned_rows=ON;
}
CREATE TABLE t0(id INT PRIMARY KEY, value INT);
INSERT INTO t0 VALUES (1,0), (2,1), (3,0), (4,0), (5,1);
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
connection con2;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
if ($lock_scanned_rows == 1)
{
connection con1;
# This is expected to leave locks on all the rows in t0
SELECT * FROM t0 WHERE value > 0 FOR UPDATE;
connection con2;
--error ER_LOCK_WAIT_TIMEOUT
UPDATE t0 SET VALUE=10 WHERE id=1;
}
if ($lock_scanned_rows == 0)
{
connection con1;
# This is expected to release locks on rows with value=0
SELECT * FROM t0 WHERE value > 0 FOR UPDATE;
connection con2;
# This should succeed as con1 should have released the lock on row (1,0)
UPDATE t0 SET VALUE=10 WHERE id=1;
# This should fail because lock on row (5,1) is still held.
--error ER_LOCK_WAIT_TIMEOUT
UPDATE t0 SET VALUE=10 WHERE id=5;
connection con1;
# Do another operation
UPDATE t0 SET value=100 WHERE id in (4,5) and value>0;
connection con2;
# Check that row (4,0) is still not locked
SELECT * FROM t0 WHERE id=4 FOR UPDATE;
COMMIT;
SELECT * FROM t0;
}
connection con1;
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t0;
if ($lock_scanned_rows == 1)
{
eval SET GLOBAL rocksdb_lock_scanned_rows=$original_val;
}

View file

@ -0,0 +1,69 @@
#
# Check concurrent locking issues:
# After creating a snapshot, other clients updating rows
#
# To call this, set $isolation_level and call this file
#
# let $isolation_level = REPEATABLE READ;
# --source suite/rocksdb/include/locking_issues_case3.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 3:
--echo - After creating a snapshot, other clients updating rows
--echo - using $isolation_level transaction isolation level
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t0;
--enable_warnings
CREATE TABLE t0(id INT AUTO_INCREMENT PRIMARY KEY, value INT);
# Insert 200,000 rows, breaking it up into inserts of 1000 rows at a time
--echo Inserting 200,000 rows
--disable_query_log
SET @save_rocksdb_bulk_load=@@rocksdb_bulk_load;
SET rocksdb_bulk_load=1;
SET @save_rocksdb_write_disable_wal=@@rocksdb_write_disable_wal;
SET GLOBAL rocksdb_write_disable_wal=1;
let $i = 1;
while ($i <= 200) {
eval BEGIN;
let $j = 1;
while ($j <= 100) {
eval INSERT INTO t0(value) VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0);
inc $j;
}
eval COMMIT;
inc $i;
}
SET rocksdb_bulk_load=@save_rocksdb_bulk_load;
SET GLOBAL rocksdb_write_disable_wal=@save_rocksdb_write_disable_wal;
--enable_query_log
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
let $ID = `SELECT connection_id()`;
send SELECT * FROM t0 WHERE value > 0 FOR UPDATE;
connection con2;
let $wait_condition = SELECT 1 FROM information_schema.processlist
WHERE id = $ID AND state = "Sending data";
--source include/wait_condition.inc
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
UPDATE t0 SET VALUE=VALUE+1 WHERE id=190000;
connection con1;
--error ER_LOCK_DEADLOCK
reap;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t0;

View file

@ -0,0 +1,68 @@
#
# Check concurrent locking issues:
# Phantom rows
#
# To call this, set $isolation_level and call this file
#
# let $isolation_level = REPEATABLE READ;
# --source suite/rocksdb/include/locking_issues_case4.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 4:
--echo - Phantom rows
--echo - using $isolation_level transaction isolation level
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t0;
--enable_warnings
CREATE TABLE t0(id INT AUTO_INCREMENT PRIMARY KEY, value INT);
# Insert 200,000 rows, breaking it up into inserts of 1000 rows at a time
--echo Inserting 200,000 rows
--disable_query_log
SET @save_rocksdb_bulk_load=@@rocksdb_bulk_load;
SET rocksdb_bulk_load=1;
SET @save_rocksdb_write_disable_wal=@@rocksdb_write_disable_wal;
SET GLOBAL rocksdb_write_disable_wal=1;
let $i = 1;
while ($i <= 200) {
eval BEGIN;
let $j = 1;
while ($j <= 100) {
eval INSERT INTO t0(value) VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0);
inc $j;
}
eval COMMIT;
inc $i;
}
SET rocksdb_bulk_load=@save_rocksdb_bulk_load;
SET GLOBAL rocksdb_write_disable_wal=@save_rocksdb_write_disable_wal;
--enable_query_log
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
let $ID = `SELECT connection_id()`;
send SELECT * FROM t0 WHERE value > 0 FOR UPDATE;
connection con2;
let $wait_condition = SELECT 1 FROM information_schema.processlist
WHERE id = $ID AND state = "Sending data";
--source include/wait_condition.inc
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
INSERT INTO t0 VALUES(200001,1), (-1,1);
connection con1;
reap;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t0;

View file

@ -0,0 +1,75 @@
#
# Check concurrent locking issues:
# Deleting primary key
#
# To call this, set $isolation_level and call this file
#
# let $isolation_level = REPEATABLE READ;
# --source suite/rocksdb/include/locking_issues_case5.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 5:
--echo - Deleting primary key
--echo - using $isolation_level transaction isolation level
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t0;
--enable_warnings
CREATE TABLE t0(id INT AUTO_INCREMENT PRIMARY KEY, value INT);
# Insert 200,000 rows, breaking it up into inserts of 1000 rows at a time
--echo Inserting 200,000 rows
--disable_query_log
SET @save_rocksdb_bulk_load=@@rocksdb_bulk_load;
SET rocksdb_bulk_load=1;
SET @save_rocksdb_write_disable_wal=@@rocksdb_write_disable_wal;
SET GLOBAL rocksdb_write_disable_wal=1;
let $i = 1;
while ($i <= 200) {
eval BEGIN;
let $j = 1;
while ($j <= 100) {
eval INSERT INTO t0(value) VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0);
inc $j;
}
eval COMMIT;
inc $i;
}
SET rocksdb_bulk_load=@save_rocksdb_bulk_load;
SET GLOBAL rocksdb_write_disable_wal=@save_rocksdb_write_disable_wal;
--enable_query_log
UPDATE t0 SET value=100 WHERE id=190000;
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
let $ID = `SELECT connection_id()`;
send SELECT * FROM t0 WHERE value > 0 FOR UPDATE;
connection con2;
let $wait_condition = SELECT 1 FROM information_schema.processlist
WHERE id = $ID AND state = "Sending data";
--source include/wait_condition.inc
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
DELETE FROM t0 WHERE id=190000;
COMMIT;
connection con1;
--error ER_LOCK_DEADLOCK
reap;
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t0;

View file

@ -0,0 +1,75 @@
#
# Check concurrent locking issues:
# Changing primary key
#
# To call this, set $isolation_level and call this file
#
# let $isolation_level = REPEATABLE READ;
# --source suite/rocksdb/include/locking_issues_case6.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 6:
--echo - Changing primary key
--echo - using $isolation_level transaction isolation level
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t0;
--enable_warnings
CREATE TABLE t0(id INT AUTO_INCREMENT PRIMARY KEY, value INT);
# Insert 200,000 rows, breaking it up into inserts of 1000 rows at a time
--echo Inserting 200,000 rows
--disable_query_log
SET @save_rocksdb_bulk_load=@@rocksdb_bulk_load;
SET rocksdb_bulk_load=1;
SET @save_rocksdb_write_disable_wal=@@rocksdb_write_disable_wal;
SET GLOBAL rocksdb_write_disable_wal=1;
let $i = 1;
while ($i <= 200) {
eval BEGIN;
let $j = 1;
while ($j <= 100) {
eval INSERT INTO t0(value) VALUES (0),(0),(0),(0),(0),(0),(0),(0),(0),(0);
inc $j;
}
eval COMMIT;
inc $i;
}
SET rocksdb_bulk_load=@save_rocksdb_bulk_load;
SET GLOBAL rocksdb_write_disable_wal=@save_rocksdb_write_disable_wal;
--enable_query_log
UPDATE t0 SET value=100 WHERE id=190000;
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
let $ID = `SELECT connection_id()`;
send SELECT * FROM t0 WHERE value > 0 FOR UPDATE;
connection con2;
let $wait_condition = SELECT 1 FROM information_schema.processlist
WHERE id = $ID AND state = "Sending data";
--source include/wait_condition.inc
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
UPDATE t0 SET id=200001 WHERE id=190000;
COMMIT;
connection con1;
--error ER_LOCK_DEADLOCK
reap;
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t0;

View file

@ -0,0 +1,89 @@
#
# Check concurrent locking issues:
# Rows scanned but are not in the updated table should be locked when
# rocksdb_lock_scanned_rows is on but not locked otherwise.
#
# To call this, set $isolation_level and $lock_scanned_rows and call this file
#
# let $isolation_level = REPEATABLE READ;
# let $lock_scanned_rows = 0 (or 1)
# --source suite/rocksdb/include/locking_issues_case7.inc
#
--echo
--echo -----------------------------------------------------------------------
--echo - Locking issues case 7:
--echo - Rows that are scanned as part of a query but not in the table being
--echo - updated should not be locked unless rocksdb_lock_scanned_rows is on
--echo -----------------------------------------------------------------------
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
--enable_warnings
SELECT @@global.rocksdb_lock_scanned_rows;
if ($lock_scanned_rows)
{
let $original_val=query_get_value(
select @@global.rocksdb_lock_scanned_rows as val, val, 1);
SET GLOBAL rocksdb_lock_scanned_rows=ON;
}
CREATE TABLE t1(id INT PRIMARY KEY, value INT);
CREATE TABLE t2(id INT PRIMARY KEY, value INT);
INSERT INTO t1 VALUES (1,1), (2,2), (3,3);
INSERT INTO t2 VALUES (1,1), (2,2), (3,3), (4,4), (5,5);
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
connection con2;
eval SET SESSION TRANSACTION ISOLATION LEVEL $isolation_level;
BEGIN;
--echo lock_scanned_rows is $lock_scanned_rows
if ($lock_scanned_rows == 1)
{
connection con1;
# This is expected to leave a lock id=3 in t2;
UPDATE t1 JOIN t2 ON t1.id = t2.id SET t1.value=t1.value+100 WHERE t2.id=3;
connection con2;
--error ER_LOCK_WAIT_TIMEOUT
UPDATE t2 SET value=value+100 WHERE id=3;
# No other row in t2 should be locked;
UPDATE t2 SET value=value+100 WHERE id IN (1,2,4,5);
SELECT * FROM t2;
}
if ($lock_scanned_rows == 0)
{
connection con1;
# This should leave no locks on any row in t2;
UPDATE t1 JOIN t2 ON t1.id = t2.id SET t1.value=t1.value+100 WHERE t2.id=3;
connection con2;
UPDATE t2 SET value=value+100;
SELECT * FROM t2;
}
connection con1;
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;
DROP TABLE t2;
if ($lock_scanned_rows == 1)
{
eval SET GLOBAL rocksdb_lock_scanned_rows=$original_val;
}

View file

@ -0,0 +1,53 @@
# Usage:
#
# let $order = ASC; # or DESC
# let $comment = "rev:cf2"; # or ""
# --source suite/rocksdb/include/rocksdb_concurrent_delete.inc
let $first_row = -1; # Error this should never happen
if ($order == 'ASC')
{
let $first_row = 1;
}
if ($order == 'DESC')
{
let $first_row = 3;
}
connect (con, localhost, root,,);
connection default;
--disable_warnings
SET debug_sync='RESET';
DROP TABLE IF EXISTS t1;
--enable_warnings
eval CREATE TABLE t1 (pk INT PRIMARY KEY COMMENT $comment, a INT);
INSERT INTO t1 VALUES(1,1), (2,2), (3,3);
# This will cause the SELECT to block after finding the first row, but
# before locking and reading it.
connection con;
SET debug_sync='rocksdb_concurrent_delete SIGNAL parked WAIT_FOR go';
send_eval SELECT * FROM t1 order by t1.pk $order FOR UPDATE;
# While that connection is waiting, delete the first row (the one con
# is about to lock and read
connection default;
SET debug_sync='now WAIT_FOR parked';
eval DELETE FROM t1 WHERE pk = $first_row;
# Signal the waiting select to continue
SET debug_sync='now SIGNAL go';
# Now get the results from the select. The first entry (1,1) (or (3,3) when
# using reverse ordering) should be missing. Prior to the fix the SELECT
# would have returned: "1815: Internal error: NotFound:"
connection con;
reap;
# Cleanup
connection default;
disconnect con;
set debug_sync='RESET';
drop table t1;

View file

@ -0,0 +1,7 @@
!include include/default_my.cnf
[server]
sql-mode=NO_ENGINE_SUBSTITUTION
explicit-defaults-for-timestamp=1
rocksdb_lock_wait_timeout=1
rocksdb_strict_collation_check=0

View file

@ -0,0 +1,22 @@
#!/usr/bin/perl
die unless($ARGV[0]);
open(my $f, "<", $ARGV[0]) or die $!;
my @sst;
while(my $l = readline($f)) {
chomp($l);
push @sst, int($l);
}
for(my $i= 0; $i < $#sst; $i++) {
printf("checking sst file reduction on optimize table from %d to %d..\n", $i, $i+1);
if($sst[$i] - 1000 < $sst[$i+1]) {
printf("sst file reduction was not enough. %d->%d (minimum 1000kb)\n", $sst[$i], $sst[$i+1]);
die;
}else {
print "ok.\n";
}
}
exit(0);

View file

@ -0,0 +1,22 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (pk INT PRIMARY KEY DEFAULT '0', a INT(11), b CHAR(8)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL DEFAULT '0',
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
pk int(11) NO PRI 0
a int(11) YES NULL
b char(8) YES NULL
INSERT INTO t1 VALUES (1, 1,'a');
INSERT INTO t1 (a,b) VALUES (2,'b');
SELECT a,b FROM t1;
a b
1 a
2 b
DROP TABLE t1;

View file

@ -0,0 +1,378 @@
drop table if exists t1;
CREATE TABLE t1 (a INT, b INT, KEY ka(a), KEY kab(a,b)) ENGINE=RocksDB;
INSERT INTO t1 (a, b) VALUES (1, 5);
INSERT INTO t1 (a, b) VALUES (2, 6);
INSERT INTO t1 (a, b) VALUES (3, 7);
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
KEY `ka` (`a`),
KEY `kab` (`a`,`b`),
KEY `kb` (`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(kb) WHERE b > 5;
a b
2 6
3 7
SELECT * FROM t1 FORCE INDEX(kab) WHERE a > 2;
a b
3 7
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, KEY ka(a), KEY kab(a,b)) ENGINE=RocksDB;
INSERT INTO t1 (a, b) VALUES (1, 5);
INSERT INTO t1 (a, b) VALUES (2, 6);
INSERT INTO t1 (a, b) VALUES (3, 7);
ALTER TABLE t1 ADD INDEX kb(b), DROP INDEX ka, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
KEY `kab` (`a`,`b`),
KEY `kb` (`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(kb) WHERE b > 5;
a b
2 6
3 7
SELECT * FROM t1 FORCE INDEX(kab) WHERE a > 2;
a b
3 7
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, KEY ka(a), KEY kab(a,b)) ENGINE=RocksDB;
INSERT INTO t1 (a, b) VALUES (1, 5);
INSERT INTO t1 (a, b) VALUES (2, 6);
INSERT INTO t1 (a, b) VALUES (3, 7);
ALTER TABLE t1 DROP INDEX ka, DROP INDEX kab, ALGORITHM=INPLACE;
ALTER TABLE t1 ADD INDEX kb(b), ADD INDEX kab(a,b), ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
KEY `kb` (`b`),
KEY `kab` (`a`,`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(kb) WHERE b > 5;
a b
2 6
3 7
SELECT * FROM t1 FORCE INDEX(kab) WHERE a > 2;
a b
3 7
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, KEY ka(a), KEY kab(a,b)) ENGINE=RocksDB;
INSERT INTO t1 (a, b) VALUES (1, 5);
INSERT INTO t1 (a, b) VALUES (2, 6);
INSERT INTO t1 (a, b) VALUES (3, 7);
ALTER TABLE t1 ADD INDEX kb(b), DROP INDEX ka, ADD INDEX kba(b,a), DROP INDEX kab, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
KEY `kb` (`b`),
KEY `kba` (`b`,`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(kb) WHERE b > 5;
a b
2 6
3 7
SELECT * FROM t1 FORCE INDEX(kba) WHERE a > 2;
a b
3 7
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, KEY ka(a), KEY kab(a,b)) ENGINE=RocksDB;
ALTER TABLE t1 DROP INDEX ka, ADD INDEX ka(b), ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
KEY `kab` (`a`,`b`),
KEY `ka` (`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(ka) WHERE b > 5;
a b
SELECT * FROM t1 FORCE INDEX(kab) WHERE a > 2;
a b
DROP TABLE t1;
CREATE TABLE t1 (pk CHAR(8) PRIMARY KEY, a VARCHAR(11), b INT UNSIGNED) ENGINE=rocksdb charset utf8 collate utf8_bin;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` char(8) COLLATE utf8_bin NOT NULL,
`a` varchar(11) COLLATE utf8_bin DEFAULT NULL,
`b` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
pk char(8) NO PRI NULL
a varchar(11) YES NULL
b int(10) unsigned YES NULL
INSERT INTO t1 VALUES ('aaa', '1111', 1);
INSERT INTO t1 VALUES ('bbb', '2222', 2);
INSERT INTO t1 VALUES ('ccc', '3333', 3);
ALTER TABLE t1 ADD INDEX kab(a,b), ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` char(8) COLLATE utf8_bin NOT NULL,
`a` varchar(11) COLLATE utf8_bin DEFAULT NULL,
`b` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `kab` (`a`,`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(kab) WHERE a > '2' AND b < 3;
pk a b
bbb 2222 2
DROP TABLE t1;
CREATE TABLE t1 (pk CHAR(8) PRIMARY KEY, a VARCHAR(11), b INT UNSIGNED) ENGINE=rocksdb charset utf8 collate utf8_bin;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` char(8) COLLATE utf8_bin NOT NULL,
`a` varchar(11) COLLATE utf8_bin DEFAULT NULL,
`b` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
pk char(8) NO PRI NULL
a varchar(11) YES NULL
b int(10) unsigned YES NULL
INSERT INTO t1 VALUES ('aaa', '1111', 1);
INSERT INTO t1 VALUES ('bbb', '2222', 2);
INSERT INTO t1 VALUES ('ccc', '3333', 3);
ALTER TABLE t1 ADD INDEX kab(a,b), ALGORITHM=INPLACE;
ALTER TABLE t1 ADD INDEX ka(a), DROP INDEX kab, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` char(8) COLLATE utf8_bin NOT NULL,
`a` varchar(11) COLLATE utf8_bin DEFAULT NULL,
`b` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `ka` (`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(ka) WHERE a > '2' AND b < 3;
pk a b
bbb 2222 2
DROP TABLE t1;
CREATE TABLE t1 (pk CHAR(8) PRIMARY KEY, a VARCHAR(11), b INT UNSIGNED) ENGINE=rocksdb charset utf8 collate utf8_bin;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` char(8) COLLATE utf8_bin NOT NULL,
`a` varchar(11) COLLATE utf8_bin DEFAULT NULL,
`b` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
pk char(8) NO PRI NULL
a varchar(11) YES NULL
b int(10) unsigned YES NULL
INSERT INTO t1 VALUES ('aaa', '1111', 1);
INSERT INTO t1 VALUES ('bbb', '2222', 2);
INSERT INTO t1 VALUES ('ccc', '3333', 3);
ALTER TABLE t1 ADD INDEX kab(a,b), ADD INDEX ka(a), ADD INDEX kb(b), ALGORITHM=INPLACE;
ALTER TABLE t1 DROP INDEX ka, DROP INDEX kb, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` char(8) COLLATE utf8_bin NOT NULL,
`a` varchar(11) COLLATE utf8_bin DEFAULT NULL,
`b` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `kab` (`a`,`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(kab) WHERE a > '2' AND b < 3;
pk a b
bbb 2222 2
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, KEY ka(a), KEY kab(a,b)) ENGINE=RocksDB;
INSERT INTO t1 (a, b) VALUES (1, 5);
INSERT INTO t1 (a, b) VALUES (2, 6);
INSERT INTO t1 (a, b) VALUES (3, 7);
CREATE INDEX kb on t1 (b);
CREATE INDEX kba on t1 (b,a);
DROP INDEX ka on t1;
DROP INDEX kab on t1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
KEY `kb` (`b`),
KEY `kba` (`b`,`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 FORCE INDEX(kb) WHERE b > 5;
a b
2 6
3 7
SELECT * FROM t1 FORCE INDEX(kba) WHERE a > 2;
a b
3 7
DROP TABLE t1;
CREATE TABLE t1 (i INT, j INT, k INT, PRIMARY KEY (i), KEY(j)) ENGINE = ROCKSDB PARTITION BY KEY(i) PARTITIONS 4;
ALTER TABLE t1 ADD INDEX kij(i,j), ALGORITHM=INPLACE;
DROP INDEX kij ON t1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL DEFAULT '0',
`j` int(11) DEFAULT NULL,
`k` int(11) DEFAULT NULL,
PRIMARY KEY (`i`),
KEY `j` (`j`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (i)
PARTITIONS 4 */
SELECT * FROM t1 ORDER BY i LIMIT 10;
i j k
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
10 10 10
SELECT COUNT(*) FROM t1;
COUNT(*)
100
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, KEY ka(a), KEY kab(a,b)) ENGINE=RocksDB;
INSERT INTO t1 (a, b) VALUES (1, 5);
INSERT INTO t1 (a, b) VALUES (2, 6);
INSERT INTO t1 (a, b) VALUES (3, 7);
# crash_during_online_index_creation
flush logs;
SET SESSION debug="+d,crash_during_online_index_creation";
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
ERROR HY000: Lost connection to MySQL server during query
SET SESSION debug="-d,crash_during_online_index_creation";
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
KEY `ka` (`a`),
KEY `kab` (`a`,`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
CREATE TABLE t1 (i INT, j INT, k INT, PRIMARY KEY (i), KEY(j)) ENGINE = ROCKSDB PARTITION BY KEY(i) PARTITIONS 4;
# crash_during_index_creation_partition
flush logs;
SET SESSION debug="+d,crash_during_index_creation_partition";
ALTER TABLE t1 ADD INDEX kij(i,j), ALGORITHM=INPLACE;
ERROR HY000: Lost connection to MySQL server during query
SET SESSION debug="-d,crash_during_index_creation_partition";
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL DEFAULT '0',
`j` int(11) DEFAULT NULL,
`k` int(11) DEFAULT NULL,
PRIMARY KEY (`i`),
KEY `j` (`j`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (i)
PARTITIONS 4 */
ALTER TABLE t1 ADD INDEX kij(i,j), ALGORITHM=INPLACE;
SELECT * FROM t1 ORDER BY i LIMIT 10;
i j k
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
10 10 10
SELECT COUNT(*) FROM t1;
COUNT(*)
100
DROP TABLE t1;
CREATE TABLE t1 (i INT, j INT, k INT, PRIMARY KEY (i), KEY(j)) ENGINE = ROCKSDB PARTITION BY KEY(i) PARTITIONS 4;
# crash_during_index_creation_partition
flush logs;
SET SESSION debug="+d,myrocks_simulate_index_create_rollback";
# expected assertion failure from sql layer here for alter rollback
call mtr.add_suppression("Assertion `0' failed.");
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
ALTER TABLE t1 ADD INDEX kij(i,j), ALGORITHM=INPLACE;
ERROR HY000: Lost connection to MySQL server during query
SET SESSION debug="-d,myrocks_simulate_index_create_rollback";
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL DEFAULT '0',
`j` int(11) DEFAULT NULL,
`k` int(11) DEFAULT NULL,
PRIMARY KEY (`i`),
KEY `j` (`j`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (i)
PARTITIONS 4 */
ALTER TABLE t1 ADD INDEX kij(i,j), ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) NOT NULL DEFAULT '0',
`j` int(11) DEFAULT NULL,
`k` int(11) DEFAULT NULL,
PRIMARY KEY (`i`),
KEY `j` (`j`),
KEY `kij` (`i`,`j`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (i)
PARTITIONS 4 */
SELECT COUNT(*) FROM t1;
COUNT(*)
100
DROP TABLE t1;
CREATE TABLE t1 (a INT, b TEXT);
ALTER TABLE t1 ADD KEY kb(b(10));
ERROR HY000: Unsupported collation on string indexed column test.t1.b Use binary collation (binary, latin1_bin, utf8_bin).
ALTER TABLE t1 ADD PRIMARY KEY(a);
DROP TABLE t1;

View file

@ -0,0 +1,72 @@
drop table if exists t1;
CREATE TABLE t1(pk CHAR(5) PRIMARY KEY, a char(30), b char(30)) COLLATE 'latin1_bin';
set rocksdb_bulk_load=1;
set rocksdb_bulk_load_size=100000;
LOAD DATA INFILE <input_file> INTO TABLE t1;
set rocksdb_bulk_load=0;
select count(pk) from t1;
count(pk)
3000000
select count(a) from t1;
count(a)
3000000
select count(b) from t1;
count(b)
3000000
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
SELECT COUNT(*) as c FROM
(SELECT COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `b`, CONCAT(ISNULL(`b`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `t1` FORCE INDEX(`kb`)
UNION DISTINCT
SELECT COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#',
`b`, CONCAT(ISNULL(`b`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `t1` FORCE
INDEX(`kb_copy`)) as temp;
c
1
select count(*) from t1 FORCE INDEX(kb);
count(*)
3000000
select count(*) from t1 FORCE INDEX(kb_copy);
count(*)
3000000
select count(*) from t1 FORCE INDEX(PRIMARY);
count(*)
3000000
ALTER TABLE t1 DROP INDEX kb, ALGORITHM=INPLACE;
ALTER TABLE t1 DROP INDEX kb_copy, ALGORITHM=INPLACE;
ALTER TABLE t1 ADD INDEX kb(b), ADD INDEX kab(a,b), ALGORITHM=INPLACE;
SELECT COUNT(*) FROM t1 FORCE INDEX(kab);
COUNT(*)
3000000
SELECT COUNT(*) FROM t1 FORCE INDEX(kb);
COUNT(*)
3000000
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` char(5) COLLATE latin1_bin NOT NULL,
`a` char(30) COLLATE latin1_bin DEFAULT NULL,
`b` char(30) COLLATE latin1_bin DEFAULT NULL,
PRIMARY KEY (`pk`),
KEY `kb` (`b`),
KEY `kab` (`a`,`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin
DROP TABLE t1;
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, KEY kab(a,b)) ENGINE=RocksDB;
INSERT INTO t1 (a, b) VALUES (1, 5);
INSERT INTO t1 (a, b) VALUES (2, 6);
INSERT INTO t1 (a, b) VALUES (3, 7);
ALTER TABLE t1 DROP INDEX kab, ALGORITHM=INPLACE;
ALTER TABLE t1 ADD INDEX kb(b) comment 'rev:cf1', ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `kb` (`b`) COMMENT 'rev:cf1'
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SELECT COUNT(*) FROM t1 FORCE INDEX(kb);
COUNT(*)
3
DROP TABLE t1;

View file

@ -0,0 +1,7 @@
drop table if exists t1;
# Binary must be compiled with debug for this test
CREATE TABLE t1 (a INT) ENGINE=rocksdb;
SELECT COUNT(*) from t1;
COUNT(*)
400
DROP TABLE t1;

View file

@ -0,0 +1,251 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b char(8) YES NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, c CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 VALUES (1,'a'),(5,'z');
ALTER TABLE t1 ADD COLUMN b INT;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`c` char(8) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SELECT * FROM t1;
a c b
1 a NULL
5 z NULL
ALTER TABLE t1 DROP COLUMN b;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`c` char(8) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SELECT * FROM t1;
a c
1 a
5 z
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
ALTER TABLE t1 DROP COLUMN pk;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b char(8) YES NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
CREATE TABLE t2 (a INT, b CHAR(8)) ENGINE=rocksdb;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a,b) VALUES (3,'c');
INSERT INTO t2 (a,b) VALUES (4,'d');
CHECK TABLE t1, t2 FOR UPGRADE;
Table Op Msg_type Msg_text
test.t1 check status OK
test.t2 check status OK
INSERT INTO t2 (a,b) VALUES (5,'e');
CHECK TABLE t2 QUICK;
Table Op Msg_type Msg_text
test.t2 check status OK
INSERT INTO t1 (a,b) VALUES (6,'f');
CHECK TABLE t1 FAST;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a,b) VALUES (7,'g');
INSERT INTO t2 (a,b) VALUES (8,'h');
CHECK TABLE t2, t1 MEDIUM;
Table Op Msg_type Msg_text
test.t2 check status OK
test.t1 check status OK
INSERT INTO t1 (a,b) VALUES (9,'i');
INSERT INTO t2 (a,b) VALUES (10,'j');
CHECK TABLE t1, t2 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
test.t2 check status OK
INSERT INTO t1 (a,b) VALUES (11,'k');
CHECK TABLE t1 CHANGED;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1, t2;
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
ERROR HY000: Unique index support is disabled when the table has no primary key.
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b char(8) YES NULL
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (36,'foo');
DELETE FROM t1 WHERE a = 35 AND b = 'foo';
SELECT * FROM t1;
a b
36 foo
DROP TABLE t1;

View file

@ -0,0 +1,780 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT, b CHAR(8), KEY(a)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
KEY `a` (`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES MUL NULL
b char(8) YES NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
ALTER TABLE t1 ADD INDEX (b);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
KEY `b` (`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b char(8) YES MUL NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
ALTER TABLE t1 DROP INDEX b;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b char(8) YES NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
ALTER TABLE t1 DROP COLUMN pk;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b char(8) YES NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
#
# MDEV-4313: RocksDB: Server crashes in Rdb_key_def::setup on dropping the primary key column
#
CREATE TABLE t1 (pk INT PRIMARY KEY, i INT NOT NULL, KEY(i)) ENGINE=RocksDB;
ALTER TABLE t1 DROP COLUMN `pk`;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), KEY(a), KEY(b)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
KEY `a` (`a`),
KEY `b` (`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES MUL NULL
b char(8) YES MUL NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), KEY(a, b)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
KEY `a` (`a`,`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES MUL NULL
b char(8) YES NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), KEY(a), KEY(b)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
KEY `a` (`a`),
KEY `b` (`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES MUL NULL
b char(8) YES MUL NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), KEY(a)) ENGINE=rocksdb;
INSERT INTO t1 (a) VALUES (1),(2),(5);
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (6),(8),(12);
CHECK TABLE t1 FOR UPGRADE;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (13),(15),(16);
CHECK TABLE t1 QUICK;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (17),(120),(132);
CHECK TABLE t1 FAST;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (801),(900),(7714);
CHECK TABLE t1 MEDIUM;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (8760),(10023),(12000);
CHECK TABLE t1 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (13345),(24456),(78302),(143028);
CHECK TABLE t1 CHANGED;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT, d INT, KEY kab(a, b), KEY kbc(b, c), KEY kabc(a,b,c)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
KEY `kab` (`a`,`b`),
KEY `kbc` (`b`,`c`),
KEY `kabc` (`a`,`b`,`c`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES MUL NULL
b int(11) YES MUL NULL
c int(11) YES NULL
d int(11) YES NULL
INSERT INTO t1 (a,b,c,d) VALUES (1,2,3,4);
INSERT INTO t1 (a,b,c,d) VALUES (5,6,7,8);
INSERT INTO t1 (a,b,c,d) VALUES (10,11,12,13);
INSERT INTO t1 (a,b,c,d) VALUES (14,15,16,17);
SELECT * FROM t1;
a b c d
1 2 3 4
10 11 12 13
14 15 16 17
5 6 7 8
SELECT * FROM t1 WHERE a = 1 OR a = 10;
a b c d
1 2 3 4
10 11 12 13
SELECT * FROM t1 WHERE c = 3 OR d = 17;
a b c d
1 2 3 4
14 15 16 17
SELECT * FROM t1 WHERE a > 5 OR d > 5;
a b c d
10 11 12 13
14 15 16 17
5 6 7 8
SELECT a, b, c FROM t1 FORCE INDEX (kabc) WHERE a=1 OR b=11;
a b c
1 2 3
10 11 12
SELECT d FROM t1 FORCE INDEX (kbc) WHERE b > 6 AND c > 12;
d
17
UPDATE t1 SET a=a+100;
UPDATE t1 SET a=a-100, b=99 WHERE a>100;
SELECT * FROM t1;
a b c d
1 99 3 4
10 99 12 13
14 99 16 17
5 99 7 8
DELETE FROM t1 WHERE a>5;
DELETE FROM t1 WHERE b=99 AND d>4;
SELECT * FROM t1;
a b c d
1 99 3 4
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), KEY ka(a) comment 'rev:cf1', KEY kb(b)
comment 'rev:cf1', KEY kab(a,b) comment 'rev:cf2') ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
KEY `ka` (`a`) COMMENT 'rev:cf1',
KEY `kb` (`b`) COMMENT 'rev:cf1',
KEY `kab` (`a`,`b`) COMMENT 'rev:cf2'
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) YES MUL NULL
b char(8) YES MUL NULL
INSERT INTO t1 (a,b) VALUES (76,'bar');
INSERT INTO t1 (a,b) VALUES (35,'foo');
INSERT INTO t1 (a,b) VALUES (77,'baz');
SELECT * FROM t1 WHERE a = 35;
a b
35 foo
SELECT * FROM t1 WHERE a = 35 AND b = 'foo';
a b
35 foo
SELECT * FROM t1 WHERE a = 77 OR b = 'bar';
a b
76 bar
77 baz
SELECT * FROM t1 WHERE a > 35;
a b
76 bar
77 baz
SELECT * FROM t1;
a b
35 foo
76 bar
77 baz
UPDATE t1 SET a=a+100;
SELECT * FROM t1;
a b
135 foo
176 bar
177 baz
UPDATE t1 SET a=a-100, b='bbb' WHERE a>100;
SELECT * FROM t1;
a b
35 bbb
76 bbb
77 bbb
UPDATE t1 SET a=300, b='ccc' WHERE a>70;
SELECT * FROM t1;
a b
300 ccc
300 ccc
35 bbb
UPDATE t1 SET a=123 WHERE a=35;
SELECT * FROM t1;
a b
123 bbb
300 ccc
300 ccc
UPDATE t1 SET a=321 WHERE b='ccc';
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
INSERT INTO t1 (a,b) VALUES (45,'bob');
SELECT * FROM t1;
a b
123 bbb
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE a=123;
SELECT * FROM t1;
a b
321 ccc
321 ccc
45 bob
DELETE FROM t1 WHERE b > 'bbb' AND a > 100;
SELECT * FROM t1;
a b
45 bob
TRUNCATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (col1 int, col2 int, KEY kcol1(col1)) ENGINE=ROCKSDB;
INSERT INTO t1 (col1, col2) values (2,2);
ALTER TABLE t1 ADD COLUMN extra INT;
UPDATE t1 SET col2 = 1;
select * from t1;
col1 col2 extra
2 1 NULL
DELETE FROM t1 WHERE col1 = 2;
set global rocksdb_force_flush_memtable_now = true;
select * from t1;
col1 col2 extra
DROP TABLE t1;

View file

@ -0,0 +1 @@
RocksDB: Can't disable allow_os_buffer if allow_mmap_reads is enabled

View file

@ -0,0 +1,183 @@
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT, c CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 VALUES (1,1,'a'),(2,5,'z');
ALTER TABLE t1 ADD COLUMN b INT;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`c` char(8) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 ALTER COLUMN a SET DEFAULT '0';
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT '0',
`c` char(8) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 ALTER a DROP DEFAULT;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 CHANGE COLUMN b b1 CHAR(8) FIRST;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`b1` char(8) DEFAULT NULL,
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 CHANGE b1 b INT AFTER c;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 CHANGE b b CHAR(8);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 MODIFY COLUMN b INT;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 MODIFY COLUMN b CHAR(8) FIRST;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`b` char(8) DEFAULT NULL,
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 MODIFY COLUMN b INT AFTER a;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11),
`b` int(11) DEFAULT NULL,
`c` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 DROP COLUMN b;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 RENAME TO t2;
SHOW CREATE TABLE t1;
ERROR 42S02: Table 'test.t1' doesn't exist
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`pk` int(11) NOT NULL,
`a` int(11),
`c` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
DROP TABLE t2;
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT, b INT) ENGINE=rocksdb;
INSERT INTO t1 VALUES (1,1,5),(2,2,2),(3,4,3);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
ALTER TABLE t1 ORDER BY b ASC, a DESC, pk DESC;
Warnings:
Warning 1105 ORDER BY ignored as there is a user-defined clustered index in the table 't1'
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SELECT * FROM t1;
pk a b
1 1 5
2 2 2
3 4 3
DROP TABLE t1;
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT, b CHAR(8), c CHAR(8)) ENGINE=rocksdb CHARACTER SET latin1 COLLATE latin1_general_cs;
INSERT INTO t1 VALUES (1,5,'z','t');
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` char(8) COLLATE latin1_general_cs DEFAULT NULL,
`c` char(8) COLLATE latin1_general_cs DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs
ALTER TABLE t1 CONVERT TO CHARACTER SET utf8;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL,
`c` char(8) DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8
ALTER TABLE t1 DEFAULT CHARACTER SET = latin1 COLLATE latin1_general_ci;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` char(8) CHARACTER SET utf8 DEFAULT NULL,
`c` char(8) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
ALTER TABLE t1 FORCE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`pk` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` char(8) CHARACTER SET utf8 DEFAULT NULL,
`c` char(8) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`pk`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
DROP TABLE t1;

View file

@ -0,0 +1,29 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT(11), b CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 VALUES (1,1,'a'),(2,2,'b');
CREATE TABLE t2 (pk INT PRIMARY KEY, a INT(11), b CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 VALUES (3,3,'c');
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
INSERT INTO t2 VALUES (1,4,'d');
ANALYZE NO_WRITE_TO_BINLOG TABLE t2;
Table Op Msg_type Msg_text
test.t2 analyze status OK
INSERT INTO t1 VALUES (4,5,'e');
INSERT INTO t2 VALUES (2,6,'f');
ANALYZE LOCAL TABLE t1, t2;
Table Op Msg_type Msg_text
test.t1 analyze status OK
test.t2 analyze status OK
DROP TABLE t1, t2;
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT(11), KEY(a)) ENGINE=rocksdb;
INSERT INTO t1 VALUES (1,1),(2,2),(3,4),(4,7);
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
INSERT INTO t1 VALUES (5,8),(6,10),(7,11),(8,12);
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
DROP TABLE t1;

View file

@ -0,0 +1,64 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1 (
pk INT NOT NULL PRIMARY KEY,
key1 INT NOT NULL,
KEY (key1)
) ENGINE=ROCKSDB;
INSERT INTO t1 VALUES (12,12);
INSERT INTO t1 VALUES (6,6);
BEGIN;
INSERT INTO t1 VALUES (8,8), (10,10);
SELECT * FROM t1 WHERE key1 BETWEEN 4 and 11 ORDER BY KEY1 DESC;
pk key1
10 10
8 8
6 6
SELECT * FROM t1 WHERE key1 BETWEEN 4 and 11 ORDER BY KEY1 ASC;
pk key1
6 6
8 8
10 10
SELECT * FROM t1 IGNORE INDEX(key1) WHERE key1 BETWEEN 4 and 11 ORDER BY key1 DESC;
pk key1
10 10
8 8
6 6
SELECT * FROM t1 IGNORE INDEX(key1) WHERE key1 BETWEEN 4 and 11 ORDER BY key1 ASC;
pk key1
6 6
8 8
10 10
ROLLBACK;
CREATE TABLE t2 (
pk INT NOT NULL PRIMARY KEY,
key1 INT NOT NULL,
KEY (key1) COMMENT 'rev:cf'
) ENGINE=ROCKSDB;
INSERT INTO t2 VALUES (12,12);
INSERT INTO t2 VALUES (6,6);
BEGIN;
INSERT INTO t2 VALUES (8,8), (10,10);
SELECT * FROM t2 WHERE key1 BETWEEN 4 and 11 ORDER BY KEY1 DESC;
pk key1
10 10
8 8
6 6
SELECT * FROM t2 WHERE key1 BETWEEN 4 and 11 ORDER BY KEY1 ASC;
pk key1
6 6
8 8
10 10
SELECT * FROM t2 IGNORE INDEX(key1) WHERE key1 BETWEEN 4 and 11 ORDER BY key1 DESC;
pk key1
10 10
8 8
6 6
SELECT * FROM t2 IGNORE INDEX(key1) WHERE key1 BETWEEN 4 and 11 ORDER BY key1 ASC;
pk key1
6 6
8 8
10 10
ROLLBACK;
DROP TABLE t1;
DROP TABLE t2;

View file

@ -0,0 +1,16 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT AUTO_INCREMENT, KEY(a)) ENGINE=rocksdb;
INSERT INTO t1 (pk) VALUES (3), (2), (1);
SELECT * FROM t1;
pk a
3 1
2 2
1 3
INSERT INTO t1 (pk) VALUES (4);
SELECT * FROM t1;
pk a
3 1
2 2
1 3
4 4
DROP TABLE t1;

View file

@ -0,0 +1,64 @@
DROP TABLE IF EXISTS t1;
#---------------------------
# auto_increment_offset
#---------------------------
SET auto_increment_offset = 200;
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (NULL,'a'),(NULL,'b'),(NULL,'c');
SELECT LAST_INSERT_ID();
LAST_INSERT_ID()
1
SELECT a,b FROM t1 ORDER BY a;
a b
1 a
2 b
3 c
#---------------------------
# auto_increment_increment
#---------------------------
SET auto_increment_increment = 300;
INSERT INTO t1 (a,b) VALUES (NULL,'d'),(NULL,'e'),(NULL,'f');
SELECT LAST_INSERT_ID();
LAST_INSERT_ID()
200
SELECT a,b FROM t1 ORDER BY a;
a b
1 a
2 b
3 c
200 d
500 e
800 f
SET auto_increment_increment = 50;
INSERT INTO t1 (a,b) VALUES (NULL,'g'),(NULL,'h'),(NULL,'i');
SELECT LAST_INSERT_ID();
LAST_INSERT_ID()
850
SELECT a,b FROM t1 ORDER BY a;
a b
1 a
2 b
3 c
200 d
500 e
800 f
850 g
900 h
950 i
DROP TABLE t1;
#---------------------------
# offset is greater than the max value
#---------------------------
SET auto_increment_increment = 500;
SET auto_increment_offset = 300;
CREATE TABLE t1 (a TINYINT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a) VALUES (NULL);
Warnings:
Warning 1264 Out of range value for column 'a' at row 1
SELECT LAST_INSERT_ID();
LAST_INSERT_ID()
127
SELECT a FROM t1 ORDER BY a;
a
127
DROP TABLE t1;

View file

@ -0,0 +1 @@
# The test checks AUTO_INCREMENT capabilities that are not supported by RocksDB-SE.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,71 @@
CREATE TABLE t0 (id1 VARCHAR(30), id2 INT, value INT, PRIMARY KEY (id1, id2)) ENGINE=rocksdb collate latin1_bin;
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
SELECT COUNT(*) FROM t0 WHERE id1='X' AND id2>=1;
COUNT(*)
10000
select case when variable_value-@u = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u = 0 then 'true' else 'false' end
true
DROP TABLE t0;
CREATE TABLE t1 (id1 BIGINT, id2 INT, id3 BIGINT, value INT, PRIMARY KEY (id1, id2, id3)) ENGINE=rocksdb;
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3>=2;
COUNT(*)
9999
select case when variable_value-@u = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u = 0 then 'true' else 'false' end
true
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2>=1 AND id3>=2;
COUNT(*)
9999
select case when variable_value-@u = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u = 0 then 'true' else 'false' end
true
DROP TABLE t1;
CREATE TABLE t2 (id1 INT, id2 VARCHAR(100), id3 BIGINT, value INT, PRIMARY KEY (id1, id2, id3)) ENGINE=rocksdb collate latin1_bin;
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
select count(*) from t2 WHERE id1=100 and id2 IN ('00000000000000000000', '100');
count(*)
1
select case when variable_value-@u > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u > 0 then 'true' else 'false' end
true
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
select count(*) from t2 WHERE id1=200 and id2 IN ('00000000000000000000', '200');
count(*)
1
select case when variable_value-@u > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u > 0 then 'true' else 'false' end
true
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
select count(*) from t2 WHERE id1=200 and id2 IN ('3', '200');
count(*)
1
select case when variable_value-@u = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u = 0 then 'true' else 'false' end
true
DROP TABLE t2;
CREATE TABLE t3 (id1 BIGINT, id2 BIGINT, id3 BIGINT, id4 BIGINT, PRIMARY KEY (id1, id2, id3, id4)) ENGINE=rocksdb collate latin1_bin;
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_useful';
SELECT COUNT(*) FROM t3 WHERE id1=1 AND id2=5000 AND id3=1 AND id4=1;
COUNT(*)
0
select case when variable_value-@u > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_useful';
case when variable_value-@u > 0 then 'true' else 'false' end
true
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
SELECT COUNT(*) FROM t3 WHERE id1=1 AND id2=1 AND id3=1;
COUNT(*)
1
select case when variable_value-@u > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u > 0 then 'true' else 'false' end
true
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
SELECT COUNT(*) FROM t3 WHERE id1=1 AND id2=1 AND id3=1 AND id4 <= 500;
COUNT(*)
1
select case when variable_value-@u > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_useful';
case when variable_value-@u > 0 then 'true' else 'false' end
true
DROP TABLE t3;

View file

@ -0,0 +1,122 @@
CREATE TABLE `linktable` (
`id1` bigint(20) unsigned NOT NULL DEFAULT '0',
`id1_type` int(10) unsigned NOT NULL DEFAULT '0',
`id2` bigint(20) unsigned NOT NULL DEFAULT '0',
`id2_type` int(10) unsigned NOT NULL DEFAULT '0',
`link_type` bigint(20) unsigned NOT NULL DEFAULT '0',
`visibility` tinyint(3) NOT NULL DEFAULT '0',
`data` varchar(255) NOT NULL DEFAULT '',
`time` bigint(20) unsigned NOT NULL DEFAULT '0',
`version` int(11) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (link_type, `id1`,`id2`) COMMENT 'cf_link_pk',
KEY `id1_type` (`id1`,`link_type`,`visibility`,`time`,`version`,`data`) COMMENT 'rev:cf_link_id1_type',
KEY `id1_type2` (`id1`,`link_type`,`time`,`version`,`data`,`visibility`) COMMENT 'rev:cf_link_id1_type2',
KEY `id1_type3` (`id1`,`visibility`,`time`,`version`,`data`,`link_type`) COMMENT 'rev:cf_link_id1_type3'
) ENGINE=RocksDB DEFAULT COLLATE=latin1_bin;
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type`) where id1 = 100 and link_type = 1 and time >= 0 and time <= 9223372036854775807 and visibility = 1 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c > 0 then 'true' else 'false' end
true
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type2`) where id1 = 100 and link_type = 1 and time >= 0 and time <= 9223372036854775807 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c > 0 then 'true' else 'false' end
true
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type3`) where id1 = 100 and time >= 0 and time <= 9223372036854775807 and visibility = 1 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c = 0 then 'true' else 'false' end
true
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type`) where id1 = 100 and link_type = 1 and visibility = 1 and time >= 0 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c > 0 then 'true' else 'false' end
true
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type2`) where id1 = 100 and link_type = 1 and time >= 0 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c = 0 then 'true' else 'false' end
true
## HA_READ_PREFIX_LAST
# BF len 20
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type`) where id1 = 100 and link_type = 1 and visibility = 1 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c > 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c > 0 then 'true' else 'false' end
true
# BF len 19
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type2`) where id1 = 100 and link_type = 1 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c = 0 then 'true' else 'false' end
true
# BF len 12
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select id1, id2, link_type, visibility, data, time, version from linktable FORCE INDEX(`id1_type3`) where id1 = 100 and visibility = 1 order by time desc;
id1 id2 link_type visibility data time version
100 100 1 1 100 100 100
select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c = 0 then 'true' else 'false' end
true
DROP TABLE linktable;
#
# bloom filter prefix is 20 byte
# Create a key which is longer than that, so that we see that
# eq_cond_len= slice.size() - 1;
# doesnt work.
#
# indexnr 4
# kp0 + 4 = 8
# kp1 + 8 = 16
# kp2 + 8 = 24 24>20 byte length prefix
# kp3 + 8 = 28
create table t1 (
pk int primary key,
kp0 int not null,
kp1 bigint not null,
kp2 bigint not null,
kp3 bigint not null,
key kp12(kp0, kp1, kp2, kp3) comment 'rev:x1'
) engine=rocksdb;
insert into t1 values (1, 1,1, 1,1);
insert into t1 values (10,1,1,0x12FFFFFFFFFF,1);
insert into t1 values (11,1,1,0x12FFFFFFFFFF,1);
insert into t1 values (20,2,2,0x12FFFFFFFFFF,1);
insert into t1 values (21,2,2,0x12FFFFFFFFFF,1);
explain
select * from t1 where kp0=1 and kp1=1 and kp2=0x12FFFFFFFFFF order by kp3 desc;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index kp12 kp12 28 NULL # Using where; Using index
show status like '%rocksdb_bloom_filter_prefix%';
Variable_name Value
rocksdb_bloom_filter_prefix_checked 0
rocksdb_bloom_filter_prefix_useful 0
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
select * from t1 where kp0=1 and kp1=1 and kp2=0x12FFFFFFFFFF order by kp3 desc;
pk kp0 kp1 kp2 kp3
11 1 1 20890720927743 1
10 1 1 20890720927743 1
show status like '%rocksdb_bloom_filter_prefix%';
Variable_name Value
rocksdb_bloom_filter_prefix_checked 0
rocksdb_bloom_filter_prefix_useful 0
# The following MUST show TRUE:
select case when variable_value-@c = 0 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
case when variable_value-@c = 0 then 'true' else 'false' end
true
drop table t1;

View file

@ -0,0 +1,30 @@
CREATE TABLE t1 (
`id1` int unsigned NOT NULL DEFAULT '0',
`id2` int unsigned NOT NULL DEFAULT '0',
`link_type` int unsigned NOT NULL DEFAULT '0',
`visibility` tinyint NOT NULL DEFAULT '0',
`data` varchar(255) NOT NULL DEFAULT '',
`time` int unsigned NOT NULL DEFAULT '0',
`version` int unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (id1, link_type, visibility, id2) COMMENT 'rev:cf_link_pk'
) ENGINE=RocksDB DEFAULT COLLATE=latin1_bin;
CREATE PROCEDURE select_test()
BEGIN
DECLARE id1_cond INT;
SET id1_cond = 1;
WHILE id1_cond <= 20000 DO
SELECT count(*) AS cnt FROM (SELECT id1 FROM t1 FORCE INDEX (PRIMARY) WHERE id1 = id1_cond AND link_type = 1 AND visibility = 1 ORDER BY id2 DESC) AS t INTO @cnt;
IF @cnt < 1 THEN
SELECT id1_cond, @cnt;
END IF;
SET id1_cond = id1_cond + 1;
END WHILE;
END//
"Skipping bloom filter"
SET session rocksdb_skip_bloom_filter_on_read=1;
CALL select_test();
"Using bloom filter"
SET session rocksdb_skip_bloom_filter_on_read=0;
CALL select_test();
DROP PROCEDURE select_test;
drop table t1;

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,49 @@
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin';
CREATE TABLE t2(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin';
CREATE TABLE t3(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin'
PARTITION BY KEY() PARTITIONS 4;
set session transaction isolation level repeatable read;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
DB_NUM_SNAPSHOTS 0
start transaction with consistent snapshot;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
DB_NUM_SNAPSHOTS 1
set rocksdb_bulk_load=1;
set rocksdb_bulk_load_size=100000;
LOAD DATA INFILE <input_file> INTO TABLE t1;
LOAD DATA INFILE <input_file> INTO TABLE t2;
LOAD DATA INFILE <input_file> INTO TABLE t3;
set rocksdb_bulk_load=0;
select count(pk) from t1;
count(pk)
10000000
select count(a) from t1;
count(a)
10000000
select count(b) from t1;
count(b)
10000000
select count(pk) from t2;
count(pk)
10000000
select count(a) from t2;
count(a)
10000000
select count(b) from t2;
count(b)
10000000
select count(pk) from t3;
count(pk)
10000000
select count(a) from t3;
count(a)
10000000
select count(b) from t3;
count(b)
10000000
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
test.bulk_load.tmp
DROP TABLE t1, t2, t3;

View file

@ -0,0 +1,50 @@
DROP TABLE IF EXISTS t1;
create table t1(
id bigint not null primary key,
i1 bigint, #unique
i2 bigint, #repeating
c1 varchar(20), #unique
c2 varchar(20), #repeating
index t1_1(id, i1),
index t1_2(i1, i2),
index t1_3(i2, i1),
index t1_4(c1, c2),
index t1_5(c2, c1)
) engine=rocksdb;
optimize table t1;
Table Op Msg_type Msg_text
test.t1 optimize status OK
show index in t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 id A 100000 NULL NULL LSMTREE
t1 1 t1_1 1 id A 100000 NULL NULL LSMTREE
t1 1 t1_1 2 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_2 1 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_2 2 i2 A 100000 NULL NULL YES LSMTREE
t1 1 t1_3 1 i2 A 11111 NULL NULL YES LSMTREE
t1 1 t1_3 2 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_4 1 c1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_4 2 c2 A 100000 NULL NULL YES LSMTREE
t1 1 t1_5 1 c2 A 11111 NULL NULL YES LSMTREE
t1 1 t1_5 2 c1 A 100000 NULL NULL YES LSMTREE
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
table_name table_rows
t1 100000
restarting...
show index in t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 id A 100000 NULL NULL LSMTREE
t1 1 t1_1 1 id A 100000 NULL NULL LSMTREE
t1 1 t1_1 2 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_2 1 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_2 2 i2 A 100000 NULL NULL YES LSMTREE
t1 1 t1_3 1 i2 A 11111 NULL NULL YES LSMTREE
t1 1 t1_3 2 i1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_4 1 c1 A 100000 NULL NULL YES LSMTREE
t1 1 t1_4 2 c2 A 100000 NULL NULL YES LSMTREE
t1 1 t1_5 1 c2 A 11111 NULL NULL YES LSMTREE
t1 1 t1_5 2 c1 A 100000 NULL NULL YES LSMTREE
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
table_name table_rows
t1 100000
drop table t1;

View file

@ -0,0 +1,68 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
CREATE TABLE t2 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a,b) VALUES (3,'c');
INSERT INTO t2 (a,b) VALUES (4,'d');
CHECK TABLE t1, t2 FOR UPGRADE;
Table Op Msg_type Msg_text
test.t1 check status OK
test.t2 check status OK
INSERT INTO t2 (a,b) VALUES (5,'e');
CHECK TABLE t2 QUICK;
Table Op Msg_type Msg_text
test.t2 check status OK
INSERT INTO t1 (a,b) VALUES (6,'f');
CHECK TABLE t1 FAST;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a,b) VALUES (7,'g');
INSERT INTO t2 (a,b) VALUES (8,'h');
CHECK TABLE t2, t1 MEDIUM;
Table Op Msg_type Msg_text
test.t2 check status OK
test.t1 check status OK
INSERT INTO t1 (a,b) VALUES (9,'i');
INSERT INTO t2 (a,b) VALUES (10,'j');
CHECK TABLE t1, t2 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
test.t2 check status OK
INSERT INTO t1 (a,b) VALUES (11,'k');
CHECK TABLE t1 CHANGED;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1, t2;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY, KEY(a)) ENGINE=rocksdb;
INSERT INTO t1 (a) VALUES (1),(2),(5);
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (6),(8),(12);
CHECK TABLE t1 FOR UPGRADE;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (13),(15),(16);
CHECK TABLE t1 QUICK;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (17),(120),(132);
CHECK TABLE t1 FAST;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (801),(900),(7714);
CHECK TABLE t1 MEDIUM;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (8760),(10023),(12000);
CHECK TABLE t1 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 (a) VALUES (13345),(24456),(78302),(143028);
CHECK TABLE t1 CHANGED;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;

View file

@ -0,0 +1,59 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
DROP TABLE IF EXISTS t4;
DROP TABLE IF EXISTS t5;
CREATE TABLE t1 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t2 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t3 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t4 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
DELETE FROM t1;
DELETE FROM t2;
DELETE FROM t3;
DELETE FROM t4;
CREATE TABLE t5 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
DELETE FROM t5;
SET GLOBAL ROCKSDB_CREATE_CHECKPOINT = '[CHECKPOINT]';
CURRENT
SET GLOBAL ROCKSDB_CREATE_CHECKPOINT = '[CHECKPOINT]';
CURRENT
truncate table t1;
optimize table t1;
truncate table t2;
optimize table t2;
truncate table t3;
optimize table t3;
truncate table t4;
optimize table t4;
truncate table t5;
optimize table t5;
drop table if exists t1;
drop table if exists t2;
drop table if exists t3;
drop table if exists t4;
drop table if exists t5;

View file

@ -0,0 +1,87 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb CHECKSUM=0;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
CREATE TABLE t2 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb CHECKSUM=0;
CHECKSUM TABLE t1;
Table Checksum
test.t1 4259194219
CHECKSUM TABLE t2, t1;
Table Checksum
test.t2 0
test.t1 4259194219
CHECKSUM TABLE t1, t2 QUICK;
Table Checksum
test.t1 NULL
test.t2 NULL
CHECKSUM TABLE t1, t2 EXTENDED;
Table Checksum
test.t1 4259194219
test.t2 0
DROP TABLE t1, t2;
#
# Issue #110: SQL command checksum returns inconsistent result
#
create table t1 (pk int primary key, col1 varchar(10)) engine=rocksdb;
insert into t1 values (2,'fooo');
insert into t1 values (1,NULL);
checksum table t1;
Table Checksum
test.t1 1303411884
checksum table t1;
Table Checksum
test.t1 1303411884
select * from t1 where pk=2;
pk col1
2 fooo
checksum table t1;
Table Checksum
test.t1 1303411884
checksum table t1;
Table Checksum
test.t1 1303411884
flush tables;
checksum table t1;
Table Checksum
test.t1 1303411884
checksum table t1;
Table Checksum
test.t1 1303411884
drop table t1;
#
# The following test is about making sure MyRocks CHECKSUM TABLE
# values are the same as with InnoDB.
# If you see checksum values changed, make sure their counterparts
# in suite/innodb/r/checksum-matches-myrocks.result match.
#
create table t1 (pk int primary key, col1 varchar(10)) engine=rocksdb;
insert into t1 values (2,'fooo');
insert into t1 values (1,NULL);
checksum table t1;
Table Checksum
test.t1 1303411884
drop table t1;
create table t1 (
pk bigint unsigned primary key,
col1 varchar(10),
col2 tinyint,
col3 double
) engine=rocksdb;
checksum table t1;
Table Checksum
test.t1 0
insert into t1 values (1, NULL, NULL, NULL);
insert into t1 values (2, 'foo', NULL, NULL);
checksum table t1;
Table Checksum
test.t1 3633741545
insert into t1 values (3, NULL, 123, NULL);
insert into t1 values (4, NULL, NULL, 2.78);
checksum table t1;
Table Checksum
test.t1 390004011
insert into t1 values (5, 'xxxYYYzzzT', NULL, 2.78);
insert into t1 values (6, '', NULL, 2.78);
checksum table t1;
Table Checksum
test.t1 3183101003
drop table t1;

View file

@ -0,0 +1,20 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb CHECKSUM=1;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
CREATE TABLE t2 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb CHECKSUM=1;
CHECKSUM TABLE t1;
Table Checksum
test.t1 4259194219
CHECKSUM TABLE t2, t1;
Table Checksum
test.t2 0
test.t1 4259194219
CHECKSUM TABLE t1, t2 QUICK;
Table Checksum
test.t1 NULL
test.t2 NULL
CHECKSUM TABLE t1, t2 EXTENDED;
Table Checksum
test.t1 4259194219
test.t2 0
DROP TABLE t1, t2;

View file

@ -0,0 +1,20 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT PRIMARY KEY DEFAULT '0') ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) NO PRI 0
INSERT INTO t1 (a) VALUES (1);
SELECT a FROM t1;
a
1
ALTER TABLE t1 ADD COLUMN b CHAR(8) DEFAULT '';
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a int(11) NO PRI 0
b char(8) YES
INSERT INTO t1 (b) VALUES ('a');
SELECT a,b FROM t1 ORDER BY a,b;
a b
0 a
1
DROP TABLE t1;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,741 @@
########################
# Fixed point columns (NUMERIC, DECIMAL)
########################
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
d DECIMAL UNSIGNED,
d0 DECIMAL(0) UNSIGNED,
d1_1 DECIMAL(1,1) UNSIGNED,
d10_2 DECIMAL(10,2) UNSIGNED,
d60_10 DECIMAL(60,10) UNSIGNED,
n NUMERIC UNSIGNED,
n0_0 NUMERIC(0,0) UNSIGNED,
n1 NUMERIC(1) UNSIGNED,
n20_4 NUMERIC(20,4) UNSIGNED,
n65_4 NUMERIC(65,4) UNSIGNED,
pk NUMERIC UNSIGNED PRIMARY KEY
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
d decimal(10,0) unsigned YES NULL
d0 decimal(10,0) unsigned YES NULL
d1_1 decimal(1,1) unsigned YES NULL
d10_2 decimal(10,2) unsigned YES NULL
d60_10 decimal(60,10) unsigned YES NULL
n decimal(10,0) unsigned YES NULL
n0_0 decimal(10,0) unsigned YES NULL
n1 decimal(1,0) unsigned YES NULL
n20_4 decimal(20,4) unsigned YES NULL
n65_4 decimal(65,4) unsigned YES NULL
pk decimal(10,0) unsigned NO PRI NULL
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (100,123456,0.3,40000.25,123456789123456789.10001,1024,7000.0,8.0,999999.9,9223372036854775807,1);
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (0,0,0,0,0,0,0,0,0,0,2);
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (9999999999.0,9999999999.0,0.9,99999999.99,99999999999999999999999999999999999999999999999999.9999999999,9999999999.0,9999999999.0,9.0,9999999999999999.9999,9999999999999999999999999999999999999999999999999999999999999.9999,3);
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
100 123456 0.3 40000.25 123456789123456789.1000100000 1024 7000 8 999999.9000 9223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (-100,-123456,-0.3,-40000.25,-123456789123456789.10001,-1024,-7000.0,-8.0,-999999.9,-9223372036854775807,4);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
Warning 1264 Out of range value for column 'n65_4' at row 1
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (-9999999999.0,-9999999999.0,-0.9,-99999999.99,-99999999999999999999999999999999999999999999999999.9999999999,-9999999999.0,-9999999999.0,-9.0,-9999999999999999.9999,-9999999999999999999999999999999999999999999999999999999999999.9999,5);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
Warning 1264 Out of range value for column 'n65_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
100 123456 0.3 40000.25 123456789123456789.1000100000 1024 7000 8 999999.9000 9223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1 WHERE n20_4 = 9999999999999999.9999 OR d < 100;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
6
);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
100 123456 0.3 40000.25 123456789123456789.1000100000 1024 7000 8 999999.9000 9223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (10000000000.0,10000000000.0,1.1,100000000.99,100000000000000000000000000000000000000000000000000.0,10000000000.0,10000000000.0,10.0,10000000000000000.9999,10000000000000000000000000000000000000000000000000000000000000.9999,7);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
Warning 1264 Out of range value for column 'n65_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
100 123456 0.3 40000.25 123456789123456789.1000100000 1024 7000 8 999999.9000 9223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (9999999999.1,9999999999.1,1.9,99999999.001,99999999999999999999999999999999999999999999999999.99999999991,9999999999.1,9999999999.1,9.1,9999999999999999.00001,9999999999999999999999999999999999999999999999999999999999999.11111,8);
Warnings:
Note 1265 Data truncated for column 'd' at row 1
Note 1265 Data truncated for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Note 1265 Data truncated for column 'd10_2' at row 1
Note 1265 Data truncated for column 'd60_10' at row 1
Note 1265 Data truncated for column 'n' at row 1
Note 1265 Data truncated for column 'n0_0' at row 1
Note 1265 Data truncated for column 'n1' at row 1
Note 1265 Data truncated for column 'n20_4' at row 1
Note 1265 Data truncated for column 'n65_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
0 0 0.0 0.00 0.0000000000 0 0 0 0.0000 0.0000
100 123456 0.3 40000.25 123456789123456789.1000100000 1024 7000 8 999999.9000 9223372036854775807.0000
9999999999 9999999999 0.9 99999999.00 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.0000 9999999999999999999999999999999999999999999999999999999999999.1111
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
ALTER TABLE t1 ADD COLUMN n66 NUMERIC(66) UNSIGNED;
ERROR 42000: Too big precision 66 specified for column 'n66'. Maximum is 65.
ALTER TABLE t1 ADD COLUMN n66_6 DECIMAL(66,6) UNSIGNED;
ERROR 42000: Too big precision 66 specified for column 'n66_6'. Maximum is 65.
ALTER TABLE t1 ADD COLUMN n66_66 DECIMAL(66,66) UNSIGNED;
ERROR 42000: Too big scale 66 specified for column 'n66_66'. Maximum is 30.
DROP TABLE t1;
CREATE TABLE t1 (
a DECIMAL UNSIGNED,
b NUMERIC UNSIGNED,
PRIMARY KEY (a)
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a decimal(10,0) unsigned NO PRI 0
b decimal(10,0) unsigned YES NULL
INSERT INTO t1 (a,b) VALUES (1.0,-1.0);
Warnings:
Warning 1264 Out of range value for column 'b' at row 1
INSERT INTO t1 (a,b) VALUES (-100,100);
Warnings:
Warning 1264 Out of range value for column 'a' at row 1
SELECT a,b FROM t1;
a b
0 100
1 0
DROP TABLE t1;
########################
# Floating point columns (FLOAT, DOUBLE)
########################
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
f FLOAT UNSIGNED,
f0 FLOAT(0) UNSIGNED,
r1_1 REAL(1,1) UNSIGNED,
f23_0 FLOAT(23) UNSIGNED,
f20_3 FLOAT(20,3) UNSIGNED,
d DOUBLE UNSIGNED,
d1_0 DOUBLE(1,0) UNSIGNED,
d10_10 DOUBLE PRECISION (10,10) UNSIGNED,
d53 DOUBLE(53,0) UNSIGNED,
d53_10 DOUBLE(53,10) UNSIGNED,
pk DOUBLE UNSIGNED PRIMARY KEY
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
f float unsigned YES NULL
f0 float unsigned YES NULL
r1_1 double(1,1) unsigned YES NULL
f23_0 float unsigned YES NULL
f20_3 float(20,3) unsigned YES NULL
d double unsigned YES NULL
d1_0 double(1,0) unsigned YES NULL
d10_10 double(10,10) unsigned YES NULL
d53 double(53,0) unsigned YES NULL
d53_10 double(53,10) unsigned YES NULL
pk double unsigned NO PRI NULL
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (12345.12345,12345.12345,0.9,123456789.123,56789.987,11111111.111,8.0,0.0123456789,1234566789123456789,99999999999999999.99999999,1);
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 12345.1
d 11111111.111
d10_10 0.0123456789
d1_0 8
d53 1234566789123456800
d53_10 100000000000000000.0000000000
f0 12345.1
f20_3 56789.988
f23_0 123457000
r1_1 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (0,0,0,0,0,0,0,0,0,0,2);
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (
99999999999999999999999999999999999999,
99999999999999999999999999999999999999.9999999999999999,
0.9,
99999999999999999999999999999999999999.9,
99999999999999999.999,
999999999999999999999999999999999999999999999999999999999999999999999999999999999,
9,
0.9999999999,
1999999999999999999999999999999999999999999999999999999,
19999999999999999999999999999999999999999999.9999999999,
3
);
Warnings:
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 12345.1
d 0
d 11111111.111
d 1e81
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d1_0 0
d1_0 8
d1_0 9
d53 0
d53 100000000000000000000000000000000000000000000000000000
d53 1234566789123456800
d53_10 0.0000000000
d53_10 100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 0
f 1e38
f0 0
f0 12345.1
f0 1e38
f20_3 0.000
f20_3 56789.988
f20_3 99999998430674940.000
f23_0 0
f23_0 123457000
f23_0 1e38
r1_1 0.0
r1_1 0.9
r1_1 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (-999999999999999999999999,-99999999999.999999999999,-0.9,-999.99999999999999999999,-99999999999999999.999,-999999999999999999999999999999999999999999999999999999999999-0.999,-9,-.9999999999,-999999999999999999999999999999.99999999999999999999999,-9999999999999999999999999999999999999999999.9999999999,4);
Warnings:
Warning 1264 Out of range value for column 'f' at row 1
Warning 1264 Out of range value for column 'f0' at row 1
Warning 1264 Out of range value for column 'r1_1' at row 1
Warning 1264 Out of range value for column 'f23_0' at row 1
Warning 1264 Out of range value for column 'f20_3' at row 1
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd1_0' at row 1
Warning 1264 Out of range value for column 'd10_10' at row 1
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 12345.1
d 0
d 0
d 11111111.111
d 1e81
d10_10 0.0000000000
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d1_0 0
d1_0 0
d1_0 8
d1_0 9
d53 0
d53 0
d53 100000000000000000000000000000000000000000000000000000
d53 1234566789123456800
d53_10 0.0000000000
d53_10 0.0000000000
d53_10 100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 0
f 0
f 1e38
f0 0
f0 0
f0 12345.1
f0 1e38
f20_3 0.000
f20_3 0.000
f20_3 56789.988
f20_3 99999998430674940.000
f23_0 0
f23_0 0
f23_0 123457000
f23_0 1e38
r1_1 0.0
r1_1 0.0
r1_1 0.9
r1_1 0.9
SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1;
MAX(f) 9.999999680285692e37
MAX(d) 1e81
MAX(d10_10) 0.9999999999
MAX(d1_0) 9
MAX(d53) 100000000000000000000000000000000000000000000000000000
MAX(d53_10) 10000000000000000000000000000000000000000000.0000000000
MAX(f0) 9.999999680285692e37
MAX(f20_3) 99999998430674940.000
MAX(f23_0) 9.999999680285692e37
MAX(r1_1) 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
5
);
Warnings:
Warning 1264 Out of range value for column 'f' at row 1
Warning 1264 Out of range value for column 'f0' at row 1
Warning 1264 Out of range value for column 'r1_1' at row 1
Warning 1264 Out of range value for column 'f23_0' at row 1
Warning 1264 Out of range value for column 'f20_3' at row 1
Warning 1264 Out of range value for column 'd1_0' at row 1
Warning 1264 Out of range value for column 'd10_10' at row 1
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 12345.1
d 0
d 0
d 11111111.111
d 1e61
d 1e81
d10_10 0.0000000000
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d10_10 0.9999999999
d1_0 0
d1_0 0
d1_0 8
d1_0 9
d1_0 9
d53 0
d53 0
d53 100000000000000000000000000000000000000000000000000000
d53 100000000000000000000000000000000000000000000000000000
d53 1234566789123456800
d53_10 0.0000000000
d53_10 0.0000000000
d53_10 100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 0
f 0
f 1e38
f 3.40282e38
f0 0
f0 0
f0 12345.1
f0 1e38
f0 3.40282e38
f20_3 0.000
f20_3 0.000
f20_3 56789.988
f20_3 99999998430674940.000
f20_3 99999998430674940.000
f23_0 0
f23_0 0
f23_0 123457000
f23_0 1e38
f23_0 3.40282e38
r1_1 0.0
r1_1 0.0
r1_1 0.9
r1_1 0.9
r1_1 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (
999999999999999999999999999999999999999,
999999999999999999999999999999999999999.9999999999999999,
1.9,
999999999999999999999999999999999999999.9,
999999999999999999.999,
9999999999999999999999999999999999999999999999999999999999999999999999999999999999,
99,
1.9999999999,
1999999999999999999999999999999999999999999999999999999,
19999999999999999999999999999999999999999999.9999999999,
6
);
Warnings:
Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1264 Out of range value for column 'f' at row 1
Warning 1264 Out of range value for column 'f0' at row 1
Warning 1264 Out of range value for column 'r1_1' at row 1
Warning 1264 Out of range value for column 'f23_0' at row 1
Warning 1264 Out of range value for column 'f20_3' at row 1
Warning 1264 Out of range value for column 'd1_0' at row 1
Warning 1264 Out of range value for column 'd10_10' at row 1
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 12345.1
d 0
d 0
d 11111111.111
d 1e61
d 1e65
d 1e81
d10_10 0.0000000000
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d10_10 0.9999999999
d10_10 0.9999999999
d1_0 0
d1_0 0
d1_0 8
d1_0 9
d1_0 9
d1_0 9
d53 0
d53 0
d53 100000000000000000000000000000000000000000000000000000
d53 100000000000000000000000000000000000000000000000000000
d53 100000000000000000000000000000000000000000000000000000
d53 1234566789123456800
d53_10 0.0000000000
d53_10 0.0000000000
d53_10 100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 0
f 0
f 1e38
f 3.40282e38
f 3.40282e38
f0 0
f0 0
f0 12345.1
f0 1e38
f0 3.40282e38
f0 3.40282e38
f20_3 0.000
f20_3 0.000
f20_3 56789.988
f20_3 99999998430674940.000
f20_3 99999998430674940.000
f20_3 99999998430674940.000
f23_0 0
f23_0 0
f23_0 123457000
f23_0 1e38
f23_0 3.40282e38
f23_0 3.40282e38
r1_1 0.0
r1_1 0.0
r1_1 0.9
r1_1 0.9
r1_1 0.9
r1_1 0.9
ALTER TABLE t1 ADD COLUMN d0_0 DOUBLE(0,0) UNSIGNED;
ERROR 42000: Display width out of range for column 'd0_0' (max = 255)
ALTER TABLE t1 ADD COLUMN n66_6 DECIMAL(256,1) UNSIGNED;
ERROR 42000: Too big precision 256 specified for column 'n66_6'. Maximum is 65.
ALTER TABLE t1 ADD COLUMN n66_66 DECIMAL(40,35) UNSIGNED;
ERROR 42000: Too big scale 35 specified for column 'n66_66'. Maximum is 30.
DROP TABLE t1;
CREATE TABLE t1 (
a DOUBLE UNSIGNED,
b FLOAT UNSIGNED,
PRIMARY KEY (b)
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a double unsigned YES NULL
b float unsigned NO PRI 0
INSERT INTO t1 (a,b) VALUES (1.0,-1.0);
Warnings:
Warning 1264 Out of range value for column 'b' at row 1
INSERT INTO t1 (a,b) VALUES (-100,100);
Warnings:
Warning 1264 Out of range value for column 'a' at row 1
SELECT a,b FROM t1;
a b
0 100
1 0
DROP TABLE t1;
########################
# INT columns
########################
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
i INT UNSIGNED,
i0 INT(0) UNSIGNED,
i1 INT(1) UNSIGNED,
i20 INT(20) UNSIGNED,
t TINYINT UNSIGNED,
t0 TINYINT(0) UNSIGNED,
t1 TINYINT(1) UNSIGNED,
t20 TINYINT(20) UNSIGNED,
s SMALLINT UNSIGNED,
s0 SMALLINT(0) UNSIGNED,
s1 SMALLINT(1) UNSIGNED,
s20 SMALLINT(20) UNSIGNED,
m MEDIUMINT UNSIGNED,
m0 MEDIUMINT(0) UNSIGNED,
m1 MEDIUMINT(1) UNSIGNED,
m20 MEDIUMINT(20) UNSIGNED,
b BIGINT UNSIGNED,
b0 BIGINT(0) UNSIGNED,
b1 BIGINT(1) UNSIGNED,
b20 BIGINT(20) UNSIGNED,
pk INT AUTO_INCREMENT PRIMARY KEY
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
i int(10) unsigned YES NULL
i0 int(10) unsigned YES NULL
i1 int(1) unsigned YES NULL
i20 int(20) unsigned YES NULL
t tinyint(3) unsigned YES NULL
t0 tinyint(3) unsigned YES NULL
t1 tinyint(1) unsigned YES NULL
t20 tinyint(20) unsigned YES NULL
s smallint(5) unsigned YES NULL
s0 smallint(5) unsigned YES NULL
s1 smallint(1) unsigned YES NULL
s20 smallint(20) unsigned YES NULL
m mediumint(8) unsigned YES NULL
m0 mediumint(8) unsigned YES NULL
m1 mediumint(1) unsigned YES NULL
m20 mediumint(20) unsigned YES NULL
b bigint(20) unsigned YES NULL
b0 bigint(20) unsigned YES NULL
b1 bigint(1) unsigned YES NULL
b20 bigint(20) unsigned YES NULL
pk int(11) NO PRI NULL auto_increment
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (2147483647,2147483647,2147483647,2147483647,127,127,127,127,32767,32767,32767,32767,8388607,8388607,8388607,8388607,9223372036854775807,9223372036854775807,9223372036854775807,9223372036854775807);
SELECT i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20 FROM t1;
i i0 i1 i20 t t0 t1 t20 s s0 s1 s20 m m0 m1 m20 b b0 b1 b20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2147483647 2147483647 2147483647 2147483647 127 127 127 127 32767 32767 32767 32767 8388607 8388607 8388607 8388607 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (-2147483648,-2147483648,-2147483648,-2147483648,-128,-128,-128,-128,-32768,-32768,-32768,-32768,-8388608,-8388608,-8388608,-8388608,-9223372036854775808,-9223372036854775808,-9223372036854775808,-9223372036854775808);
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
Warning 1264 Out of range value for column 'i0' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i20' at row 1
Warning 1264 Out of range value for column 't' at row 1
Warning 1264 Out of range value for column 't0' at row 1
Warning 1264 Out of range value for column 't1' at row 1
Warning 1264 Out of range value for column 't20' at row 1
Warning 1264 Out of range value for column 's' at row 1
Warning 1264 Out of range value for column 's0' at row 1
Warning 1264 Out of range value for column 's1' at row 1
Warning 1264 Out of range value for column 's20' at row 1
Warning 1264 Out of range value for column 'm' at row 1
Warning 1264 Out of range value for column 'm0' at row 1
Warning 1264 Out of range value for column 'm1' at row 1
Warning 1264 Out of range value for column 'm20' at row 1
Warning 1264 Out of range value for column 'b' at row 1
Warning 1264 Out of range value for column 'b0' at row 1
Warning 1264 Out of range value for column 'b1' at row 1
Warning 1264 Out of range value for column 'b20' at row 1
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (4294967295,4294967295,4294967295,4294967295,255,255,255,255,65535,65535,65535,65535,16777215,16777215,16777215,16777215,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615);
SELECT i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20 FROM t1;
i i0 i1 i20 t t0 t1 t20 s s0 s1 s20 m m0 m1 m20 b b0 b1 b20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2147483647 2147483647 2147483647 2147483647 127 127 127 127 32767 32767 32767 32767 8388607 8388607 8388607 8388607 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807
4294967295 4294967295 4294967295 4294967295 255 255 255 255 65535 65535 65535 65535 16777215 16777215 16777215 16777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (-2147483649,-2147483649,-2147483649,-2147483649,-129,-129,-129,-129,-32769,-32769,-32769,-32769,-8388609,-8388609,-8388609,-8388609,-9223372036854775809,-9223372036854775809,-9223372036854775809,-9223372036854775809);
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
Warning 1264 Out of range value for column 'i0' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i20' at row 1
Warning 1264 Out of range value for column 't' at row 1
Warning 1264 Out of range value for column 't0' at row 1
Warning 1264 Out of range value for column 't1' at row 1
Warning 1264 Out of range value for column 't20' at row 1
Warning 1264 Out of range value for column 's' at row 1
Warning 1264 Out of range value for column 's0' at row 1
Warning 1264 Out of range value for column 's1' at row 1
Warning 1264 Out of range value for column 's20' at row 1
Warning 1264 Out of range value for column 'm' at row 1
Warning 1264 Out of range value for column 'm0' at row 1
Warning 1264 Out of range value for column 'm1' at row 1
Warning 1264 Out of range value for column 'm20' at row 1
Warning 1264 Out of range value for column 'b' at row 1
Warning 1264 Out of range value for column 'b0' at row 1
Warning 1264 Out of range value for column 'b1' at row 1
Warning 1264 Out of range value for column 'b20' at row 1
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (4294967296,4294967296,4294967296,4294967296,256,256,256,256,65536,65536,65536,65536,16777216,16777216,16777216,16777216,18446744073709551616,18446744073709551616,18446744073709551616,18446744073709551616);
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
Warning 1264 Out of range value for column 'i0' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i20' at row 1
Warning 1264 Out of range value for column 't' at row 1
Warning 1264 Out of range value for column 't0' at row 1
Warning 1264 Out of range value for column 't1' at row 1
Warning 1264 Out of range value for column 't20' at row 1
Warning 1264 Out of range value for column 's' at row 1
Warning 1264 Out of range value for column 's0' at row 1
Warning 1264 Out of range value for column 's1' at row 1
Warning 1264 Out of range value for column 's20' at row 1
Warning 1264 Out of range value for column 'm' at row 1
Warning 1264 Out of range value for column 'm0' at row 1
Warning 1264 Out of range value for column 'm1' at row 1
Warning 1264 Out of range value for column 'm20' at row 1
Warning 1264 Out of range value for column 'b' at row 1
Warning 1264 Out of range value for column 'b0' at row 1
Warning 1264 Out of range value for column 'b1' at row 1
Warning 1264 Out of range value for column 'b20' at row 1
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) SELECT b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b FROM t1 WHERE b IN (-9223372036854775808,9223372036854775807,18446744073709551615);
Warnings:
Warning 1264 Out of range value for column 'i' at row 8
Warning 1264 Out of range value for column 'i0' at row 8
Warning 1264 Out of range value for column 'i1' at row 8
Warning 1264 Out of range value for column 'i20' at row 8
Warning 1264 Out of range value for column 't' at row 8
Warning 1264 Out of range value for column 't0' at row 8
Warning 1264 Out of range value for column 't1' at row 8
Warning 1264 Out of range value for column 't20' at row 8
Warning 1264 Out of range value for column 's' at row 8
Warning 1264 Out of range value for column 's0' at row 8
Warning 1264 Out of range value for column 's1' at row 8
Warning 1264 Out of range value for column 's20' at row 8
Warning 1264 Out of range value for column 'm' at row 8
Warning 1264 Out of range value for column 'm0' at row 8
Warning 1264 Out of range value for column 'm1' at row 8
Warning 1264 Out of range value for column 'm20' at row 8
Warning 1264 Out of range value for column 'i' at row 9
Warning 1264 Out of range value for column 'i0' at row 9
Warning 1264 Out of range value for column 'i1' at row 9
Warning 1264 Out of range value for column 'i20' at row 9
Warning 1264 Out of range value for column 't' at row 9
Warning 1264 Out of range value for column 't0' at row 9
Warning 1264 Out of range value for column 't1' at row 9
Warning 1264 Out of range value for column 't20' at row 9
Warning 1264 Out of range value for column 's' at row 9
Warning 1264 Out of range value for column 's0' at row 9
Warning 1264 Out of range value for column 's1' at row 9
Warning 1264 Out of range value for column 's20' at row 9
Warning 1264 Out of range value for column 'm' at row 9
Warning 1264 Out of range value for column 'm0' at row 9
Warning 1264 Out of range value for column 'm1' at row 9
Warning 1264 Out of range value for column 'm20' at row 9
Warning 1264 Out of range value for column 'i' at row 10
Warning 1264 Out of range value for column 'i0' at row 10
Warning 1264 Out of range value for column 'i1' at row 10
Warning 1264 Out of range value for column 'i20' at row 10
Warning 1264 Out of range value for column 't' at row 10
Warning 1264 Out of range value for column 't0' at row 10
Warning 1264 Out of range value for column 't1' at row 10
Warning 1264 Out of range value for column 't20' at row 10
Warning 1264 Out of range value for column 's' at row 10
Warning 1264 Out of range value for column 's0' at row 10
Warning 1264 Out of range value for column 's1' at row 10
Warning 1264 Out of range value for column 's20' at row 10
Warning 1264 Out of range value for column 'm' at row 10
Warning 1264 Out of range value for column 'm0' at row 10
Warning 1264 Out of range value for column 'm1' at row 10
Warning 1264 Out of range value for column 'm20' at row 10
SELECT i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20 FROM t1;
i i0 i1 i20 t t0 t1 t20 s s0 s1 s20 m m0 m1 m20 b b0 b1 b20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2147483647 2147483647 2147483647 2147483647 127 127 127 127 32767 32767 32767 32767 8388607 8388607 8388607 8388607 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807
4294967295 4294967295 4294967295 4294967295 255 255 255 255 65535 65535 65535 65535 16777215 16777215 16777215 16777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
4294967295 4294967295 4294967295 4294967295 255 255 255 255 65535 65535 65535 65535 16777215 16777215 16777215 16777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
4294967295 4294967295 4294967295 4294967295 255 255 255 255 65535 65535 65535 65535 16777215 16777215 16777215 16777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
4294967295 4294967295 4294967295 4294967295 255 255 255 255 65535 65535 65535 65535 16777215 16777215 16777215 16777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
4294967295 4294967295 4294967295 4294967295 255 255 255 255 65535 65535 65535 65535 16777215 16777215 16777215 16777215 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807
ALTER TABLE t1 ADD COLUMN i257 INT(257) UNSIGNED;
ERROR 42000: Display width out of range for column 'i257' (max = 255)
DROP TABLE t1;
CREATE TABLE t1 (
t TINYINT UNSIGNED,
s SMALLINT UNSIGNED,
m MEDIUMINT UNSIGNED,
i INT UNSIGNED,
b BIGINT UNSIGNED,
PRIMARY KEY (b)
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
t tinyint(3) unsigned YES NULL
s smallint(5) unsigned YES NULL
m mediumint(8) unsigned YES NULL
i int(10) unsigned YES NULL
b bigint(20) unsigned NO PRI 0
INSERT INTO t1 (t,s,m,i,b) VALUES (255,65535,16777215,4294967295,18446744073709551615);
INSERT INTO t1 (t,s,m,i,b) VALUES (-1,-1,-1,-1,-1);
Warnings:
Warning 1264 Out of range value for column 't' at row 1
Warning 1264 Out of range value for column 's' at row 1
Warning 1264 Out of range value for column 'm' at row 1
Warning 1264 Out of range value for column 'i' at row 1
Warning 1264 Out of range value for column 'b' at row 1
SELECT t,s,m,i,b FROM t1;
t s m i b
0 0 0 0 0
255 65535 16777215 4294967295 18446744073709551615
DROP TABLE t1;

View file

@ -0,0 +1,723 @@
########################
# Fixed point columns (NUMERIC, DECIMAL)
########################
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
d DECIMAL ZEROFILL,
d0 DECIMAL(0) ZEROFILL,
d1_1 DECIMAL(1,1) ZEROFILL,
d10_2 DECIMAL(10,2) ZEROFILL,
d60_10 DECIMAL(60,10) ZEROFILL,
n NUMERIC ZEROFILL,
n0_0 NUMERIC(0,0) ZEROFILL,
n1 NUMERIC(1) ZEROFILL,
n20_4 NUMERIC(20,4) ZEROFILL,
n65_4 NUMERIC(65,4) ZEROFILL,
pk NUMERIC ZEROFILL PRIMARY KEY
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
d decimal(10,0) unsigned zerofill YES NULL
d0 decimal(10,0) unsigned zerofill YES NULL
d1_1 decimal(1,1) unsigned zerofill YES NULL
d10_2 decimal(10,2) unsigned zerofill YES NULL
d60_10 decimal(60,10) unsigned zerofill YES NULL
n decimal(10,0) unsigned zerofill YES NULL
n0_0 decimal(10,0) unsigned zerofill YES NULL
n1 decimal(1,0) unsigned zerofill YES NULL
n20_4 decimal(20,4) unsigned zerofill YES NULL
n65_4 decimal(65,4) unsigned zerofill YES NULL
pk decimal(10,0) unsigned zerofill NO PRI NULL
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (100,123456,0.3,40000.25,123456789123456789.10001,1024,7000.0,8.0,999999.9,9223372036854775807,1);
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (0,0,0,0,0,0,0,0,0,0,2);
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (9999999999.0,9999999999.0,0.9,99999999.99,99999999999999999999999999999999999999999999999999.9999999999,9999999999.0,9999999999.0,9.0,9999999999999999.9999,9999999999999999999999999999999999999999999999999999999999999.9999,3);
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000100 0000123456 0.3 00040000.25 00000000000000000000000000000000123456789123456789.1000100000 0000001024 0000007000 8 0000000000999999.9000 0000000000000000000000000000000000000000009223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (-100,-123456,-0.3,-40000.25,-123456789123456789.10001,-1024,-7000.0,-8.0,-999999.9,-9223372036854775807,4);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
Warning 1264 Out of range value for column 'n65_4' at row 1
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (-9999999999.0,-9999999999.0,-0.9,-99999999.99,-99999999999999999999999999999999999999999999999999.9999999999,-9999999999.0,-9999999999.0,-9.0,-9999999999999999.9999,-9999999999999999999999999999999999999999999999999999999999999.9999,5);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
Warning 1264 Out of range value for column 'n65_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000100 0000123456 0.3 00040000.25 00000000000000000000000000000000123456789123456789.1000100000 0000001024 0000007000 8 0000000000999999.9000 0000000000000000000000000000000000000000009223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1 WHERE n20_4 = 9999999999999999.9999 OR d < 100;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
6
);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000100 0000123456 0.3 00040000.25 00000000000000000000000000000000123456789123456789.1000100000 0000001024 0000007000 8 0000000000999999.9000 0000000000000000000000000000000000000000009223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (10000000000.0,10000000000.0,1.1,100000000.99,100000000000000000000000000000000000000000000000000.0,10000000000.0,10000000000.0,10.0,10000000000000000.9999,10000000000000000000000000000000000000000000000000000000000000.9999,7);
Warnings:
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Warning 1264 Out of range value for column 'd10_2' at row 1
Warning 1264 Out of range value for column 'd60_10' at row 1
Warning 1264 Out of range value for column 'n' at row 1
Warning 1264 Out of range value for column 'n0_0' at row 1
Warning 1264 Out of range value for column 'n1' at row 1
Warning 1264 Out of range value for column 'n20_4' at row 1
Warning 1264 Out of range value for column 'n65_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000100 0000123456 0.3 00040000.25 00000000000000000000000000000000123456789123456789.1000100000 0000001024 0000007000 8 0000000000999999.9000 0000000000000000000000000000000000000000009223372036854775807.0000
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
INSERT INTO t1 (d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4,pk) VALUES (9999999999.1,9999999999.1,1.9,99999999.001,99999999999999999999999999999999999999999999999999.99999999991,9999999999.1,9999999999.1,9.1,9999999999999999.00001,9999999999999999999999999999999999999999999999999999999999999.11111,8);
Warnings:
Note 1265 Data truncated for column 'd' at row 1
Note 1265 Data truncated for column 'd0' at row 1
Warning 1264 Out of range value for column 'd1_1' at row 1
Note 1265 Data truncated for column 'd10_2' at row 1
Note 1265 Data truncated for column 'd60_10' at row 1
Note 1265 Data truncated for column 'n' at row 1
Note 1265 Data truncated for column 'n0_0' at row 1
Note 1265 Data truncated for column 'n1' at row 1
Note 1265 Data truncated for column 'n20_4' at row 1
Note 1265 Data truncated for column 'n65_4' at row 1
SELECT d,d0,d1_1,d10_2,d60_10,n,n0_0,n1,n20_4,n65_4 FROM t1;
d d0 d1_1 d10_2 d60_10 n n0_0 n1 n20_4 n65_4
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000000 0000000000 0.0 00000000.00 00000000000000000000000000000000000000000000000000.0000000000 0000000000 0000000000 0 0000000000000000.0000 0000000000000000000000000000000000000000000000000000000000000.0000
0000000100 0000123456 0.3 00040000.25 00000000000000000000000000000000123456789123456789.1000100000 0000001024 0000007000 8 0000000000999999.9000 0000000000000000000000000000000000000000009223372036854775807.0000
9999999999 9999999999 0.9 99999999.00 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.0000 9999999999999999999999999999999999999999999999999999999999999.1111
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
9999999999 9999999999 0.9 99999999.99 99999999999999999999999999999999999999999999999999.9999999999 9999999999 9999999999 9 9999999999999999.9999 9999999999999999999999999999999999999999999999999999999999999.9999
ALTER TABLE t1 ADD COLUMN n66 NUMERIC(66) ZEROFILL;
ERROR 42000: Too big precision 66 specified for column 'n66'. Maximum is 65.
ALTER TABLE t1 ADD COLUMN n66_6 DECIMAL(66,6) ZEROFILL;
ERROR 42000: Too big precision 66 specified for column 'n66_6'. Maximum is 65.
ALTER TABLE t1 ADD COLUMN n66_66 DECIMAL(66,66) ZEROFILL;
ERROR 42000: Too big scale 66 specified for column 'n66_66'. Maximum is 30.
DROP TABLE t1;
CREATE TABLE t1 (
a DECIMAL ZEROFILL,
b NUMERIC ZEROFILL,
PRIMARY KEY (a)
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a decimal(10,0) unsigned zerofill NO PRI 0000000000
b decimal(10,0) unsigned zerofill YES NULL
INSERT INTO t1 (a,b) VALUES (1.1,1234);
Warnings:
Note 1265 Data truncated for column 'a' at row 1
SELECT a,b FROM t1;
a b
0000000001 0000001234
DROP TABLE t1;
########################
# Floating point columns (FLOAT, DOUBLE)
########################
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
f FLOAT ZEROFILL,
f0 FLOAT(0) ZEROFILL,
r1_1 REAL(1,1) ZEROFILL,
f23_0 FLOAT(23) ZEROFILL,
f20_3 FLOAT(20,3) ZEROFILL,
d DOUBLE ZEROFILL,
d1_0 DOUBLE(1,0) ZEROFILL,
d10_10 DOUBLE PRECISION (10,10) ZEROFILL,
d53 DOUBLE(53,0) ZEROFILL,
d53_10 DOUBLE(53,10) ZEROFILL,
pk DOUBLE ZEROFILL PRIMARY KEY
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
f float unsigned zerofill YES NULL
f0 float unsigned zerofill YES NULL
r1_1 double(1,1) unsigned zerofill YES NULL
f23_0 float unsigned zerofill YES NULL
f20_3 float(20,3) unsigned zerofill YES NULL
d double unsigned zerofill YES NULL
d1_0 double(1,0) unsigned zerofill YES NULL
d10_10 double(10,10) unsigned zerofill YES NULL
d53 double(53,0) unsigned zerofill YES NULL
d53_10 double(53,10) unsigned zerofill YES NULL
pk double unsigned zerofill NO PRI NULL
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (12345.12345,12345.12345,0.9,123456789.123,56789.987,11111111.111,8.0,0.0123456789,1234566789123456789,99999999999999999.99999999,1);
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 0000012345.1
d 000000000011111111.111
d10_10 0.0123456789
d1_0 8
d53 00000000000000000000000000000000001234566789123456800
d53_10 000000000000000000000000100000000000000000.0000000000
f0 0000012345.1
f20_3 0000000000056789.988
f23_0 000123457000
r1_1 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (0,0,0,0,0,0,0,0,0,0,2);
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (
99999999999999999999999999999999999999,
99999999999999999999999999999999999999.9999999999999999,
0.9,
99999999999999999999999999999999999999.9,
99999999999999999.999,
999999999999999999999999999999999999999999999999999999999999999999999999999999999,
9,
0.9999999999,
1999999999999999999999999999999999999999999999999999999,
19999999999999999999999999999999999999999999.9999999999,
3
);
Warnings:
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 0000012345.1
d 0000000000000000000000
d 0000000000000000001e81
d 000000000011111111.111
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d1_0 0
d1_0 8
d1_0 9
d53 00000000000000000000000000000000000000000000000000000
d53 00000000000000000000000000000000001234566789123456800
d53 100000000000000000000000000000000000000000000000000000
d53_10 000000000000000000000000000000000000000000.0000000000
d53_10 000000000000000000000000100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 000000000000
f 000000001e38
f0 000000000000
f0 000000001e38
f0 0000012345.1
f20_3 0000000000000000.000
f20_3 0000000000056789.988
f20_3 99999998430674940.000
f23_0 000000000000
f23_0 000000001e38
f23_0 000123457000
r1_1 0.0
r1_1 0.9
r1_1 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (-999999999999999999999999,-99999999999.999999999999,-0.9,-999.99999999999999999999,-99999999999999999.999,-999999999999999999999999999999999999999999999999999999999999-0.999,-9,-.9999999999,-999999999999999999999999999999.99999999999999999999999,-9999999999999999999999999999999999999999999.9999999999,4);
Warnings:
Warning 1264 Out of range value for column 'f' at row 1
Warning 1264 Out of range value for column 'f0' at row 1
Warning 1264 Out of range value for column 'r1_1' at row 1
Warning 1264 Out of range value for column 'f23_0' at row 1
Warning 1264 Out of range value for column 'f20_3' at row 1
Warning 1264 Out of range value for column 'd' at row 1
Warning 1264 Out of range value for column 'd1_0' at row 1
Warning 1264 Out of range value for column 'd10_10' at row 1
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 0000012345.1
d 0000000000000000000000
d 0000000000000000000000
d 0000000000000000001e81
d 000000000011111111.111
d10_10 0.0000000000
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d1_0 0
d1_0 0
d1_0 8
d1_0 9
d53 00000000000000000000000000000000000000000000000000000
d53 00000000000000000000000000000000000000000000000000000
d53 00000000000000000000000000000000001234566789123456800
d53 100000000000000000000000000000000000000000000000000000
d53_10 000000000000000000000000000000000000000000.0000000000
d53_10 000000000000000000000000000000000000000000.0000000000
d53_10 000000000000000000000000100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 000000000000
f 000000000000
f 000000001e38
f0 000000000000
f0 000000000000
f0 000000001e38
f0 0000012345.1
f20_3 0000000000000000.000
f20_3 0000000000000000.000
f20_3 0000000000056789.988
f20_3 99999998430674940.000
f23_0 000000000000
f23_0 000000000000
f23_0 000000001e38
f23_0 000123457000
r1_1 0.0
r1_1 0.0
r1_1 0.9
r1_1 0.9
SELECT MAX(f), MAX(f0), MAX(r1_1), MAX(f23_0), MAX(f20_3), MAX(d), MAX(d1_0), MAX(d10_10), MAX(d53), MAX(d53_10) FROM t1;
MAX(f) 9.999999680285692e37
MAX(d) 1e81
MAX(d10_10) 0.9999999999
MAX(d1_0) 9
MAX(d53) 100000000000000000000000000000000000000000000000000000
MAX(d53_10) 10000000000000000000000000000000000000000000.0000000000
MAX(f0) 9.999999680285692e37
MAX(f20_3) 99999998430674940.000
MAX(f23_0) 9.999999680285692e37
MAX(r1_1) 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
9999999999999999999999999999999999999999999999999999999999999.9999,
5
);
Warnings:
Warning 1264 Out of range value for column 'f' at row 1
Warning 1264 Out of range value for column 'f0' at row 1
Warning 1264 Out of range value for column 'r1_1' at row 1
Warning 1264 Out of range value for column 'f23_0' at row 1
Warning 1264 Out of range value for column 'f20_3' at row 1
Warning 1264 Out of range value for column 'd1_0' at row 1
Warning 1264 Out of range value for column 'd10_10' at row 1
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 0000012345.1
d 0000000000000000000000
d 0000000000000000000000
d 0000000000000000001e61
d 0000000000000000001e81
d 000000000011111111.111
d10_10 0.0000000000
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d10_10 0.9999999999
d1_0 0
d1_0 0
d1_0 8
d1_0 9
d1_0 9
d53 00000000000000000000000000000000000000000000000000000
d53 00000000000000000000000000000000000000000000000000000
d53 00000000000000000000000000000000001234566789123456800
d53 100000000000000000000000000000000000000000000000000000
d53 100000000000000000000000000000000000000000000000000000
d53_10 000000000000000000000000000000000000000000.0000000000
d53_10 000000000000000000000000000000000000000000.0000000000
d53_10 000000000000000000000000100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 000000000000
f 000000000000
f 000000001e38
f 003.40282e38
f0 000000000000
f0 000000000000
f0 000000001e38
f0 0000012345.1
f0 003.40282e38
f20_3 0000000000000000.000
f20_3 0000000000000000.000
f20_3 0000000000056789.988
f20_3 99999998430674940.000
f20_3 99999998430674940.000
f23_0 000000000000
f23_0 000000000000
f23_0 000000001e38
f23_0 000123457000
f23_0 003.40282e38
r1_1 0.0
r1_1 0.0
r1_1 0.9
r1_1 0.9
r1_1 0.9
INSERT INTO t1 (f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10,pk) VALUES (
999999999999999999999999999999999999999,
999999999999999999999999999999999999999.9999999999999999,
1.9,
999999999999999999999999999999999999999.9,
999999999999999999.999,
9999999999999999999999999999999999999999999999999999999999999999999999999999999999,
99,
1.9999999999,
1999999999999999999999999999999999999999999999999999999,
19999999999999999999999999999999999999999999.9999999999,
6
);
Warnings:
Warning 1292 Truncated incorrect DECIMAL value: ''
Warning 1264 Out of range value for column 'f' at row 1
Warning 1264 Out of range value for column 'f0' at row 1
Warning 1264 Out of range value for column 'r1_1' at row 1
Warning 1264 Out of range value for column 'f23_0' at row 1
Warning 1264 Out of range value for column 'f20_3' at row 1
Warning 1264 Out of range value for column 'd1_0' at row 1
Warning 1264 Out of range value for column 'd10_10' at row 1
Warning 1264 Out of range value for column 'd53' at row 1
Warning 1264 Out of range value for column 'd53_10' at row 1
SELECT f,f0,r1_1,f23_0,f20_3,d,d1_0,d10_10,d53,d53_10 FROM t1;
f 0000012345.1
d 0000000000000000000000
d 0000000000000000000000
d 0000000000000000001e61
d 0000000000000000001e65
d 0000000000000000001e81
d 000000000011111111.111
d10_10 0.0000000000
d10_10 0.0000000000
d10_10 0.0123456789
d10_10 0.9999999999
d10_10 0.9999999999
d10_10 0.9999999999
d1_0 0
d1_0 0
d1_0 8
d1_0 9
d1_0 9
d1_0 9
d53 00000000000000000000000000000000000000000000000000000
d53 00000000000000000000000000000000000000000000000000000
d53 00000000000000000000000000000000001234566789123456800
d53 100000000000000000000000000000000000000000000000000000
d53 100000000000000000000000000000000000000000000000000000
d53 100000000000000000000000000000000000000000000000000000
d53_10 000000000000000000000000000000000000000000.0000000000
d53_10 000000000000000000000000000000000000000000.0000000000
d53_10 000000000000000000000000100000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
d53_10 10000000000000000000000000000000000000000000.0000000000
f 000000000000
f 000000000000
f 000000001e38
f 003.40282e38
f 003.40282e38
f0 000000000000
f0 000000000000
f0 000000001e38
f0 0000012345.1
f0 003.40282e38
f0 003.40282e38
f20_3 0000000000000000.000
f20_3 0000000000000000.000
f20_3 0000000000056789.988
f20_3 99999998430674940.000
f20_3 99999998430674940.000
f20_3 99999998430674940.000
f23_0 000000000000
f23_0 000000000000
f23_0 000000001e38
f23_0 000123457000
f23_0 003.40282e38
f23_0 003.40282e38
r1_1 0.0
r1_1 0.0
r1_1 0.9
r1_1 0.9
r1_1 0.9
r1_1 0.9
ALTER TABLE t1 ADD COLUMN d0_0 DOUBLE(0,0) ZEROFILL;
ERROR 42000: Display width out of range for column 'd0_0' (max = 255)
ALTER TABLE t1 ADD COLUMN n66_6 DECIMAL(256,1) ZEROFILL;
ERROR 42000: Too big precision 256 specified for column 'n66_6'. Maximum is 65.
ALTER TABLE t1 ADD COLUMN n66_66 DECIMAL(40,35) ZEROFILL;
ERROR 42000: Too big scale 35 specified for column 'n66_66'. Maximum is 30.
DROP TABLE t1;
CREATE TABLE t1 (
a DOUBLE ZEROFILL,
b FLOAT ZEROFILL,
PRIMARY KEY (b)
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a double unsigned zerofill YES NULL
b float unsigned zerofill NO PRI 000000000000
INSERT INTO t1 (a,b) VALUES (1,1234.5);
SELECT a,b FROM t1;
a b
0000000000000000000001 0000001234.5
DROP TABLE t1;
########################
# INT columns
########################
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
i INT ZEROFILL,
i0 INT(0) ZEROFILL,
i1 INT(1) ZEROFILL,
i20 INT(20) ZEROFILL,
t TINYINT ZEROFILL,
t0 TINYINT(0) ZEROFILL,
t1 TINYINT(1) ZEROFILL,
t20 TINYINT(20) ZEROFILL,
s SMALLINT ZEROFILL,
s0 SMALLINT(0) ZEROFILL,
s1 SMALLINT(1) ZEROFILL,
s20 SMALLINT(20) ZEROFILL,
m MEDIUMINT ZEROFILL,
m0 MEDIUMINT(0) ZEROFILL,
m1 MEDIUMINT(1) ZEROFILL,
m20 MEDIUMINT(20) ZEROFILL,
b BIGINT ZEROFILL,
b0 BIGINT(0) ZEROFILL,
b1 BIGINT(1) ZEROFILL,
b20 BIGINT(20) ZEROFILL,
pk INT AUTO_INCREMENT PRIMARY KEY
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
i int(10) unsigned zerofill YES NULL
i0 int(10) unsigned zerofill YES NULL
i1 int(1) unsigned zerofill YES NULL
i20 int(20) unsigned zerofill YES NULL
t tinyint(3) unsigned zerofill YES NULL
t0 tinyint(3) unsigned zerofill YES NULL
t1 tinyint(1) unsigned zerofill YES NULL
t20 tinyint(20) unsigned zerofill YES NULL
s smallint(5) unsigned zerofill YES NULL
s0 smallint(5) unsigned zerofill YES NULL
s1 smallint(1) unsigned zerofill YES NULL
s20 smallint(20) unsigned zerofill YES NULL
m mediumint(8) unsigned zerofill YES NULL
m0 mediumint(8) unsigned zerofill YES NULL
m1 mediumint(1) unsigned zerofill YES NULL
m20 mediumint(20) unsigned zerofill YES NULL
b bigint(20) unsigned zerofill YES NULL
b0 bigint(20) unsigned zerofill YES NULL
b1 bigint(1) unsigned zerofill YES NULL
b20 bigint(20) unsigned zerofill YES NULL
pk int(11) NO PRI NULL auto_increment
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (2147483647,2147483647,2147483647,2147483647,127,127,127,127,32767,32767,32767,32767,8388607,8388607,8388607,8388607,9223372036854775807,9223372036854775807,9223372036854775807,9223372036854775807);
SELECT i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20 FROM t1;
i i0 i1 i20 t t0 t1 t20 s s0 s1 s20 m m0 m1 m20 b b0 b1 b20
0000000000 0000000000 0 00000000000000000000 000 000 0 00000000000000000000 00000 00000 0 00000000000000000000 00000000 00000000 0 00000000000000000000 00000000000000000000 00000000000000000000 0 00000000000000000000
0000000001 0000000002 3 00000000000000000004 005 006 7 00000000000000000008 00009 00010 11 00000000000000000012 00000013 00000014 15 00000000000000000016 00000000000000000017 00000000000000000018 19 00000000000000000020
2147483647 2147483647 2147483647 00000000002147483647 127 127 127 00000000000000000127 32767 32767 32767 00000000000000032767 08388607 08388607 8388607 00000000000008388607 09223372036854775807 09223372036854775807 9223372036854775807 09223372036854775807
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (-2147483648,-2147483648,-2147483648,-2147483648,-128,-128,-128,-128,-32768,-32768,-32768,-32768,-8388608,-8388608,-8388608,-8388608,-9223372036854775808,-9223372036854775808,-9223372036854775808,-9223372036854775808);
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
Warning 1264 Out of range value for column 'i0' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i20' at row 1
Warning 1264 Out of range value for column 't' at row 1
Warning 1264 Out of range value for column 't0' at row 1
Warning 1264 Out of range value for column 't1' at row 1
Warning 1264 Out of range value for column 't20' at row 1
Warning 1264 Out of range value for column 's' at row 1
Warning 1264 Out of range value for column 's0' at row 1
Warning 1264 Out of range value for column 's1' at row 1
Warning 1264 Out of range value for column 's20' at row 1
Warning 1264 Out of range value for column 'm' at row 1
Warning 1264 Out of range value for column 'm0' at row 1
Warning 1264 Out of range value for column 'm1' at row 1
Warning 1264 Out of range value for column 'm20' at row 1
Warning 1264 Out of range value for column 'b' at row 1
Warning 1264 Out of range value for column 'b0' at row 1
Warning 1264 Out of range value for column 'b1' at row 1
Warning 1264 Out of range value for column 'b20' at row 1
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (4294967295,4294967295,4294967295,4294967295,255,255,255,255,65535,65535,65535,65535,16777215,16777215,16777215,16777215,18446744073709551615,18446744073709551615,18446744073709551615,18446744073709551615);
SELECT i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20 FROM t1;
i i0 i1 i20 t t0 t1 t20 s s0 s1 s20 m m0 m1 m20 b b0 b1 b20
0000000000 0000000000 0 00000000000000000000 000 000 0 00000000000000000000 00000 00000 0 00000000000000000000 00000000 00000000 0 00000000000000000000 00000000000000000000 00000000000000000000 0 00000000000000000000
0000000000 0000000000 0 00000000000000000000 000 000 0 00000000000000000000 00000 00000 0 00000000000000000000 00000000 00000000 0 00000000000000000000 00000000000000000000 00000000000000000000 0 00000000000000000000
0000000001 0000000002 3 00000000000000000004 005 006 7 00000000000000000008 00009 00010 11 00000000000000000012 00000013 00000014 15 00000000000000000016 00000000000000000017 00000000000000000018 19 00000000000000000020
2147483647 2147483647 2147483647 00000000002147483647 127 127 127 00000000000000000127 32767 32767 32767 00000000000000032767 08388607 08388607 8388607 00000000000008388607 09223372036854775807 09223372036854775807 9223372036854775807 09223372036854775807
4294967295 4294967295 4294967295 00000000004294967295 255 255 255 00000000000000000255 65535 65535 65535 00000000000000065535 16777215 16777215 16777215 00000000000016777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (-2147483649,-2147483649,-2147483649,-2147483649,-129,-129,-129,-129,-32769,-32769,-32769,-32769,-8388609,-8388609,-8388609,-8388609,-9223372036854775809,-9223372036854775809,-9223372036854775809,-9223372036854775809);
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
Warning 1264 Out of range value for column 'i0' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i20' at row 1
Warning 1264 Out of range value for column 't' at row 1
Warning 1264 Out of range value for column 't0' at row 1
Warning 1264 Out of range value for column 't1' at row 1
Warning 1264 Out of range value for column 't20' at row 1
Warning 1264 Out of range value for column 's' at row 1
Warning 1264 Out of range value for column 's0' at row 1
Warning 1264 Out of range value for column 's1' at row 1
Warning 1264 Out of range value for column 's20' at row 1
Warning 1264 Out of range value for column 'm' at row 1
Warning 1264 Out of range value for column 'm0' at row 1
Warning 1264 Out of range value for column 'm1' at row 1
Warning 1264 Out of range value for column 'm20' at row 1
Warning 1264 Out of range value for column 'b' at row 1
Warning 1264 Out of range value for column 'b0' at row 1
Warning 1264 Out of range value for column 'b1' at row 1
Warning 1264 Out of range value for column 'b20' at row 1
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) VALUES (4294967296,4294967296,4294967296,4294967296,256,256,256,256,65536,65536,65536,65536,16777216,16777216,16777216,16777216,18446744073709551616,18446744073709551616,18446744073709551616,18446744073709551616);
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
Warning 1264 Out of range value for column 'i0' at row 1
Warning 1264 Out of range value for column 'i1' at row 1
Warning 1264 Out of range value for column 'i20' at row 1
Warning 1264 Out of range value for column 't' at row 1
Warning 1264 Out of range value for column 't0' at row 1
Warning 1264 Out of range value for column 't1' at row 1
Warning 1264 Out of range value for column 't20' at row 1
Warning 1264 Out of range value for column 's' at row 1
Warning 1264 Out of range value for column 's0' at row 1
Warning 1264 Out of range value for column 's1' at row 1
Warning 1264 Out of range value for column 's20' at row 1
Warning 1264 Out of range value for column 'm' at row 1
Warning 1264 Out of range value for column 'm0' at row 1
Warning 1264 Out of range value for column 'm1' at row 1
Warning 1264 Out of range value for column 'm20' at row 1
Warning 1264 Out of range value for column 'b' at row 1
Warning 1264 Out of range value for column 'b0' at row 1
Warning 1264 Out of range value for column 'b1' at row 1
Warning 1264 Out of range value for column 'b20' at row 1
INSERT INTO t1 (i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20) SELECT b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b FROM t1 WHERE b IN (-9223372036854775808,9223372036854775807,18446744073709551615);
Warnings:
Warning 1264 Out of range value for column 'i' at row 8
Warning 1264 Out of range value for column 'i0' at row 8
Warning 1264 Out of range value for column 'i1' at row 8
Warning 1264 Out of range value for column 'i20' at row 8
Warning 1264 Out of range value for column 't' at row 8
Warning 1264 Out of range value for column 't0' at row 8
Warning 1264 Out of range value for column 't1' at row 8
Warning 1264 Out of range value for column 't20' at row 8
Warning 1264 Out of range value for column 's' at row 8
Warning 1264 Out of range value for column 's0' at row 8
Warning 1264 Out of range value for column 's1' at row 8
Warning 1264 Out of range value for column 's20' at row 8
Warning 1264 Out of range value for column 'm' at row 8
Warning 1264 Out of range value for column 'm0' at row 8
Warning 1264 Out of range value for column 'm1' at row 8
Warning 1264 Out of range value for column 'm20' at row 8
Warning 1264 Out of range value for column 'i' at row 9
Warning 1264 Out of range value for column 'i0' at row 9
Warning 1264 Out of range value for column 'i1' at row 9
Warning 1264 Out of range value for column 'i20' at row 9
Warning 1264 Out of range value for column 't' at row 9
Warning 1264 Out of range value for column 't0' at row 9
Warning 1264 Out of range value for column 't1' at row 9
Warning 1264 Out of range value for column 't20' at row 9
Warning 1264 Out of range value for column 's' at row 9
Warning 1264 Out of range value for column 's0' at row 9
Warning 1264 Out of range value for column 's1' at row 9
Warning 1264 Out of range value for column 's20' at row 9
Warning 1264 Out of range value for column 'm' at row 9
Warning 1264 Out of range value for column 'm0' at row 9
Warning 1264 Out of range value for column 'm1' at row 9
Warning 1264 Out of range value for column 'm20' at row 9
Warning 1264 Out of range value for column 'i' at row 10
Warning 1264 Out of range value for column 'i0' at row 10
Warning 1264 Out of range value for column 'i1' at row 10
Warning 1264 Out of range value for column 'i20' at row 10
Warning 1264 Out of range value for column 't' at row 10
Warning 1264 Out of range value for column 't0' at row 10
Warning 1264 Out of range value for column 't1' at row 10
Warning 1264 Out of range value for column 't20' at row 10
Warning 1264 Out of range value for column 's' at row 10
Warning 1264 Out of range value for column 's0' at row 10
Warning 1264 Out of range value for column 's1' at row 10
Warning 1264 Out of range value for column 's20' at row 10
Warning 1264 Out of range value for column 'm' at row 10
Warning 1264 Out of range value for column 'm0' at row 10
Warning 1264 Out of range value for column 'm1' at row 10
Warning 1264 Out of range value for column 'm20' at row 10
SELECT i,i0,i1,i20,t,t0,t1,t20,s,s0,s1,s20,m,m0,m1,m20,b,b0,b1,b20 FROM t1;
i i0 i1 i20 t t0 t1 t20 s s0 s1 s20 m m0 m1 m20 b b0 b1 b20
0000000000 0000000000 0 00000000000000000000 000 000 0 00000000000000000000 00000 00000 0 00000000000000000000 00000000 00000000 0 00000000000000000000 00000000000000000000 00000000000000000000 0 00000000000000000000
0000000000 0000000000 0 00000000000000000000 000 000 0 00000000000000000000 00000 00000 0 00000000000000000000 00000000 00000000 0 00000000000000000000 00000000000000000000 00000000000000000000 0 00000000000000000000
0000000000 0000000000 0 00000000000000000000 000 000 0 00000000000000000000 00000 00000 0 00000000000000000000 00000000 00000000 0 00000000000000000000 00000000000000000000 00000000000000000000 0 00000000000000000000
0000000001 0000000002 3 00000000000000000004 005 006 7 00000000000000000008 00009 00010 11 00000000000000000012 00000013 00000014 15 00000000000000000016 00000000000000000017 00000000000000000018 19 00000000000000000020
2147483647 2147483647 2147483647 00000000002147483647 127 127 127 00000000000000000127 32767 32767 32767 00000000000000032767 08388607 08388607 8388607 00000000000008388607 09223372036854775807 09223372036854775807 9223372036854775807 09223372036854775807
4294967295 4294967295 4294967295 00000000004294967295 255 255 255 00000000000000000255 65535 65535 65535 00000000000000065535 16777215 16777215 16777215 00000000000016777215 09223372036854775807 09223372036854775807 9223372036854775807 09223372036854775807
4294967295 4294967295 4294967295 00000000004294967295 255 255 255 00000000000000000255 65535 65535 65535 00000000000000065535 16777215 16777215 16777215 00000000000016777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
4294967295 4294967295 4294967295 00000000004294967295 255 255 255 00000000000000000255 65535 65535 65535 00000000000000065535 16777215 16777215 16777215 00000000000016777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
4294967295 4294967295 4294967295 00000000004294967295 255 255 255 00000000000000000255 65535 65535 65535 00000000000000065535 16777215 16777215 16777215 00000000000016777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
4294967295 4294967295 4294967295 00000000004294967295 255 255 255 00000000000000000255 65535 65535 65535 00000000000000065535 16777215 16777215 16777215 00000000000016777215 18446744073709551615 18446744073709551615 18446744073709551615 18446744073709551615
ALTER TABLE t1 ADD COLUMN i257 INT(257) ZEROFILL;
ERROR 42000: Display width out of range for column 'i257' (max = 255)
DROP TABLE t1;
CREATE TABLE t1 (
t TINYINT ZEROFILL,
s SMALLINT ZEROFILL,
m MEDIUMINT ZEROFILL,
i INT ZEROFILL,
b BIGINT ZEROFILL,
PRIMARY KEY (b)
) ENGINE=rocksdb;
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
t tinyint(3) unsigned zerofill YES NULL
s smallint(5) unsigned zerofill YES NULL
m mediumint(8) unsigned zerofill YES NULL
i int(10) unsigned zerofill YES NULL
b bigint(20) unsigned zerofill NO PRI 00000000000000000000
INSERT INTO t1 (t,s,m,i,b) VALUES (1,10,100,1000,0);
SELECT t,s,m,i,b FROM t1;
t s m i b
001 00010 00000100 0000001000 00000000000000000000
DROP TABLE t1;

View file

@ -0,0 +1,128 @@
SET @start_global_value = @@global.ROCKSDB_STRICT_COLLATION_EXCEPTIONS;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.t1.value Use binary collation (binary, latin1_bin, utf8_bin).
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value3(50))) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.t1.value3 Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_check=0;
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value3(50))) engine=rocksdb charset utf8;
DROP TABLE t1;
SET GLOBAL rocksdb_strict_collation_check=1;
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value2)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset latin1 collate latin1_bin;
DROP TABLE t1;
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset utf8 collate utf8_bin;
DROP TABLE t1;
CREATE TABLE t1 (id varchar(20) collate latin1_bin, value varchar(50) collate utf8_bin, value2 varchar(50) collate latin1_bin, value3 text, primary key (id), index(value, value2)) engine=rocksdb;
DROP TABLE t1;
SET GLOBAL rocksdb_strict_collation_exceptions=t1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE t2 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.t2.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="t.*";
CREATE TABLE t123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t123;
CREATE TABLE s123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.s123.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions=".t.*";
CREATE TABLE xt123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE xt123;
CREATE TABLE t123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.t123.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="s.*,t.*";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="s.*|t.*";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions=",s.*,t.*";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="|s.*|t.*";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="s.*,,t.*";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="s.*||t.*";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="s.*,t.*,";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="s.*|t.*|";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="||||,,,,s.*,,|,,||,t.*,,|||,,,";
CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE s1;
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
DROP TABLE t1;
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.u1.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions='t1';
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb;
ALTER TABLE t1 AUTO_INCREMENT=1;
DROP TABLE t1;
CREATE TABLE t2 (id INT primary key, value varchar(50), index(value)) engine=rocksdb;
ERROR HY000: Unsupported collation on string indexed column test.t2.value Use binary collation (binary, latin1_bin, utf8_bin).
CREATE TABLE t2 (id INT primary key, value varchar(50)) engine=rocksdb;
ALTER TABLE t2 ADD INDEX(value);
ERROR HY000: Unsupported collation on string indexed column test.t2.value Use binary collation (binary, latin1_bin, utf8_bin).
DROP TABLE t2;
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b";
Invalid pattern in strict_collation_exceptions: [a-b
CREATE TABLE a (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.a.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b]";
CREATE TABLE a (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
CREATE TABLE b (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
CREATE TABLE c (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.c.value Use binary collation (binary, latin1_bin, utf8_bin).
DROP TABLE a, b;
SET GLOBAL rocksdb_strict_collation_exceptions="abc\\";
Invalid pattern in strict_collation_exceptions: abc\
CREATE TABLE abc (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.abc.value Use binary collation (binary, latin1_bin, utf8_bin).
SET GLOBAL rocksdb_strict_collation_exceptions="abc";
CREATE TABLE abc (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
CREATE TABLE abcd (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
ERROR HY000: Unsupported collation on string indexed column test.abcd.value Use binary collation (binary, latin1_bin, utf8_bin).
DROP TABLE abc;
SET GLOBAL rocksdb_strict_collation_exceptions=@start_global_value;

View file

@ -0,0 +1,25 @@
CREATE TABLE `r1.lol` (
`c1` int(10) NOT NULL DEFAULT '0',
`c2` int(11) NOT NULL DEFAULT '0',
`c3` int(1) NOT NULL DEFAULT '0',
`c4` int(11) NOT NULL DEFAULT '0',
`c5` int(11) NOT NULL DEFAULT '0',
`c6` varchar(100) NOT NULL DEFAULT '',
`c7` varchar(100) NOT NULL DEFAULT '',
`c8` varchar(255) NOT NULL DEFAULT '',
`c9` int(10) NOT NULL DEFAULT '125',
`c10` int(10) NOT NULL DEFAULT '125',
`c11` text NOT NULL,
`c12` int(11) NOT NULL DEFAULT '0',
`c13` int(10) NOT NULL DEFAULT '0',
`c14` text NOT NULL,
`c15` blob NOT NULL,
`c16` int(11) NOT NULL DEFAULT '0',
`c17` int(11) NOT NULL DEFAULT '0',
`c18` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`c1`),
KEY i1 (`c4`),
KEY i2 (`c7`),
KEY i3 (`c2`)) ENGINE=RocksDB DEFAULT CHARSET=latin1;
DROP INDEX i1 ON `r1.lol`;
DROP TABLE `r1.lol`;

View file

@ -0,0 +1,93 @@
DROP TABLE IF EXISTS r1;
create table r1 (
id1 int,
id2 int,
type int,
value varchar(100),
value2 int,
value3 int,
primary key (type, id1, id2),
index id1_type (id1, type, value2, value, id2)
) engine=rocksdb collate latin1_bin;
select 'loading data';
loading data
loading data
set global rocksdb_force_flush_memtable_now=1;
optimize table r1;
Table Op Msg_type Msg_text
test.r1 optimize status OK
Test 1: Do a bunch of updates without setting the compaction sysvar
Expect: no compaction
set global rocksdb_compaction_sequential_deletes_window=0;
set global rocksdb_compaction_sequential_deletes= 0;
set global rocksdb_compaction_sequential_deletes_file_size=0;
set global rocksdb_force_flush_memtable_now=1;
select sleep(1);
sleep(1)
0
wait_for_delete: 0
There are deletes left
SET GLOBAL rocksdb_compaction_sequential_deletes= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_file_size= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_window= 0;
Test 2: Do a bunch of updates and set the compaction sysvar
Expect: compaction
set global rocksdb_compaction_sequential_deletes_window=1000;
set global rocksdb_compaction_sequential_deletes= 990;
set global rocksdb_compaction_sequential_deletes_file_size=0;
set global rocksdb_force_flush_memtable_now=1;
select sleep(1);
sleep(1)
0
wait_for_delete: 1
No more deletes left
SET GLOBAL rocksdb_compaction_sequential_deletes= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_file_size= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_window= 0;
Test 3: Do a bunch of updates and set the compaction sysvar and a file size to something large
Expect: no compaction
set global rocksdb_compaction_sequential_deletes_window=1000;
set global rocksdb_compaction_sequential_deletes= 1000;
set global rocksdb_compaction_sequential_deletes_file_size=1000000;
set global rocksdb_force_flush_memtable_now=1;
select sleep(1);
sleep(1)
0
wait_for_delete: 0
There are deletes left
SET GLOBAL rocksdb_compaction_sequential_deletes= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_file_size= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_window= 0;
Test 4: Do a bunch of secondary key updates and set the compaction sysvar
Expect: compaction
set global rocksdb_compaction_sequential_deletes_window=1000;
set global rocksdb_compaction_sequential_deletes= 50;
set global rocksdb_compaction_sequential_deletes_file_size=0;
set global rocksdb_force_flush_memtable_now=1;
select sleep(1);
sleep(1)
0
wait_for_delete: 1
No more deletes left
SET GLOBAL rocksdb_compaction_sequential_deletes= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_file_size= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_window= 0;
Test 5: Do a bunch of secondary key updates and set the compaction sysvar,
and rocksdb_compaction_sequential_deletes_count_sd turned on
Expect: compaction
SET @save_rocksdb_compaction_sequential_deletes_count_sd = @@global.rocksdb_compaction_sequential_deletes_count_sd;
SET GLOBAL rocksdb_compaction_sequential_deletes_count_sd= ON;
set global rocksdb_compaction_sequential_deletes_window=1000;
set global rocksdb_compaction_sequential_deletes= 50;
set global rocksdb_compaction_sequential_deletes_file_size=0;
set global rocksdb_force_flush_memtable_now=1;
select sleep(1);
sleep(1)
0
wait_for_delete: 1
No more deletes left
SET GLOBAL rocksdb_compaction_sequential_deletes= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_file_size= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_window= 0;
SET GLOBAL rocksdb_compaction_sequential_deletes_count_sd= @save_rocksdb_compaction_sequential_deletes_count_sd;
drop table r1;

View file

@ -0,0 +1,2 @@
create table t (id int primary key) engine=rocksdb;
drop table t;

View file

@ -0,0 +1,12 @@
DROP DATABASE IF EXISTS mysqlslap;
CREATE DATABASE mysqlslap;
use mysqlslap;
CREATE TABLE a1 (a int, b int) ENGINE=ROCKSDB;
INSERT INTO a1 VALUES (1, 1);
SHOW CREATE TABLE a1;
Table Create Table
a1 CREATE TABLE `a1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
DROP DATABASE mysqlslap;

View file

@ -0,0 +1,151 @@
DROP TABLE IF EXISTS t1;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connection con1;
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=ROCKSDB;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 1105
connection con2;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
DB_NUM_SNAPSHOTS 0
connection con1;
COMMIT;
connection con2;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
DB_NUM_SNAPSHOTS 0
connection con1;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 1105
connection con2;
INSERT INTO t1 (a) VALUES (1);
connection con1;
# If consistent read works on this isolation level (READ COMMITTED), the following SELECT should not return the value we inserted (1)
SELECT a FROM t1;
a
1
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connection con1;
CREATE TABLE r1 (id int primary key, value int, value2 int) engine=ROCKSDB;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
insert into r1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4);
BEGIN;
connection con2;
INSERT INTO r1 values (5,5,5);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
connection con2;
INSERT INTO r1 values (6,6,6);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
COMMIT;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 1105
connection con2;
INSERT INTO r1 values (7,7,7);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
connection con2;
INSERT INTO r1 values (8,8,8);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
COMMIT;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 1105
connection con2;
INSERT INTO r1 values (9,9,9);
connection con1;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 1105
connection con2;
INSERT INTO r1 values (10,10,10);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
10 10 10
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 1105
INSERT INTO r1 values (11,11,11);
ERROR: 0
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
10 10 10
11 11 11
drop table r1;
connection default;
disconnect con1;
disconnect con2;

View file

@ -0,0 +1,144 @@
DROP TABLE IF EXISTS t1;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connection con1;
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=ROCKSDB;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 0
connection con2;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
DB_NUM_SNAPSHOTS 1
connection con1;
COMMIT;
connection con2;
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
STAT_TYPE VALUE
DB_NUM_SNAPSHOTS 0
connection con1;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 0
connection con2;
INSERT INTO t1 (a) VALUES (1);
connection con1;
# If consistent read works on this isolation level (REPEATABLE READ), the following SELECT should not return the value we inserted (1)
SELECT a FROM t1;
a
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connection con1;
CREATE TABLE r1 (id int primary key, value int, value2 int) engine=ROCKSDB;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
insert into r1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4);
BEGIN;
connection con2;
INSERT INTO r1 values (5,5,5);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
connection con2;
INSERT INTO r1 values (6,6,6);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
COMMIT;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 0
connection con2;
INSERT INTO r1 values (7,7,7);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
connection con2;
INSERT INTO r1 values (8,8,8);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
COMMIT;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 0
connection con2;
INSERT INTO r1 values (9,9,9);
connection con1;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 0
connection con2;
INSERT INTO r1 values (10,10,10);
connection con1;
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
START TRANSACTION WITH CONSISTENT SNAPSHOT;
ERROR: 0
INSERT INTO r1 values (11,11,11);
ERROR: 1105
SELECT * FROM r1;
id value value2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
10 10 10
drop table r1;
connection default;
disconnect con1;
disconnect con2;

View file

@ -0,0 +1,24 @@
# -- WARNING ----------------------------------------------------------------
# According to I_S.ENGINES, does not support transactions.
# If it is true, the test will most likely fail; you can
# either create an rdiff file, or add the test to disabled.def.
# If transactions should be supported, check the data in Information Schema.
# ---------------------------------------------------------------------------
DROP TABLE IF EXISTS t1;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connection con1;
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=ROCKSDB;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection con2;
INSERT INTO t1 (a) VALUES (1);
connection con1;
# If consistent read works on this isolation level (SERIALIZABLE), the following SELECT should not return the value we inserted (1)
SELECT a FROM t1;
a
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;

View file

@ -0,0 +1,74 @@
#
# Test how MyRocks handles reading corrupted data from disk.
# Data corruption is simulated at source-code level.
#
#
# A test for case when data in the table *record* is longer
# than table DDL expects it to be
#
create table t1 (
pk int not null primary key,
col1 varchar(10)
) engine=rocksdb;
insert into t1 values (1,1),(2,2),(3,3);
select * from t1;
pk col1
1 1
2 2
3 3
set @tmp1=@@rocksdb_verify_checksums;
set rocksdb_verify_checksums=1;
set session debug= "+d,myrocks_simulate_bad_row_read1";
select * from t1 where pk=1;
ERROR HY000: Got error 122 from storage engine
set session debug= "-d,myrocks_simulate_bad_row_read1";
set rocksdb_verify_checksums=@tmp1;
select * from t1 where pk=1;
pk col1
1 1
set session debug= "+d,myrocks_simulate_bad_row_read2";
select * from t1 where pk=1;
ERROR HY000: Got error 122 from storage engine
set session debug= "-d,myrocks_simulate_bad_row_read2";
set session debug= "+d,myrocks_simulate_bad_row_read3";
select * from t1 where pk=1;
ERROR HY000: Got error 122 from storage engine
set session debug= "-d,myrocks_simulate_bad_row_read3";
insert into t1 values(4,'0123456789');
select * from t1;
pk col1
1 1
2 2
3 3
4 0123456789
drop table t1;
#
# A test for case when index data is longer than table DDL
# expects it to be
#
create table t2 (
pk varchar(4) not null primary key,
col1 int not null
) engine=rocksdb collate latin1_bin;
insert into t2 values ('ABCD',1);
select * from t2;
pk col1
ABCD 1
set session debug= "+d,myrocks_simulate_bad_pk_read1";
select * from t2;
ERROR HY000: Got error 122 from storage engine
set session debug= "-d,myrocks_simulate_bad_pk_read1";
drop table t2;
create table t2 (
pk varchar(4) not null primary key,
col1 int not null
) engine=rocksdb;
insert into t2 values ('ABCD',1);
select * from t2;
pk col1
ABCD 1
set session debug= "+d,myrocks_simulate_bad_pk_read1";
select * from t2;
ERROR HY000: Got error 122 from storage engine
set session debug= "-d,myrocks_simulate_bad_pk_read1";
drop table t2;

View file

@ -0,0 +1,165 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CREATE TABLE IF NOT EXISTS t1 (a INT PRIMARY KEY) ENGINE=rocksdb;
Warnings:
Note 1050 Table 't1' already exists
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
CREATE TEMPORARY TABLE t2 (a INT PRIMARY KEY) ENGINE=rocksdb;
ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'TEMPORARY'
DROP TABLE t2;
DROP TABLE IF EXISTS t1;
SET default_storage_engine = rocksdb;
CREATE TABLE t1 (a INT PRIMARY KEY);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a INT PRIMARY KEY) AS SELECT 1 AS a UNION SELECT 2 AS a;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
SELECT * FROM t1;
a
1
2
FLUSH LOGS;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(c1 INT,c2 INT,c3 INT,c4 INT,c5 INT,c6 INT,c7 INT,c8 INT,c9 INT,
c10 INT,c11 INT,c12 INT,c13 INT,c14 INT,c15 INT,c16 INT,c17 INT,
c18 INT,c19 INT,c20 INT,c21 INT,c22 INT,c23 INT,c24 INT,c25 INT,
c26 INT,c27 INT,c28 INT,c29 INT,c30 INT,c31 INT,c32 INT,c33 INT,
c34 INT,c35 INT,c36 INT,c37 INT,c38 INT,c39 INT,c40 INT,c41 INT,
c42 INT,c43 INT,c44 INT,c45 INT,c46 INT,c47 INT,c48 INT,c49 INT,
c50 INT,c51 INT,c52 INT,c53 INT,c54 INT,c55 INT,c56 INT,c57 INT,
c58 INT,c59 INT,c60 INT,c61 INT,c62 INT,c63 INT,c64 INT,c65 INT,
c66 INT,c67 INT,c68 INT,c69 INT,c70 INT,c71 INT,c72 INT,c73 INT,
c74 INT,c75 INT,c76 INT,c77 INT,c78 INT,c79 INT,c80 INT,c81 INT,
c82 INT,c83 INT,c84 INT,c85 INT,c86 INT,c87 INT,c88 INT,c89 INT,
c90 INT,c91 INT,c92 INT,c93 INT,c94 INT,c95 INT,c96 INT,c97 INT,
c98 INT,c99 INT,c100 INT,c101 INT,c102 INT,c103 INT,c104 INT,
c105 INT,c106 INT,c107 INT,c108 INT,c109 INT,c110 INT,c111 INT,
c112 INT,c113 INT,c114 INT,c115 INT,c116 INT,c117 INT,c118 INT,
c119 INT,c120 INT,c121 INT,c122 INT,c123 INT,c124 INT,c125 INT,
c126 INT,c127 INT,c128 INT,c129 INT,c130 INT,c131 INT,c132 INT,
c133 INT,c134 INT,c135 INT,c136 INT,c137 INT,c138 INT,c139 INT,
c140 INT,c141 INT,c142 INT,c143 INT,c144 INT,c145 INT,c146 INT,
c147 INT,c148 INT,c149 INT,c150 INT,c151 INT,c152 INT,c153 INT,
c154 INT,c155 INT,c156 INT,c157 INT,c158 INT,c159 INT,c160 INT,
c161 INT,c162 INT,c163 INT,c164 INT,c165 INT,c166 INT,c167 INT,
c168 INT,c169 INT,c170 INT,c171 INT,c172 INT,c173 INT,c174 INT,
c175 INT,c176 INT,c177 INT,c178 INT,c179 INT,c180 INT,c181 INT,
c182 INT,c183 INT,c184 INT,c185 INT,c186 INT,c187 INT,c188 INT,
c189 INT,c190 INT,c191 INT,c192 INT,c193 INT,c194 INT,c195 INT,
c196 INT,c197 INT,c198 INT,c199 INT,c200 INT,c201 INT,c202 INT,
c203 INT,c204 INT,c205 INT,c206 INT,c207 INT,c208 INT,c209 INT,
c210 INT,c211 INT,c212 INT,c213 INT,c214 INT,c215 INT,c216 INT,
c217 INT,c218 INT,c219 INT,c220 INT,c221 INT,c222 INT,c223 INT,
c224 INT,c225 INT,c226 INT,c227 INT,c228 INT,c229 INT,c230 INT,
c231 INT,c232 INT,c233 INT,c234 INT,c235 INT,c236 INT,c237 INT,
c238 INT,c239 INT,c240 INT,c241 INT,c242 INT,c243 INT,c244 INT,
c245 INT,c246 INT,c247 INT,c248 INT,c249 INT,c250 INT,c251 INT,
c252 INT,c253 INT,c254 INT,c255 INT,c256 INT,c257 INT,c258 INT,
c259 INT,c260 INT,c261 INT,c262 INT,c263 INT,c264 INT,c265 INT,
c266 INT,c267 INT,c268 INT,c269 INT,c270 INT,c271 INT,c272 INT,
c273 INT,c274 INT,c275 INT,c276 INT,c277 INT,c278 INT,c279 INT,
c280 INT,c281 INT,c282 INT,c283 INT,c284 INT,c285 INT,c286 INT,
c287 INT,c288 INT,c289 INT,c290 INT,c291 INT,c292 INT,c293 INT,
c294 INT,c295 INT,c296 INT,c297 INT,c298 INT,c299 INT,c300 INT,
c301 INT,c302 INT,c303 INT,c304 INT,c305 INT,c306 INT,c307 INT,
c308 INT,c309 INT,c310 INT,c311 INT,c312 INT,c313 INT,c314 INT,
c315 INT,c316 INT,c317 INT,c318 INT,c319 INT,c320 INT,c321 INT,
c322 INT,c323 INT,c324 INT,c325 INT,c326 INT,c327 INT,c328 INT,
c329 INT,c330 INT,c331 INT,c332 INT,c333 INT,c334 INT,c335 INT,
c336 INT,c337 INT,c338 INT,c339 INT,c340 INT,c341 INT,c342 INT,
c343 INT,c344 INT,c345 INT,c346 INT,c347 INT,c348 INT,c349 INT,
c350 INT,c351 INT,c352 INT,c353 INT,c354 INT,c355 INT,c356 INT,
c357 INT,c358 INT,c359 INT,c360 INT,c361 INT,c362 INT,c363 INT,
c364 INT,c365 INT,c366 INT,c367 INT,c368 INT,c369 INT,c370 INT,
c371 INT,c372 INT,c373 INT,c374 INT,c375 INT,c376 INT,c377 INT,
c378 INT,c379 INT,c380 INT,c381 INT,c382 INT,c383 INT,c384 INT,
c385 INT,c386 INT,c387 INT,c388 INT,c389 INT,c390 INT,c391 INT,
c392 INT,c393 INT,c394 INT,c395 INT,c396 INT,c397 INT,c398 INT,
c399 INT,c400 INT,c401 INT,c402 INT,c403 INT,c404 INT,c405 INT,
c406 INT,c407 INT,c408 INT,c409 INT,c410 INT,c411 INT,c412 INT,
c413 INT,c414 INT,c415 INT,c416 INT,c417 INT,c418 INT,c419 INT,
c420 INT,c421 INT,c422 INT,c423 INT,c424 INT,c425 INT,c426 INT,
c427 INT,c428 INT,c429 INT,c430 INT,c431 INT,c432 INT,c433 INT,
c434 INT,c435 INT,c436 INT,c437 INT,c438 INT,c439 INT,c440 INT,
c441 INT,c442 INT,c443 INT,c444 INT,c445 INT,c446 INT,c447 INT,
c448 INT,
KEY (c1,c2,c3,c4,c5,c6,c7),KEY (c8,c9,c10,c11,c12,c13,c14),
KEY (c15,c16,c17,c18,c19,c20,c21),KEY (c22,c23,c24,c25,c26,c27,c28),
KEY (c29,c30,c31,c32,c33,c34,c35),KEY (c36,c37,c38,c39,c40,c41,c42),
KEY (c43,c44,c45,c46,c47,c48,c49),KEY (c50,c51,c52,c53,c54,c55,c56),
KEY (c57,c58,c59,c60,c61,c62,c63),KEY (c64,c65,c66,c67,c68,c69,c70),
KEY (c71,c72,c73,c74,c75,c76,c77),KEY (c78,c79,c80,c81,c82,c83,c84),
KEY (c85,c86,c87,c88,c89,c90,c91),KEY (c92,c93,c94,c95,c96,c97,c98),
KEY (c99,c100,c101,c102,c103,c104,c105),
KEY (c106,c107,c108,c109,c110,c111,c112),
KEY (c113,c114,c115,c116,c117,c118,c119),
KEY (c120,c121,c122,c123,c124,c125,c126),
KEY (c127,c128,c129,c130,c131,c132,c133),
KEY (c134,c135,c136,c137,c138,c139,c140),
KEY (c141,c142,c143,c144,c145,c146,c147),
KEY (c148,c149,c150,c151,c152,c153,c154),
KEY (c155,c156,c157,c158,c159,c160,c161),
KEY (c162,c163,c164,c165,c166,c167,c168),
KEY (c169,c170,c171,c172,c173,c174,c175),
KEY (c176,c177,c178,c179,c180,c181,c182),
KEY (c183,c184,c185,c186,c187,c188,c189),
KEY (c190,c191,c192,c193,c194,c195,c196),
KEY (c197,c198,c199,c200,c201,c202,c203),
KEY (c204,c205,c206,c207,c208,c209,c210),
KEY (c211,c212,c213,c214,c215,c216,c217),
KEY (c218,c219,c220,c221,c222,c223,c224),
KEY (c225,c226,c227,c228,c229,c230,c231),
KEY (c232,c233,c234,c235,c236,c237,c238),
KEY (c239,c240,c241,c242,c243,c244,c245),
KEY (c246,c247,c248,c249,c250,c251,c252),
KEY (c253,c254,c255,c256,c257,c258,c259),
KEY (c260,c261,c262,c263,c264,c265,c266),
KEY (c267,c268,c269,c270,c271,c272,c273),
KEY (c274,c275,c276,c277,c278,c279,c280),
KEY (c281,c282,c283,c284,c285,c286,c287),
KEY (c288,c289,c290,c291,c292,c293,c294),
KEY (c295,c296,c297,c298,c299,c300,c301),
KEY (c302,c303,c304,c305,c306,c307,c308),
KEY (c309,c310,c311,c312,c313,c314,c315),
KEY (c316,c317,c318,c319,c320,c321,c322),
KEY (c323,c324,c325,c326,c327,c328,c329),
KEY (c330,c331,c332,c333,c334,c335,c336),
KEY (c337,c338,c339,c340,c341,c342,c343),
KEY (c344,c345,c346,c347,c348,c349,c350),
KEY (c351,c352,c353,c354,c355,c356,c357),
KEY (c358,c359,c360,c361,c362,c363,c364),
KEY (c365,c366,c367,c368,c369,c370,c371),
KEY (c372,c373,c374,c375,c376,c377,c378),
KEY (c379,c380,c381,c382,c383,c384,c385),
KEY (c386,c387,c388,c389,c390,c391,c392),
KEY (c393,c394,c395,c396,c397,c398,c399),
KEY (c400,c401,c402,c403,c404,c405,c406),
KEY (c407,c408,c409,c410,c411,c412,c413),
KEY (c414,c415,c416,c417,c418,c419,c420),
KEY (c421,c422,c423,c424,c425,c426,c427),
KEY (c428,c429,c430,c431,c432,c433,c434),
KEY (c435,c436,c437,c438,c439,c440,c441),
KEY (c442,c443,c444,c445,c446,c447,c448));
DROP TABLE t1;

View file

@ -0,0 +1,37 @@
#
# Validate that deadlock errors don't occur with a high level of concurrency
#
# Disable for valgrind because this takes too long
DROP DATABASE IF EXISTS mysqlslap;
CREATE DATABASE mysqlslap;
USE mysqlslap;
CREATE TABLE t1(id1 BIGINT, id2 BIGINT, count INT, PRIMARY KEY(id1, id2), KEY(id2)) ENGINE=rocksdb;
CREATE TABLE t1rev(id1 BIGINT, id2 BIGINT, count INT, PRIMARY KEY(id1, id2) COMMENT "rev:cf2", KEY(id2) COMMENT "rev:cf2") ENGINE=rocksdb;
SET @save = @@global.rocksdb_lock_wait_timeout;
SET GLOBAL rocksdb_lock_wait_timeout = 60;
SELECT count from t1;
count
50000
SELECT count from t1;
count
100000
SELECT count from t1;
count
150000
SELECT count from t1;
count
200000
SELECT count from t1rev;
count
50000
SELECT count from t1rev;
count
100000
SELECT count from t1rev;
count
150000
SELECT count from t1rev;
count
200000
SET GLOBAL rocksdb_lock_wait_timeout = @save;
DROP DATABASE mysqlslap;

View file

@ -0,0 +1,166 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (10000,'foobar'),(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
INSERT INTO t1 (a,b) SELECT a, b FROM t1;
DELETE FROM t1 WHERE b IN ('c');
SELECT a,b FROM t1;
a b
1 a
1 a
10000 foobar
10000 foobar
2 b
2 b
4 d
4 d
5 e
5 e
DELETE FROM t1 WHERE a < 0 OR b = 'a';
SELECT a,b FROM t1;
a b
10000 foobar
10000 foobar
2 b
2 b
4 d
4 d
5 e
5 e
DELETE FROM t1 WHERE a <= 4 ORDER BY b DESC LIMIT 1;
SELECT a,b FROM t1;
a b
10000 foobar
10000 foobar
2 b
2 b
4 d
5 e
5 e
CREATE TABLE t2 (c CHAR(8), d INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t2 (c,d) SELECT b, a FROM t1;
SELECT c,d FROM t2;
c d
b 2
b 2
d 4
e 5
e 5
foobar 10000
foobar 10000
DELETE t2.* FROM t1, t2 WHERE c < b AND a + d != 1;
SELECT a,b FROM t1;
a b
10000 foobar
10000 foobar
2 b
2 b
4 d
5 e
5 e
SELECT c,d FROM t2;
c d
foobar 10000
foobar 10000
DELETE FROM t2, t1.* USING t2, t1 WHERE c = 'foobar' and b = c;
SELECT a,b FROM t1;
a b
2 b
2 b
4 d
5 e
5 e
SELECT c,d FROM t2;
c d
DELETE FROM t1;
SELECT a,b FROM t1;
a b
DROP TABLE t1, t2;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'f'),(7,'g'),(8,'h'),(10000,'foobar');
INSERT INTO t1 (a,b) SELECT a, b FROM t1;
BEGIN;
DELETE FROM t1 WHERE b IN ('c');
SELECT a,b FROM t1;
a b
1 a
1 a
10000 foobar
10000 foobar
2 b
2 b
4 d
4 d
5 e
5 e
6 f
6 f
7 g
7 g
8 h
8 h
DELETE FROM t1 WHERE a < 0 OR b = 'a';
COMMIT;
SELECT a,b FROM t1;
a b
10000 foobar
10000 foobar
2 b
2 b
4 d
4 d
5 e
5 e
6 f
6 f
7 g
7 g
8 h
8 h
BEGIN;
DELETE FROM t1 WHERE a <= 4 ORDER BY b DESC LIMIT 1;
SAVEPOINT spt1;
DELETE FROM t1;
RELEASE SAVEPOINT spt1;
ROLLBACK;
SELECT a,b FROM t1;
a b
10000 foobar
10000 foobar
2 b
2 b
4 d
4 d
5 e
5 e
6 f
6 f
7 g
7 g
8 h
8 h
BEGIN;
DELETE FROM t1 WHERE a <= 4 ORDER BY b DESC LIMIT 1;
SAVEPOINT spt1;
DELETE FROM t1;
INSERT INTO t1 (a,b) VALUES (1,'a');
ROLLBACK TO SAVEPOINT spt1;
ERROR HY000: MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows.
COMMIT;
ERROR HY000: This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction.
SELECT a,b FROM t1;
a b
10000 foobar
10000 foobar
2 b
2 b
4 d
4 d
5 e
5 e
6 f
6 f
7 g
7 g
8 h
8 h
DROP TABLE t1;

View file

@ -0,0 +1,15 @@
set debug_sync='RESET';
drop table if exists t1;
create table t1 (id1 int, id2 int, value int, primary key (id1, id2)) engine=rocksdb;
insert into t1 values (1, 1, 1),(1, 2, 1),(1, 3, 1), (2, 2, 2);
set debug_sync='rocksdb.get_row_by_rowid SIGNAL parked WAIT_FOR go';
update t1 set value=100 where id1=1;
set debug_sync='now WAIT_FOR parked';
delete from t1 where id1=1 and id2=1;
set debug_sync='now SIGNAL go';
select * from t1 where id1=1 for update;
id1 id2 value
1 2 100
1 3 100
set debug_sync='RESET';
drop table t1;

View file

@ -0,0 +1,59 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (10000,'foobar'),(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
INSERT INTO t1 (a,b) SELECT a, b FROM t1;
CREATE TABLE t2 (pk INT AUTO_INCREMENT PRIMARY KEY, c CHAR(8), d INT) ENGINE=rocksdb;
INSERT INTO t2 (c,d) SELECT b, a FROM t1;
SELECT a,b FROM t1;
a b
1 a
1 a
10000 foobar
10000 foobar
2 b
2 b
3 c
3 c
4 d
4 d
5 e
5 e
SELECT c,d FROM t2;
c d
a 1
a 1
b 2
b 2
c 3
c 3
d 4
d 4
e 5
e 5
foobar 10000
foobar 10000
DELETE IGNORE FROM t1 WHERE b IS NOT NULL ORDER BY a LIMIT 1;
SELECT a,b FROM t1;
a b
1 a
10000 foobar
10000 foobar
2 b
2 b
3 c
3 c
4 d
4 d
5 e
5 e
DELETE IGNORE t1.*, t2.* FROM t1, t2 WHERE c < b OR a != ( SELECT 1 UNION SELECT 2 );
Warnings:
Error 1242 Subquery returns more than 1 row
SELECT a,b FROM t1;
a b
1 a
SELECT c,d FROM t2;
c d
foobar 10000
foobar 10000
DROP TABLE t1, t2;

View file

@ -0,0 +1,24 @@
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a INT, b CHAR(8), PRIMARY KEY (a)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
DELETE QUICK FROM t1 WHERE a = 1 OR b > 'foo';
SELECT a,b FROM t1;
a b
2 b
3 c
4 d
5 e
CREATE TABLE t2 (c CHAR(8), d INT, PRIMARY KEY (c)) ENGINE=rocksdb;
INSERT INTO t2 (c,d) SELECT b, a FROM t1;
SELECT c,d FROM t2;
c d
b 2
c 3
d 4
e 5
DELETE QUICK FROM t2, t1.* USING t2, t1 WHERE c IS NULL OR a = d;
SELECT a,b FROM t1;
a b
SELECT c,d FROM t2;
c d
DROP TABLE t1, t2;

View file

@ -0,0 +1,38 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY, KEY(b)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'x'),(7,'y'),(8,'z');
DELETE FROM t1 WHERE b > 'y';
DELETE FROM t1 WHERE a=2;
SELECT a,b FROM t1;
a b
1 a
3 c
4 d
5 e
6 x
7 y
DELETE FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'x'),(7,'y'),(8,'z');
DELETE FROM t1 WHERE b > 'y';
DELETE FROM t1 WHERE a=2;
SELECT a,b FROM t1;
a b
1 a
3 c
4 d
5 e
6 x
7 y
DELETE FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT, pk INT AUTO_INCREMENT PRIMARY KEY, KEY(a), KEY (b)) ENGINE=rocksdb;
INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9);
DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
SELECT a,b,c FROM t1;
a b c
1 2 3
4 5 6
7 8 9
DROP TABLE t1;

View file

@ -0,0 +1,19 @@
DROP TABLE IF EXISTS t1, t2, t3;
CREATE TABLE t1 (a INT, b CHAR(8), PRIMARY KEY (a)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (100,'foo'),(2, 'b');
CREATE TABLE t2 (a INT, b CHAR(8), PRIMARY KEY (b)) ENGINE=rocksdb CHARACTER SET utf8;
INSERT INTO t2 (a,b) VALUES (1, 'bar');
CREATE TABLE t3 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb CHARACTER SET utf8;
DESCRIBE t1;
Field Type Null Key Default Extra
a int(11) NO PRI 0
b char(8) YES NULL
DESC t2 a;
Field Type Null Key Default Extra
a int(11) YES NULL
DESCRIBE t3 '%';
Field Type Null Key Default Extra
a int(11) YES NULL
b char(8) YES NULL
pk int(11) NO PRI NULL auto_increment
DROP TABLE t1, t2, t3;

View file

@ -0,0 +1,6 @@
DROP DATABASE IF EXISTS test_drop_database;
CREATE DATABASE test_drop_database;
CREATE TABLE t1 (a int, b int, c int, primary key (a), unique key (b)) ENGINE=ROCKSDB;
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY (a);
DROP TABLE t1;
DROP DATABASE test_drop_database;

View file

@ -0,0 +1,154 @@
drop table if exists t1;
CREATE TABLE t1 (a INT, b INT AUTO_INCREMENT, KEY ka(a), KEY kb(a,b), PRIMARY KEY(b)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`b`),
KEY `ka` (`a`),
KEY `kb` (`a`,`b`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
INSERT INTO t1 (a) VALUES (1);
INSERT INTO t1 (a) VALUES (3);
INSERT INTO t1 (a) VALUES (5);
ALTER TABLE t1 DROP INDEX ka, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`b`),
KEY `kb` (`a`,`b`)
) ENGINE=ROCKSDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
SELECT * FROM t1 FORCE INDEX(ka) where a > 1;
ERROR 42000: Key 'ka' doesn't exist in table 't1'
SELECT * FROM t1 FORCE INDEX(kb) where a > 1;
a b
3 2
5 3
SELECT * FROM t1 where b > 1;
a b
3 2
5 3
DROP TABLE t1;
CREATE TABLE t1 (a INT AUTO_INCREMENT, b INT, c INT, KEY kb(b), KEY kbc(b,c), KEY kc(c), PRIMARY KEY(a)) ENGINE=rocksdb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `kb` (`b`),
KEY `kbc` (`b`,`c`),
KEY `kc` (`c`)
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
INSERT INTO t1 (b,c) VALUES (1,2);
INSERT INTO t1 (b,c) VALUES (3,4);
INSERT INTO t1 (b,c) VALUES (5,6);
ALTER TABLE t1 DROP INDEX kb, DROP INDEX kbc, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `kc` (`c`)
) ENGINE=ROCKSDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `kc` (`c`)
) ENGINE=ROCKSDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
INSERT INTO t1 (b,c) VALUES (1,2);
INSERT INTO t1 (b,c) VALUES (3,4);
INSERT INTO t1 (b,c) VALUES (5,6);
SELECT * FROM t1 FORCE INDEX(kc) where c > 3;
a b c
2 3 4
3 5 6
5 3 4
6 5 6
SELECT * FROM t1 where b > 3;
a b c
3 5 6
6 5 6
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT, c INT, KEY kb(b), KEY kbc(b,c), KEY kc(c), PRIMARY KEY(a)) ENGINE=rocksdb;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 a A 0 NULL NULL LSMTREE
t1 1 kb 1 b A 0 NULL NULL YES LSMTREE
t1 1 kbc 1 b A 0 NULL NULL YES LSMTREE
t1 1 kbc 2 c A 0 NULL NULL YES LSMTREE
t1 1 kc 1 c A 0 NULL NULL YES LSMTREE
ALTER TABLE t1 DROP INDEX kb, DROP INDEX kbc, ALGORITHM=INPLACE;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 a A 0 NULL NULL LSMTREE
t1 1 kc 1 c A 0 NULL NULL YES LSMTREE
ALTER TABLE t1 DROP PRIMARY KEY;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 1 kc 1 c A 0 NULL NULL YES LSMTREE
ALTER TABLE t1 DROP INDEX kc, ALGORITHM=INPLACE;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
DROP TABLE t1;
CREATE TABLE t1 (a INT AUTO_INCREMENT, b INT, c INT, PRIMARY KEY(a)) ENGINE=rocksdb;
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
ALTER TABLE t1 ADD UNIQUE INDEX kbc(b,c);
ALTER TABLE t1 ADD UNIQUE INDEX kc(c);
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 a A 0 NULL NULL LSMTREE
t1 0 kb 1 b A 0 NULL NULL YES LSMTREE
t1 0 kbc 1 b A 0 NULL NULL YES LSMTREE
t1 0 kbc 2 c A 0 NULL NULL YES LSMTREE
t1 0 kc 1 c A 0 NULL NULL YES LSMTREE
ALTER TABLE t1 DROP INDEX kb, DROP INDEX kbc;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 a A 0 NULL NULL LSMTREE
t1 0 kc 1 c A 0 NULL NULL YES LSMTREE
INSERT INTO t1 (b,c) VALUES (1,2);
INSERT INTO t1 (b,c) VALUES (3,4);
INSERT INTO t1 (b,c) VALUES (5,6);
SELECT * FROM t1 FORCE INDEX(kc) where c > 3;
a b c
2 3 4
3 5 6
ALTER TABLE t1 DROP INDEX kc, ALGORITHM=INPLACE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=ROCKSDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE IF NOT EXISTS t1 (col1 INT, col2 INT, col3 INT);
INSERT INTO t1 (col1,col2,col3) VALUES (1,2,3);
ALTER TABLE t1 ADD KEY idx ( col1, col2 );
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
ALTER TABLE t1 DROP COLUMN col2;
ALTER TABLE t1 DROP COLUMN col3;
DROP TABLE t1;
CREATE TABLE IF NOT EXISTS t1 (col1 INT, col2 INT, col3 INT);
INSERT INTO t1 (col1,col2,col3) VALUES (1,2,3);
ALTER TABLE t1 ADD KEY idx ( col1, col2 );
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
ALTER TABLE t1 DROP COLUMN col2;
ALTER TABLE t1 DROP COLUMN col3;
DROP TABLE t1;

View file

@ -0,0 +1,71 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
DROP TABLE IF EXISTS t4;
DROP TABLE IF EXISTS t5;
set global rocksdb_compact_cf = 'cf1';
set global rocksdb_compact_cf = 'rev:cf2';
set global rocksdb_signal_drop_index_thread = 1;
CREATE TABLE t1 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t2 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t3 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t4 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
DELETE FROM t1;
DELETE FROM t2;
DELETE FROM t3;
DELETE FROM t4;
drop table t2;
DELETE FROM t1;
DELETE FROM t4;
drop table t3;
DELETE FROM t1;
DELETE FROM t4;
drop table t4;
CREATE TABLE t5 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
DELETE FROM t5;
drop table t5;
set global rocksdb_compact_cf = 'cf1';
set global rocksdb_compact_cf = 'rev:cf2';
set global rocksdb_signal_drop_index_thread = 1;
Begin filtering dropped index+ 0
Begin filtering dropped index+ 1
Begin filtering dropped index+ 1
Begin filtering dropped index+ 1
Begin filtering dropped index+ 1
Begin filtering dropped index+ 1
Begin filtering dropped index+ 1
Begin filtering dropped index+ 1
Finished filtering dropped index+ 0
Finished filtering dropped index+ 1
Finished filtering dropped index+ 1
Finished filtering dropped index+ 1
Finished filtering dropped index+ 1
Finished filtering dropped index+ 1
Finished filtering dropped index+ 1
Finished filtering dropped index+ 1
drop table t1;

View file

@ -0,0 +1,53 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
DROP TABLE IF EXISTS t4;
DROP TABLE IF EXISTS t5;
set global rocksdb_compact_cf = 'cf1';
set global rocksdb_compact_cf = 'rev:cf2';
set global rocksdb_signal_drop_index_thread = 1;
CREATE TABLE t1 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t2 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t3 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
CREATE TABLE t4 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
DELETE FROM t1;
DELETE FROM t2;
DELETE FROM t3;
DELETE FROM t4;
DELETE FROM t1;
DELETE FROM t4;
DELETE FROM t1;
DELETE FROM t4;
CREATE TABLE t5 (
a int not null,
b int not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
DELETE FROM t5;
drop table t1;
drop table t2;
drop table t3;
drop table t4;
drop table t5;
Compacted

View file

@ -0,0 +1,20 @@
DROP TABLE IF EXISTS t1;
set global rocksdb_compact_cf = 'cf1';
set global rocksdb_compact_cf = 'rev:cf2';
set global rocksdb_signal_drop_index_thread = 1;
CREATE TABLE t1 (
a int not null,
b int not null,
c varchar(500) not null,
primary key (a,b) comment 'cf1',
key (b) comment 'rev:cf2'
) ENGINE=RocksDB;
DELETE FROM t1;
select variable_value into @a from information_schema.global_status where variable_name='rocksdb_compact_read_bytes';
drop table t1;
select case when variable_value-@a < 500000 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_compact_read_bytes';
case when variable_value-@a < 500000 then 'true' else 'false' end
true
DROP TABLE IF EXISTS t1;
Warnings:
Note 1051 Unknown table 'test.t1'

View file

@ -0,0 +1,362 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1 (id1 INT, id2 INT, id3 INT,
PRIMARY KEY (id1, id2, id3),
UNIQUE KEY (id3, id1)) ENGINE=ROCKSDB;
CREATE TABLE t2 (id1 INT, id2 INT, id3 INT,
PRIMARY KEY (id1, id2, id3),
UNIQUE KEY (id3, id1) COMMENT 'rev:cf') ENGINE=ROCKSDB;
INSERT INTO t1 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 9;
SELECT * FROM t1 WHERE id1 = 1;
id1 id2 id3
1 1 1
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 1 1
INSERT INTO t1 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 10;
SELECT * FROM t1 WHERE id1 = 1;
id1 id2 id3
1 10 1
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 10 1
INSERT INTO t1 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 11;
SELECT * FROM t1 WHERE id1 = 1;
id1 id2 id3
1 11 1
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 11 1
INSERT INTO t1 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 12;
SELECT * FROM t1 WHERE id1 = 5;
id1 id2 id3
5 12 5
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 12 5
INSERT INTO t1 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 13;
SELECT * FROM t1 WHERE id1 = 5;
id1 id2 id3
5 13 5
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 13 5
INSERT INTO t1 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 14;
SELECT * FROM t1 WHERE id1 = 5;
id1 id2 id3
5 14 5
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 14 5
INSERT INTO t1 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 15;
SELECT * FROM t1 WHERE id1 = 9;
id1 id2 id3
9 15 9
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 15 9
INSERT INTO t1 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 16;
SELECT * FROM t1 WHERE id1 = 9;
id1 id2 id3
9 16 9
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 16 9
INSERT INTO t1 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 17;
SELECT * FROM t1 WHERE id1 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t1;
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
SELECT * FROM t1 FORCE INDEX (id3);
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
INSERT INTO t2 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 9;
SELECT * FROM t2 WHERE id1 = 1;
id1 id2 id3
1 1 1
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 1 1
INSERT INTO t2 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 10;
SELECT * FROM t2 WHERE id1 = 1;
id1 id2 id3
1 10 1
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 10 1
INSERT INTO t2 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 11;
SELECT * FROM t2 WHERE id1 = 1;
id1 id2 id3
1 11 1
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 11 1
INSERT INTO t2 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 12;
SELECT * FROM t2 WHERE id1 = 5;
id1 id2 id3
5 12 5
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 12 5
INSERT INTO t2 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 13;
SELECT * FROM t2 WHERE id1 = 5;
id1 id2 id3
5 13 5
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 13 5
INSERT INTO t2 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 14;
SELECT * FROM t2 WHERE id1 = 5;
id1 id2 id3
5 14 5
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 14 5
INSERT INTO t2 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 15;
SELECT * FROM t2 WHERE id1 = 9;
id1 id2 id3
9 15 9
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 15 9
INSERT INTO t2 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 16;
SELECT * FROM t2 WHERE id1 = 9;
id1 id2 id3
9 16 9
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 16 9
INSERT INTO t2 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 17;
SELECT * FROM t2 WHERE id1 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t2;
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
SELECT * FROM t2 FORCE INDEX (id3);
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
DROP TABLE t1;
DROP TABLE t2;
CREATE TABLE t1 (id1 varchar(128) CHARACTER SET latin1 COLLATE latin1_bin,
id2 varchar(256) CHARACTER SET utf8 COLLATE utf8_bin,
id3 varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
PRIMARY KEY (id1, id2, id3),
UNIQUE KEY (id3, id1)) ENGINE=ROCKSDB;
CREATE TABLE t2 (id1 varchar(128) CHARACTER SET latin1 COLLATE latin1_bin,
id2 varchar(256) CHARACTER SET utf8 COLLATE utf8_bin,
id3 varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
PRIMARY KEY (id1, id2, id3),
UNIQUE KEY (id3, id1) COMMENT 'rev:cf') ENGINE=ROCKSDB;
INSERT INTO t1 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 9;
SELECT * FROM t1 WHERE id1 = 1;
id1 id2 id3
1 1 1
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 1 1
INSERT INTO t1 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 10;
SELECT * FROM t1 WHERE id1 = 1;
id1 id2 id3
1 10 1
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 10 1
INSERT INTO t1 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 11;
SELECT * FROM t1 WHERE id1 = 1;
id1 id2 id3
1 11 1
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 11 1
INSERT INTO t1 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 12;
SELECT * FROM t1 WHERE id1 = 5;
id1 id2 id3
5 12 5
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 12 5
INSERT INTO t1 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 13;
SELECT * FROM t1 WHERE id1 = 5;
id1 id2 id3
5 13 5
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 13 5
INSERT INTO t1 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 14;
SELECT * FROM t1 WHERE id1 = 5;
id1 id2 id3
5 14 5
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 14 5
INSERT INTO t1 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 15;
SELECT * FROM t1 WHERE id1 = 9;
id1 id2 id3
9 15 9
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 15 9
INSERT INTO t1 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 16;
SELECT * FROM t1 WHERE id1 = 9;
id1 id2 id3
9 16 9
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 16 9
INSERT INTO t1 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 17;
SELECT * FROM t1 WHERE id1 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t1 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t1;
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
SELECT * FROM t1 FORCE INDEX (id3);
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
INSERT INTO t2 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 9;
SELECT * FROM t2 WHERE id1 = 1;
id1 id2 id3
1 1 1
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 1 1
INSERT INTO t2 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 10;
SELECT * FROM t2 WHERE id1 = 1;
id1 id2 id3
1 10 1
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 10 1
INSERT INTO t2 VALUES (1, 1, 1) ON DUPLICATE KEY UPDATE id2 = 11;
SELECT * FROM t2 WHERE id1 = 1;
id1 id2 id3
1 11 1
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 1;
id1 id2 id3
1 11 1
INSERT INTO t2 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 12;
SELECT * FROM t2 WHERE id1 = 5;
id1 id2 id3
5 12 5
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 12 5
INSERT INTO t2 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 13;
SELECT * FROM t2 WHERE id1 = 5;
id1 id2 id3
5 13 5
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 13 5
INSERT INTO t2 VALUES (5, 5, 5) ON DUPLICATE KEY UPDATE id2 = 14;
SELECT * FROM t2 WHERE id1 = 5;
id1 id2 id3
5 14 5
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 5;
id1 id2 id3
5 14 5
INSERT INTO t2 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 15;
SELECT * FROM t2 WHERE id1 = 9;
id1 id2 id3
9 15 9
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 15 9
INSERT INTO t2 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 16;
SELECT * FROM t2 WHERE id1 = 9;
id1 id2 id3
9 16 9
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 16 9
INSERT INTO t2 VALUES (9, 9, 9) ON DUPLICATE KEY UPDATE id2 = 17;
SELECT * FROM t2 WHERE id1 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t2 FORCE INDEX (id3) WHERE id3 = 9;
id1 id2 id3
9 17 9
SELECT * FROM t2;
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
SELECT * FROM t2 FORCE INDEX (id3);
id1 id2 id3
1 11 1
2 2 2
3 3 3
4 4 4
5 14 5
6 6 6
7 7 7
8 8 8
9 17 9
DROP TABLE t1;
DROP TABLE t2;

View file

@ -0,0 +1,15 @@
DROP TABLE IF EXISTS t;
CREATE TABLE t(id int primary key) engine=rocksdb;
INSERT INTO t values (1), (2), (3);
CREATE TABLE t(id int primary key) engine=rocksdb;
ERROR 42S01: Table 't' already exists
FLUSH TABLES;
CREATE TABLE t(id int primary key) engine=rocksdb;
ERROR HY000: Table 'test.t' does not exist, but metadata information exists inside MyRocks. This is a sign of data inconsistency. Please check if './test/t.frm' exists, and try to restore it if it does not exist.
FLUSH TABLES;
SELECT * FROM t;
id
1
2
3
DROP TABLE t;

View file

@ -0,0 +1,4 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (i INT, PRIMARY KEY (i) COMMENT '__system__') ENGINE = ROCKSDB;
ERROR HY000: Incorrect arguments to column family not valid for storing index data
DROP TABLE IF EXISTS t1;

View file

@ -0,0 +1,25 @@
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (b INT PRIMARY KEY);
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL, FOREIGN KEY (b) REFERENCES t1(b));
ERROR 42000: MyRocks does not currently support foreign key constraints
CREATE TABLE t2 (a INT NOT NULL, bforeign INT NOT NULL);
DROP TABLE t2;
CREATE TABLE t2 (a INT NOT NULL, foreignkey INT NOT NULL);
DROP TABLE t2;
CREATE TABLE t2 (a INT NOT NULL, bforeign INT not null, FOREIGN KEY (bforeign) REFERENCES t1(b));
ERROR 42000: MyRocks does not currently support foreign key constraints
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL);
ALTER TABLE t2 ADD FOREIGN KEY (b) REFERENCES t1(b);
ERROR 42000: MyRocks does not currently support foreign key constraints
DROP TABLE t2;
CREATE TABLE t2 (a INT NOT NULL);
ALTER TABLE t2 ADD bforeign INT NOT NULL;
DROP TABLE t2;
CREATE TABLE t2 (a INT NOT NULL);
ALTER TABLE t2 ADD foreignkey INT NOT NULL;
DROP TABLE t2;
CREATE TABLE t2 (a INT NOT NULL);
ALTER TABLE t2 ADD bforeign INT NOT NULL, ADD FOREIGN KEY (bforeign) REFERENCES t1(b);
ERROR 42000: MyRocks does not currently support foreign key constraints
DROP TABLE t2;
DROP TABLE t1;

View file

@ -0,0 +1,9 @@
create table t (id int primary key, value int);
begin;
update t set value=100 where id in (1, 2);
commit;
begin;
select * from t for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from t for update
commit;
drop table t;

View file

@ -0,0 +1,504 @@
drop table if exists gap1,gap2,gap3;
CREATE DATABASE mysqlslap;
CREATE TABLE gap1 (id1 INT, id2 INT, id3 INT, c1 INT, value INT,
PRIMARY KEY (id1, id2, id3),
INDEX i (c1)) ENGINE=rocksdb;
CREATE TABLE gap2 like gap1;
CREATE TABLE gap3 (id INT, value INT,
PRIMARY KEY (id),
UNIQUE KEY ui(value)) ENGINE=rocksdb;
insert into gap3 values (1,1), (2,2),(3,3),(4,4),(5,5);
create table gap4 (
pk int primary key,
a int,
b int,
key(a)
) ENGINE=rocksdb;
insert into gap4 values (1,1,1), (2,2,2), (3,3,3), (4,4,4);
create table gap5 like gap4;
insert into gap5 values (1,1,1), (2,2,2), (3,3,3), (4,4,4);
set session gap_lock_raise_error=1;
set session gap_lock_write_log=1;
set @save_gap_lock_write_log = @@gap_lock_write_log;
set @save_gap_lock_raise_error = @@gap_lock_raise_error;
set gap_lock_write_log = 1;
set gap_lock_raise_error = 0;
begin;
update gap4 set a= (select 1+max(a) from gap5 where gap5.pk between 1 and 3 and gap5.b=gap4.b);
1
update gap4 set a= (select 2+max(a) from gap5 where gap5.pk between 1 and 3 and gap5.b=gap4.b);
update gap4 set a= (select 3+max(a) from gap5 where gap5.pk between 1 and 3 and gap5.b=gap4.b);
1
1
0
flush logs;
0
rollback;
set gap_lock_write_log = @save_gap_lock_write_log;
set gap_lock_raise_error = @save_gap_lock_raise_error;
set global gap_lock_write_log = 1;
set global gap_lock_write_log = 0;
1000
set session autocommit=0;
select * from gap1 limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 limit 1 for update
select * from gap1 where value != 100 limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where value != 100 limit 1 for update
select * from gap1 where id1=1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 for update
select * from gap1 where id1=1 and id2= 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 for update
select * from gap1 where id1=1 and id2= 1 and id3 != 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 and id3 != 1 for update
select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 for update
select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 for update
select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 for update
select * from gap1 order by id1 asc limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 asc limit 1 for update
select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 for update
select * from gap1 order by id1 desc limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 desc limit 1 for update
select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 for update
select * from gap1 force index(i) where c1=1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 force index(i) where c1=1 for update
select * from gap3 force index(ui) where value=1 for update;
id value
1 1
select * from gap1 where id1=1 and id2=1 and id3=1 for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
order by c1 for update;
id1 id2 id3 c1 value
select * from gap3 where id=1 for update;
id value
1 1
set session autocommit=1;
select * from gap1 limit 1 for update;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where value != 100 limit 1 for update;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where id1=1 for update;
id1 id2 id3 c1 value
1 0 2 2 2
1 0 3 3 3
select * from gap1 where id1=1 and id2= 1 for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3 != 1 for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 for update;
id1 id2 id3 c1 value
select * from gap1 order by id1 asc limit 1 for update;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 for update;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 desc limit 1 for update;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 for update;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 force index(i) where c1=1 for update;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap3 force index(ui) where value=1 for update;
id value
1 1
select * from gap1 where id1=1 and id2=1 and id3=1 for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) for update;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
order by c1 for update;
id1 id2 id3 c1 value
select * from gap3 where id=1 for update;
id value
1 1
set session autocommit=0;
select * from gap1 limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 limit 1 lock in share mode
select * from gap1 where value != 100 limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where value != 100 limit 1 lock in share mode
select * from gap1 where id1=1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 lock in share mode
select * from gap1 where id1=1 and id2= 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 lock in share mode
select * from gap1 where id1=1 and id2= 1 and id3 != 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 and id3 != 1 lock in share mode
select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 lock in share mode
select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 lock in share mode
select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 lock in share mode
select * from gap1 order by id1 asc limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 asc limit 1 lock in share mode
select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 lock in share mode
select * from gap1 order by id1 desc limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 desc limit 1 lock in share mode
select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 lock in share mode
select * from gap1 force index(i) where c1=1 lock in share mode;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 force index(i) where c1=1 lock in share mode
select * from gap3 force index(ui) where value=1 lock in share mode;
id value
1 1
select * from gap1 where id1=1 and id2=1 and id3=1 lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
order by c1 lock in share mode;
id1 id2 id3 c1 value
select * from gap3 where id=1 lock in share mode;
id value
1 1
set session autocommit=1;
select * from gap1 limit 1 lock in share mode;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where value != 100 limit 1 lock in share mode;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where id1=1 lock in share mode;
id1 id2 id3 c1 value
1 0 2 2 2
1 0 3 3 3
select * from gap1 where id1=1 and id2= 1 lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3 != 1 lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 lock in share mode;
id1 id2 id3 c1 value
select * from gap1 order by id1 asc limit 1 lock in share mode;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 lock in share mode;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 desc limit 1 lock in share mode;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 lock in share mode;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 force index(i) where c1=1 lock in share mode;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap3 force index(ui) where value=1 lock in share mode;
id value
1 1
select * from gap1 where id1=1 and id2=1 and id3=1 lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) lock in share mode;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
order by c1 lock in share mode;
id1 id2 id3 c1 value
select * from gap3 where id=1 lock in share mode;
id value
1 1
set session autocommit=0;
select * from gap1 limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where value != 100 limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where id1=1 ;
id1 id2 id3 c1 value
1 0 2 2 2
1 0 3 3 3
select * from gap1 where id1=1 and id2= 1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3 != 1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 ;
id1 id2 id3 c1 value
select * from gap1 order by id1 asc limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 desc limit 1 ;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 ;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 force index(i) where c1=1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap3 force index(ui) where value=1 ;
id value
1 1
select * from gap1 where id1=1 and id2=1 and id3=1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
order by c1 ;
id1 id2 id3 c1 value
select * from gap3 where id=1 ;
id value
1 1
set session autocommit=1;
select * from gap1 limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where value != 100 limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where id1=1 ;
id1 id2 id3 c1 value
1 0 2 2 2
1 0 3 3 3
select * from gap1 where id1=1 and id2= 1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3 != 1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 and id3
between 1 and 3 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 asc
limit 1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2= 1 order by id3 desc
limit 1 ;
id1 id2 id3 c1 value
select * from gap1 order by id1 asc limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 order by id1 desc limit 1 ;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 order by id1 desc, id2 desc, id3 desc
limit 1 ;
id1 id2 id3 c1 value
500 100 1000 1000 1000
select * from gap1 force index(i) where c1=1 ;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap3 force index(ui) where value=1 ;
id value
1 1
select * from gap1 where id1=1 and id2=1 and id3=1 ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) ;
id1 id2 id3 c1 value
select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
order by c1 ;
id1 id2 id3 c1 value
select * from gap3 where id=1 ;
id value
1 1
set session autocommit=0;
insert into gap1 (id1, id2, id3) values (-1,-1,-1);
insert into gap1 (id1, id2, id3) values (-1,-1,-1)
on duplicate key update value=100;
update gap1 set value=100 where id1=1;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: update gap1 set value=100 where id1=1
update gap1 set value=100 where id1=1 and id2=1 and id3=1;
delete from gap1 where id1=2;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: delete from gap1 where id1=2
delete from gap1 where id1=-1 and id2=-1 and id3=-1;
commit;
set session autocommit=1;
insert into gap1 (id1, id2, id3) values (-1,-1,-1);
insert into gap1 (id1, id2, id3) values (-1,-1,-1)
on duplicate key update value=100;
update gap1 set value=100 where id1=1;
update gap1 set value=100 where id1=1 and id2=1 and id3=1;
delete from gap1 where id1=2;
delete from gap1 where id1=-1 and id2=-1 and id3=-1;
commit;
set session autocommit=1;
insert into gap2 select * from gap1;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: insert into gap2 select * from gap1
insert into gap2 select * from gap1 where id1=1;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: insert into gap2 select * from gap1 where id1=1
insert into gap2 select * from gap1 where id1=1 and id2=1 and id3=1;
create table t4 select * from gap1 where id1=1 and id2=1 and id3=1;
drop table t4;
create table t4 select * from gap1;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: create table t4 select * from gap1
create table t4 select * from gap1 where id1=1;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: create table t4 select * from gap1 where id1=1
update gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 set gap1.value=100 where gap2.id1=3
and gap2.id2=3 and gap2.id3=3;
update gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 set gap1.value=100 where gap2.id1=3;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: update gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 set gap1.value=100 where gap2.id1=3
update gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 join gap3 on gap1.id1=gap3.id
set gap1.value=100 where gap2.id1=3;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: update gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 join gap3 on gap1.id1=gap3.id
set gap1.value=100 where gap2.id1=3
update gap1 set gap1.value= (select count(*) from gap2);
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: update gap1 set gap1.value= (select count(*) from gap2)
delete gap1 from gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 where gap2.id1=3
and gap2.id2=3 and gap2.id3=3;
delete gap1 from gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 where gap2.id1=3;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: delete gap1 from gap1 join gap2 on gap1.id1 and gap1.id2=gap2.id2 where gap2.id1=3
select * from gap1, gap2 limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1, gap2 limit 1 for update
select * from gap1 a, gap1 b limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 a, gap1 b limit 1 for update
create table u1(
c1 int,
c2 int,
c3 int,
c4 int,
primary key (c1, c2, c3),
unique key (c3, c1)
);
set session gap_lock_raise_error=1;
begin;
insert into u1 values (1,1,1,1);
commit;
begin;
insert into u1 values (1,2,1,1) on duplicate key update c4=10;
commit;
begin;
select * from u1 where c3=1 and c1 = 1 for update;
c1 c2 c3 c4
1 1 1 10
select * from u1 where c3=1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from u1 where c3=1 for update
commit;
drop table u1;
set global gap_lock_write_log= 0;
set global gap_lock_raise_error= 0;
drop table if exists gap1, gap2, gap3, gap4, gap5;
DROP DATABASE mysqlslap;
0
SET GLOBAL gap_lock_log_file='<GAP_LOCK_ORIG>';
SET GLOBAL gap_lock_log_file='<GAP_LOCK>';
flush general logs;
SET @save_gap_lock_exceptions = @@global.gap_lock_exceptions;
SET GLOBAL gap_lock_exceptions="t.*";
drop table if exists gap1,gap2,gap3;
CREATE DATABASE mysqlslap;
CREATE TABLE gap1 (id1 INT, id2 INT, id3 INT, c1 INT, value INT,
PRIMARY KEY (id1, id2, id3),
INDEX i (c1)) ENGINE=rocksdb;
CREATE TABLE gap2 like gap1;
CREATE TABLE gap3 (id INT, value INT,
PRIMARY KEY (id),
UNIQUE KEY ui(value)) ENGINE=rocksdb;
insert into gap3 values (1,1), (2,2),(3,3),(4,4),(5,5);
create table gap4 (
pk int primary key,
a int,
b int,
key(a)
) ENGINE=rocksdb;
insert into gap4 values (1,1,1), (2,2,2), (3,3,3), (4,4,4);
create table gap5 like gap4;
insert into gap5 values (1,1,1), (2,2,2), (3,3,3), (4,4,4);
set session gap_lock_raise_error=1;
set session gap_lock_write_log=1;
set session autocommit=0;
select * from gap1 limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 limit 1 for update
select * from gap1 where value != 100 limit 1 for update;
ERROR HY000: Using Gap Lock without full unique key in multi-table or multi-statement transactions is not allowed. You need either 1: Execute 'SET SESSION gap_lock_raise_error=0' if you are sure that your application does not rely on Gap Lock. 2: Rewrite queries to use all unique key columns in WHERE equal conditions. 3: Rewrite to single-table, single-statement transaction. Query: select * from gap1 where value != 100 limit 1 for update
set global gap_lock_write_log= 0;
set global gap_lock_raise_error= 0;
drop table if exists gap1, gap2, gap3, gap4, gap5;
DROP DATABASE mysqlslap;
0
SET GLOBAL gap_lock_log_file='<GAP_LOCK_ORIG>';
SET GLOBAL gap_lock_log_file='<GAP_LOCK>';
flush general logs;
SET GLOBAL gap_lock_exceptions="gap.*";
drop table if exists gap1,gap2,gap3;
CREATE DATABASE mysqlslap;
CREATE TABLE gap1 (id1 INT, id2 INT, id3 INT, c1 INT, value INT,
PRIMARY KEY (id1, id2, id3),
INDEX i (c1)) ENGINE=rocksdb;
CREATE TABLE gap2 like gap1;
CREATE TABLE gap3 (id INT, value INT,
PRIMARY KEY (id),
UNIQUE KEY ui(value)) ENGINE=rocksdb;
insert into gap3 values (1,1), (2,2),(3,3),(4,4),(5,5);
create table gap4 (
pk int primary key,
a int,
b int,
key(a)
) ENGINE=rocksdb;
insert into gap4 values (1,1,1), (2,2,2), (3,3,3), (4,4,4);
create table gap5 like gap4;
insert into gap5 values (1,1,1), (2,2,2), (3,3,3), (4,4,4);
set session gap_lock_raise_error=1;
set session gap_lock_write_log=1;
set session autocommit=0;
select * from gap1 limit 1 for update;
id1 id2 id3 c1 value
0 0 1 1 1
select * from gap1 where value != 100 limit 1 for update;
id1 id2 id3 c1 value
0 0 1 1 1
set global gap_lock_write_log= 0;
set global gap_lock_raise_error= 0;
drop table if exists gap1, gap2, gap3, gap4, gap5;
DROP DATABASE mysqlslap;
0
SET GLOBAL gap_lock_log_file='<GAP_LOCK_ORIG>';
SET GLOBAL gap_lock_log_file='<GAP_LOCK>';
flush general logs;
SET GLOBAL gap_lock_exceptions=@save_gap_lock_exceptions;

View file

@ -0,0 +1,8 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(a INT,b INT,KEY (a)) PARTITION BY HASH (a) PARTITIONS 3;
SHOW TABLES;
Tables_in_test
t1
ALTER TABLE t1 ADD PARTITION(PARTITION p3 DATA DIRECTORY='G:/mysqltest/p3Data' INDEX DIRECTORY='H:/mysqltest/p3Index');
ERROR 42000: Incorrect table name 'H:/mysqltest/p3Index'
DROP TABLE t1;

View file

@ -0,0 +1,115 @@
DROP TABLE IF EXISTS t1;
FLUSH STATUS;
CREATE TABLE t1 (id INT PRIMARY KEY, a VARCHAR(100), b INT,
INDEX b(b)) ENGINE=rocksdb;
INSERT INTO t1 (id,a,b) VALUES (1,'foobar',100),(2,'z',0),(3,'bar',50);
SHOW SESSION STATUS LIKE 'Handler_write%';
Variable_name Value
Handler_write 3
UPDATE t1 SET b=1000 WHERE id=1;
SHOW SESSION STATUS LIKE 'Handler_update%';
Variable_name Value
Handler_update 1
DELETE FROM t1 WHERE id=2;
SHOW SESSION STATUS LIKE 'Handler_delete%';
Variable_name Value
Handler_delete 1
INSERT INTO t1 (id,b) VALUES(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
SHOW SESSION STATUS LIKE 'Handler_write%';
Variable_name Value
Handler_write 10
FLUSH STATUS;
SELECT * FROM t1 WHERE id=8;
id a b
8 NULL 8
SHOW SESSION STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 0
FLUSH STATUS;
SELECT * FROM t1 WHERE b=6;
id a b
6 NULL 6
SHOW SESSION STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 1
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 0
FLUSH STATUS;
SELECT * FROM t1;
id a b
1 foobar 1000
10 NULL 10
3 bar 50
4 NULL 4
5 NULL 5
6 NULL 6
7 NULL 7
8 NULL 8
9 NULL 9
SHOW SESSION STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 0
Handler_read_last 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 10
FLUSH STATUS;
SELECT * FROM t1 WHERE b <=5 ORDER BY b;
id a b
4 NULL 4
5 NULL 5
SHOW SESSION STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 2
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 0
FLUSH STATUS;
SELECT * FROM t1 WHERE id >=8 ORDER BY id;
id a b
8 NULL 8
9 NULL 9
10 NULL 10
SHOW SESSION STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 1
Handler_read_last 0
Handler_read_next 3
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 0
FLUSH STATUS;
SELECT * FROM t1 WHERE id < 8 ORDER BY id;
id a b
1 foobar 1000
3 bar 50
4 NULL 4
5 NULL 5
6 NULL 6
7 NULL 7
SHOW SESSION STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 1
Handler_read_key 0
Handler_read_last 0
Handler_read_next 6
Handler_read_prev 0
Handler_read_rnd 0
Handler_read_rnd_next 0
DROP TABLE t1;

View file

@ -0,0 +1,648 @@
DROP TABLE IF EXISTS test;
connect con1,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
connect con2,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
connect con3,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
connection con1;
create table test (id int primary key, value int) engine=rocksdb;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test;
id value
1 10
2 20
update test set value = 101 where id = 1;
connection con2;
select * from test;
id value
1 10
2 20
connection con1;
rollback;
connection con2;
select * from test;
id value
1 10
2 20
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = 101 where id = 1;
connection con2;
select * from test;
id value
1 10
2 20
connection con1;
update test set value = 11 where id = 1;
commit;
connection con2;
select * from test;
id value
1 11
2 20
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = 11 where id = 1;
connection con2;
update test set value = 22 where id = 2;
connection con1;
select * from test where id = 2;
id value
2 20
connection con2;
select * from test where id = 1;
id value
1 10
connection con1;
commit;
connection con2;
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = 11 where id = 1;
update test set value = 19 where id = 2;
connection con2;
update test set value = 12 where id = 1;
connection con1;
commit;
connection con2;
connection con3;
select * from test;
id value
1 11
2 19
connection con2;
update test set value = 18 where id = 2;
connection con3;
select * from test;
id value
1 11
2 19
connection con2;
commit;
connection con3;
select * from test;
id value
1 12
2 18
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where value = 30;
id value
connection con2;
insert into test (id, value) values(3, 30);
commit;
connection con1;
select * from test where value % 3 = 0;
id value
3 30
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = value + 10;
connection con2;
select variable_value into @a from information_schema.global_status where variable_name='rocksdb_snapshot_conflict_errors';
select * from test;
id value
1 10
2 20
delete from test where value = 20;
connection con1;
commit;
connection con2;
select * from test;
id value
2 30
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id = 1;
id value
1 10
connection con2;
select * from test where id = 1;
id value
1 10
connection con1;
update test set value = 11 where id = 1;
connection con2;
update test set value = 12 where id = 1;
connection con1;
commit;
connection con2;
select * from test;
id value
1 12
2 20
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id = 1;
id value
1 10
connection con2;
select * from test where id = 1;
id value
1 10
select * from test where id = 2;
id value
2 20
update test set value = 12 where id = 1;
update test set value = 18 where id = 2;
commit;
connection con1;
select * from test where id = 2;
id value
2 18
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where value % 5 = 0;
id value
1 10
2 20
connection con2;
update test set value = 12 where value = 10;
commit;
connection con1;
select * from test where value % 3 = 0;
id value
1 12
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id = 1;
id value
1 10
connection con2;
select * from test;
id value
1 10
2 20
update test set value = 12 where id = 1;
update test set value = 18 where id = 2;
commit;
connection con1;
delete from test where value = 20;
select * from test where id = 2;
id value
2 18
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id in (1,2);
id value
1 10
2 20
connection con2;
select * from test where id in (1,2);
id value
1 10
2 20
connection con1;
update test set value = 11 where id = 1;
connection con2;
update test set value = 21 where id = 2;
connection con1;
commit;
connection con2;
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where value % 3 = 0;
id value
connection con2;
select * from test where value % 3 = 0;
id value
connection con1;
insert into test (id, value) values(3, 30);
connection con2;
insert into test (id, value) values(4, 42);
connection con1;
commit;
connection con2;
commit;
select * from test where value % 3 = 0;
id value
3 30
4 42
connection con1;
select * from test where value % 3 = 0;
id value
3 30
4 42
connection default;
drop table test;
disconnect con1;
disconnect con2;
disconnect con3;
DROP TABLE IF EXISTS test;
connect con1,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
connect con2,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
connect con3,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
connection con1;
create table test (id int primary key, value int) engine=rocksdb;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test;
id value
1 10
2 20
update test set value = 101 where id = 1;
connection con2;
select * from test;
id value
1 10
2 20
connection con1;
rollback;
connection con2;
select * from test;
id value
1 10
2 20
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = 101 where id = 1;
connection con2;
select * from test;
id value
1 10
2 20
connection con1;
update test set value = 11 where id = 1;
commit;
connection con2;
select * from test;
id value
1 10
2 20
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = 11 where id = 1;
connection con2;
update test set value = 22 where id = 2;
connection con1;
select * from test where id = 2;
id value
2 20
connection con2;
select * from test where id = 1;
id value
1 10
connection con1;
commit;
connection con2;
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = 11 where id = 1;
update test set value = 19 where id = 2;
connection con2;
update test set value = 12 where id = 1;
connection con1;
commit;
connection con2;
connection con3;
select * from test;
id value
1 11
2 19
connection con2;
update test set value = 18 where id = 2;
connection con3;
select * from test;
id value
1 11
2 19
connection con2;
commit;
connection con3;
select * from test;
id value
1 11
2 19
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where value = 30;
id value
connection con2;
insert into test (id, value) values(3, 30);
commit;
connection con1;
select * from test where value % 3 = 0;
id value
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
update test set value = value + 10;
connection con2;
select variable_value into @a from information_schema.global_status where variable_name='rocksdb_snapshot_conflict_errors';
select * from test;
id value
1 10
2 20
delete from test where value = 20;
connection con1;
commit;
connection con2;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_snapshot_conflict_errors';
variable_value-@a
1
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id = 1;
id value
1 10
connection con2;
select * from test where id = 1;
id value
1 10
connection con1;
update test set value = 11 where id = 1;
connection con2;
update test set value = 12 where id = 1;
connection con1;
commit;
connection con2;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id = 1;
id value
1 10
connection con2;
select * from test where id = 1;
id value
1 10
select * from test where id = 2;
id value
2 20
update test set value = 12 where id = 1;
update test set value = 18 where id = 2;
commit;
connection con1;
select * from test where id = 2;
id value
2 20
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where value % 5 = 0;
id value
1 10
2 20
connection con2;
update test set value = 12 where value = 10;
commit;
connection con1;
select * from test where value % 3 = 0;
id value
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id = 1;
id value
1 10
connection con2;
select * from test;
id value
1 10
2 20
update test set value = 12 where id = 1;
update test set value = 18 where id = 2;
commit;
connection con1;
delete from test where value = 20;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where id in (1,2);
id value
1 10
2 20
connection con2;
select * from test where id in (1,2);
id value
1 10
2 20
connection con1;
update test set value = 11 where id = 1;
connection con2;
update test set value = 21 where id = 2;
connection con1;
commit;
connection con2;
commit;
connection con1;
truncate table test;
insert into test (id, value) values (1, 10), (2, 20);
begin;
connection con2;
begin;
connection con3;
begin;
connection con1;
select * from test where value % 3 = 0;
id value
connection con2;
select * from test where value % 3 = 0;
id value
connection con1;
insert into test (id, value) values(3, 30);
connection con2;
insert into test (id, value) values(4, 42);
connection con1;
commit;
connection con2;
commit;
select * from test where value % 3 = 0;
id value
3 30
4 42
connection con1;
select * from test where value % 3 = 0;
id value
3 30
4 42
connection default;
drop table test;
disconnect con1;
disconnect con2;
disconnect con3;

View file

@ -0,0 +1,17 @@
DROP TABLE IF EXISTS is_ddl_t1;
DROP TABLE IF EXISTS is_ddl_t2;
CREATE TABLE is_ddl_t1 (i INT, j INT, k INT, l INT,
PRIMARY KEY (i), KEY (j), KEY (k, l) COMMENT 'kl_cf')
ENGINE = ROCKSDB;
CREATE TABLE is_ddl_t2 (x INT, y INT, z INT,
PRIMARY KEY (z, y) COMMENT 'zy_cf',
KEY (x)) ENGINE = ROCKSDB;
SELECT TABLE_SCHEMA,TABLE_NAME,PARTITION_NAME,INDEX_NAME,INDEX_TYPE,KV_FORMAT_VERSION,CF FROM INFORMATION_SCHEMA.ROCKSDB_DDL WHERE TABLE_NAME like 'is_ddl_t%';
TABLE_SCHEMA TABLE_NAME PARTITION_NAME INDEX_NAME INDEX_TYPE KV_FORMAT_VERSION CF
test is_ddl_t2 NULL PRIMARY 1 11 zy_cf
test is_ddl_t2 NULL x 2 11 default
test is_ddl_t1 NULL PRIMARY 1 11 default
test is_ddl_t1 NULL j 2 11 default
test is_ddl_t1 NULL k 2 11 kl_cf
DROP TABLE is_ddl_t1;
DROP TABLE is_ddl_t2;

View file

@ -0,0 +1,42 @@
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY (a)
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY a_b (a,b) COMMENT 'a_b index'
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a_b 1 a A # NULL NULL YES LSMTREE a_b index
t1 1 a_b 2 b A # NULL NULL YES LSMTREE a_b index
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY (a),
KEY (b)
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
t1 1 b 1 b A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (100,'z');
ALTER TABLE t1 ADD KEY (a) COMMENT 'simple index on a';
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE simple index on a
ALTER TABLE t1 DROP KEY a;
DROP TABLE t1;

View file

@ -0,0 +1,28 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1 (i INT PRIMARY KEY, j INT, INDEX(j)) ENGINE = ROCKSDB;
CREATE TABLE t2 (k INT PRIMARY KEY, l INT REFERENCES t1.i) ENGINE = ROCKSDB;
INSERT INTO t1 VALUES (1,2), (2,4), (3,6), (4,8), (5,10);
INSERT INTO t2 VALUES (100,1), (200,2), (300,3), (400,4);
COMMIT;
SET GLOBAL rocksdb_force_flush_memtable_now = 1;
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_INDEX_FILE_MAP
WHERE INDEX_NUMBER =
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL
WHERE TABLE_NAME = 't1' AND INDEX_NAME = "PRIMARY");
COLUMN_FAMILY INDEX_NUMBER SST_NAME NUM_ROWS DATA_SIZE ENTRY_DELETES ENTRY_SINGLEDELETES ENTRY_MERGES ENTRY_OTHERS
# # SSTNAME 5 # # # # #
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_INDEX_FILE_MAP
WHERE INDEX_NUMBER =
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL
WHERE TABLE_NAME = 't1' AND INDEX_NAME = "j");
COLUMN_FAMILY INDEX_NUMBER SST_NAME NUM_ROWS DATA_SIZE ENTRY_DELETES ENTRY_SINGLEDELETES ENTRY_MERGES ENTRY_OTHERS
# # SSTNAME 5 # # # # #
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_INDEX_FILE_MAP
WHERE INDEX_NUMBER =
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL
WHERE TABLE_NAME = 't2' AND INDEX_NAME = "PRIMARY");
COLUMN_FAMILY INDEX_NUMBER SST_NAME NUM_ROWS DATA_SIZE ENTRY_DELETES ENTRY_SINGLEDELETES ENTRY_MERGES ENTRY_OTHERS
# # SSTNAME 4 # # # # #
DROP TABLE t1;
DROP TABLE t2;

View file

@ -0,0 +1,51 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY (a) KEY_BLOCK_SIZE=8
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY ind1(b ASC) KEY_BLOCK_SIZE=0
) ENGINE=rocksdb;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 ind1 1 b A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
PRIMARY KEY ind2(b(1) DESC) KEY_BLOCK_SIZE=32768 COMMENT 'big key_block_size value'
) ENGINE=rocksdb;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 b A # 1 NULL LSMTREE big key_block_size value
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT AUTO_INCREMENT PRIMARY KEY,
KEY a_b(a,b) KEY_BLOCK_SIZE=8192
) ENGINE=rocksdb;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a_b 1 a A # NULL NULL YES LSMTREE
t1 1 a_b 2 b A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
PRIMARY KEY (b)
) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (100,'z');
ALTER TABLE t1 ADD KEY(a) KEY_BLOCK_SIZE 8192;
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 b A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
DROP TABLE t1;

View file

@ -0,0 +1,48 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT PRIMARY KEY,
b CHAR(8)
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 a A # NULL NULL LSMTREE
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
INSERT INTO t1 (a,b) VALUES (1,'c');
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
DROP TABLE t1;
CREATE TABLE t1 (a INT PRIMARY KEY,
b CHAR(8) PRIMARY KEY
) ENGINE=rocksdb;
ERROR 42000: Multiple primary key defined
CREATE TABLE t1 (a INT,
b CHAR(8),
PRIMARY KEY (a,b)
) ENGINE=rocksdb;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 a A # NULL NULL LSMTREE
t1 0 PRIMARY 2 b A # NULL NULL LSMTREE
INSERT INTO t1 (a,b) VALUES (1,'a'),(1,'b'),(2,'a'),(2,'b');
INSERT INTO t1 (a,b) VALUES (1,'b');
ERROR 23000: Duplicate entry '1-b' for key 'PRIMARY'
DROP TABLE t1;
CREATE TABLE t1 (a INT KEY,
b CHAR(8),
KEY (b)
) ENGINE=rocksdb;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 a A # NULL NULL LSMTREE
t1 1 b 1 b A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8) PRIMARY KEY
) ENGINE=rocksdb;
SHOW INDEX IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 b A # NULL NULL LSMTREE
ALTER TABLE t1 ADD CONSTRAINT PRIMARY KEY pk (a);
ERROR 42000: Multiple primary key defined
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 b A # NULL NULL LSMTREE
DROP TABLE t1;

View file

@ -0,0 +1,42 @@
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY USING BTREE (a)
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY a_b USING BTREE (a,b) COMMENT 'a_b index'
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a_b 1 a A # NULL NULL YES LSMTREE a_b index
t1 1 a_b 2 b A # NULL NULL YES LSMTREE a_b index
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY USING BTREE (a),
KEY USING BTREE (b)
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
t1 1 b 1 b A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (100,'z');
ALTER TABLE t1 ADD KEY (a) USING BTREE COMMENT 'simple index on a';
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE simple index on a
ALTER TABLE t1 DROP KEY a;
DROP TABLE t1;

View file

@ -0,0 +1,42 @@
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY USING HASH (a)
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY a_b USING HASH (a,b) COMMENT 'a_b index'
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a_b 1 a A # NULL NULL YES LSMTREE a_b index
t1 1 a_b 2 b A # NULL NULL YES LSMTREE a_b index
DROP TABLE t1;
CREATE TABLE t1 (a INT,
b CHAR(8),
pk INT PRIMARY KEY,
KEY USING HASH (a),
KEY USING HASH (b)
) ENGINE=rocksdb;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE
t1 1 b 1 b A # NULL NULL YES LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (100,'z');
ALTER TABLE t1 ADD KEY (a) USING HASH COMMENT 'simple index on a';
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 pk A # NULL NULL LSMTREE
t1 1 a 1 a A # NULL NULL YES LSMTREE simple index on a
ALTER TABLE t1 DROP KEY a;
DROP TABLE t1;

View file

@ -0,0 +1,78 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO;
TYPE NAME VALUE
MAX_INDEX_ID MAX_INDEX_ID max_index_id
CF_FLAGS 0 default [0]
CF_FLAGS 1 __system__ [0]
select count(*) from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO;
count(*)
3
CREATE TABLE t1 (i1 INT, i2 INT, PRIMARY KEY (i1)) ENGINE = ROCKSDB;
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO;
TYPE NAME VALUE
BINLOG FILE master-bin.000001
BINLOG POS 1066
BINLOG GTID uuid:5
MAX_INDEX_ID MAX_INDEX_ID max_index_id
CF_FLAGS 0 default [0]
CF_FLAGS 1 __system__ [0]
select count(*) from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO;
count(*)
6
CREATE INDEX tindex1 on t1 (i1);
CREATE INDEX tindex2 on t1 (i2);
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
TYPE NAME VALUE
CF_FLAGS 0 default [0]
CF_FLAGS 1 __system__ [0]
CREATE TABLE t2 (
a int,
b int,
c int,
d int,
e int,
PRIMARY KEY (a) COMMENT "cf_a",
KEY (b) COMMENT "cf_b",
KEY (c) COMMENT "cf_c",
KEY (d) COMMENT "$per_index_cf",
KEY (e) COMMENT "rev:cf_d") ENGINE=ROCKSDB;
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
TYPE NAME VALUE
CF_FLAGS 0 default [0]
CF_FLAGS 1 __system__ [0]
CF_FLAGS 2 cf_a [0]
CF_FLAGS 3 cf_b [0]
CF_FLAGS 4 cf_c [0]
CF_FLAGS 5 test.t2.d [2]
CF_FLAGS 6 rev:cf_d [1]
CREATE TABLE t3 (a INT, PRIMARY KEY (a)) ENGINE=ROCKSDB;
insert into t3 (a) values (1), (2), (3);
SET @ORIG_ROCKSDB_PAUSE_BACKGROUND_WORK = @@GLOBAL.ROCKSDB_PAUSE_BACKGROUND_WORK;
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
Variable_name Value
rocksdb_pause_background_work OFF
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=1;
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
Variable_name Value
rocksdb_pause_background_work ON
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=1;
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
Variable_name Value
rocksdb_pause_background_work ON
DROP TABLE t3;
cf_id:0,index_id:268
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=0;
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
Variable_name Value
rocksdb_pause_background_work OFF
next line shouldn't cause assertion to fail
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=0;
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
Variable_name Value
rocksdb_pause_background_work OFF
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK = @ORIG_ROCKSDB_PAUSE_BACKGROUND_WORK;
DROP TABLE t1;
DROP TABLE t2;

View file

@ -0,0 +1,120 @@
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
trx_id trx_state trx_started trx_requested_lock_id trx_wait_started trx_weight trx_mysql_thread_id trx_query trx_operation_state trx_tables_in_use trx_tables_locked trx_lock_structs trx_lock_memory_bytes trx_rows_locked trx_rows_modified trx_concurrency_tickets trx_isolation_level trx_unique_checks trx_foreign_key_checks trx_last_foreign_key_error trx_adaptive_hash_latched trx_adaptive_hash_timeout trx_is_read_only trx_autocommit_non_locking
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_TRX but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_FILE_STATUS;
FILE OPERATION REQUESTS SLOW BYTES BYTES/R SVC:SECS SVC:MSECS/R SVC:MAX_MSECS WAIT:SECS WAIT:MSECS/R WAIT:MAX_MSECS
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_FILE_STATUS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
lock_id lock_trx_id lock_mode lock_type lock_table lock_index lock_space lock_page lock_rec lock_data
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCKS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
requesting_trx_id requested_lock_id blocking_trx_id blocking_lock_id
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCK_WAITS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP;
page_size compress_ops compress_ops_ok compress_time compress_ok_time compress_primary_ops compress_primary_ops_ok compress_primary_time compress_primary_ok_time compress_secondary_ops compress_secondary_ops_ok compress_secondary_time compress_secondary_ok_time uncompress_ops uncompress_time uncompress_primary_ops uncompress_primary_time uncompress_secondary_ops uncompress_secondary_time
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_RESET;
page_size compress_ops compress_ops_ok compress_time compress_ok_time compress_primary_ops compress_primary_ops_ok compress_primary_time compress_primary_ok_time compress_secondary_ops compress_secondary_ops_ok compress_secondary_time compress_secondary_ok_time uncompress_ops uncompress_time uncompress_primary_ops uncompress_primary_time uncompress_secondary_ops uncompress_secondary_time
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_RESET but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX;
database_name table_name index_name compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX_RESET;
database_name table_name index_name compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX_RESET but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM;
page_size buffer_pool_instance pages_used pages_free relocation_ops relocation_time
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM_RESET;
page_size buffer_pool_instance pages_used pages_free relocation_ops relocation_time
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM_RESET but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_METRICS;
NAME SUBSYSTEM COUNT MAX_COUNT MIN_COUNT AVG_COUNT COUNT_RESET MAX_COUNT_RESET MIN_COUNT_RESET AVG_COUNT_RESET TIME_ENABLED TIME_DISABLED TIME_ELAPSED TIME_RESET STATUS TYPE COMMENT
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_METRICS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
value
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
DOC_ID
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_FT_DELETED but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED;
DOC_ID
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_FT_BEING_DELETED but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE;
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE;
WORD FIRST_DOC_ID LAST_DOC_ID DOC_COUNT DOC_ID POSITION
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
KEY VALUE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_FT_CONFIG but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
POOL_ID POOL_SIZE FREE_BUFFERS DATABASE_PAGES OLD_DATABASE_PAGES MODIFIED_DATABASE_PAGES PENDING_DECOMPRESS PENDING_READS PENDING_FLUSH_LRU PENDING_FLUSH_LIST PAGES_MADE_YOUNG PAGES_NOT_MADE_YOUNG PAGES_MADE_YOUNG_RATE PAGES_MADE_NOT_YOUNG_RATE NUMBER_PAGES_READ NUMBER_PAGES_CREATED NUMBER_PAGES_WRITTEN PAGES_READ_RATE PAGES_CREATE_RATE PAGES_WRITTEN_RATE NUMBER_PAGES_GET HIT_RATE YOUNG_MAKE_PER_THOUSAND_GETS NOT_YOUNG_MAKE_PER_THOUSAND_GETS NUMBER_PAGES_READ_AHEAD NUMBER_READ_AHEAD_EVICTED READ_AHEAD_RATE READ_AHEAD_EVICTED_RATE LRU_IO_TOTAL LRU_IO_CURRENT UNCOMPRESS_TOTAL UNCOMPRESS_CURRENT
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE;
POOL_ID BLOCK_ID SPACE PAGE_NUMBER PAGE_TYPE FLUSH_TYPE FIX_COUNT IS_HASHED NEWEST_MODIFICATION OLDEST_MODIFICATION ACCESS_TIME TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE COMPRESSED_SIZE PAGE_STATE IO_FIX IS_OLD FREE_PAGE_CLOCK
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_PAGE but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU;
POOL_ID LRU_POSITION SPACE PAGE_NUMBER PAGE_TYPE FLUSH_TYPE FIX_COUNT IS_HASHED NEWEST_MODIFICATION OLDEST_MODIFICATION ACCESS_TIME TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE COMPRESSED_SIZE COMPRESSED IO_FIX IS_OLD FREE_PAGE_CLOCK
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLES but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS;
TABLE_ID NAME STATS_INITIALIZED NUM_ROWS CLUST_INDEX_SIZE OTHER_INDEX_SIZE MODIFIED_COUNTER AUTOINC REF_COUNT
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES;
INDEX_ID NAME TABLE_ID TYPE N_FIELDS PAGE_NO SPACE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_INDEXES but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS;
TABLE_ID NAME POS MTYPE PRTYPE LEN
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_COLUMNS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS;
INDEX_ID NAME POS
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_FIELDS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
ID FOR_NAME REF_NAME N_COLS TYPE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_FOREIGN but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
ID FOR_COL_NAME REF_COL_NAME POS
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES;
SPACE NAME FLAG FILE_FORMAT ROW_FORMAT PAGE_SIZE ZIP_PAGE_SIZE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES;
SPACE PATH
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_DATAFILES but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DOCSTORE_FIELDS;
INDEX_ID POS DOCUMENT_PATH DOCUMENT_TYPE
Warnings:
Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_DOCSTORE_FIELDS but the InnoDB storage engine is not installed

View file

@ -0,0 +1,202 @@
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t1 VALUES (100,'foobar',100),(1,'a',101),(2,'b',103),(3,'c',104),(4,'d',105),(5,'e',106);
SELECT a,b FROM t1;
a b
1 a
100 foobar
2 b
3 c
4 d
5 e
INSERT t1 VALUE (10,'foo',107),(11,'abc',108);
SELECT a,b FROM t1;
a b
1 a
10 foo
100 foobar
11 abc
2 b
3 c
4 d
5 e
INSERT INTO t1 (b,a) VALUES ('test',0);
SELECT a,b FROM t1;
a b
0 test
1 a
10 foo
100 foobar
11 abc
2 b
3 c
4 d
5 e
INSERT INTO t1 VALUES (DEFAULT,DEFAULT,NULL);
SELECT a,b FROM t1;
a b
0 test
1 a
10 foo
100 foobar
11 abc
2 b
3 c
4 d
5 e
NULL NULL
INSERT t1 (a) VALUE (10),(20);
SELECT a,b FROM t1;
a b
0 test
1 a
10 NULL
10 foo
100 foobar
11 abc
2 b
20 NULL
3 c
4 d
5 e
NULL NULL
INSERT INTO t1 SET a = 11, b = 'f';
SELECT a,b FROM t1;
a b
0 test
1 a
10 NULL
10 foo
100 foobar
11 abc
11 f
2 b
20 NULL
3 c
4 d
5 e
NULL NULL
INSERT t1 SET b = DEFAULT;
SELECT a,b FROM t1;
a b
0 test
1 a
10 NULL
10 foo
100 foobar
11 abc
11 f
2 b
20 NULL
3 c
4 d
5 e
NULL NULL
NULL NULL
CREATE TABLE t2 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t2 SELECT a,b,pk FROM t1;
INSERT INTO t1 (a) SELECT a FROM t2 WHERE b = 'foo';
SELECT a,b FROM t1;
a b
0 test
1 a
10 NULL
10 NULL
10 foo
100 foobar
11 abc
11 f
2 b
20 NULL
3 c
4 d
5 e
NULL NULL
NULL NULL
INSERT t1 (a,b) SELECT a,b FROM t1;
SELECT a,b FROM t1;
a b
0 test
0 test
1 a
1 a
10 NULL
10 NULL
10 NULL
10 NULL
10 foo
10 foo
100 foobar
100 foobar
11 abc
11 abc
11 f
11 f
2 b
2 b
20 NULL
20 NULL
3 c
3 c
4 d
4 d
5 e
5 e
NULL NULL
NULL NULL
NULL NULL
NULL NULL
DROP TABLE t1, t2;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
BEGIN;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(100,'foo');
INSERT t1 (a,b) VALUE (10,'foo'),(11,'abc');
COMMIT;
SELECT a,b FROM t1;
a b
1 a
10 foo
100 foo
11 abc
2 b
3 c
4 d
5 e
BEGIN;
INSERT INTO t1 (b,a) VALUES ('test',0);
SAVEPOINT spt1;
INSERT INTO t1 (a,b) VALUES (DEFAULT,DEFAULT);
RELEASE SAVEPOINT spt1;
INSERT INTO t1 (a,b) VALUES (DEFAULT,DEFAULT);
ROLLBACK;
SELECT a,b FROM t1;
a b
1 a
10 foo
100 foo
11 abc
2 b
3 c
4 d
5 e
BEGIN;
INSERT t1 (a) VALUE (10),(20);
SAVEPOINT spt1;
INSERT INTO t1 SET a = 11, b = 'f';
INSERT t1 SET b = DEFAULT;
ROLLBACK TO SAVEPOINT spt1;
ERROR HY000: MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows.
INSERT INTO t1 (b,a) VALUES ('test1',10);
COMMIT;
ERROR HY000: This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction.
SELECT a,b FROM t1;
a b
1 a
10 foo
100 foo
11 abc
2 b
3 c
4 d
5 e
DROP TABLE t1;

View file

@ -0,0 +1,16 @@
DROP TABLE IF EXISTS t1;
create table t1(
id bigint not null primary key,
i1 bigint, #unique
i2 bigint, #repeating
c1 varchar(20), #unique
c2 varchar(20), #repeating
index t1_2(i1)
) engine=rocksdb;
select count(*), sum(id), sum(i1), sum(i2) from t1;
count(*) sum(id) sum(i1) sum(i2)
50000 1250025000 1250025000 124980000
select count(*), sum(id), sum(i1), sum(i2) from t1;
count(*) sum(id) sum(i1) sum(i2)
50000 1250025000 1250025000 124980000
drop table t1;

View file

@ -0,0 +1,63 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a INT, b CHAR(8), pk INT AUTO_INCREMENT PRIMARY KEY, KEY(b)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
INSERT INTO t1 (a,b) VALUES (3,'a'),(0,'');
SELECT a,b FROM t1;
a b
0
1 a
1 a
100 a
12345 z
2 b
29 n
3 a
3 c
30 m
4 d
5 e
6 f
DROP TABLE t1;
#----------------------------------------
# UNIQUE KEYS are not supported currently
#-----------------------------------------
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO t1 (a,b) VALUES (3,'a'),(0,'');
ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
INSERT INTO t1 (a,b) VALUES (0,'');
SELECT a,b FROM t1;
a b
0
1 a
100 a
2 b
29 n
3 c
30 m
4 d
5 e
6 f
INSERT IGNORE INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z') ON DUPLICATE KEY UPDATE b = CONCAT(b,b);
SELECT a,b FROM t1;
a b
0
1 aa
100 a
12345 zz
2 b
29 n
3 c
30 m
4 d
5 e
6 f
DROP TABLE t1;

View file

@ -0,0 +1,23 @@
create table t1 (
id int,
value int,
primary key (id)
) engine=rocksdb;
insert into t1 values(1,1),(2,2);
set autocommit=0;
begin;
insert into t1 values (50,50);
select * from t1;
id value
1 1
2 2
50 50
update t1 set id=id+100;
select * from t1;
id value
101 1
102 2
150 50
rollback;
set autocommit=1;
drop table t1;

View file

@ -0,0 +1,17 @@
create table ten(a int primary key);
insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table one_k(a int primary key);
insert into one_k select A.a + B.a* 10 + C.a * 100 from ten A, ten B, ten C;
create table t100(pk int primary key, a int, b int, key(a));
insert into t100 select a,a,a from test.one_k;
set global rocksdb_force_flush_memtable_now=1;
select num_rows, entry_deletes, entry_singledeletes from information_schema.rocksdb_index_file_map where index_number = (select max(index_number) from information_schema.rocksdb_index_file_map) order by entry_deletes, entry_singledeletes;
num_rows entry_deletes entry_singledeletes
1000 0 0
update t100 set a=a+1;
set global rocksdb_force_flush_memtable_now=1;
select num_rows, entry_deletes, entry_singledeletes from information_schema.rocksdb_index_file_map where index_number = (select max(index_number) from information_schema.rocksdb_index_file_map) order by entry_deletes, entry_singledeletes;
num_rows entry_deletes entry_singledeletes
1000 0 0
1000 0 1000
drop table ten, t100, one_k;

View file

@ -0,0 +1,32 @@
create table t1 (
pk int not null primary key,
col1 int not null,
col2 int not null,
key(col1)
) engine=rocksdb;
create table ten(a int primary key);
insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table one_k(a int primary key);
insert into one_k select A.a + B.a* 10 + C.a * 100 from ten A, ten B, ten C;
insert into t1 select a,a,a from one_k;
# Start the transaction, get the snapshot
begin;
select * from t1 where col1<10;
pk col1 col2
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
# Connect with another connection and make a conflicting change
begin;
update t1 set col2=123456 where pk=0;
commit;
update t1 set col2=col2+1 where col1 < 10 limit 5;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
drop table t1, ten, one_k;

View file

@ -0,0 +1,28 @@
CREATE TABLE `linktable` (
`id1` bigint(20) unsigned NOT NULL DEFAULT '0',
`id1_type` int(10) unsigned NOT NULL DEFAULT '0',
`id2` bigint(20) unsigned NOT NULL DEFAULT '0',
`id2_type` int(10) unsigned NOT NULL DEFAULT '0',
`link_type` bigint(20) unsigned NOT NULL DEFAULT '0',
`visibility` tinyint(3) NOT NULL DEFAULT '0',
`data` varchar(255) NOT NULL DEFAULT '',
`time` bigint(20) unsigned NOT NULL DEFAULT '0',
`version` int(11) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (link_type, `id1`,`id2`) COMMENT 'cf_link_pk',
KEY `id1_type` (`id1`,`link_type`,`visibility`,`time`,`id2`,`version`,`data`) COMMENT 'rev:cf_link_id1_type'
) ENGINE=RocksDB DEFAULT COLLATE=latin1_bin;
set global rocksdb_force_flush_memtable_now=1;
insert into linktable (id1, link_type, id2) values (2, 1, 1);
insert into linktable (id1, link_type, id2) values (2, 1, 2);
insert into linktable (id1, link_type, id2) values (2, 1, 3);
insert into linktable (id1, link_type, id2) values (2, 1, 4);
insert into linktable (id1, link_type, id2) values (2, 1, 5);
insert into linktable (id1, link_type, id2) values (2, 1, 6);
insert into linktable (id1, link_type, id2) values (2, 1, 7);
insert into linktable (id1, link_type, id2) values (2, 1, 8);
insert into linktable (id1, link_type, id2) values (2, 1, 9);
insert into linktable (id1, link_type, id2) values (2, 1, 10);
explain select id1, id2, link_type, data from linktable where id1=2 and link_type=1 and (id2=1 or id2=2 or id2=3 or id2=4 or id2=5);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE linktable range PRIMARY,id1_type PRIMARY 24 NULL # Using where
drop table linktable;

View file

@ -0,0 +1,12 @@
drop table if exists t1;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
CREATE TABLE t1(a int);
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
INSERT INTO t1 VALUES(1);
select * from t1;
ERROR HY000: MyRocks supports only READ COMMITTED and REPEATABLE READ isolation levels. Please change from current isolation level SERIALIZABLE
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
select * from t1;
a
1
drop table t1;

View file

@ -0,0 +1,111 @@
DROP TABLE IF EXISTS t1;
connect con1,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
connect con2,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
connection con1;
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=rocksdb;
START TRANSACTION;
SELECT a FROM t1;
a
connection con2;
BEGIN;
INSERT INTO t1 (a) VALUES(1);
connection con1;
SELECT a FROM t1;
a
connection con2;
INSERT INTO t1 (a) VALUES (2);
connection con1;
SELECT a FROM t1;
a
INSERT INTO t1 (a) SELECT a+100 FROM t1;
SELECT a FROM t1;
a
connection con2;
SELECT a FROM t1;
a
1
2
COMMIT;
SELECT a FROM t1;
a
1
2
connection con1;
SELECT a FROM t1;
a
1
2
INSERT INTO t1 (a) SELECT a+200 FROM t1;
SELECT a FROM t1;
a
1
2
201
202
COMMIT;
SELECT a FROM t1;
a
1
2
201
202
connection con2;
SELECT a FROM t1;
a
1
2
201
202
connection default;
CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=rocksdb;
INSERT INTO t2 (a) VALUES (1);
COMMIT;
connection con1;
BEGIN;
SELECT a from t2;
a
1
INSERT INTO t2 (a) VALUES (1), (3);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
connection con2;
INSERT INTO t2 (a) VALUES (2);
COMMIT;
connection con1;
SELECT a from t2;
a
1
2
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;
DROP TABLE t2;
CREATE TABLE t3 (
pk int unsigned PRIMARY KEY,
count int unsigned DEFAULT '0'
) ENGINE=ROCKSDB;
connect con1,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
connect con2,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
connection con1;
BEGIN;
SELECT * FROM t3;
pk count
connection con2;
BEGIN;
INSERT INTO t3 (pk) VALUES(1) ON DUPLICATE KEY UPDATE count=count+1;
COMMIT;
connection con1;
INSERT INTO t3 (pk) VALUES(1) ON DUPLICATE KEY UPDATE count=count+1;
COMMIT;
SELECT count FROM t3;
count
1
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t3;

View file

@ -0,0 +1,116 @@
DROP TABLE IF EXISTS t1;
connect con1,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
connect con2,localhost,root,,;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
connection con1;
CREATE TABLE t1 (a <INT_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
START TRANSACTION;
SELECT a FROM t1;
a
connection con2;
BEGIN;
INSERT INTO t1 (a) VALUES(1);
# WARNING: Statement ended with errno 0, errname ''.
# If it differs from the result file, it might indicate a problem.
connection con1;
SELECT a FROM t1;
a
1
connection con2;
INSERT INTO t1 (a) VALUES (2);
# WARNING: Statement ended with errno 0, errname ''.
# If it differs from the result file, it might indicate a problem.
connection con1;
SELECT a FROM t1;
a
1
2
INSERT INTO t1 (a) SELECT a+100 FROM t1;
# WARNING: Statement ended with errno 0, errname ''.
# If it differs from the result file, it might indicate a problem.
SELECT a FROM t1;
a
1
101
102
2
connection con2;
SELECT a FROM t1;
a
1
101
102
2
COMMIT;
SELECT a FROM t1;
a
1
101
102
2
connection con1;
SELECT a FROM t1;
a
1
101
102
2
INSERT INTO t1 (a) SELECT a+200 FROM t1;
# WARNING: Statement ended with errno 0, errname ''.
# If it differs from the result file, it might indicate a problem.
SELECT a FROM t1;
a
1
101
102
2
201
202
301
302
COMMIT;
SELECT a FROM t1;
a
1
101
102
2
201
202
301
302
connection con2;
SELECT a FROM t1;
a
1
101
102
2
201
202
301
302
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;
DROP TABLE IF EXISTS t1;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connection con1;
CREATE TABLE t1 (a <INT_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection con2;
INSERT INTO t1 (a) VALUES (1);
connection con1;
# If consistent read works on this isolation level (READ UNCOMMITTED), the following SELECT should not return the value we inserted (1)
SELECT a FROM t1;
a
1
COMMIT;
connection default;
disconnect con1;
disconnect con2;
DROP TABLE t1;

Some files were not shown because too many files have changed in this diff Show more