mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge MyRocks merge tree into bb-10.2-mariarocks, unfinished.
It compiles on Linux but fails a lot of tests still
This commit is contained in:
@@ -7455,3 +7455,70 @@ ER_SLAVE_SAME_ID
|
|||||||
eng "A slave with the same server_uuid/server_id as this slave has connected to the master"
|
eng "A slave with the same server_uuid/server_id as this slave has connected to the master"
|
||||||
ER_FLASHBACK_NOT_SUPPORTED
|
ER_FLASHBACK_NOT_SUPPORTED
|
||||||
eng "Flashback does not support %s %s"
|
eng "Flashback does not support %s %s"
|
||||||
|
|
||||||
|
# MARIAROCKS-TODO: Should we add RocksDB error messages here or use some other
|
||||||
|
# solution?
|
||||||
|
ER_KEYS_OUT_OF_ORDER
|
||||||
|
eng "Keys are out order during bulk load"
|
||||||
|
|
||||||
|
ER_OVERLAPPING_KEYS
|
||||||
|
eng "Bulk load rows overlap existing rows"
|
||||||
|
|
||||||
|
ER_REQUIRE_ROW_BINLOG_FORMAT
|
||||||
|
eng "Can't execute updates on master with binlog_format != ROW."
|
||||||
|
|
||||||
|
ER_ISOLATION_MODE_NOT_SUPPORTED
|
||||||
|
eng "MyRocks supports only READ COMMITTED and REPEATABLE READ isolation levels. Please change from current isolation level %s"
|
||||||
|
|
||||||
|
ER_ON_DUPLICATE_DISABLED
|
||||||
|
eng "When unique checking is disabled in MyRocks, INSERT,UPDATE,LOAD statements with clauses that update or replace the key (i.e. INSERT ON DUPLICATE KEY UPDATE, REPLACE) are not allowed. Query: %s"
|
||||||
|
|
||||||
|
ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
|
||||||
|
eng "Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT."
|
||||||
|
|
||||||
|
ER_ROLLBACK_ONLY
|
||||||
|
eng "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."
|
||||||
|
|
||||||
|
ER_ROLLBACK_TO_SAVEPOINT
|
||||||
|
eng "MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows."
|
||||||
|
|
||||||
|
ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
|
eng "Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine."
|
||||||
|
|
||||||
|
ER_UNSUPPORTED_COLLATION
|
||||||
|
eng "Unsupported collation on string indexed column %s.%s Use binary collation (%s)."
|
||||||
|
|
||||||
|
ER_METADATA_INCONSISTENCY
|
||||||
|
eng "Table '%s' does not exist, but metadata information exists inside MyRocks. This is a sign of data inconsistency. Please check if '%s.frm' exists, and try to restore it if it does not exist."
|
||||||
|
|
||||||
|
ER_KEY_CREATE_DURING_ALTER
|
||||||
|
eng "MyRocks failed creating new key definitions during alter."
|
||||||
|
|
||||||
|
ER_SK_POPULATE_DURING_ALTER
|
||||||
|
eng "MyRocks failed populating secondary key during alter."
|
||||||
|
|
||||||
|
ER_CF_DIFFERENT
|
||||||
|
eng "Column family ('%s') flag (%d) is different from an existing flag (%d). Assign a new CF flag, or do not change existing CF flag."
|
||||||
|
|
||||||
|
ER_RDB_STATUS_GENERAL
|
||||||
|
eng "Status error %d received from RocksDB: %s"
|
||||||
|
|
||||||
|
ER_RDB_STATUS_MSG
|
||||||
|
eng "%s, Status error %d received from RocksDB: %s"
|
||||||
|
|
||||||
|
ER_NET_OK_PACKET_TOO_LARGE
|
||||||
|
eng "OK packet too large"
|
||||||
|
|
||||||
|
ER_RDB_TTL_UNSUPPORTED
|
||||||
|
eng "TTL support is currently disabled when table has secondary indexes or hidden PK."
|
||||||
|
|
||||||
|
ER_RDB_TTL_COL_FORMAT
|
||||||
|
eng "TTL column (%s) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration."
|
||||||
|
|
||||||
|
ER_RDB_TTL_DURATION_FORMAT
|
||||||
|
eng "TTL duration (%s) in MyRocks must be an unsigned non-null 64-bit integer."
|
||||||
|
|
||||||
|
ER_PER_INDEX_CF_DEPRECATED
|
||||||
|
eng "The per-index column family option has been deprecated"
|
||||||
|
|
||||||
|
|
||||||
|
@@ -16,6 +16,11 @@ IF (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/rocksdb/Makefile")
|
|||||||
SKIP_ROCKSDB_PLUGIN("Missing Makefile in rocksdb directory. Try \"git submodule update\".")
|
SKIP_ROCKSDB_PLUGIN("Missing Makefile in rocksdb directory. Try \"git submodule update\".")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
CHECK_FUNCTION_EXISTS(sched_getcpu HAVE_SCHED_GETCPU)
|
||||||
|
IF(HAVE_SCHED_GETCPU)
|
||||||
|
ADD_DEFINITIONS(-DHAVE_SCHED_GETCPU=1 -DROCKSDB_SCHED_GETCPU_PRESENT)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
# We've had our builders hang during the build process. This prevents MariaRocks
|
# We've had our builders hang during the build process. This prevents MariaRocks
|
||||||
# to be built on 32 bit intel OS kernels.
|
# to be built on 32 bit intel OS kernels.
|
||||||
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i[36]86")
|
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i[36]86")
|
||||||
@@ -106,6 +111,19 @@ IF(HAVE_FALLOCATE)
|
|||||||
ADD_DEFINITIONS(-DROCKSDB_FALLOCATE_PRESENT)
|
ADD_DEFINITIONS(-DROCKSDB_FALLOCATE_PRESENT)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
|
#if defined(_MSC_VER) && !defined(__thread)
|
||||||
|
#define __thread __declspec(thread)
|
||||||
|
#endif
|
||||||
|
int main() {
|
||||||
|
static __thread int tls;
|
||||||
|
}
|
||||||
|
" HAVE_THREAD_LOCAL)
|
||||||
|
if(HAVE_THREAD_LOCAL)
|
||||||
|
ADD_DEFINITIONS(-DROCKSDB_SUPPORT_THREAD_LOCAL)
|
||||||
|
endif()
|
||||||
|
|
||||||
INCLUDE(build_rocksdb.cmake)
|
INCLUDE(build_rocksdb.cmake)
|
||||||
|
|
||||||
ADD_CONVENIENCE_LIBRARY(rocksdb_aux_lib
|
ADD_CONVENIENCE_LIBRARY(rocksdb_aux_lib
|
||||||
@@ -120,13 +138,16 @@ ADD_CONVENIENCE_LIBRARY(rocksdb_aux_lib
|
|||||||
rdb_perf_context.h
|
rdb_perf_context.h
|
||||||
rdb_sst_info.cc
|
rdb_sst_info.cc
|
||||||
rdb_sst_info.h
|
rdb_sst_info.h
|
||||||
|
rdb_io_watchdog.cc rdb_io_watchdog.h
|
||||||
rdb_buff.h
|
rdb_buff.h
|
||||||
rdb_mariadb_port.h
|
rdb_mariadb_port.h
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_DEPENDENCIES(rocksdb_aux_lib GenError)
|
ADD_DEPENDENCIES(rocksdb_aux_lib GenError)
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(rocksdb_aux_lib rocksdblib ${ZLIB_LIBRARY})
|
# MARIAROCKS-TODO: how to properly depend on -lrt ?
|
||||||
|
TARGET_LINK_LIBRARIES(rocksdb_aux_lib rocksdblib ${ZLIB_LIBRARY} -lrt)
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(rocksdb rocksdb_aux_lib)
|
TARGET_LINK_LIBRARIES(rocksdb rocksdb_aux_lib)
|
||||||
|
|
||||||
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
@@ -161,6 +182,8 @@ ENDIF()
|
|||||||
# ADD_SUBDIRECTORY(unittest)
|
# ADD_SUBDIRECTORY(unittest)
|
||||||
#ENDIF()
|
#ENDIF()
|
||||||
|
|
||||||
|
SET(rocksdb_static_libs ${rocksdb_static_libs} "-lrt")
|
||||||
|
|
||||||
ADD_LIBRARY(rocksdb_tools STATIC
|
ADD_LIBRARY(rocksdb_tools STATIC
|
||||||
rocksdb/tools/ldb_tool.cc
|
rocksdb/tools/ldb_tool.cc
|
||||||
rocksdb/tools/ldb_cmd.cc
|
rocksdb/tools/ldb_cmd.cc
|
||||||
|
@@ -1,12 +1,20 @@
|
|||||||
== Summary ==
|
== Summary ==
|
||||||
This directory contains RocksDB-based Storage Engine (RDBSE) for MySQL = "MyRocks".
|
This directory contains RocksDB-based Storage Engine (RDBSE) for MySQL,
|
||||||
|
also known as "MyRocks".
|
||||||
|
|
||||||
== Resources ==
|
== Resources ==
|
||||||
See https://github.com/facebook/mysql-5.6/wiki/Getting-Started-with-MyRocks
|
https://github.com/facebook/mysql-5.6/wiki/Getting-Started-with-MyRocks
|
||||||
Facebook group: https://www.facebook.com/groups/mysqlonrocksdb/
|
https://www.facebook.com/groups/MyRocks/
|
||||||
|
|
||||||
== Coding Conventions ==
|
== Coding Conventions ==
|
||||||
The baseline for MyRocks coding conventions is the MySQL set, available at
|
The baseline for MyRocks coding conventions for the code in storage/rocksdb/
|
||||||
|
is based on the default clang format with a few minor changes. The file
|
||||||
|
storage/rocksdb/.clang-format describes conventions and can be integrated
|
||||||
|
with Vim or Emacs as described here:
|
||||||
|
http://releases.llvm.org/3.6.0/tools/clang/docs/ClangFormat.html#vim-integration
|
||||||
|
|
||||||
|
All code outside of storage/rocksdb/ should conform to the MySQL coding
|
||||||
|
conventions:
|
||||||
http://dev.mysql.com/doc/internals/en/coding-guidelines.html.
|
http://dev.mysql.com/doc/internals/en/coding-guidelines.html.
|
||||||
|
|
||||||
Several refinements:
|
Several refinements:
|
||||||
@@ -34,5 +42,9 @@ Several refinements:
|
|||||||
"_vect" for a std::vector etc.
|
"_vect" for a std::vector etc.
|
||||||
|
|
||||||
== Running Tests ==
|
== Running Tests ==
|
||||||
To run tests from rocksdb, rocksd_rpl or rocksdb_sys_vars packages, use the following parameters:
|
To run tests from rocksdb, rocksdb_rpl or other rocksdb_* packages, use the
|
||||||
--mysqld=--default-storage-engine=rocksdb --mysqld=--skip-innodb --mysqld=--default-tmp-storage-engine=MyISAM --mysqld=--rocksdb
|
following parameters:
|
||||||
|
--default-storage-engine=rocksdb
|
||||||
|
--skip-innodb
|
||||||
|
--default-tmp-storage-engine=MyISAM
|
||||||
|
--rocksdb
|
||||||
|
@@ -178,6 +178,7 @@ set(ROCKSDB_SOURCES
|
|||||||
db/internal_stats.cc
|
db/internal_stats.cc
|
||||||
db/log_reader.cc
|
db/log_reader.cc
|
||||||
db/log_writer.cc
|
db/log_writer.cc
|
||||||
|
db/malloc_stats.cc
|
||||||
db/managed_iterator.cc
|
db/managed_iterator.cc
|
||||||
db/memtable.cc
|
db/memtable.cc
|
||||||
db/memtable_list.cc
|
db/memtable_list.cc
|
||||||
@@ -200,13 +201,14 @@ set(ROCKSDB_SOURCES
|
|||||||
env/env.cc
|
env/env.cc
|
||||||
env/env_chroot.cc
|
env/env_chroot.cc
|
||||||
env/env_hdfs.cc
|
env/env_hdfs.cc
|
||||||
env/memenv.cc
|
env/mock_env.cc
|
||||||
|
memtable/alloc_tracker.cc
|
||||||
memtable/hash_cuckoo_rep.cc
|
memtable/hash_cuckoo_rep.cc
|
||||||
memtable/hash_linklist_rep.cc
|
memtable/hash_linklist_rep.cc
|
||||||
memtable/hash_skiplist_rep.cc
|
memtable/hash_skiplist_rep.cc
|
||||||
memtable/memtable_allocator.cc
|
|
||||||
memtable/skiplistrep.cc
|
memtable/skiplistrep.cc
|
||||||
memtable/vectorrep.cc
|
memtable/vectorrep.cc
|
||||||
|
memtable/write_buffer_manager.cc
|
||||||
monitoring/histogram.cc
|
monitoring/histogram.cc
|
||||||
monitoring/histogram_windowing.cc
|
monitoring/histogram_windowing.cc
|
||||||
monitoring/instrumented_mutex.cc
|
monitoring/instrumented_mutex.cc
|
||||||
@@ -216,6 +218,7 @@ set(ROCKSDB_SOURCES
|
|||||||
monitoring/statistics.cc
|
monitoring/statistics.cc
|
||||||
monitoring/thread_status_impl.cc
|
monitoring/thread_status_impl.cc
|
||||||
monitoring/thread_status_updater.cc
|
monitoring/thread_status_updater.cc
|
||||||
|
monitoring/thread_status_updater_debug.cc
|
||||||
monitoring/thread_status_util.cc
|
monitoring/thread_status_util.cc
|
||||||
monitoring/thread_status_util_debug.cc
|
monitoring/thread_status_util_debug.cc
|
||||||
options/cf_options.cc
|
options/cf_options.cc
|
||||||
@@ -245,6 +248,7 @@ set(ROCKSDB_SOURCES
|
|||||||
table/iterator.cc
|
table/iterator.cc
|
||||||
table/merging_iterator.cc
|
table/merging_iterator.cc
|
||||||
table/meta_blocks.cc
|
table/meta_blocks.cc
|
||||||
|
table/mock_table.cc
|
||||||
table/partitioned_filter_block.cc
|
table/partitioned_filter_block.cc
|
||||||
table/persistent_cache_helper.cc
|
table/persistent_cache_helper.cc
|
||||||
table/plain_table_builder.cc
|
table/plain_table_builder.cc
|
||||||
@@ -293,12 +297,20 @@ set(ROCKSDB_SOURCES
|
|||||||
util/xxhash.cc
|
util/xxhash.cc
|
||||||
utilities/backupable/backupable_db.cc
|
utilities/backupable/backupable_db.cc
|
||||||
utilities/blob_db/blob_db.cc
|
utilities/blob_db/blob_db.cc
|
||||||
|
utilities/blob_db/blob_db_impl.cc
|
||||||
|
utilities/blob_db/blob_db_options_impl.cc
|
||||||
|
utilities/blob_db/blob_dump_tool.cc
|
||||||
|
utilities/blob_db/blob_file.cc
|
||||||
|
utilities/blob_db/blob_log_format.cc
|
||||||
|
utilities/blob_db/blob_log_reader.cc
|
||||||
|
utilities/blob_db/blob_log_writer.cc
|
||||||
utilities/checkpoint/checkpoint_impl.cc
|
utilities/checkpoint/checkpoint_impl.cc
|
||||||
utilities/col_buf_decoder.cc
|
utilities/col_buf_decoder.cc
|
||||||
utilities/col_buf_encoder.cc
|
utilities/col_buf_encoder.cc
|
||||||
utilities/column_aware_encoding_util.cc
|
utilities/column_aware_encoding_util.cc
|
||||||
utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc
|
utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc
|
||||||
utilities/date_tiered/date_tiered_db_impl.cc
|
utilities/date_tiered/date_tiered_db_impl.cc
|
||||||
|
utilities/debug.cc
|
||||||
utilities/document/document_db.cc
|
utilities/document/document_db.cc
|
||||||
utilities/document/json_document.cc
|
utilities/document/json_document.cc
|
||||||
utilities/document/json_document_builder.cc
|
utilities/document/json_document_builder.cc
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -41,6 +41,7 @@
|
|||||||
/* RocksDB header files */
|
/* RocksDB header files */
|
||||||
#include "rocksdb/cache.h"
|
#include "rocksdb/cache.h"
|
||||||
#include "rocksdb/perf_context.h"
|
#include "rocksdb/perf_context.h"
|
||||||
|
#include "rocksdb/sst_file_manager.h"
|
||||||
#include "rocksdb/statistics.h"
|
#include "rocksdb/statistics.h"
|
||||||
#include "rocksdb/utilities/options_util.h"
|
#include "rocksdb/utilities/options_util.h"
|
||||||
#include "rocksdb/utilities/transaction_db.h"
|
#include "rocksdb/utilities/transaction_db.h"
|
||||||
@@ -49,6 +50,7 @@
|
|||||||
/* MyRocks header files */
|
/* MyRocks header files */
|
||||||
#include "./rdb_comparator.h"
|
#include "./rdb_comparator.h"
|
||||||
#include "./rdb_index_merge.h"
|
#include "./rdb_index_merge.h"
|
||||||
|
#include "./rdb_io_watchdog.h"
|
||||||
#include "./rdb_perf_context.h"
|
#include "./rdb_perf_context.h"
|
||||||
#include "./rdb_sst_info.h"
|
#include "./rdb_sst_info.h"
|
||||||
#include "./rdb_utils.h"
|
#include "./rdb_utils.h"
|
||||||
@@ -96,12 +98,12 @@ std::vector<Rdb_trx_info> rdb_get_all_trx_info();
|
|||||||
- the name used to set the default column family parameter for per-cf
|
- the name used to set the default column family parameter for per-cf
|
||||||
arguments.
|
arguments.
|
||||||
*/
|
*/
|
||||||
const char *const DEFAULT_CF_NAME = "default";
|
extern const std::string DEFAULT_CF_NAME;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This is the name of the Column Family used for storing the data dictionary.
|
This is the name of the Column Family used for storing the data dictionary.
|
||||||
*/
|
*/
|
||||||
const char *const DEFAULT_SYSTEM_CF_NAME = "__system__";
|
extern const std::string DEFAULT_SYSTEM_CF_NAME;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This is the name of the hidden primary key for tables with no pk.
|
This is the name of the hidden primary key for tables with no pk.
|
||||||
@@ -110,9 +112,9 @@ const char *const HIDDEN_PK_NAME = "HIDDEN_PK_ID";
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
Column family name which means "put this index into its own column family".
|
Column family name which means "put this index into its own column family".
|
||||||
See Rdb_cf_manager::get_per_index_cf_name().
|
DEPRECATED!!!
|
||||||
*/
|
*/
|
||||||
const char *const PER_INDEX_CF_NAME = "$per_index_cf";
|
extern const std::string PER_INDEX_CF_NAME;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Name for the background thread.
|
Name for the background thread.
|
||||||
@@ -138,7 +140,7 @@ const char RDB_PER_PARTITION_QUALIFIER_NAME_SEP = '_';
|
|||||||
- p0_cfname=foo
|
- p0_cfname=foo
|
||||||
- p3_tts_col=bar
|
- p3_tts_col=bar
|
||||||
*/
|
*/
|
||||||
const char RDB_PER_PARTITION_QUALIFIER_VALUE_SEP = '=';
|
const char RDB_QUALIFIER_VALUE_SEP = '=';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Separator between multiple qualifier assignments. Sample usage:
|
Separator between multiple qualifier assignments. Sample usage:
|
||||||
@@ -152,6 +154,16 @@ const char RDB_QUALIFIER_SEP = ';';
|
|||||||
*/
|
*/
|
||||||
const char *const RDB_CF_NAME_QUALIFIER = "cfname";
|
const char *const RDB_CF_NAME_QUALIFIER = "cfname";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Qualifier name for a custom per partition ttl duration.
|
||||||
|
*/
|
||||||
|
const char *const RDB_TTL_DURATION_QUALIFIER = "ttl_duration";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Qualifier name for a custom per partition ttl duration.
|
||||||
|
*/
|
||||||
|
const char *const RDB_TTL_COL_QUALIFIER = "ttl_col";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Default, minimal valid, and maximum valid sampling rate values when collecting
|
Default, minimal valid, and maximum valid sampling rate values when collecting
|
||||||
statistics about table.
|
statistics about table.
|
||||||
@@ -180,12 +192,16 @@ const char *const RDB_CF_NAME_QUALIFIER = "cfname";
|
|||||||
CPU-s and derive the values from there. This however has its own set of
|
CPU-s and derive the values from there. This however has its own set of
|
||||||
problems and we'll choose simplicity for now.
|
problems and we'll choose simplicity for now.
|
||||||
*/
|
*/
|
||||||
#define MAX_BACKGROUND_COMPACTIONS 64
|
#define MAX_BACKGROUND_JOBS 64
|
||||||
#define MAX_BACKGROUND_FLUSHES 64
|
|
||||||
|
|
||||||
#define DEFAULT_SUBCOMPACTIONS 1
|
#define DEFAULT_SUBCOMPACTIONS 1
|
||||||
#define MAX_SUBCOMPACTIONS 64
|
#define MAX_SUBCOMPACTIONS 64
|
||||||
|
|
||||||
|
/*
|
||||||
|
Default value for rocksdb_sst_mgr_rate_bytes_per_sec = 0 (disabled).
|
||||||
|
*/
|
||||||
|
#define DEFAULT_SST_MGR_RATE_BYTES_PER_SEC 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Defines the field sizes for serializing XID object to a string representation.
|
Defines the field sizes for serializing XID object to a string representation.
|
||||||
string byte format: [field_size: field_value, ...]
|
string byte format: [field_size: field_value, ...]
|
||||||
@@ -228,19 +244,50 @@ enum collations_used {
|
|||||||
#define ROCKSDB_SIZEOF_HIDDEN_PK_COLUMN sizeof(longlong)
|
#define ROCKSDB_SIZEOF_HIDDEN_PK_COLUMN sizeof(longlong)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
MyRocks specific error codes. NB! Please make sure that you will update
|
Bytes used to store TTL, in the beginning of all records for tables with TTL
|
||||||
HA_ERR_ROCKSDB_LAST when adding new ones.
|
enabled.
|
||||||
*/
|
*/
|
||||||
#define HA_ERR_ROCKSDB_UNIQUE_NOT_SUPPORTED (HA_ERR_LAST + 1)
|
#define ROCKSDB_SIZEOF_TTL_RECORD sizeof(longlong)
|
||||||
#define HA_ERR_ROCKSDB_PK_REQUIRED (HA_ERR_LAST + 2)
|
|
||||||
#define HA_ERR_ROCKSDB_TOO_MANY_LOCKS (HA_ERR_LAST + 3)
|
|
||||||
#define HA_ERR_ROCKSDB_TABLE_DATA_DIRECTORY_NOT_SUPPORTED (HA_ERR_LAST + 4)
|
|
||||||
#define HA_ERR_ROCKSDB_TABLE_INDEX_DIRECTORY_NOT_SUPPORTED (HA_ERR_LAST + 5)
|
|
||||||
#define HA_ERR_ROCKSDB_LAST HA_ERR_ROCKSDB_TABLE_INDEX_DIRECTORY_NOT_SUPPORTED
|
|
||||||
|
|
||||||
inline bool looks_like_per_index_cf_typo(const char *const name) {
|
/*
|
||||||
return (name && name[0] == '$' && strcmp(name, PER_INDEX_CF_NAME));
|
MyRocks specific error codes. NB! Please make sure that you will update
|
||||||
}
|
HA_ERR_ROCKSDB_LAST when adding new ones. Also update the strings in
|
||||||
|
rdb_error_messages to include any new error messages.
|
||||||
|
*/
|
||||||
|
#define HA_ERR_ROCKSDB_FIRST (HA_ERR_LAST + 1)
|
||||||
|
#define HA_ERR_ROCKSDB_PK_REQUIRED (HA_ERR_ROCKSDB_FIRST + 0)
|
||||||
|
#define HA_ERR_ROCKSDB_TABLE_DATA_DIRECTORY_NOT_SUPPORTED \
|
||||||
|
(HA_ERR_ROCKSDB_FIRST + 1)
|
||||||
|
#define HA_ERR_ROCKSDB_TABLE_INDEX_DIRECTORY_NOT_SUPPORTED \
|
||||||
|
(HA_ERR_ROCKSDB_FIRST + 2)
|
||||||
|
#define HA_ERR_ROCKSDB_COMMIT_FAILED (HA_ERR_ROCKSDB_FIRST + 3)
|
||||||
|
#define HA_ERR_ROCKSDB_BULK_LOAD (HA_ERR_ROCKSDB_FIRST + 4)
|
||||||
|
#define HA_ERR_ROCKSDB_CORRUPT_DATA (HA_ERR_ROCKSDB_FIRST + 5)
|
||||||
|
#define HA_ERR_ROCKSDB_CHECKSUM_MISMATCH (HA_ERR_ROCKSDB_FIRST + 6)
|
||||||
|
#define HA_ERR_ROCKSDB_INVALID_TABLE (HA_ERR_ROCKSDB_FIRST + 7)
|
||||||
|
#define HA_ERR_ROCKSDB_PROPERTIES (HA_ERR_ROCKSDB_FIRST + 8)
|
||||||
|
#define HA_ERR_ROCKSDB_MERGE_FILE_ERR (HA_ERR_ROCKSDB_FIRST + 9)
|
||||||
|
/*
|
||||||
|
Each error code below maps to a RocksDB status code found in:
|
||||||
|
rocksdb/include/rocksdb/status.h
|
||||||
|
*/
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_NOT_FOUND (HA_ERR_LAST + 10)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_CORRUPTION (HA_ERR_LAST + 11)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_NOT_SUPPORTED (HA_ERR_LAST + 12)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_INVALID_ARGUMENT (HA_ERR_LAST + 13)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_IO_ERROR (HA_ERR_LAST + 14)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_NO_SPACE (HA_ERR_LAST + 15)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_MERGE_IN_PROGRESS (HA_ERR_LAST + 16)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_INCOMPLETE (HA_ERR_LAST + 17)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_SHUTDOWN_IN_PROGRESS (HA_ERR_LAST + 18)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_TIMED_OUT (HA_ERR_LAST + 19)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_ABORTED (HA_ERR_LAST + 20)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_LOCK_LIMIT (HA_ERR_LAST + 21)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_BUSY (HA_ERR_LAST + 22)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_DEADLOCK (HA_ERR_LAST + 23)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_EXPIRED (HA_ERR_LAST + 24)
|
||||||
|
#define HA_ERR_ROCKSDB_STATUS_TRY_AGAIN (HA_ERR_LAST + 25)
|
||||||
|
#define HA_ERR_ROCKSDB_LAST HA_ERR_ROCKSDB_STATUS_TRY_AGAIN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief
|
@brief
|
||||||
@@ -253,6 +300,8 @@ struct Rdb_table_handler {
|
|||||||
char *m_table_name;
|
char *m_table_name;
|
||||||
uint m_table_name_length;
|
uint m_table_name_length;
|
||||||
int m_ref_count;
|
int m_ref_count;
|
||||||
|
atomic_stat<int> m_lock_wait_timeout_counter;
|
||||||
|
atomic_stat<int> m_deadlock_counter;
|
||||||
|
|
||||||
my_core::THR_LOCK m_thr_lock; ///< MySQL latch needed by m_db_lock
|
my_core::THR_LOCK m_thr_lock; ///< MySQL latch needed by m_db_lock
|
||||||
|
|
||||||
@@ -297,15 +346,19 @@ typedef struct _gl_index_id_s {
|
|||||||
}
|
}
|
||||||
} GL_INDEX_ID;
|
} GL_INDEX_ID;
|
||||||
|
|
||||||
enum operation_type {
|
enum operation_type : int {
|
||||||
ROWS_DELETED = 0,
|
ROWS_DELETED = 0,
|
||||||
ROWS_INSERTED,
|
ROWS_INSERTED,
|
||||||
ROWS_READ,
|
ROWS_READ,
|
||||||
ROWS_UPDATED,
|
ROWS_UPDATED,
|
||||||
ROWS_DELETED_BLIND,
|
ROWS_DELETED_BLIND,
|
||||||
|
ROWS_EXPIRED,
|
||||||
|
ROWS_HIDDEN_NO_SNAPSHOT,
|
||||||
ROWS_MAX
|
ROWS_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum query_type : int { QUERIES_POINT = 0, QUERIES_RANGE, QUERIES_MAX };
|
||||||
|
|
||||||
#if defined(HAVE_SCHED_GETCPU)
|
#if defined(HAVE_SCHED_GETCPU)
|
||||||
#define RDB_INDEXER get_sched_indexer_t
|
#define RDB_INDEXER get_sched_indexer_t
|
||||||
#else
|
#else
|
||||||
@@ -319,6 +372,8 @@ struct st_global_stats {
|
|||||||
// system_rows_ stats are only for system
|
// system_rows_ stats are only for system
|
||||||
// tables. They are not counted in rows_* stats.
|
// tables. They are not counted in rows_* stats.
|
||||||
ib_counter_t<ulonglong, 64, RDB_INDEXER> system_rows[ROWS_MAX];
|
ib_counter_t<ulonglong, 64, RDB_INDEXER> system_rows[ROWS_MAX];
|
||||||
|
|
||||||
|
ib_counter_t<ulonglong, 64, RDB_INDEXER> queries[QUERIES_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Struct used for exporting status to MySQL */
|
/* Struct used for exporting status to MySQL */
|
||||||
@@ -328,11 +383,22 @@ struct st_export_stats {
|
|||||||
ulonglong rows_read;
|
ulonglong rows_read;
|
||||||
ulonglong rows_updated;
|
ulonglong rows_updated;
|
||||||
ulonglong rows_deleted_blind;
|
ulonglong rows_deleted_blind;
|
||||||
|
ulonglong rows_expired;
|
||||||
|
ulonglong rows_hidden_no_snapshot;
|
||||||
|
|
||||||
ulonglong system_rows_deleted;
|
ulonglong system_rows_deleted;
|
||||||
ulonglong system_rows_inserted;
|
ulonglong system_rows_inserted;
|
||||||
ulonglong system_rows_read;
|
ulonglong system_rows_read;
|
||||||
ulonglong system_rows_updated;
|
ulonglong system_rows_updated;
|
||||||
|
|
||||||
|
ulonglong queries_point;
|
||||||
|
ulonglong queries_range;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Struct used for exporting RocksDB memory status */
|
||||||
|
struct st_memory_stats {
|
||||||
|
ulonglong memtable_total;
|
||||||
|
ulonglong memtable_unflushed;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace myrocks
|
} // namespace myrocks
|
||||||
@@ -439,6 +505,11 @@ class ha_rocksdb : public my_core::handler {
|
|||||||
*/
|
*/
|
||||||
uchar *m_pack_buffer;
|
uchar *m_pack_buffer;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Pointer to the original TTL timestamp value (8 bytes) during UPDATE.
|
||||||
|
*/
|
||||||
|
char m_ttl_bytes[ROCKSDB_SIZEOF_TTL_RECORD];
|
||||||
|
|
||||||
/* rowkey of the last record we've read, in StorageFormat. */
|
/* rowkey of the last record we've read, in StorageFormat. */
|
||||||
String m_last_rowkey;
|
String m_last_rowkey;
|
||||||
|
|
||||||
@@ -504,14 +575,14 @@ class ha_rocksdb : public my_core::handler {
|
|||||||
void setup_iterator_for_rnd_scan();
|
void setup_iterator_for_rnd_scan();
|
||||||
void setup_scan_iterator(const Rdb_key_def &kd, rocksdb::Slice *const slice)
|
void setup_scan_iterator(const Rdb_key_def &kd, rocksdb::Slice *const slice)
|
||||||
MY_ATTRIBUTE((__nonnull__)) {
|
MY_ATTRIBUTE((__nonnull__)) {
|
||||||
setup_scan_iterator(kd, slice, false, false, 0);
|
setup_scan_iterator(kd, slice, false, 0);
|
||||||
}
|
}
|
||||||
bool is_ascending(const Rdb_key_def &keydef,
|
bool is_ascending(const Rdb_key_def &keydef,
|
||||||
enum ha_rkey_function find_flag) const
|
enum ha_rkey_function find_flag) const
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
void setup_scan_iterator(const Rdb_key_def &kd, rocksdb::Slice *slice,
|
void setup_scan_iterator(const Rdb_key_def &kd, rocksdb::Slice *slice,
|
||||||
const bool use_all_keys, const bool is_ascending,
|
const bool use_all_keys, const uint eq_cond_len)
|
||||||
const uint eq_cond_len) MY_ATTRIBUTE((__nonnull__));
|
MY_ATTRIBUTE((__nonnull__));
|
||||||
void release_scan_iterator(void);
|
void release_scan_iterator(void);
|
||||||
|
|
||||||
rocksdb::Status
|
rocksdb::Status
|
||||||
@@ -520,13 +591,15 @@ class ha_rocksdb : public my_core::handler {
|
|||||||
const rocksdb::Slice &key, std::string *const value) const;
|
const rocksdb::Slice &key, std::string *const value) const;
|
||||||
|
|
||||||
int get_row_by_rowid(uchar *const buf, const char *const rowid,
|
int get_row_by_rowid(uchar *const buf, const char *const rowid,
|
||||||
const uint rowid_size, const bool skip_lookup = false)
|
const uint rowid_size, const bool skip_lookup = false,
|
||||||
|
const bool skip_ttl_check = true)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
int get_row_by_rowid(uchar *const buf, const uchar *const rowid,
|
int get_row_by_rowid(uchar *const buf, const uchar *const rowid,
|
||||||
const uint rowid_size, const bool skip_lookup = false)
|
const uint rowid_size, const bool skip_lookup = false,
|
||||||
|
const bool skip_ttl_check = true)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)) {
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__)) {
|
||||||
return get_row_by_rowid(buf, reinterpret_cast<const char *>(rowid),
|
return get_row_by_rowid(buf, reinterpret_cast<const char *>(rowid),
|
||||||
rowid_size, skip_lookup);
|
rowid_size, skip_lookup, skip_ttl_check);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_auto_incr_val();
|
void update_auto_incr_val();
|
||||||
@@ -759,14 +832,6 @@ public:
|
|||||||
uchar *const buf)
|
uchar *const buf)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
|
|
||||||
void convert_record_to_storage_format(const rocksdb::Slice &pk_packed_slice,
|
|
||||||
Rdb_string_writer *const pk_unpack_info,
|
|
||||||
rocksdb::Slice *const packed_rec)
|
|
||||||
MY_ATTRIBUTE((__nonnull__));
|
|
||||||
|
|
||||||
static const std::string gen_cf_name_qualifier_for_partition(
|
|
||||||
const std::string &s);
|
|
||||||
|
|
||||||
static const std::vector<std::string> parse_into_tokens(const std::string &s,
|
static const std::vector<std::string> parse_into_tokens(const std::string &s,
|
||||||
const char delim);
|
const char delim);
|
||||||
|
|
||||||
@@ -785,6 +850,9 @@ public:
|
|||||||
const Rdb_tbl_def *const tbl_def_arg)
|
const Rdb_tbl_def *const tbl_def_arg)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
|
|
||||||
|
static const std::string get_table_comment(const TABLE *const table_arg)
|
||||||
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
|
|
||||||
static bool is_hidden_pk(const uint index, const TABLE *const table_arg,
|
static bool is_hidden_pk(const uint index, const TABLE *const table_arg,
|
||||||
const Rdb_tbl_def *const tbl_def_arg)
|
const Rdb_tbl_def *const tbl_def_arg)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
@@ -916,7 +984,6 @@ private:
|
|||||||
struct key_def_cf_info {
|
struct key_def_cf_info {
|
||||||
rocksdb::ColumnFamilyHandle *cf_handle;
|
rocksdb::ColumnFamilyHandle *cf_handle;
|
||||||
bool is_reverse_cf;
|
bool is_reverse_cf;
|
||||||
bool is_auto_cf;
|
|
||||||
bool is_per_partition_cf;
|
bool is_per_partition_cf;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -926,12 +993,23 @@ private:
|
|||||||
const uchar *old_data;
|
const uchar *old_data;
|
||||||
rocksdb::Slice new_pk_slice;
|
rocksdb::Slice new_pk_slice;
|
||||||
rocksdb::Slice old_pk_slice;
|
rocksdb::Slice old_pk_slice;
|
||||||
|
rocksdb::Slice old_pk_rec;
|
||||||
|
|
||||||
// "unpack_info" data for the new PK value
|
// "unpack_info" data for the new PK value
|
||||||
Rdb_string_writer *new_pk_unpack_info;
|
Rdb_string_writer *new_pk_unpack_info;
|
||||||
|
|
||||||
longlong hidden_pk_id;
|
longlong hidden_pk_id;
|
||||||
bool skip_unique_check;
|
bool skip_unique_check;
|
||||||
|
|
||||||
|
// In certain cases, TTL is enabled on a table, as well as an explicit TTL
|
||||||
|
// column. The TTL column can be part of either the key or the value part
|
||||||
|
// of the record. If it is part of the key, we store the offset here.
|
||||||
|
//
|
||||||
|
// Later on, we use this offset to store the TTL in the value part of the
|
||||||
|
// record, which we can then access in the compaction filter.
|
||||||
|
//
|
||||||
|
// Set to UINT_MAX by default to indicate that the TTL is not in key.
|
||||||
|
uint ttl_pk_offset = UINT_MAX;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -987,6 +1065,17 @@ private:
|
|||||||
const KEY *const new_key) const;
|
const KEY *const new_key) const;
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
|
|
||||||
|
int compare_keys(const KEY *const old_key, const KEY *const new_key) const
|
||||||
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
|
|
||||||
|
int convert_record_to_storage_format(const struct update_row_info &row_info,
|
||||||
|
rocksdb::Slice *const packed_rec)
|
||||||
|
MY_ATTRIBUTE((__nonnull__));
|
||||||
|
|
||||||
|
bool should_hide_ttl_rec(const rocksdb::Slice &ttl_rec_val,
|
||||||
|
const int64_t curr_ts)
|
||||||
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
|
|
||||||
int index_first_intern(uchar *buf)
|
int index_first_intern(uchar *buf)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
int index_last_intern(uchar *buf)
|
int index_last_intern(uchar *buf)
|
||||||
@@ -1006,7 +1095,7 @@ private:
|
|||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
int check_and_lock_sk(const uint &key_id,
|
int check_and_lock_sk(const uint &key_id,
|
||||||
const struct update_row_info &row_info,
|
const struct update_row_info &row_info,
|
||||||
bool *const found) const
|
bool *const found)
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
int check_uniqueness_and_lock(const struct update_row_info &row_info,
|
int check_uniqueness_and_lock(const struct update_row_info &row_info,
|
||||||
bool *const pk_changed)
|
bool *const pk_changed)
|
||||||
@@ -1031,18 +1120,22 @@ private:
|
|||||||
|
|
||||||
int read_key_exact(const Rdb_key_def &kd, rocksdb::Iterator *const iter,
|
int read_key_exact(const Rdb_key_def &kd, rocksdb::Iterator *const iter,
|
||||||
const bool &using_full_key,
|
const bool &using_full_key,
|
||||||
const rocksdb::Slice &key_slice) const
|
const rocksdb::Slice &key_slice,
|
||||||
|
const int64_t ttl_filter_ts)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
int read_before_key(const Rdb_key_def &kd, const bool &using_full_key,
|
int read_before_key(const Rdb_key_def &kd, const bool &using_full_key,
|
||||||
const rocksdb::Slice &key_slice)
|
const rocksdb::Slice &key_slice,
|
||||||
|
const int64_t ttl_filter_ts)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
int read_after_key(const Rdb_key_def &kd, const rocksdb::Slice &key_slice)
|
int read_after_key(const Rdb_key_def &kd, const rocksdb::Slice &key_slice,
|
||||||
|
const int64_t ttl_filter_ts)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
int position_to_correct_key(
|
int position_to_correct_key(
|
||||||
const Rdb_key_def &kd, const enum ha_rkey_function &find_flag,
|
const Rdb_key_def &kd, const enum ha_rkey_function &find_flag,
|
||||||
const bool &full_key_match, const uchar *const key,
|
const bool &full_key_match, const uchar *const key,
|
||||||
const key_part_map &keypart_map, const rocksdb::Slice &key_slice,
|
const key_part_map &keypart_map, const rocksdb::Slice &key_slice,
|
||||||
bool *const move_forward) MY_ATTRIBUTE((__warn_unused_result__));
|
bool *const move_forward, const int64_t ttl_filter_ts)
|
||||||
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
|
|
||||||
int read_row_from_primary_key(uchar *const buf)
|
int read_row_from_primary_key(uchar *const buf)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
@@ -1122,7 +1215,7 @@ public:
|
|||||||
|
|
||||||
int check(THD *const thd, HA_CHECK_OPT *const check_opt) override
|
int check(THD *const thd, HA_CHECK_OPT *const check_opt) override
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
void remove_rows(Rdb_tbl_def *const tbl);
|
int remove_rows(Rdb_tbl_def *const tbl);
|
||||||
ha_rows records_in_range(uint inx, key_range *const min_key,
|
ha_rows records_in_range(uint inx, key_range *const min_key,
|
||||||
key_range *const max_key) override
|
key_range *const max_key) override
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
@@ -1152,6 +1245,10 @@ public:
|
|||||||
bool get_error_message(const int error, String *const buf) override
|
bool get_error_message(const int error, String *const buf) override
|
||||||
MY_ATTRIBUTE((__nonnull__));
|
MY_ATTRIBUTE((__nonnull__));
|
||||||
|
|
||||||
|
static int rdb_error_to_mysql(const rocksdb::Status &s,
|
||||||
|
const char *msg = nullptr)
|
||||||
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
|
|
||||||
void get_auto_increment(ulonglong offset, ulonglong increment,
|
void get_auto_increment(ulonglong offset, ulonglong increment,
|
||||||
ulonglong nb_desired_values,
|
ulonglong nb_desired_values,
|
||||||
ulonglong *const first_value,
|
ulonglong *const first_value,
|
||||||
@@ -1258,5 +1355,4 @@ private:
|
|||||||
Rdb_inplace_alter_ctx(const Rdb_inplace_alter_ctx &);
|
Rdb_inplace_alter_ctx(const Rdb_inplace_alter_ctx &);
|
||||||
Rdb_inplace_alter_ctx &operator=(const Rdb_inplace_alter_ctx &);
|
Rdb_inplace_alter_ctx &operator=(const Rdb_inplace_alter_ctx &);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace myrocks
|
} // namespace myrocks
|
||||||
|
@@ -70,7 +70,18 @@ rocksdb::TransactionDB *rdb_get_rocksdb_db();
|
|||||||
class Rdb_cf_manager;
|
class Rdb_cf_manager;
|
||||||
Rdb_cf_manager &rdb_get_cf_manager();
|
Rdb_cf_manager &rdb_get_cf_manager();
|
||||||
|
|
||||||
rocksdb::BlockBasedTableOptions &rdb_get_table_options();
|
const rocksdb::BlockBasedTableOptions &rdb_get_table_options();
|
||||||
|
bool rdb_is_ttl_enabled();
|
||||||
|
bool rdb_is_ttl_read_filtering_enabled();
|
||||||
|
#ifndef NDEBUG
|
||||||
|
int rdb_dbug_set_ttl_rec_ts();
|
||||||
|
int rdb_dbug_set_ttl_snapshot_ts();
|
||||||
|
int rdb_dbug_set_ttl_read_filter_ts();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum operation_type : int;
|
||||||
|
void rdb_update_global_stats(const operation_type &type, uint count,
|
||||||
|
bool is_system_table = false);
|
||||||
|
|
||||||
class Rdb_dict_manager;
|
class Rdb_dict_manager;
|
||||||
Rdb_dict_manager *rdb_get_dict_manager(void)
|
Rdb_dict_manager *rdb_get_dict_manager(void)
|
||||||
@@ -83,5 +94,4 @@ Rdb_ddl_manager *rdb_get_ddl_manager(void)
|
|||||||
class Rdb_binlog_manager;
|
class Rdb_binlog_manager;
|
||||||
Rdb_binlog_manager *rdb_get_binlog_manager(void)
|
Rdb_binlog_manager *rdb_get_binlog_manager(void)
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
|
|
||||||
} // namespace myrocks
|
} // namespace myrocks
|
||||||
|
@@ -408,3 +408,46 @@ select 1300 < 1300 * 1.5 as "same";
|
|||||||
same
|
same
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT,
|
||||||
|
c INT,
|
||||||
|
KEY kbc(b,c)) ENGINE = ROCKSDB;
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (3,3,3);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) NOT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
`c` int(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`),
|
||||||
|
KEY `kbc` (`b`,`c`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc, ADD INDEX kbc(b,c), ALGORITHM=INPLACE;
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b varchar(10),
|
||||||
|
index kb(b(5))
|
||||||
|
) ENGINE = ROCKSDB charset utf8 collate utf8_bin;
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'1111122222');
|
||||||
|
INSERT INTO t1 (a,b) VALUES (2,'2222233333');
|
||||||
|
INSERT INTO t1 (a,b) VALUES (3,'3333344444');
|
||||||
|
ALTER TABLE t1 DROP INDEX kb, ADD INDEX kb(b(8)), ALGORITHM=INPLACE;
|
||||||
|
SELECT * FROM t1 FORCE INDEX(kb);
|
||||||
|
a b
|
||||||
|
1 1111122222
|
||||||
|
2 2222233333
|
||||||
|
3 3333344444
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) NOT NULL,
|
||||||
|
`b` varchar(10) COLLATE utf8_bin DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`),
|
||||||
|
KEY `kb` (`b`(8))
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -79,11 +79,25 @@ INSERT INTO t1 (a, b) VALUES (1, 5);
|
|||||||
INSERT INTO t1 (a, b) VALUES (2, 6);
|
INSERT INTO t1 (a, b) VALUES (2, 6);
|
||||||
INSERT INTO t1 (a, b) VALUES (3, 7);
|
INSERT INTO t1 (a, b) VALUES (3, 7);
|
||||||
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
||||||
ERROR HY000: Unique index support is disabled when the table has no primary key.
|
INSERT INTO t1 (a, b) VALUES (4, 8);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (5, 5);
|
||||||
|
ERROR 23000: Duplicate entry '5' for key 'kb'
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) DEFAULT NULL,
|
`a` int(11) DEFAULT NULL,
|
||||||
`b` int(11) DEFAULT NULL
|
`b` int(11) DEFAULT NULL,
|
||||||
|
UNIQUE KEY `kb` (`b`)
|
||||||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT,
|
||||||
|
c INT,
|
||||||
|
KEY kbc(b,c)) ENGINE = ROCKSDB;
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (3,2,2);
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc, ADD UNIQUE INDEX kbc(b,c), ALGORITHM=INPLACE;
|
||||||
|
ERROR 23000: Duplicate entry '2-2' for key 'kbc'
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -229,7 +229,20 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
|
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.
|
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 'a'
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 a
|
||||||
|
2 b
|
||||||
|
SELECT * FROM t1 WHERE a = 2;
|
||||||
|
a b
|
||||||
|
2 b
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE a = 2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 const a a 5 const 1 NULL
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
|
@@ -815,6 +815,404 @@ id4 int not null,
|
|||||||
id5 int not null,
|
id5 int not null,
|
||||||
value bigint,
|
value bigint,
|
||||||
value2 varchar(100),
|
value2 varchar(100),
|
||||||
|
primary key (id1, id2, id3, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id1 (id2, id1) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id3_id1_id4 (id2, id3, id1, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id3_id2 (id3, id2) COMMENT 'rev:cf_short_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
create table t2 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id4_id5 (id2, id4, id5) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id3_id4 (id3, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id3_id5 (id3, id5) COMMENT 'rev:cf_short_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(PRIMARY) where id1 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index(id3_id4) where id3 >= '1';
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=2 and id1=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=24 and id1=12;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=88 and id1=44;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=100 and id1=50;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=428 and id1=214;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=1 and id4=1 and id5=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=23 and id4=115 and id5=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=500 and id4=2500 and id5=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=601 and id4=3005 and id5=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=1 and id3='1' and id1=1 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36 and id3='36' and id1=18 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124' and id1=62 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=888 and id3='888' and id1=444 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1 and id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=12 and id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=1;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=12;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=23;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=100;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=234;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=234;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=1 and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=23 and id4=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=500 and id4=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=601 and id4=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='100' and id5=500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='240' and id5=1200;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
create table t1 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
primary key (id1, id2, id3, id4) COMMENT 'cf_long_prefix',
|
primary key (id1, id2, id3, id4) COMMENT 'cf_long_prefix',
|
||||||
index id2 (id2) COMMENT 'cf_long_prefix',
|
index id2 (id2) COMMENT 'cf_long_prefix',
|
||||||
index id2_id1 (id2, id1) COMMENT 'cf_long_prefix',
|
index id2_id1 (id2, id1) COMMENT 'cf_long_prefix',
|
||||||
@@ -839,6 +1237,404 @@ index id2_id4_id5 (id2, id4, id5) COMMENT 'cf_long_prefix',
|
|||||||
index id3_id4 (id3, id4) COMMENT 'cf_long_prefix',
|
index id3_id4 (id3, id4) COMMENT 'cf_long_prefix',
|
||||||
index id3_id5 (id3, id5) COMMENT 'cf_long_prefix'
|
index id3_id5 (id3, id5) COMMENT 'cf_long_prefix'
|
||||||
) engine=ROCKSDB;
|
) engine=ROCKSDB;
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(PRIMARY) where id1 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index(id3_id4) where id3 >= '1';
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=2 and id1=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=24 and id1=12;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=88 and id1=44;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=100 and id1=50;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=428 and id1=214;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=1 and id4=1 and id5=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=23 and id4=115 and id5=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=500 and id4=2500 and id5=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=601 and id4=3005 and id5=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=1 and id3='1' and id1=1 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36 and id3='36' and id1=18 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124' and id1=62 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=888 and id3='888' and id1=444 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1 and id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=12 and id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=1;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=12;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=23;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=100;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=234;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=234;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=1 and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=23 and id4=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=500 and id4=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=601 and id4=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
true
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='100' and id5=500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='240' and id5=1200;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
create table t1 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id1, id2, id3, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id1 (id2, id1) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id3_id1_id4 (id2, id3, id1, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id3_id2 (id3, id2) COMMENT 'rev:cf_long_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
create table t2 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id4_id5 (id2, id4, id5) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id3_id4 (id3, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id3_id5 (id3, id5) COMMENT 'rev:cf_long_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
insert t1
|
insert t1
|
||||||
select (seq+9) div 10, (seq+4) div 5, (seq+4) div 5, seq, seq, 1000, "aaabbbccc"
|
select (seq+9) div 10, (seq+4) div 5, (seq+4) div 5, seq, seq, 1000, "aaabbbccc"
|
||||||
from seq_1_to_10000;
|
from seq_1_to_10000;
|
||||||
|
@@ -815,6 +815,404 @@ id4 int not null,
|
|||||||
id5 int not null,
|
id5 int not null,
|
||||||
value bigint,
|
value bigint,
|
||||||
value2 varchar(100),
|
value2 varchar(100),
|
||||||
|
primary key (id1, id2, id3, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id1 (id2, id1) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id3_id1_id4 (id2, id3, id1, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id3_id2 (id3, id2) COMMENT 'rev:cf_short_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
create table t2 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id2_id4_id5 (id2, id4, id5) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id3_id4 (id3, id4) COMMENT 'rev:cf_short_prefix',
|
||||||
|
index id3_id5 (id3, id5) COMMENT 'rev:cf_short_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(PRIMARY) where id1 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index(id3_id4) where id3 >= '1';
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=2 and id1=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=24 and id1=12;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=88 and id1=44;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=100 and id1=50;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=428 and id1=214;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=1 and id4=1 and id5=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=23 and id4=115 and id5=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=500 and id4=2500 and id5=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=601 and id4=3005 and id5=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=1 and id3='1' and id1=1 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36 and id3='36' and id1=18 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124' and id1=62 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=888 and id3='888' and id1=444 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1 and id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=12 and id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=1;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=12;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=23;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=100;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=234;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=234;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=1 and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=23 and id4=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=500 and id4=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=601 and id4=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='100' and id5=500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='240' and id5=1200;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
create table t1 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
primary key (id1, id2, id3, id4) COMMENT 'cf_long_prefix',
|
primary key (id1, id2, id3, id4) COMMENT 'cf_long_prefix',
|
||||||
index id2 (id2) COMMENT 'cf_long_prefix',
|
index id2 (id2) COMMENT 'cf_long_prefix',
|
||||||
index id2_id1 (id2, id1) COMMENT 'cf_long_prefix',
|
index id2_id1 (id2, id1) COMMENT 'cf_long_prefix',
|
||||||
@@ -839,6 +1237,404 @@ index id2_id4_id5 (id2, id4, id5) COMMENT 'cf_long_prefix',
|
|||||||
index id3_id4 (id3, id4) COMMENT 'cf_long_prefix',
|
index id3_id4 (id3, id4) COMMENT 'cf_long_prefix',
|
||||||
index id3_id5 (id3, id5) COMMENT 'cf_long_prefix'
|
index id3_id5 (id3, id5) COMMENT 'cf_long_prefix'
|
||||||
) engine=ROCKSDB;
|
) engine=ROCKSDB;
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(PRIMARY) where id1 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2 >= 1;
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index(id3_id4) where id3 >= '1';
|
||||||
|
count(*)
|
||||||
|
10000
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=2 and id1=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=24 and id1=12;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=88 and id1=44;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=100 and id1=50;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index(id2_id1) where id2=428 and id1=214;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=1 and id4=1 and id5=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=23 and id4=115 and id5=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=500 and id4=2500 and id5=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4_id5) where id2=601 and id4=3005 and id5=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id4) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=1 and id3='1' and id1=1 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36 and id3='36' and id1=18 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124' and id1=62 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=888 and id3='888' and id1=444 order by id4;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=124 and id3='124';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=1 and id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2_id3) where id2=12 and id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=1 and id3='1';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id3_id2) where id2=23 and id3='23';
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=1;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=12;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=23;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=100;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (PRIMARY) where id1=234;
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=36;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2_id3_id1_id4) where id2=234;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=1 and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=23 and id4=115;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=500 and id4=2500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id2) where id2=601 and id4=3005;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='1' and id4=1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id4) where id3='12' and id4=60;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=1;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=23;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=345;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t1 force index (id2) where id2=456;
|
||||||
|
count(*)
|
||||||
|
5
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='100' and id5=500;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
call bloom_start();
|
||||||
|
select count(*) from t2 force index (id3_id5) where id3='240' and id5=1200;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
call bloom_end();
|
||||||
|
checked
|
||||||
|
false
|
||||||
|
drop table if exists t1;
|
||||||
|
drop table if exists t2;
|
||||||
|
create table t1 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id1, id2, id3, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id1 (id2, id1) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id3_id1_id4 (id2, id3, id1, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id3_id2 (id3, id2) COMMENT 'rev:cf_long_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
create table t2 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2 (id2) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id3 (id2, id3) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id4 (id2, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id2_id4_id5 (id2, id4, id5) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id3_id4 (id3, id4) COMMENT 'rev:cf_long_prefix',
|
||||||
|
index id3_id5 (id3, id5) COMMENT 'rev:cf_long_prefix'
|
||||||
|
) engine=ROCKSDB;
|
||||||
insert t1
|
insert t1
|
||||||
select (seq+9) div 10, (seq+4) div 5, (seq+4) div 5, seq, seq, 1000, "aaabbbccc"
|
select (seq+9) div 10, (seq+4) div 5, (seq+4) div 5, seq, seq, 1000, "aaabbbccc"
|
||||||
from seq_1_to_10000;
|
from seq_1_to_10000;
|
||||||
|
@@ -1,9 +1,26 @@
|
|||||||
DROP TABLE IF EXISTS t1, t2, t3;
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
CREATE TABLE t1(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin';
|
Data will be ordered in ascending order
|
||||||
CREATE TABLE t2(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin';
|
CREATE TABLE t1(
|
||||||
CREATE TABLE t3(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin'
|
pk CHAR(5),
|
||||||
PARTITION BY KEY() PARTITIONS 4;
|
a CHAR(30),
|
||||||
connect other,localhost,root,,;
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin' PARTITION BY KEY() PARTITIONS 4;
|
||||||
set session transaction isolation level repeatable read;
|
set session transaction isolation level repeatable read;
|
||||||
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
STAT_TYPE VALUE
|
STAT_TYPE VALUE
|
||||||
|
19
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result
Normal file
19
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE t1(pk INT, PRIMARY KEY(pk));
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(10);
|
||||||
|
INSERT INTO t1 VALUES(11);
|
||||||
|
INSERT INTO t1 VALUES(9);
|
||||||
|
ERROR HY000: Rows must be inserted in primary key order during bulk load operation
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk
|
||||||
|
10
|
||||||
|
11
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
INSERT INTO t1 VALUES(2);
|
||||||
|
INSERT INTO t1 VALUES(20);
|
||||||
|
INSERT INTO t1 VALUES(21);
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
|
DROP TABLE t1;
|
82
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_rev_cf.result
Normal file
82
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_rev_cf.result
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
Data will be ordered in ascending order
|
||||||
|
CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
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;
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
test.t2 analyze status OK
|
||||||
|
test.t3 analyze status OK
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
select count(pk) from t1;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t1;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t1;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t2;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t2;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t2;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t3;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t3;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t3;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
|
||||||
|
test.bulk_load.tmp
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -0,0 +1,82 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
Data will be ordered in descending order
|
||||||
|
CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
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;
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
test.t2 analyze status OK
|
||||||
|
test.t3 analyze status OK
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
select count(pk) from t1;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t1;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t1;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t2;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t2;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t2;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t3;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t3;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t3;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
|
||||||
|
test.bulk_load.tmp
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -0,0 +1,82 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
Data will be ordered in descending order
|
||||||
|
CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
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;
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
test.t2 analyze status OK
|
||||||
|
test.t3 analyze status OK
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
select count(pk) from t1;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t1;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t1;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t2;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t2;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t2;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t3;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t3;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t3;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
|
||||||
|
test.bulk_load.tmp
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -5,7 +5,7 @@ connection con1;
|
|||||||
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=ROCKSDB;
|
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=ROCKSDB;
|
||||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
STAT_TYPE VALUE
|
STAT_TYPE VALUE
|
||||||
@@ -18,7 +18,7 @@ STAT_TYPE VALUE
|
|||||||
DB_NUM_SNAPSHOTS 0
|
DB_NUM_SNAPSHOTS 0
|
||||||
connection con1;
|
connection con1;
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO t1 (a) VALUES (1);
|
INSERT INTO t1 (a) VALUES (1);
|
||||||
connection con1;
|
connection con1;
|
||||||
@@ -69,7 +69,7 @@ id value value2
|
|||||||
5 5 5
|
5 5 5
|
||||||
6 6 6
|
6 6 6
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO r1 values (7,7,7);
|
INSERT INTO r1 values (7,7,7);
|
||||||
connection con1;
|
connection con1;
|
||||||
@@ -107,12 +107,12 @@ id value value2
|
|||||||
7 7 7
|
7 7 7
|
||||||
8 8 8
|
8 8 8
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO r1 values (9,9,9);
|
INSERT INTO r1 values (9,9,9);
|
||||||
connection con1;
|
connection con1;
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO r1 values (10,10,10);
|
INSERT INTO r1 values (10,10,10);
|
||||||
connection con1;
|
connection con1;
|
||||||
@@ -129,7 +129,7 @@ id value value2
|
|||||||
9 9 9
|
9 9 9
|
||||||
10 10 10
|
10 10 10
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
INSERT INTO r1 values (11,11,11);
|
INSERT INTO r1 values (11,11,11);
|
||||||
ERROR: 0
|
ERROR: 0
|
||||||
SELECT * FROM r1;
|
SELECT * FROM r1;
|
||||||
|
@@ -125,7 +125,7 @@ id value value2
|
|||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 0
|
ERROR: 0
|
||||||
INSERT INTO r1 values (11,11,11);
|
INSERT INTO r1 values (11,11,11);
|
||||||
ERROR: 1105
|
ERROR: 1935
|
||||||
SELECT * FROM r1;
|
SELECT * FROM r1;
|
||||||
id value value2
|
id value value2
|
||||||
1 1 1
|
1 1 1
|
||||||
|
@@ -20,7 +20,7 @@ set @tmp1=@@rocksdb_verify_row_debug_checksums;
|
|||||||
set rocksdb_verify_row_debug_checksums=1;
|
set rocksdb_verify_row_debug_checksums=1;
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_row_read1";
|
set session debug_dbug= "+d,myrocks_simulate_bad_row_read1";
|
||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
ERROR HY000: Got error 122 "Internal (unspecified) error in handler" from storage engine ROCKSDB
|
ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_row_read1";
|
set session debug_dbug= "-d,myrocks_simulate_bad_row_read1";
|
||||||
set rocksdb_verify_row_debug_checksums=@tmp1;
|
set rocksdb_verify_row_debug_checksums=@tmp1;
|
||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
@@ -28,11 +28,11 @@ pk col1
|
|||||||
1 1
|
1 1
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_row_read2";
|
set session debug_dbug= "+d,myrocks_simulate_bad_row_read2";
|
||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
ERROR HY000: Got error 122 "Internal (unspecified) error in handler" from storage engine ROCKSDB
|
ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_row_read2";
|
set session debug_dbug= "-d,myrocks_simulate_bad_row_read2";
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_row_read3";
|
set session debug_dbug= "+d,myrocks_simulate_bad_row_read3";
|
||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
ERROR HY000: Got error 122 "Internal (unspecified) error in handler" from storage engine ROCKSDB
|
ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_row_read3";
|
set session debug_dbug= "-d,myrocks_simulate_bad_row_read3";
|
||||||
insert into t1 values(4,'0123456789');
|
insert into t1 values(4,'0123456789');
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@@ -56,7 +56,7 @@ pk col1
|
|||||||
ABCD 1
|
ABCD 1
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
||||||
select * from t2;
|
select * from t2;
|
||||||
ERROR HY000: Got error 122 "Internal (unspecified) error in handler" from storage engine ROCKSDB
|
ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
||||||
drop table t2;
|
drop table t2;
|
||||||
create table t2 (
|
create table t2 (
|
||||||
@@ -69,6 +69,6 @@ pk col1
|
|||||||
ABCD 1
|
ABCD 1
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
||||||
select * from t2;
|
select * from t2;
|
||||||
ERROR HY000: Got error 122 "Internal (unspecified) error in handler" from storage engine ROCKSDB
|
ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
||||||
drop table t2;
|
drop table t2;
|
||||||
|
51
storage/rocksdb/mysql-test/rocksdb/r/deadlock_stats.result
Normal file
51
storage/rocksdb/mysql-test/rocksdb/r/deadlock_stats.result
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
set @prior_lock_wait_timeout = @@rocksdb_lock_wait_timeout; set @prior_deadlock_detect = @@rocksdb_deadlock_detect; set global rocksdb_deadlock_detect = on; set global rocksdb_lock_wait_timeout = 100000;;
|
||||||
|
create table t (i int primary key) engine=rocksdb;
|
||||||
|
insert into t values (1), (2), (3);
|
||||||
|
begin;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
i
|
||||||
|
1
|
||||||
|
begin;
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
rollback;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
rollback;
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
1
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
1
|
||||||
|
begin;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
i
|
||||||
|
1
|
||||||
|
begin;
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
rollback;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
rollback;
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
2
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
2
|
||||||
|
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout; set global rocksdb_deadlock_detect = @prior_deadlock_detect;;
|
||||||
|
drop table t;
|
@@ -54,20 +54,4 @@ drop table t5;
|
|||||||
set global rocksdb_compact_cf = 'cf1';
|
set global rocksdb_compact_cf = 'cf1';
|
||||||
set global rocksdb_compact_cf = 'rev:cf2';
|
set global rocksdb_compact_cf = 'rev:cf2';
|
||||||
set global rocksdb_signal_drop_index_thread = 1;
|
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;
|
drop table t1;
|
||||||
|
@@ -47,9 +47,15 @@ primary key (a,b) comment 'cf1',
|
|||||||
key (b) comment 'rev:cf2'
|
key (b) comment 'rev:cf2'
|
||||||
) ENGINE=RocksDB;
|
) ENGINE=RocksDB;
|
||||||
DELETE FROM t5;
|
DELETE FROM t5;
|
||||||
|
set @@global.rocksdb_compact_cf = 'cf1';
|
||||||
|
set @@global.rocksdb_compact_cf = 'rev:cf2';
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
drop table t3;
|
drop table t3;
|
||||||
drop table t4;
|
drop table t4;
|
||||||
drop table t5;
|
drop table t5;
|
||||||
|
set @@global.rocksdb_compact_cf = 'cf1';
|
||||||
|
set @@global.rocksdb_compact_cf = 'rev:cf2';
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
Compacted
|
Compacted
|
||||||
|
@@ -1,16 +1,16 @@
|
|||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
CREATE TABLE t1 (b INT PRIMARY KEY);
|
CREATE TABLE t1 (b INT PRIMARY KEY);
|
||||||
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL, FOREIGN KEY (b) REFERENCES t1(b));
|
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
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
CREATE TABLE t2 (a INT NOT NULL, bforeign INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL, bforeign INT NOT NULL);
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL, foreignkey INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL, foreignkey INT NOT NULL);
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL, bforeign INT not null, FOREIGN KEY (bforeign) REFERENCES t1(b));
|
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
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL);
|
||||||
ALTER TABLE t2 ADD FOREIGN KEY (b) REFERENCES t1(b);
|
ALTER TABLE t2 ADD FOREIGN KEY (b) REFERENCES t1(b);
|
||||||
ERROR 42000: MyRocks does not currently support foreign key constraints
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL);
|
||||||
ALTER TABLE t2 ADD bforeign INT NOT NULL;
|
ALTER TABLE t2 ADD bforeign INT NOT NULL;
|
||||||
@@ -20,6 +20,6 @@ ALTER TABLE t2 ADD foreignkey INT NOT NULL;
|
|||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL);
|
||||||
ALTER TABLE t2 ADD bforeign INT NOT NULL, ADD FOREIGN KEY (bforeign) REFERENCES t1(b);
|
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
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@@ -483,7 +483,7 @@ delete from test where value = 20;
|
|||||||
connection con1;
|
connection con1;
|
||||||
commit;
|
commit;
|
||||||
connection con2;
|
connection con2;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_snapshot_conflict_errors';
|
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_snapshot_conflict_errors';
|
||||||
variable_value-@a
|
variable_value-@a
|
||||||
1
|
1
|
||||||
@@ -511,7 +511,7 @@ update test set value = 12 where id = 1;
|
|||||||
connection con1;
|
connection con1;
|
||||||
commit;
|
commit;
|
||||||
connection con2;
|
connection con2;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
commit;
|
commit;
|
||||||
connection con1;
|
connection con1;
|
||||||
truncate table test;
|
truncate table test;
|
||||||
@@ -582,7 +582,7 @@ update test set value = 18 where id = 2;
|
|||||||
commit;
|
commit;
|
||||||
connection con1;
|
connection con1;
|
||||||
delete from test where value = 20;
|
delete from test where value = 20;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
commit;
|
commit;
|
||||||
connection con1;
|
connection con1;
|
||||||
truncate table test;
|
truncate table test;
|
||||||
|
@@ -8,9 +8,9 @@ PRIMARY KEY (z, y) COMMENT 'zy_cf',
|
|||||||
KEY (x)) ENGINE = ROCKSDB;
|
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%';
|
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
|
TABLE_SCHEMA TABLE_NAME PARTITION_NAME INDEX_NAME INDEX_TYPE KV_FORMAT_VERSION CF
|
||||||
test is_ddl_t1 NULL PRIMARY 1 11 default
|
test is_ddl_t1 NULL PRIMARY 1 13 default
|
||||||
test is_ddl_t1 NULL j 2 11 default
|
test is_ddl_t1 NULL j 2 12 default
|
||||||
test is_ddl_t1 NULL k 2 11 kl_cf
|
test is_ddl_t1 NULL k 2 12 kl_cf
|
||||||
test is_ddl_t2 NULL PRIMARY 1 11 zy_cf
|
test is_ddl_t2 NULL PRIMARY 1 11 zy_cf
|
||||||
test is_ddl_t2 NULL x 2 11 default
|
test is_ddl_t2 NULL x 2 11 default
|
||||||
DROP TABLE is_ddl_t1;
|
DROP TABLE is_ddl_t1;
|
||||||
|
@@ -0,0 +1,48 @@
|
|||||||
|
CREATE TABLE t1
|
||||||
|
(
|
||||||
|
/* fields/keys for row retrieval tests */
|
||||||
|
key1 INT,
|
||||||
|
key2 INT,
|
||||||
|
key3 INT,
|
||||||
|
key4 INT,
|
||||||
|
/* make rows much bigger then keys */
|
||||||
|
filler1 CHAR(200),
|
||||||
|
KEY(key1),
|
||||||
|
KEY(key2)
|
||||||
|
) ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t0 AS SELECT * FROM t1;
|
||||||
|
# Printing of many insert into t0 values (....) disabled.
|
||||||
|
# Printing of many insert into t1 select .... from t0 disabled.
|
||||||
|
# Printing of many insert into t1 (...) values (....) disabled.
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
7201
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now = 1;
|
||||||
|
EXPLAIN UPDATE t1 SET filler1='to be deleted' WHERE key1=100 AND key2=100;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index_merge key1,key2 key1,key2 5,5 NULL # Using intersect(key1,key2); Using where
|
||||||
|
UPDATE t1 SET filler1='to be deleted' WHERE key1=100 and key2=100;
|
||||||
|
DROP TABLE t0, t1;
|
||||||
|
create table t1 (key1 int, key2 int, key3 int, key (key1), key (key2), key(key3)) engine=rocksdb;
|
||||||
|
insert into t1 values (1, 100, 100), (1, 200, 200), (1, 300, 300);
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
explain select * from t1 where key1 = 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref key1 key1 5 const # NULL
|
||||||
|
explain select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index_merge key1,key2 key1,key2 5,5 NULL # Using union(key1,key2); Using where
|
||||||
|
select * from t1 where key1 = 1;
|
||||||
|
key1 key2 key3
|
||||||
|
1 100 100
|
||||||
|
1 200 200
|
||||||
|
1 300 300
|
||||||
|
select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
key1 key2
|
||||||
|
1 100
|
||||||
|
1 200
|
||||||
|
1 300
|
||||||
|
drop table t1;
|
1419
storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result
Normal file
1419
storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -39,12 +39,10 @@ a int,
|
|||||||
b int,
|
b int,
|
||||||
c int,
|
c int,
|
||||||
d int,
|
d int,
|
||||||
e int,
|
|
||||||
PRIMARY KEY (a) COMMENT "cf_a",
|
PRIMARY KEY (a) COMMENT "cf_a",
|
||||||
KEY (b) COMMENT "cf_b",
|
KEY (b) COMMENT "cf_b",
|
||||||
KEY (c) COMMENT "cf_c",
|
KEY (c) COMMENT "cf_c",
|
||||||
KEY (d) COMMENT "$per_index_cf",
|
KEY (d) COMMENT "rev:cf_d") ENGINE=ROCKSDB;
|
||||||
KEY (e) COMMENT "rev:cf_d") ENGINE=ROCKSDB;
|
|
||||||
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
|
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
|
||||||
TYPE NAME VALUE
|
TYPE NAME VALUE
|
||||||
CF_FLAGS 0 default [0]
|
CF_FLAGS 0 default [0]
|
||||||
@@ -52,8 +50,7 @@ CF_FLAGS 1 __system__ [0]
|
|||||||
CF_FLAGS 2 cf_a [0]
|
CF_FLAGS 2 cf_a [0]
|
||||||
CF_FLAGS 3 cf_b [0]
|
CF_FLAGS 3 cf_b [0]
|
||||||
CF_FLAGS 4 cf_c [0]
|
CF_FLAGS 4 cf_c [0]
|
||||||
CF_FLAGS 5 test.t2.d [2]
|
CF_FLAGS 5 rev:cf_d [1]
|
||||||
CF_FLAGS 6 rev:cf_d [1]
|
|
||||||
CREATE TABLE t3 (a INT, PRIMARY KEY (a)) ENGINE=ROCKSDB;
|
CREATE TABLE t3 (a INT, PRIMARY KEY (a)) ENGINE=ROCKSDB;
|
||||||
insert into t3 (a) values (1), (2), (3);
|
insert into t3 (a) values (1), (2), (3);
|
||||||
SET @ORIG_ROCKSDB_PAUSE_BACKGROUND_WORK = @@GLOBAL.ROCKSDB_PAUSE_BACKGROUND_WORK;
|
SET @ORIG_ROCKSDB_PAUSE_BACKGROUND_WORK = @@GLOBAL.ROCKSDB_PAUSE_BACKGROUND_WORK;
|
||||||
@@ -69,7 +66,7 @@ SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
rocksdb_pause_background_work ON
|
rocksdb_pause_background_work ON
|
||||||
DROP TABLE t3;
|
DROP TABLE t3;
|
||||||
cf_id:0,index_id:268
|
cf_id:0,index_id:267
|
||||||
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=0;
|
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=0;
|
||||||
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
|
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
|
@@ -32,6 +32,6 @@ update t1 set col2=123456 where pk=0;
|
|||||||
commit;
|
commit;
|
||||||
connection default;
|
connection default;
|
||||||
update t1 set col2=col2+1 where col1 < 10 limit 5;
|
update t1 set col2=col2+1 where col1 < 10 limit 5;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
drop table t1, ten, one_k;
|
drop table t1, ten, one_k;
|
||||||
|
@@ -0,0 +1,155 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT,
|
||||||
|
val1 INT,
|
||||||
|
val2 INT,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 VALUES(1,1,1),(2,1,2);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 1 2
|
||||||
|
UPDATE t1 SET val1=2 WHERE id=2;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 2 2
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(20,1,1),(30,30,30);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 2 2
|
||||||
|
20 1 1
|
||||||
|
30 30 30
|
||||||
|
UPDATE t1 SET val1=20, val2=20 WHERE id=20;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 2 2
|
||||||
|
20 20 20
|
||||||
|
30 30 30
|
||||||
|
DELETE FROM t1 WHERE id=30;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
---SNAPSHOT, ACTIVE NUM sec
|
||||||
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
|
lock count 8, write count 4
|
||||||
|
insert count 2, update count 1, delete count 1
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(40,40,40);
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
---SNAPSHOT, ACTIVE NUM sec
|
||||||
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
|
lock count 2, write count 1
|
||||||
|
insert count 1, update count 0, delete count 0
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE IF EXISTS t2;
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
id1 INT,
|
||||||
|
id2 INT,
|
||||||
|
value INT,
|
||||||
|
PRIMARY KEY (id1),
|
||||||
|
KEY (id2)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t2 VALUES(1,2,0),(10,20,30);
|
||||||
|
UPDATE t2 SET value=3 WHERE id2=2;
|
||||||
|
DELETE FROM t2 WHERE id1=10;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
---SNAPSHOT, ACTIVE NUM sec
|
||||||
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
|
lock count 9, write count 7
|
||||||
|
insert count 2, update count 1, delete count 1
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t2;
|
21
storage/rocksdb/mysql-test/rocksdb/r/issue255.result
Normal file
21
storage/rocksdb/mysql-test/rocksdb/r/issue255.result
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
CREATE TABLE t1 (pk BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT);
|
||||||
|
INSERT INTO t1 VALUES (5);
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB # Fixed 1 # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL
|
||||||
|
INSERT INTO t1 VALUES ('538647864786478647864');
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'pk' at row 1
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB # Fixed 2 # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL
|
||||||
|
INSERT INTO t1 VALUES ();
|
||||||
|
ERROR 23000: Duplicate entry '9223372036854775807' for key 'PRIMARY'
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk
|
||||||
|
5
|
||||||
|
9223372036854775807
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB # Fixed 2 # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL
|
||||||
|
DROP TABLE t1;
|
@@ -0,0 +1,27 @@
|
|||||||
|
create table t (a int primary key) engine=rocksdb;
|
||||||
|
begin;
|
||||||
|
insert into t values (0);
|
||||||
|
set @@rocksdb_lock_wait_timeout=1;
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
ROW_LOCK_WAIT_TIMEOUTS
|
||||||
|
0
|
||||||
|
begin;
|
||||||
|
set @@rocksdb_lock_wait_timeout=1;
|
||||||
|
begin;
|
||||||
|
insert into t values(0);
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on index: test.t.PRIMARY
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
ROW_LOCK_WAIT_TIMEOUTS
|
||||||
|
1
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
ROW_LOCK_WAIT_TIMEOUTS
|
||||||
|
1
|
||||||
|
insert into t values(0);
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on index: test.t.PRIMARY
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
ROW_LOCK_WAIT_TIMEOUTS
|
||||||
|
2
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
ROW_LOCK_WAIT_TIMEOUTS
|
||||||
|
2
|
||||||
|
drop table t;
|
397
storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result
Normal file
397
storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result
Normal file
@@ -0,0 +1,397 @@
|
|||||||
|
create database linkdb;
|
||||||
|
use linkdb;
|
||||||
|
create table linktable (
|
||||||
|
id1 bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
id2 bigint(20) 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 (id1,id2,link_type) COMMENT 'cf_link_pk',
|
||||||
|
KEY id1_type (id1,link_type,visibility,time,version,data)
|
||||||
|
COMMENT 'rev:cf_link_id1_type') ENGINE=rocksdb DEFAULT COLLATE=latin1_bin;
|
||||||
|
create table counttable (
|
||||||
|
id bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
link_type bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
count int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
time bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
version bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
primary key (id,link_type) COMMENT 'cf_count_pk')
|
||||||
|
ENGINE=rocksdb DEFAULT COLLATE=latin1_bin;
|
||||||
|
create table nodetable (
|
||||||
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
type int(10) unsigned NOT NULL,
|
||||||
|
version bigint(20) unsigned NOT NULL,
|
||||||
|
time int(10) unsigned NOT NULL,
|
||||||
|
data mediumtext NOT NULL,
|
||||||
|
primary key(id) COMMENT 'cf_node_pk')
|
||||||
|
ENGINE=rocksdb DEFAULT COLLATE=latin1_bin;
|
||||||
|
#
|
||||||
|
# Test nodeGet function
|
||||||
|
#
|
||||||
|
create native procedure nodeGet soname "NP_EXAMPLE_LIB";
|
||||||
|
%nodeGet 1;
|
||||||
|
id type version time data
|
||||||
|
1 1 1 1000 data
|
||||||
|
%nodeGet 50 anything can go here;
|
||||||
|
id type version time data
|
||||||
|
50 1 1 50000 data
|
||||||
|
%nodeGet 39;
|
||||||
|
id type version time data
|
||||||
|
39 1 1 39000 data
|
||||||
|
%nodeGet 98;
|
||||||
|
id type version time data
|
||||||
|
98 1 1 98000 data
|
||||||
|
%nodeGet 1000;
|
||||||
|
id type version time data
|
||||||
|
%nodeGet -1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'nodeGet -1')
|
||||||
|
%nodeGet asdf;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'nodeGet asdf')
|
||||||
|
#
|
||||||
|
# Test linkGetRange/linkGetId2s function
|
||||||
|
#
|
||||||
|
create native procedure linkGetRange soname "NP_EXAMPLE_LIB";
|
||||||
|
create native procedure linkGetId2s soname "NP_EXAMPLE_LIB";
|
||||||
|
%linkGetRange 1 1 1000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%linkGetRange 1 2 1000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%linkGetRange 1 1 5000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%linkGetRange 1 2 1000 6000 0 5;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
%linkGetRange 1 2 1000 6000 0 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
%linkGetRange 1 2 1000 6000 2 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
%linkGetId2s 1 3 3 1 2 3;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 3 1 data 3001 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
%linkGetId2s 1 3 3 3 2 1;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
1 1 3 1 data 3001 1
|
||||||
|
%linkGetId2s 1 3 3 3 2 10;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
%linkGetId2s 1 3 3 3 2 1 asdf;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
1 1 3 1 data 3001 1
|
||||||
|
%linkGetId2s 1 3 0;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%linkGetId2s 1 3 4 2;
|
||||||
|
ERROR HY000: Incorrect arguments to native procedure. (query 'linkGetId2s 1 3 4 2')
|
||||||
|
#
|
||||||
|
# Test rangeQuery function
|
||||||
|
#
|
||||||
|
create native procedure rangeQuery soname "NP_EXAMPLE_LIB";
|
||||||
|
%rangeQuery 1 0 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
%rangeQuery 1 0 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
%rangeQuery 1 1 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
%rangeQuery 1 1 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
%rangeQuery 0 0 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 0 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 1 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
%rangeQuery 0 1 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
%rangeQuery 1 0 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
%rangeQuery 1 0 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
%rangeQuery 1 1 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
%rangeQuery 1 1 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%rangeQuery 0 0 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 0 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 1 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
%rangeQuery 0 1 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%rangeQuery 0 0 0 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 0 1 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 1 0 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
%rangeQuery 0 1 1 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
#
|
||||||
|
# Test countGet function
|
||||||
|
#
|
||||||
|
create native procedure countGet soname "NP_EXAMPLE_LIB";
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
%countGet 10 1;
|
||||||
|
count
|
||||||
|
20
|
||||||
|
%countGet 111 1;
|
||||||
|
count
|
||||||
|
%countGet 1 111;
|
||||||
|
count
|
||||||
|
%countGet -1 1 1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'countGet -1 1 1')
|
||||||
|
%countGet -1 1 2;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'countGet -1 1 2')
|
||||||
|
%countGet;
|
||||||
|
ERROR HY000: Incorrect arguments to native procedure. (query 'countGet')
|
||||||
|
#
|
||||||
|
# Check that DDL locks are respected.
|
||||||
|
#
|
||||||
|
create native procedure sleepRange soname "NP_EXAMPLE_LIB";
|
||||||
|
%sleepRange 1;
|
||||||
|
set @start_lock_wait_timeout = @@session.lock_wait_timeout;
|
||||||
|
set lock_wait_timeout = 1;
|
||||||
|
drop table counttable;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: linkdb.counttable
|
||||||
|
set lock_wait_timeout = @start_lock_wait_timeout;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
4
|
||||||
|
6
|
||||||
|
8
|
||||||
|
10
|
||||||
|
12
|
||||||
|
14
|
||||||
|
16
|
||||||
|
18
|
||||||
|
20
|
||||||
|
#
|
||||||
|
# Check that queries can be killed.
|
||||||
|
#
|
||||||
|
%sleepRange 0;
|
||||||
|
kill query ID;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
#
|
||||||
|
# Check that native procedures work properly with transactions.
|
||||||
|
#
|
||||||
|
use linkdb;
|
||||||
|
set session transaction isolation level repeatable read;
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
begin;
|
||||||
|
select count from counttable where id = 1 and link_type = 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
# Before update
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
update counttable set count = count + 1 where id = 1 and link_type = 1;
|
||||||
|
# After update
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
3
|
||||||
|
# Unchanged due to consistent reads
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
#
|
||||||
|
# Check index reads on prefixed data.
|
||||||
|
#
|
||||||
|
alter table linktable drop index id1_type;
|
||||||
|
alter table linktable
|
||||||
|
add index id1_type (id1,link_type,visibility,time,version,data(1))
|
||||||
|
COMMENT 'rev:cf_link_id1_type';
|
||||||
|
%linkGetRange 1 1 1000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
#
|
||||||
|
# Check correct error handling for various scenarios.
|
||||||
|
#
|
||||||
|
create native procedure invalidKey1 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidKey1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 6, msg: 'Not found: ', query 'invalidKey1')
|
||||||
|
create native procedure invalidOpen1 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen1')
|
||||||
|
create native procedure invalidOpen2 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen2;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen2')
|
||||||
|
create native procedure invalidOpen3 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen3;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen3')
|
||||||
|
create native procedure invalidOpen4 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen4;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen4')
|
||||||
|
%invalidProcedure;
|
||||||
|
ERROR HY000: Unknown native procedure. 'invalidProcedure'
|
||||||
|
create native procedure invalidProcedure soname "invalid.so";
|
||||||
|
ERROR HY000: Can't open shared library
|
||||||
|
create native procedure invalidProcedure soname "NP_EXAMPLE_LIB";
|
||||||
|
ERROR HY000: Can't find symbol 'invalidProcedure' in library
|
||||||
|
#
|
||||||
|
# Check that our functions are reloaded after restart.
|
||||||
|
#
|
||||||
|
select * from mysql.native_proc order by name;
|
||||||
|
name type dl lua
|
||||||
|
countGet native np_example.so
|
||||||
|
invalidKey1 native np_example.so
|
||||||
|
invalidOpen1 native np_example.so
|
||||||
|
invalidOpen2 native np_example.so
|
||||||
|
invalidOpen3 native np_example.so
|
||||||
|
invalidOpen4 native np_example.so
|
||||||
|
linkGetId2s native np_example.so
|
||||||
|
linkGetRange native np_example.so
|
||||||
|
nodeGet native np_example.so
|
||||||
|
rangeQuery native np_example.so
|
||||||
|
sleepRange native np_example.so
|
||||||
|
drop native procedure nodeGet;
|
||||||
|
create native procedure nodeGet soname "NP_EXAMPLE_LIB";
|
||||||
|
ERROR HY000: Native procedure 'nodeGet' exists.
|
||||||
|
drop native procedure linkGetRange;
|
||||||
|
drop native procedure linkGetId2s;
|
||||||
|
drop native procedure countGet;
|
||||||
|
drop native procedure sleepRange;
|
||||||
|
drop native procedure rangeQuery;
|
||||||
|
drop native procedure invalidKey1;
|
||||||
|
drop native procedure invalidOpen1;
|
||||||
|
drop native procedure invalidOpen2;
|
||||||
|
drop native procedure invalidOpen3;
|
||||||
|
drop native procedure invalidOpen4;
|
||||||
|
%nodeGet 1;
|
||||||
|
ERROR HY000: Unknown native procedure. 'nodeGet'
|
||||||
|
#
|
||||||
|
# Check that our functions are unloaded after restart.
|
||||||
|
#
|
||||||
|
select * from mysql.native_proc order by name;
|
||||||
|
name type dl lua
|
||||||
|
%nodeGet 1;
|
||||||
|
ERROR HY000: Unknown native procedure. 'nodeGet'
|
||||||
|
drop database linkdb;
|
@@ -0,0 +1,76 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (id1 BIGINT, id2 BIGINT, id3 BIGINT, id4 BIGINT, PRIMARY KEY (id1, id2, id3, id4) comment 'cf1') ENGINE=rocksdb collate latin1_bin;
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
Original Prefix Extractor:
|
||||||
|
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
CF_NAME OPTION_TYPE VALUE
|
||||||
|
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
1
|
||||||
|
|
||||||
|
Prefix Extractor (after override_cf_options set, should not be changed):
|
||||||
|
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
CF_NAME OPTION_TYPE VALUE
|
||||||
|
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
|
||||||
|
Restarting with new Prefix Extractor...
|
||||||
|
|
||||||
|
|
||||||
|
Changed Prefix Extractor (after restart):
|
||||||
|
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
CF_NAME OPTION_TYPE VALUE
|
||||||
|
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.26
|
||||||
|
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
0
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
UPDATE t1 SET id1=1,id2 = 30,id3 = 30 WHERE id4 >= 0 AND id4 <=10;
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
COUNT(*)
|
||||||
|
3
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
2
|
||||||
|
set global rocksdb_compact_cf='cf1';
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=30 AND id3=30;
|
||||||
|
COUNT(*)
|
||||||
|
11
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
@@ -875,8 +875,6 @@ rocksdb_advise_random_on_open ON
|
|||||||
rocksdb_allow_concurrent_memtable_write OFF
|
rocksdb_allow_concurrent_memtable_write OFF
|
||||||
rocksdb_allow_mmap_reads OFF
|
rocksdb_allow_mmap_reads OFF
|
||||||
rocksdb_allow_mmap_writes OFF
|
rocksdb_allow_mmap_writes OFF
|
||||||
rocksdb_background_sync OFF
|
|
||||||
rocksdb_base_background_compactions 1
|
|
||||||
rocksdb_blind_delete_primary_key OFF
|
rocksdb_blind_delete_primary_key OFF
|
||||||
rocksdb_block_cache_size 536870912
|
rocksdb_block_cache_size 536870912
|
||||||
rocksdb_block_restart_interval 16
|
rocksdb_block_restart_interval 16
|
||||||
@@ -902,22 +900,29 @@ rocksdb_datadir ./.rocksdb
|
|||||||
rocksdb_db_write_buffer_size 0
|
rocksdb_db_write_buffer_size 0
|
||||||
rocksdb_deadlock_detect OFF
|
rocksdb_deadlock_detect OFF
|
||||||
rocksdb_debug_optimizer_no_zero_cardinality ON
|
rocksdb_debug_optimizer_no_zero_cardinality ON
|
||||||
|
rocksdb_debug_ttl_read_filter_ts 0
|
||||||
|
rocksdb_debug_ttl_rec_ts 0
|
||||||
|
rocksdb_debug_ttl_snapshot_ts 0
|
||||||
rocksdb_default_cf_options
|
rocksdb_default_cf_options
|
||||||
rocksdb_delayed_write_rate 16777216
|
rocksdb_delayed_write_rate 0
|
||||||
rocksdb_delete_obsolete_files_period_micros 21600000000
|
rocksdb_delete_obsolete_files_period_micros 21600000000
|
||||||
rocksdb_enable_2pc ON
|
rocksdb_enable_2pc ON
|
||||||
rocksdb_enable_bulk_load_api ON
|
rocksdb_enable_bulk_load_api ON
|
||||||
rocksdb_enable_thread_tracking OFF
|
rocksdb_enable_thread_tracking ON
|
||||||
|
rocksdb_enable_ttl ON
|
||||||
|
rocksdb_enable_ttl_read_filtering ON
|
||||||
rocksdb_enable_write_thread_adaptive_yield OFF
|
rocksdb_enable_write_thread_adaptive_yield OFF
|
||||||
rocksdb_error_if_exists OFF
|
rocksdb_error_if_exists OFF
|
||||||
rocksdb_flush_log_at_trx_commit 0
|
rocksdb_flush_log_at_trx_commit 0
|
||||||
rocksdb_flush_memtable_on_analyze ON
|
rocksdb_flush_memtable_on_analyze ON
|
||||||
rocksdb_force_compute_memtable_stats ON
|
rocksdb_force_compute_memtable_stats ON
|
||||||
|
rocksdb_force_flush_memtable_and_lzero_now OFF
|
||||||
rocksdb_force_flush_memtable_now OFF
|
rocksdb_force_flush_memtable_now OFF
|
||||||
rocksdb_force_index_records_in_range 0
|
rocksdb_force_index_records_in_range 0
|
||||||
rocksdb_hash_index_allow_collision ON
|
rocksdb_hash_index_allow_collision ON
|
||||||
rocksdb_index_type kBinarySearch
|
rocksdb_index_type kBinarySearch
|
||||||
rocksdb_info_log_level error_level
|
rocksdb_info_log_level error_level
|
||||||
|
rocksdb_io_write_timeout 0
|
||||||
rocksdb_is_fd_close_on_exec ON
|
rocksdb_is_fd_close_on_exec ON
|
||||||
rocksdb_keep_log_file_num 1000
|
rocksdb_keep_log_file_num 1000
|
||||||
rocksdb_lock_scanned_rows OFF
|
rocksdb_lock_scanned_rows OFF
|
||||||
@@ -925,8 +930,7 @@ rocksdb_lock_wait_timeout 1
|
|||||||
rocksdb_log_file_time_to_roll 0
|
rocksdb_log_file_time_to_roll 0
|
||||||
rocksdb_manifest_preallocation_size 4194304
|
rocksdb_manifest_preallocation_size 4194304
|
||||||
rocksdb_master_skip_tx_api OFF
|
rocksdb_master_skip_tx_api OFF
|
||||||
rocksdb_max_background_compactions 1
|
rocksdb_max_background_jobs 2
|
||||||
rocksdb_max_background_flushes 1
|
|
||||||
rocksdb_max_log_file_size 0
|
rocksdb_max_log_file_size 0
|
||||||
rocksdb_max_manifest_file_size 18446744073709551615
|
rocksdb_max_manifest_file_size 18446744073709551615
|
||||||
rocksdb_max_open_files -1
|
rocksdb_max_open_files -1
|
||||||
@@ -948,11 +952,13 @@ rocksdb_print_snapshot_conflict_queries OFF
|
|||||||
rocksdb_rate_limiter_bytes_per_sec 0
|
rocksdb_rate_limiter_bytes_per_sec 0
|
||||||
rocksdb_read_free_rpl_tables
|
rocksdb_read_free_rpl_tables
|
||||||
rocksdb_records_in_range 50
|
rocksdb_records_in_range 50
|
||||||
|
rocksdb_reset_stats OFF
|
||||||
rocksdb_seconds_between_stat_computes 3600
|
rocksdb_seconds_between_stat_computes 3600
|
||||||
rocksdb_signal_drop_index_thread OFF
|
rocksdb_signal_drop_index_thread OFF
|
||||||
rocksdb_skip_bloom_filter_on_read OFF
|
rocksdb_skip_bloom_filter_on_read OFF
|
||||||
rocksdb_skip_fill_cache OFF
|
rocksdb_skip_fill_cache OFF
|
||||||
rocksdb_skip_unique_check_tables .*
|
rocksdb_skip_unique_check_tables .*
|
||||||
|
rocksdb_sst_mgr_rate_bytes_per_sec 0
|
||||||
rocksdb_stats_dump_period_sec 600
|
rocksdb_stats_dump_period_sec 600
|
||||||
rocksdb_store_row_debug_checksums OFF
|
rocksdb_store_row_debug_checksums OFF
|
||||||
rocksdb_strict_collation_check OFF
|
rocksdb_strict_collation_check OFF
|
||||||
@@ -962,9 +968,10 @@ rocksdb_table_stats_sampling_pct 10
|
|||||||
rocksdb_tmpdir
|
rocksdb_tmpdir
|
||||||
rocksdb_trace_sst_api OFF
|
rocksdb_trace_sst_api OFF
|
||||||
rocksdb_unsafe_for_binlog OFF
|
rocksdb_unsafe_for_binlog OFF
|
||||||
|
rocksdb_update_cf_options
|
||||||
rocksdb_use_adaptive_mutex OFF
|
rocksdb_use_adaptive_mutex OFF
|
||||||
|
rocksdb_use_direct_io_for_flush_and_compaction OFF
|
||||||
rocksdb_use_direct_reads OFF
|
rocksdb_use_direct_reads OFF
|
||||||
rocksdb_use_direct_writes OFF
|
|
||||||
rocksdb_use_fsync OFF
|
rocksdb_use_fsync OFF
|
||||||
rocksdb_validate_tables 1
|
rocksdb_validate_tables 1
|
||||||
rocksdb_verify_row_debug_checksums OFF
|
rocksdb_verify_row_debug_checksums OFF
|
||||||
@@ -974,6 +981,7 @@ rocksdb_wal_recovery_mode 1
|
|||||||
rocksdb_wal_size_limit_mb 0
|
rocksdb_wal_size_limit_mb 0
|
||||||
rocksdb_wal_ttl_seconds 0
|
rocksdb_wal_ttl_seconds 0
|
||||||
rocksdb_whole_key_filtering ON
|
rocksdb_whole_key_filtering ON
|
||||||
|
rocksdb_write_batch_max_bytes 0
|
||||||
rocksdb_write_disable_wal OFF
|
rocksdb_write_disable_wal OFF
|
||||||
rocksdb_write_ignore_missing_column_families OFF
|
rocksdb_write_ignore_missing_column_families OFF
|
||||||
create table t47 (pk int primary key, col1 varchar(12)) engine=rocksdb;
|
create table t47 (pk int primary key, col1 varchar(12)) engine=rocksdb;
|
||||||
@@ -1332,7 +1340,7 @@ insert into t1 select (@a:=@a+1), 1234 from information_schema.session_variables
|
|||||||
set @tmp1= @@rocksdb_max_row_locks;
|
set @tmp1= @@rocksdb_max_row_locks;
|
||||||
set rocksdb_max_row_locks= 20;
|
set rocksdb_max_row_locks= 20;
|
||||||
update t1 set a=a+10;
|
update t1 set a=a+10;
|
||||||
ERROR HY000: Got error 197 'Number of locks held reached @@rocksdb_max_row_locks.' from ROCKSDB
|
ERROR HY000: Status error 10 received from RocksDB: Operation aborted: Failed to acquire lock due to max_num_locks limit
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# Test AUTO_INCREMENT behavior problem,
|
# Test AUTO_INCREMENT behavior problem,
|
||||||
@@ -1443,15 +1451,16 @@ Rocksdb_rows_inserted #
|
|||||||
Rocksdb_rows_read #
|
Rocksdb_rows_read #
|
||||||
Rocksdb_rows_updated #
|
Rocksdb_rows_updated #
|
||||||
Rocksdb_rows_deleted_blind #
|
Rocksdb_rows_deleted_blind #
|
||||||
|
rocksdb_rows_expired #
|
||||||
Rocksdb_system_rows_deleted #
|
Rocksdb_system_rows_deleted #
|
||||||
Rocksdb_system_rows_inserted #
|
Rocksdb_system_rows_inserted #
|
||||||
Rocksdb_system_rows_read #
|
Rocksdb_system_rows_read #
|
||||||
Rocksdb_system_rows_updated #
|
Rocksdb_system_rows_updated #
|
||||||
Rocksdb_block_cache_add #
|
Rocksdb_block_cache_add #
|
||||||
Rocksdb_block_cache_data_hit #
|
rocksdb_memtable_total #
|
||||||
Rocksdb_block_cache_data_miss #
|
rocksdb_memtable_unflushed #
|
||||||
Rocksdb_block_cache_filter_hit #
|
rocksdb_queries_point #
|
||||||
Rocksdb_block_cache_filter_miss #
|
rocksdb_queries_range #
|
||||||
Rocksdb_block_cache_hit #
|
Rocksdb_block_cache_hit #
|
||||||
Rocksdb_block_cache_index_hit #
|
Rocksdb_block_cache_index_hit #
|
||||||
Rocksdb_block_cache_index_miss #
|
Rocksdb_block_cache_index_miss #
|
||||||
@@ -1477,9 +1486,6 @@ Rocksdb_memtable_hit #
|
|||||||
Rocksdb_memtable_miss #
|
Rocksdb_memtable_miss #
|
||||||
Rocksdb_no_file_closes #
|
Rocksdb_no_file_closes #
|
||||||
Rocksdb_no_file_errors #
|
Rocksdb_no_file_errors #
|
||||||
Rocksdb_no_file_opens #
|
|
||||||
Rocksdb_num_iterators #
|
|
||||||
Rocksdb_number_block_not_compressed #
|
|
||||||
Rocksdb_number_deletes_filtered #
|
Rocksdb_number_deletes_filtered #
|
||||||
Rocksdb_number_keys_read #
|
Rocksdb_number_keys_read #
|
||||||
Rocksdb_number_keys_updated #
|
Rocksdb_number_keys_updated #
|
||||||
@@ -1507,6 +1513,7 @@ Rocksdb_write_other #
|
|||||||
Rocksdb_write_self #
|
Rocksdb_write_self #
|
||||||
Rocksdb_write_timedout #
|
Rocksdb_write_timedout #
|
||||||
Rocksdb_write_wal #
|
Rocksdb_write_wal #
|
||||||
|
rocksdb_stall_micros #
|
||||||
select VARIABLE_NAME from INFORMATION_SCHEMA.global_status where VARIABLE_NAME LIKE 'rocksdb%';
|
select VARIABLE_NAME from INFORMATION_SCHEMA.global_status where VARIABLE_NAME LIKE 'rocksdb%';
|
||||||
VARIABLE_NAME
|
VARIABLE_NAME
|
||||||
ROCKSDB_ROWS_DELETED
|
ROCKSDB_ROWS_DELETED
|
||||||
@@ -1514,10 +1521,15 @@ ROCKSDB_ROWS_INSERTED
|
|||||||
ROCKSDB_ROWS_READ
|
ROCKSDB_ROWS_READ
|
||||||
ROCKSDB_ROWS_UPDATED
|
ROCKSDB_ROWS_UPDATED
|
||||||
ROCKSDB_ROWS_DELETED_BLIND
|
ROCKSDB_ROWS_DELETED_BLIND
|
||||||
|
ROCKSDB_ROWS_EXPIRED
|
||||||
ROCKSDB_SYSTEM_ROWS_DELETED
|
ROCKSDB_SYSTEM_ROWS_DELETED
|
||||||
ROCKSDB_SYSTEM_ROWS_INSERTED
|
ROCKSDB_SYSTEM_ROWS_INSERTED
|
||||||
ROCKSDB_SYSTEM_ROWS_READ
|
ROCKSDB_SYSTEM_ROWS_READ
|
||||||
ROCKSDB_SYSTEM_ROWS_UPDATED
|
ROCKSDB_SYSTEM_ROWS_UPDATED
|
||||||
|
ROCKSDB_MEMTABLE_TOTAL
|
||||||
|
ROCKSDB_MEMTABLE_UNFLUSHED
|
||||||
|
ROCKSDB_QUERIES_POINT
|
||||||
|
ROCKSDB_QUERIES_RANGE
|
||||||
ROCKSDB_BLOCK_CACHE_ADD
|
ROCKSDB_BLOCK_CACHE_ADD
|
||||||
ROCKSDB_BLOCK_CACHE_DATA_HIT
|
ROCKSDB_BLOCK_CACHE_DATA_HIT
|
||||||
ROCKSDB_BLOCK_CACHE_DATA_MISS
|
ROCKSDB_BLOCK_CACHE_DATA_MISS
|
||||||
@@ -1541,9 +1553,6 @@ ROCKSDB_COMPACTION_KEY_DROP_OBSOLETE
|
|||||||
ROCKSDB_COMPACTION_KEY_DROP_USER
|
ROCKSDB_COMPACTION_KEY_DROP_USER
|
||||||
ROCKSDB_FLUSH_WRITE_BYTES
|
ROCKSDB_FLUSH_WRITE_BYTES
|
||||||
ROCKSDB_GETUPDATESSINCE_CALLS
|
ROCKSDB_GETUPDATESSINCE_CALLS
|
||||||
ROCKSDB_L0_NUM_FILES_STALL_MICROS
|
|
||||||
ROCKSDB_L0_SLOWDOWN_MICROS
|
|
||||||
ROCKSDB_MEMTABLE_COMPACTION_MICROS
|
|
||||||
ROCKSDB_MEMTABLE_HIT
|
ROCKSDB_MEMTABLE_HIT
|
||||||
ROCKSDB_MEMTABLE_MISS
|
ROCKSDB_MEMTABLE_MISS
|
||||||
ROCKSDB_NO_FILE_CLOSES
|
ROCKSDB_NO_FILE_CLOSES
|
||||||
@@ -1571,6 +1580,7 @@ ROCKSDB_NUMBER_SUPERVERSION_CLEANUPS
|
|||||||
ROCKSDB_NUMBER_SUPERVERSION_RELEASES
|
ROCKSDB_NUMBER_SUPERVERSION_RELEASES
|
||||||
ROCKSDB_RATE_LIMIT_DELAY_MILLIS
|
ROCKSDB_RATE_LIMIT_DELAY_MILLIS
|
||||||
ROCKSDB_SNAPSHOT_CONFLICT_ERRORS
|
ROCKSDB_SNAPSHOT_CONFLICT_ERRORS
|
||||||
|
ROCKSDB_STALL_MICROS
|
||||||
ROCKSDB_WAL_BYTES
|
ROCKSDB_WAL_BYTES
|
||||||
ROCKSDB_WAL_GROUP_SYNCS
|
ROCKSDB_WAL_GROUP_SYNCS
|
||||||
ROCKSDB_WAL_SYNCED
|
ROCKSDB_WAL_SYNCED
|
||||||
@@ -1587,10 +1597,15 @@ ROCKSDB_ROWS_INSERTED
|
|||||||
ROCKSDB_ROWS_READ
|
ROCKSDB_ROWS_READ
|
||||||
ROCKSDB_ROWS_UPDATED
|
ROCKSDB_ROWS_UPDATED
|
||||||
ROCKSDB_ROWS_DELETED_BLIND
|
ROCKSDB_ROWS_DELETED_BLIND
|
||||||
|
ROCKSDB_ROWS_EXPIRED
|
||||||
ROCKSDB_SYSTEM_ROWS_DELETED
|
ROCKSDB_SYSTEM_ROWS_DELETED
|
||||||
ROCKSDB_SYSTEM_ROWS_INSERTED
|
ROCKSDB_SYSTEM_ROWS_INSERTED
|
||||||
ROCKSDB_SYSTEM_ROWS_READ
|
ROCKSDB_SYSTEM_ROWS_READ
|
||||||
ROCKSDB_SYSTEM_ROWS_UPDATED
|
ROCKSDB_SYSTEM_ROWS_UPDATED
|
||||||
|
ROCKSDB_MEMTABLE_TOTAL
|
||||||
|
ROCKSDB_MEMTABLE_UNFLUSHED
|
||||||
|
ROCKSDB_QUERIES_POINT
|
||||||
|
ROCKSDB_QUERIES_RANGE
|
||||||
ROCKSDB_BLOCK_CACHE_ADD
|
ROCKSDB_BLOCK_CACHE_ADD
|
||||||
ROCKSDB_BLOCK_CACHE_DATA_HIT
|
ROCKSDB_BLOCK_CACHE_DATA_HIT
|
||||||
ROCKSDB_BLOCK_CACHE_DATA_MISS
|
ROCKSDB_BLOCK_CACHE_DATA_MISS
|
||||||
@@ -1614,9 +1629,6 @@ ROCKSDB_COMPACTION_KEY_DROP_OBSOLETE
|
|||||||
ROCKSDB_COMPACTION_KEY_DROP_USER
|
ROCKSDB_COMPACTION_KEY_DROP_USER
|
||||||
ROCKSDB_FLUSH_WRITE_BYTES
|
ROCKSDB_FLUSH_WRITE_BYTES
|
||||||
ROCKSDB_GETUPDATESSINCE_CALLS
|
ROCKSDB_GETUPDATESSINCE_CALLS
|
||||||
ROCKSDB_L0_NUM_FILES_STALL_MICROS
|
|
||||||
ROCKSDB_L0_SLOWDOWN_MICROS
|
|
||||||
ROCKSDB_MEMTABLE_COMPACTION_MICROS
|
|
||||||
ROCKSDB_MEMTABLE_HIT
|
ROCKSDB_MEMTABLE_HIT
|
||||||
ROCKSDB_MEMTABLE_MISS
|
ROCKSDB_MEMTABLE_MISS
|
||||||
ROCKSDB_NO_FILE_CLOSES
|
ROCKSDB_NO_FILE_CLOSES
|
||||||
@@ -1644,6 +1656,7 @@ ROCKSDB_NUMBER_SUPERVERSION_CLEANUPS
|
|||||||
ROCKSDB_NUMBER_SUPERVERSION_RELEASES
|
ROCKSDB_NUMBER_SUPERVERSION_RELEASES
|
||||||
ROCKSDB_RATE_LIMIT_DELAY_MILLIS
|
ROCKSDB_RATE_LIMIT_DELAY_MILLIS
|
||||||
ROCKSDB_SNAPSHOT_CONFLICT_ERRORS
|
ROCKSDB_SNAPSHOT_CONFLICT_ERRORS
|
||||||
|
ROCKSDB_STALL_MICROS
|
||||||
ROCKSDB_WAL_BYTES
|
ROCKSDB_WAL_BYTES
|
||||||
ROCKSDB_WAL_GROUP_SYNCS
|
ROCKSDB_WAL_GROUP_SYNCS
|
||||||
ROCKSDB_WAL_SYNCED
|
ROCKSDB_WAL_SYNCED
|
||||||
@@ -1752,6 +1765,7 @@ INSERT INTO t1 SET id=123, blob_col='' ON DUPLICATE KEY UPDATE bl
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# Issue #17: Automatic per-index column families
|
# Issue #17: Automatic per-index column families
|
||||||
|
# (Now deprecated)
|
||||||
#
|
#
|
||||||
create table t1 (
|
create table t1 (
|
||||||
id int not null,
|
id int not null,
|
||||||
@@ -1759,40 +1773,7 @@ key1 int,
|
|||||||
PRIMARY KEY (id),
|
PRIMARY KEY (id),
|
||||||
index (key1) comment '$per_index_cf'
|
index (key1) comment '$per_index_cf'
|
||||||
) engine=rocksdb;
|
) engine=rocksdb;
|
||||||
#Same CF ids with different CF flags
|
ERROR HY000: The per-index column family option has been deprecated
|
||||||
create table t1_err (
|
|
||||||
id int not null,
|
|
||||||
key1 int,
|
|
||||||
PRIMARY KEY (id),
|
|
||||||
index (key1) comment 'test.t1.key1'
|
|
||||||
) engine=rocksdb;
|
|
||||||
ERROR HY000: Column family ('test.t1.key1') flag (0) is different from an existing flag (2). Assign a new CF flag, or do not change existing CF flag.
|
|
||||||
create table t1_err (
|
|
||||||
id int not null,
|
|
||||||
key1 int,
|
|
||||||
PRIMARY KEY (id),
|
|
||||||
index (key1) comment 'test.t1.key2'
|
|
||||||
) engine=rocksdb;
|
|
||||||
drop table t1_err;
|
|
||||||
# Unfortunately there is no way to check which column family everything goes to
|
|
||||||
insert into t1 values (1,1);
|
|
||||||
select * from t1;
|
|
||||||
id key1
|
|
||||||
1 1
|
|
||||||
# Check that ALTER and RENAME are disallowed
|
|
||||||
alter table t1 add col2 int;
|
|
||||||
ERROR 42000: This version of MariaDB doesn't yet support 'ALTER TABLE on table with per-index CF'
|
|
||||||
rename table t1 to t2;
|
|
||||||
ERROR 42000: This version of MariaDB doesn't yet support 'ALTER TABLE on table with per-index CF'
|
|
||||||
drop table t1;
|
|
||||||
# Check detection of typos in $per_index_cf
|
|
||||||
create table t1 (
|
|
||||||
id int not null,
|
|
||||||
key1 int,
|
|
||||||
PRIMARY KEY (id),
|
|
||||||
index (key1) comment '$per_idnex_cf'
|
|
||||||
)engine=rocksdb;
|
|
||||||
ERROR 42000: This version of MariaDB doesn't yet support 'column family name looks like a typo of $per_index_cf.'
|
|
||||||
#
|
#
|
||||||
# Issue #22: SELECT ... FOR UPDATE takes a long time
|
# Issue #22: SELECT ... FOR UPDATE takes a long time
|
||||||
#
|
#
|
||||||
@@ -2268,6 +2249,7 @@ INSERT INTO t1 VALUES(1, 2);
|
|||||||
INSERT INTO t1 VALUES(1, 3);
|
INSERT INTO t1 VALUES(1, 3);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
id value
|
id value
|
||||||
|
1 3
|
||||||
REPLACE INTO t1 VALUES(4, 4);
|
REPLACE INTO t1 VALUES(4, 4);
|
||||||
ERROR HY000: When unique checking is disabled in MyRocks, INSERT,UPDATE,LOAD statements with clauses that update or replace the key (i.e. INSERT ON DUPLICATE KEY UPDATE, REPLACE) are not allowed. Query: REPLACE INTO t1 VALUES(4, 4)
|
ERROR HY000: When unique checking is disabled in MyRocks, INSERT,UPDATE,LOAD statements with clauses that update or replace the key (i.e. INSERT ON DUPLICATE KEY UPDATE, REPLACE) are not allowed. Query: REPLACE INTO t1 VALUES(4, 4)
|
||||||
INSERT INTO t1 VALUES(5, 5) ON DUPLICATE KEY UPDATE value=value+1;
|
INSERT INTO t1 VALUES(5, 5) ON DUPLICATE KEY UPDATE value=value+1;
|
||||||
|
@@ -348,6 +348,9 @@ ALTER TABLE t2 ADD KEY (`col3`, `col4`) COMMENT 'custom_p5_cfname=another_cf_for
|
|||||||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5';
|
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5';
|
||||||
cf_name
|
cf_name
|
||||||
another_cf_for_p5
|
another_cf_for_p5
|
||||||
|
ANALYZE TABLE t2;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t2 analyze status OK
|
||||||
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567;
|
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567;
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 custom_p2 ref col3 col3 258 const 1 Using where
|
1 SIMPLE t2 custom_p2 ref col3 col3 258 const 1 Using where
|
||||||
@@ -407,3 +410,14 @@ cf_name
|
|||||||
notsharedcf
|
notsharedcf
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
DROP TABLE IF EXISTS t2;
|
DROP TABLE IF EXISTS t2;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT NOT NULL,
|
||||||
|
PRIMARY KEY (a) COMMENT 'p1_cfname=foo;'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
PARTITION BY LIST COLUMNS(a)
|
||||||
|
(PARTITION p1 VALUES IN (1) ENGINE = ROCKSDB);
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -57,7 +57,7 @@ UPDATE t1 SET value=30 WHERE id=3;
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
connection con1;
|
connection con1;
|
||||||
SELECT * FROM t1 WHERE id=3 FOR UPDATE;
|
SELECT * FROM t1 WHERE id=3 FOR UPDATE;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
connection default;
|
connection default;
|
||||||
|
@@ -94,7 +94,7 @@ drop table t1, t2;
|
|||||||
CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(5)) PARTITION BY HASH(c1) PARTITIONS 4;
|
CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(5)) PARTITION BY HASH(c1) PARTITIONS 4;
|
||||||
INSERT INTO t1 VALUES(1,'a');
|
INSERT INTO t1 VALUES(1,'a');
|
||||||
RENAME TABLE t1 TO db3.t3;
|
RENAME TABLE t1 TO db3.t3;
|
||||||
ERROR HY000: Error on rename of './test/t1' to './db3/t3' (errno: 122 "Internal (unspecified) error in handler")
|
ERROR HY000: Error on rename of './test/t1' to './db3/t3' (errno: -1 - Unknown error -1)
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
c1 c2
|
c1 c2
|
||||||
1 a
|
1 a
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
call mtr.add_suppression("Did not write failed ");
|
call mtr.add_suppression("Did not write failed ");
|
||||||
call mtr.add_suppression("Can't open and lock privilege tables");
|
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||||
|
call mtr.add_suppression("Attempt to delete the trigger file");
|
||||||
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
||||||
CREATE TABLE mysql.user_temp LIKE mysql.user;
|
CREATE TABLE mysql.user_temp LIKE mysql.user;
|
||||||
INSERT mysql.user_temp SELECT * FROM mysql.user;
|
INSERT mysql.user_temp SELECT * FROM mysql.user;
|
||||||
|
@@ -7,14 +7,17 @@ CREATE TABLE t2 (j INT, PRIMARY KEY (j) COMMENT 'rev:cf_t2') ENGINE = ROCKSDB;
|
|||||||
CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB;
|
CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB;
|
||||||
CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
|
CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
|
||||||
PARTITION BY KEY(l) PARTITIONS 4;
|
PARTITION BY KEY(l) PARTITIONS 4;
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
SHOW ENGINE rocksdb STATUS;
|
SHOW ENGINE rocksdb STATUS;
|
||||||
Type Name Status
|
Type Name Status
|
||||||
DBSTATS rocksdb #
|
STATISTICS # #
|
||||||
CF_COMPACTION __system__ #
|
DBSTATS # #
|
||||||
CF_COMPACTION cf_t1 #
|
CF_COMPACTION # #
|
||||||
CF_COMPACTION default #
|
CF_COMPACTION # #
|
||||||
CF_COMPACTION rev:cf_t2 #
|
CF_COMPACTION # #
|
||||||
Memory_Stats rocksdb #
|
CF_COMPACTION # #
|
||||||
|
MEMORY_STATS # #
|
||||||
|
BG_THREADS # #
|
||||||
INSERT INTO t1 VALUES (1), (2), (3);
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@@ -125,19 +128,30 @@ __system__ PREFIX_EXTRACTOR #
|
|||||||
__system__ COMPACTION_STYLE #
|
__system__ COMPACTION_STYLE #
|
||||||
__system__ COMPACTION_OPTIONS_UNIVERSAL #
|
__system__ COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
__system__ COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
__system__ COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
__system__ TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
__system__ TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
__system__ TABLE_FACTORY::INDEX_TYPE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
__system__ TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
__system__ TABLE_FACTORY::CHECKSUM #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
__system__ TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
__system__ TABLE_FACTORY::BLOCK_CACHE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
__system__ TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
__system__ TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
__system__ TABLE_FACTORY::CAPACITY #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
__system__ TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
__system__ TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
__system__ TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
__system__ TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
__system__ TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
__system__ TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
__system__ TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
__system__ TABLE_FACTORY::FORMAT_VERSION #
|
||||||
cf_t1 COMPARATOR #
|
cf_t1 COMPARATOR #
|
||||||
cf_t1 MERGE_OPERATOR #
|
cf_t1 MERGE_OPERATOR #
|
||||||
cf_t1 COMPACTION_FILTER #
|
cf_t1 COMPACTION_FILTER #
|
||||||
@@ -179,19 +193,30 @@ cf_t1 PREFIX_EXTRACTOR #
|
|||||||
cf_t1 COMPACTION_STYLE #
|
cf_t1 COMPACTION_STYLE #
|
||||||
cf_t1 COMPACTION_OPTIONS_UNIVERSAL #
|
cf_t1 COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
cf_t1 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
cf_t1 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
cf_t1 TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
cf_t1 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
cf_t1 TABLE_FACTORY::INDEX_TYPE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
cf_t1 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
cf_t1 TABLE_FACTORY::CHECKSUM #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
cf_t1 TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
cf_t1 TABLE_FACTORY::CAPACITY #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
cf_t1 TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
cf_t1 TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
cf_t1 TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
cf_t1 TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
cf_t1 TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
cf_t1 TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
cf_t1 TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
cf_t1 TABLE_FACTORY::FORMAT_VERSION #
|
||||||
default COMPARATOR #
|
default COMPARATOR #
|
||||||
default MERGE_OPERATOR #
|
default MERGE_OPERATOR #
|
||||||
default COMPACTION_FILTER #
|
default COMPACTION_FILTER #
|
||||||
@@ -233,19 +258,30 @@ default PREFIX_EXTRACTOR #
|
|||||||
default COMPACTION_STYLE #
|
default COMPACTION_STYLE #
|
||||||
default COMPACTION_OPTIONS_UNIVERSAL #
|
default COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
default COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
default COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
default TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
default TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
default TABLE_FACTORY::INDEX_TYPE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
default TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
default TABLE_FACTORY::CHECKSUM #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
default TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
default TABLE_FACTORY::BLOCK_CACHE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
default TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
default TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
default TABLE_FACTORY::CAPACITY #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
default TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
default TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
default TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
default TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
default TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
default TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
default TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
default TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
default TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
default TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
default TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
default TABLE_FACTORY::FORMAT_VERSION #
|
||||||
rev:cf_t2 COMPARATOR #
|
rev:cf_t2 COMPARATOR #
|
||||||
rev:cf_t2 MERGE_OPERATOR #
|
rev:cf_t2 MERGE_OPERATOR #
|
||||||
rev:cf_t2 COMPACTION_FILTER #
|
rev:cf_t2 COMPACTION_FILTER #
|
||||||
@@ -287,19 +323,30 @@ rev:cf_t2 PREFIX_EXTRACTOR #
|
|||||||
rev:cf_t2 COMPACTION_STYLE #
|
rev:cf_t2 COMPACTION_STYLE #
|
||||||
rev:cf_t2 COMPACTION_OPTIONS_UNIVERSAL #
|
rev:cf_t2 COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
rev:cf_t2 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
rev:cf_t2 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
rev:cf_t2 TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
rev:cf_t2 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
rev:cf_t2 TABLE_FACTORY::INDEX_TYPE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
rev:cf_t2 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
rev:cf_t2 TABLE_FACTORY::CHECKSUM #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
rev:cf_t2 TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
rev:cf_t2 TABLE_FACTORY::CAPACITY #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
rev:cf_t2 TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::FORMAT_VERSION #
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE t3;
|
DROP TABLE t3;
|
||||||
@@ -336,6 +383,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
SHOW ENGINE rocksdb TRANSACTION STATUS
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
lock count 0, write count 0
|
lock count 0, write count 0
|
||||||
|
insert count 0, update count 0, delete count 0
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
=========================================
|
=========================================
|
||||||
|
@@ -63,4 +63,24 @@ true
|
|||||||
select case when variable_value-@d < 10 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_delete';
|
select case when variable_value-@d < 10 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_delete';
|
||||||
case when variable_value-@d < 10 then 'true' else 'false' end
|
case when variable_value-@d < 10 then 'true' else 'false' end
|
||||||
true
|
true
|
||||||
DROP TABLE t1, t2, t3, t4, t5;
|
CREATE TABLE t6 (
|
||||||
|
pk VARCHAR(64) COLLATE latin1_swedish_ci PRIMARY KEY
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t6 VALUES ('a');
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
a
|
||||||
|
UPDATE t6 SET pk='A' WHERE pk='a';
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
A
|
||||||
|
DELETE FROM t6 where pk='A';
|
||||||
|
SELECT should return nothing;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT should return nothing;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
DROP TABLE t1, t2, t3, t4, t5, t6;
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data';
|
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data';
|
||||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
ERROR HY000: Got error 195 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Warning 1296 Got error 198 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB
|
Warning 1296 Got error 198 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||||
Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||||
Warning 1030 Got error 140 "Wrong create options" from storage engine ROCKSDB
|
Warning 1030 Got error 140 "Wrong create options" from storage engine ROCKSDB
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index';
|
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index';
|
||||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
ERROR HY000: Got error 196 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Warning 1296 Got error 199 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB
|
Warning 1296 Got error 199 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||||
@@ -21,7 +21,7 @@ PARTITION P1 VALUES LESS THAN (2000)
|
|||||||
DATA DIRECTORY = '/foo/bar/data/',
|
DATA DIRECTORY = '/foo/bar/data/',
|
||||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||||
);
|
);
|
||||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
ERROR HY000: Got error 195 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||||
CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE (id)
|
CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE (id)
|
||||||
(
|
(
|
||||||
PARTITION P0 VALUES LESS THAN (1000)
|
PARTITION P0 VALUES LESS THAN (1000)
|
||||||
@@ -30,4 +30,4 @@ PARTITION P1 VALUES LESS THAN (2000)
|
|||||||
INDEX DIRECTORY = '/foo/bar/data/',
|
INDEX DIRECTORY = '/foo/bar/data/',
|
||||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||||
);
|
);
|
||||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
ERROR HY000: Got error 196 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||||
|
491
storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result
Normal file
491
storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result
Normal file
@@ -0,0 +1,491 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
`a` binary(8) NOT NULL,
|
||||||
|
`b` varbinary(64) NOT NULL,
|
||||||
|
`c` varbinary(256) NOT NULL,
|
||||||
|
`ts` bigint(20) UNSIGNED NOT NULL,
|
||||||
|
`value` mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (`b`,`a`,`c`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5);
|
||||||
|
INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, 5, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, 4, 6, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, 5, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, 4, 6, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int,
|
||||||
|
c int,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, NULL, NULL, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, NULL, NULL, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
`a` binary(8) NOT NULL,
|
||||||
|
`b` varbinary(64),
|
||||||
|
`c` varbinary(256),
|
||||||
|
`ts` bigint(20) UNSIGNED NOT NULL,
|
||||||
|
`value` mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values ('d', 'efghijk', NULL, UNIX_TIMESTAMP(), 'l');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, 5);
|
||||||
|
INSERT INTO t1 values (2, 4, 6);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a, ts)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;ttl_col=ts;';
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, UNIX_TIMESTAMP());
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = -10;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 10;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a, ts)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5);
|
||||||
|
INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
`a` binary(8) NOT NULL,
|
||||||
|
`b` varbinary(64),
|
||||||
|
`c` varbinary(256),
|
||||||
|
`ts` bigint(20) UNSIGNED NOT NULL,
|
||||||
|
`value` mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (`a`, `ts`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values ('de', 'fghijk', NULL, UNIX_TIMESTAMP(), 'l');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT NOT NULL,
|
||||||
|
b varbinary(64) NOT NULL,
|
||||||
|
c varbinary(256) NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
value mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (b,a,c)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=10;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1, 'b', 'c', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values (2, 'e', 'f', UNIX_TIMESTAMP(), 'g');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (3, 'i', 'j', UNIX_TIMESTAMP(), 'k');
|
||||||
|
INSERT INTO t1 values (4, 'm', 'n', UNIX_TIMESTAMP(), 'o');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = -3600;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
4
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts bigint(20),
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
ERROR HY000: TTL column (ts) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts int,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
ERROR HY000: TTL column (ts) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=abc;';
|
||||||
|
ERROR HY000: TTL duration (abc) in MyRocks must be an unsigned non-null 64-bit integer.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=abc;';
|
||||||
|
ERROR HY000: TTL column (abc) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_col=abc;';
|
||||||
|
ERROR HY000: TTL column (abc) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=500;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
ALTER TABLE t1 COMMENT = 'ttl_duration=1';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COMMENT='ttl_duration=1'
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
ALTER TABLE t1 DROP PRIMARY KEY;
|
||||||
|
ERROR HY000: TTL support is currently disabled when table has secondary indexes or hidden PK.
|
||||||
|
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
|
||||||
|
ERROR HY000: TTL support is currently disabled when table has secondary indexes or hidden PK.
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;';
|
||||||
|
INSERT INTO t1 VALUES (1,1);
|
||||||
|
INSERT INTO t1 VALUES (2,2);
|
||||||
|
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b);
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = -3600;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int,
|
||||||
|
PRIMARY KEY (a,b)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='asdadfasdfsadfadf ;ttl_duration=1; asfasdfasdfadfa';
|
||||||
|
INSERT INTO t1 values (UNIX_TIMESTAMP(), 1);
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
ALTER TABLE t1 COMMENT = 'adsf;;ttl_duration=5;asfasdfa;ttl_col=a;asdfasdf;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (UNIX_TIMESTAMP(), 2);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
INSERT INTO t1 values (9);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
UPDATE t1 SET a=a+1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
2
|
||||||
|
4
|
||||||
|
6
|
||||||
|
8
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
8
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT,
|
||||||
|
b bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;ttl_col=b;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (3, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (5, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (7, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
UPDATE t1 SET b=UNIX_TIMESTAMP() WHERE a < 4;
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_enable_ttl=0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_enable_ttl=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
3
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
@@ -0,0 +1,238 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY,
|
||||||
|
b BIGINT UNSIGNED NOT NULL
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=10;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (2, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (3, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
3
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
3
|
||||||
|
set global rocksdb_debug_ttl_read_filter_ts = -310;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
set global rocksdb_debug_ttl_read_filter_ts = 0;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
c int,
|
||||||
|
PRIMARY KEY (a,b,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (0,0,0);
|
||||||
|
INSERT INTO t1 values (0,0,1);
|
||||||
|
INSERT INTO t1 values (0,1,0);
|
||||||
|
INSERT INTO t1 values (0,1,1);
|
||||||
|
INSERT INTO t1 values (1,1,2);
|
||||||
|
INSERT INTO t1 values (1,2,1);
|
||||||
|
INSERT INTO t1 values (1,2,2);
|
||||||
|
INSERT INTO t1 values (1,2,3);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT * FROM t1 WHERE a=1 AND b=2 AND c=2;
|
||||||
|
a b c
|
||||||
|
SELECT * FROM t1 WHERE a = 1;
|
||||||
|
a b c
|
||||||
|
SELECT max(a) from t1 where a < 3;
|
||||||
|
max(a)
|
||||||
|
NULL
|
||||||
|
SELECT max(a) from t1 where a < 2 AND b = 1 AND c < 3;
|
||||||
|
max(a)
|
||||||
|
NULL
|
||||||
|
SELECT min(a) from t1 where a >= 1;
|
||||||
|
min(a)
|
||||||
|
NULL
|
||||||
|
SELECT min(a) from t1 where a > 1;
|
||||||
|
min(a)
|
||||||
|
NULL
|
||||||
|
select * from t1 where a=1 and b in (1) order by c desc;
|
||||||
|
a b c
|
||||||
|
select max(a) from t1 where a <=10;
|
||||||
|
max(a)
|
||||||
|
NULL
|
||||||
|
select a from t1 where a > 0 and a <= 2;
|
||||||
|
a
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
0
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
8
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -110;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
UPDATE t1 set a = 1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY,
|
||||||
|
b int
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -110;
|
||||||
|
INSERT INTO t1 values (1,1);
|
||||||
|
INSERT INTO t1 values (3,3);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
INSERT INTO t1 values (5,5);
|
||||||
|
UPDATE t1 set a = 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 5
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 5
|
||||||
|
3 3
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=1;
|
||||||
|
UPDATE t1 set a = 999 where a = 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
999 5
|
||||||
|
UPDATE t1 set a = a - 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
998 5
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
# Creating Snapshot (start transaction)
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# Switching to connection 2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
# Switching to connection 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
UPDATE t1 set a = a + 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
COMMIT;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
# On Connection 1
|
||||||
|
# Creating Snapshot (start transaction)
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
# On Connection 2
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -2;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
# On Connection 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
# On Connection 2
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=1;
|
||||||
|
DROP TABLE t1;
|
@@ -0,0 +1,256 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT,
|
||||||
|
PRIMARY KEY (`c1`)
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="custom_p0_ttl_duration=1;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 4, 7),
|
||||||
|
PARTITION custom_p1 VALUES IN (2, 5, 8),
|
||||||
|
PARTITION custom_p2 VALUES IN (3, 6, 9)
|
||||||
|
);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -3600;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (4);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
INSERT INTO t1 values (6);
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
INSERT INTO t1 values (8);
|
||||||
|
INSERT INTO t1 values (9);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
5
|
||||||
|
6
|
||||||
|
8
|
||||||
|
9
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT,
|
||||||
|
c2 INT,
|
||||||
|
name VARCHAR(25) NOT NULL,
|
||||||
|
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=my_custom_cf;custom_p2_cfname=baz'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="custom_p0_ttl_duration=1;custom_p1_ttl_duration=7;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 4, 7),
|
||||||
|
PARTITION custom_p1 VALUES IN (2, 5, 8),
|
||||||
|
PARTITION custom_p2 VALUES IN (3, 6, 9)
|
||||||
|
);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -1200;
|
||||||
|
INSERT INTO t1 values (1,1,'a');
|
||||||
|
INSERT INTO t1 values (4,4,'aaaa');
|
||||||
|
INSERT INTO t1 values (7,7,'aaaaaaa');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 1200;
|
||||||
|
INSERT INTO t1 values (2,2,'aa');
|
||||||
|
INSERT INTO t1 values (3,3,'aaa');
|
||||||
|
INSERT INTO t1 values (5,5,'aaaaa');
|
||||||
|
INSERT INTO t1 values (6,6,'aaaaaa');
|
||||||
|
INSERT INTO t1 values (8,8,'aaaaaaaa');
|
||||||
|
INSERT INTO t1 values (9,9,'aaaaaaaaa');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
1 1 a
|
||||||
|
2 2 aa
|
||||||
|
3 3 aaa
|
||||||
|
4 4 aaaa
|
||||||
|
5 5 aaaaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
7 7 aaaaaaa
|
||||||
|
8 8 aaaaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
set @@global.rocksdb_compact_cf = 'my_custom_cf';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
2 2 aa
|
||||||
|
3 3 aaa
|
||||||
|
5 5 aaaaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
8 8 aaaaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
2 2 aa
|
||||||
|
3 3 aaa
|
||||||
|
5 5 aaaaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
8 8 aaaaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
set @@global.rocksdb_compact_cf = 'my_custom_cf';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
3 3 aaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT,
|
||||||
|
c2 INT,
|
||||||
|
name VARCHAR(25) NOT NULL,
|
||||||
|
event DATE,
|
||||||
|
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="custom_p0_ttl_duration=9999;custom_p2_ttl_duration=5;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 2, 3),
|
||||||
|
PARTITION custom_p1 VALUES IN (4, 5, 6),
|
||||||
|
PARTITION custom_p2 VALUES IN (7, 8, 9)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (1, 1, "one", null);
|
||||||
|
INSERT INTO t1 VALUES (2, 2, "two", null);
|
||||||
|
INSERT INTO t1 VALUES (3, 3, "three", null);
|
||||||
|
INSERT INTO t1 VALUES (4, 4, "four", null);
|
||||||
|
INSERT INTO t1 VALUES (5, 5, "five", null);
|
||||||
|
INSERT INTO t1 VALUES (6, 6, "six", null);
|
||||||
|
INSERT INTO t1 VALUES (7, 7, "seven", null);
|
||||||
|
INSERT INTO t1 VALUES (8, 8, "eight", null);
|
||||||
|
INSERT INTO t1 VALUES (9, 9, "nine", null);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name event
|
||||||
|
1 1 one NULL
|
||||||
|
2 2 two NULL
|
||||||
|
3 3 three NULL
|
||||||
|
4 4 four NULL
|
||||||
|
5 5 five NULL
|
||||||
|
6 6 six NULL
|
||||||
|
7 7 seven NULL
|
||||||
|
8 8 eight NULL
|
||||||
|
9 9 nine NULL
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 600;
|
||||||
|
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(`c2`,`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL DEFAULT '0',
|
||||||
|
`c2` int(11) NOT NULL DEFAULT '0',
|
||||||
|
`name` varchar(25) NOT NULL,
|
||||||
|
`event` date DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`c2`,`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COMMENT='custom_p0_ttl_duration=9999;custom_p2_ttl_duration=5;'
|
||||||
|
/*!50100 PARTITION BY LIST (c1)
|
||||||
|
(PARTITION custom_p0 VALUES IN (1,2,3) ENGINE = ROCKSDB,
|
||||||
|
PARTITION custom_p1 VALUES IN (4,5,6) ENGINE = ROCKSDB,
|
||||||
|
PARTITION custom_p2 VALUES IN (7,8,9) ENGINE = ROCKSDB) */
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 100;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'baz';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name event
|
||||||
|
1 1 one NULL
|
||||||
|
2 2 two NULL
|
||||||
|
3 3 three NULL
|
||||||
|
4 4 four NULL
|
||||||
|
5 5 five NULL
|
||||||
|
6 6 six NULL
|
||||||
|
7 7 seven NULL
|
||||||
|
8 8 eight NULL
|
||||||
|
9 9 nine NULL
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 1200;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
set @@global.rocksdb_compact_cf = 'baz';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name event
|
||||||
|
1 1 one NULL
|
||||||
|
2 2 two NULL
|
||||||
|
3 3 three NULL
|
||||||
|
4 4 four NULL
|
||||||
|
5 5 five NULL
|
||||||
|
6 6 six NULL
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 BIGINT,
|
||||||
|
c2 BIGINT UNSIGNED NOT NULL,
|
||||||
|
name VARCHAR(25) NOT NULL,
|
||||||
|
event DATE,
|
||||||
|
PRIMARY KEY (`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="ttl_duration=1;custom_p1_ttl_duration=100;custom_p1_ttl_col=c2;custom_p2_ttl_duration=5000;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 2, 3),
|
||||||
|
PARTITION custom_p1 VALUES IN (4, 5, 6),
|
||||||
|
PARTITION custom_p2 VALUES IN (7, 8, 9)
|
||||||
|
);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 VALUES (1, UNIX_TIMESTAMP(), "one", null);
|
||||||
|
INSERT INTO t1 VALUES (2, UNIX_TIMESTAMP(), "two", null);
|
||||||
|
INSERT INTO t1 VALUES (3, UNIX_TIMESTAMP(), "three", null);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
INSERT INTO t1 VALUES (4, UNIX_TIMESTAMP(), "four", null);
|
||||||
|
INSERT INTO t1 VALUES (5, UNIX_TIMESTAMP(), "five", null);
|
||||||
|
INSERT INTO t1 VALUES (6, UNIX_TIMESTAMP(), "six", null);
|
||||||
|
INSERT INTO t1 VALUES (7, UNIX_TIMESTAMP(), "seven", null);
|
||||||
|
INSERT INTO t1 VALUES (8, UNIX_TIMESTAMP(), "eight", null);
|
||||||
|
INSERT INTO t1 VALUES (9, UNIX_TIMESTAMP(), "nine", null);
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
set @@global.rocksdb_compact_cf = 'baz';
|
||||||
|
set @@global.rocksdb_compact_cf = 'bar';
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 600;
|
||||||
|
set @@global.rocksdb_compact_cf = 'bar';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 BIGINT,
|
||||||
|
c2 BIGINT UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (`c1`, `c2`)
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="ttl_duration=100;ttl_col=c2;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1),
|
||||||
|
PARTITION custom_p1 VALUES IN (2),
|
||||||
|
PARTITION custom_p2 VALUES IN (3)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (3, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 300;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
DROP TABLE t1;
|
@@ -77,4 +77,39 @@ a
|
|||||||
Africa,Europe,Asia
|
Africa,Europe,Asia
|
||||||
S.America,Europe
|
S.America,Europe
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a SET('N.America','S.America','Africa','Antarctica','Australia','Europe','Asia'),
|
||||||
|
b SET('test1','test2','test3','test4','test5'),
|
||||||
|
c SET('01','22','23','33','34','39','40','44','50','63','64'),
|
||||||
|
pk SET('1','2','3','4','5','6','7','8','9') PRIMARY KEY,
|
||||||
|
UNIQUE INDEX b_a (b,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 pk A 1000 NULL NULL LSMTREE
|
||||||
|
t1 0 b_a 1 b A 500 NULL NULL YES LSMTREE
|
||||||
|
t1 0 b_a 2 a A 1000 NULL NULL YES LSMTREE
|
||||||
|
INSERT INTO t1 (a,b,c,pk) VALUES
|
||||||
|
('','test2,test3','01,34,44,23',1),
|
||||||
|
('',5,2,2),
|
||||||
|
('N.America,Asia','test4,test2','',3),
|
||||||
|
('Africa,Europe,Asia','test2,test3','01',4),
|
||||||
|
('Antarctica','test3','34,44',5),
|
||||||
|
('Asia','test5','50',6),
|
||||||
|
('Europe,S.America','test1,','39',7);
|
||||||
|
Warnings:
|
||||||
|
Warning 1265 Data truncated for column 'b' at row 7
|
||||||
|
EXPLAIN SELECT DISTINCT a, b FROM t1 ORDER BY b DESC, a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using temporary; Using filesort
|
||||||
|
SELECT DISTINCT a, b FROM t1 ORDER BY b DESC, a;
|
||||||
|
a b
|
||||||
|
test1,test3
|
||||||
|
test2,test3
|
||||||
|
Africa,Europe,Asia test2,test3
|
||||||
|
Antarctica test3
|
||||||
|
Asia test5
|
||||||
|
N.America,Asia test2,test4
|
||||||
|
S.America,Europe test1
|
||||||
|
DROP TABLE t1;
|
||||||
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK = @ORIG_PAUSE_BACKGROUND_WORK;
|
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK = @ORIG_PAUSE_BACKGROUND_WORK;
|
||||||
|
@@ -190,6 +190,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -302,6 +305,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -414,6 +420,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -526,6 +535,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -638,6 +650,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
|
260
storage/rocksdb/mysql-test/rocksdb/r/varbinary_format.result
Normal file
260
storage/rocksdb/mysql-test/rocksdb/r/varbinary_format.result
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
CREATE TABLE t1(
|
||||||
|
vb VARBINARY(64) primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 values(0x00);
|
||||||
|
INSERT INTO t1 values(0x0000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000);
|
||||||
|
SELECT hex(vb) FROM t1;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
BEGIN;
|
||||||
|
SELECT hex(vb) FROM t1 FOR UPDATE;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
000000000000000001
|
||||||
|
000000000000000002
|
||||||
|
000000000000000003
|
||||||
|
000000000000000004
|
||||||
|
000000000000000005
|
||||||
|
000000000000000006
|
||||||
|
000000000000000007
|
||||||
|
000000000000000008
|
||||||
|
000000000000000009000000000000000001
|
||||||
|
000000000000000009000000000000000002
|
||||||
|
000000000000000009000000000000000009000000000000000009000000000000000007
|
||||||
|
000000000000000009000000000000000009000000000000000009000000000000000008
|
||||||
|
000000000000000009000000000000000009000000000000000009000000000000000009000000000000000001
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set session debug= '+d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
CREATE TABLE t1(
|
||||||
|
vb VARBINARY(64) primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
set session debug= '-d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
INSERT INTO t1 values(0x00);
|
||||||
|
INSERT INTO t1 values(0x0000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000);
|
||||||
|
SELECT hex(vb) FROM t1;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
BEGIN;
|
||||||
|
SELECT hex(vb) FROM t1 FOR UPDATE;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
0000000000000000f8
|
||||||
|
0000000000000000f9
|
||||||
|
0000000000000000fa
|
||||||
|
0000000000000000fb
|
||||||
|
0000000000000000fc
|
||||||
|
0000000000000000fd
|
||||||
|
0000000000000000fe
|
||||||
|
0000000000000000ff0000000000000000f7
|
||||||
|
0000000000000000ff0000000000000000f8
|
||||||
|
0000000000000000ff0000000000000000f9
|
||||||
|
0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000fe
|
||||||
|
0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000f7
|
||||||
|
0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000f8
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
vc VARCHAR(64) collate 'binary' primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 values('a');
|
||||||
|
INSERT INTO t1 values('aa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaa');
|
||||||
|
INSERT INTO t1 values('aaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaa');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1 FOR UPDATE;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
610000000000000001
|
||||||
|
616100000000000002
|
||||||
|
616161000000000003
|
||||||
|
616161610000000004
|
||||||
|
616161616100000005
|
||||||
|
616161616161000006
|
||||||
|
616161616161610007
|
||||||
|
616161616161616108
|
||||||
|
616161616161616109610000000000000001
|
||||||
|
616161616161616109616100000000000002
|
||||||
|
616161616161616109616161616161616109616161616161616109616161616161610007
|
||||||
|
616161616161616109616161616161616109616161616161616109616161616161616108
|
||||||
|
616161616161616109616161616161616109616161616161616109616161616161616109610000000000000001
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set session debug= '+d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
CREATE TABLE t1(
|
||||||
|
vc VARCHAR(64) collate 'binary' primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
set session debug= '-d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
INSERT INTO t1 values('a');
|
||||||
|
INSERT INTO t1 values('aa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaa');
|
||||||
|
INSERT INTO t1 values('aaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaa');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1 FOR UPDATE;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
6100000000000000f8
|
||||||
|
6161000000000000f9
|
||||||
|
6161610000000000fa
|
||||||
|
6161616100000000fb
|
||||||
|
6161616161000000fc
|
||||||
|
6161616161610000fd
|
||||||
|
6161616161616100fe
|
||||||
|
6161616161616161ff0000000000000000f7
|
||||||
|
6161616161616161ff6100000000000000f8
|
||||||
|
6161616161616161ff6161000000000000f9
|
||||||
|
6161616161616161ff6161616161616161ff6161616161616161ff6161616161616100fe
|
||||||
|
6161616161616161ff6161616161616161ff6161616161616161ff6161616161616161ff0000000000000000f7
|
||||||
|
6161616161616161ff6161616161616161ff6161616161616161ff6161616161616161ff6100000000000000f8
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
@@ -1,8 +1,8 @@
|
|||||||
SET GLOBAL rocksdb_write_disable_wal=false;
|
SET GLOBAL rocksdb_write_disable_wal=false;
|
||||||
SET GLOBAL rocksdb_write_ignore_missing_column_families=true;
|
SET GLOBAL rocksdb_write_ignore_missing_column_families=true;
|
||||||
create table aaa (id int primary key, i int) engine rocksdb;
|
create table aaa (id int primary key, i int) engine rocksdb;
|
||||||
set @save_rocksdb_flush_log_at_trx_commit= @@global.rocksdb_flush_log_at_trx_commit;
|
set @save_rocksdb_flush_log_at_trx_commit=@@global.rocksdb_flush_log_at_trx_commit;
|
||||||
SET LOCAL rocksdb_flush_log_at_trx_commit=0;
|
SET GLOBAL rocksdb_flush_log_at_trx_commit=0;
|
||||||
select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
select variable_value into @a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
||||||
insert aaa(id, i) values(1,1);
|
insert aaa(id, i) values(1,1);
|
||||||
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
||||||
@@ -16,7 +16,7 @@ insert aaa(id, i) values(3,1);
|
|||||||
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
||||||
variable_value-@a
|
variable_value-@a
|
||||||
0
|
0
|
||||||
SET LOCAL rocksdb_flush_log_at_trx_commit=1;
|
SET GLOBAL rocksdb_flush_log_at_trx_commit=1;
|
||||||
insert aaa(id, i) values(4,1);
|
insert aaa(id, i) values(4,1);
|
||||||
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
||||||
variable_value-@a
|
variable_value-@a
|
||||||
@@ -29,12 +29,10 @@ insert aaa(id, i) values(6,1);
|
|||||||
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_wal_synced';
|
||||||
variable_value-@a
|
variable_value-@a
|
||||||
3
|
3
|
||||||
SET GLOBAL rocksdb_background_sync=on;
|
SET GLOBAL rocksdb_flush_log_at_trx_commit=2;
|
||||||
SET LOCAL rocksdb_flush_log_at_trx_commit=0;
|
|
||||||
insert aaa(id, i) values(7,1);
|
insert aaa(id, i) values(7,1);
|
||||||
truncate table aaa;
|
truncate table aaa;
|
||||||
drop table aaa;
|
drop table aaa;
|
||||||
SET GLOBAL rocksdb_flush_log_at_trx_commit=@save_rocksdb_flush_log_at_trx_commit;
|
set @@global.rocksdb_flush_log_at_trx_commit=@save_rocksdb_flush_log_at_trx_commit;
|
||||||
SET GLOBAL rocksdb_write_disable_wal=false;
|
SET GLOBAL rocksdb_write_disable_wal=false;
|
||||||
SET GLOBAL rocksdb_write_ignore_missing_column_families=false;
|
SET GLOBAL rocksdb_write_ignore_missing_column_families=false;
|
||||||
SET GLOBAL rocksdb_background_sync=off;
|
|
||||||
|
@@ -173,7 +173,7 @@ set @tmp_rocksdb_strict_collation_check= @@rocksdb_strict_collation_check;
|
|||||||
set global rocksdb_strict_collation_check=1;
|
set global rocksdb_strict_collation_check=1;
|
||||||
CREATE TABLE t1 (a INT, b TEXT);
|
CREATE TABLE t1 (a INT, b TEXT);
|
||||||
|
|
||||||
--error 1105
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
ALTER TABLE t1 ADD KEY kb(b(10));
|
ALTER TABLE t1 ADD KEY kb(b(10));
|
||||||
ALTER TABLE t1 ADD PRIMARY KEY(a);
|
ALTER TABLE t1 ADD PRIMARY KEY(a);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -345,3 +345,48 @@ while ($i <= $max) {
|
|||||||
#SHOW TABLE STATUS WHERE name LIKE 't1';
|
#SHOW TABLE STATUS WHERE name LIKE 't1';
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# https://github.com/facebook/mysql-5.6/issues/602
|
||||||
|
# Add then drop same index should be optimized out.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT,
|
||||||
|
c INT,
|
||||||
|
KEY kbc(b,c)) ENGINE = ROCKSDB;
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (3,3,3);
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc, ADD INDEX kbc(b,c), ALGORITHM=INPLACE;
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# Make sure changing key part prefix length causes index rebuild as well.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b varchar(10),
|
||||||
|
index kb(b(5))
|
||||||
|
) ENGINE = ROCKSDB charset utf8 collate utf8_bin;
|
||||||
|
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'1111122222');
|
||||||
|
INSERT INTO t1 (a,b) VALUES (2,'2222233333');
|
||||||
|
INSERT INTO t1 (a,b) VALUES (3,'3333344444');
|
||||||
|
|
||||||
|
--let $start_max_index_id = query_get_value(SELECT * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where type = 'MAX_INDEX_ID', VALUE, 1)
|
||||||
|
|
||||||
|
ALTER TABLE t1 DROP INDEX kb, ADD INDEX kb(b(8)), ALGORITHM=INPLACE;
|
||||||
|
SELECT * FROM t1 FORCE INDEX(kb);
|
||||||
|
|
||||||
|
--let $end_max_index_id = query_get_value(SELECT * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where type = 'MAX_INDEX_ID', VALUE, 1)
|
||||||
|
|
||||||
|
if ($end_max_index_id <= $start_max_index_id) {
|
||||||
|
echo Max index ID did not increase;
|
||||||
|
}
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -72,11 +72,30 @@ INSERT INTO t1 (a, b) VALUES (1, 5);
|
|||||||
INSERT INTO t1 (a, b) VALUES (2, 6);
|
INSERT INTO t1 (a, b) VALUES (2, 6);
|
||||||
INSERT INTO t1 (a, b) VALUES (3, 7);
|
INSERT INTO t1 (a, b) VALUES (3, 7);
|
||||||
|
|
||||||
# should fail, can't add unique index on table w/ no pk
|
# should succeed, we can add unique index on table w/ no pk
|
||||||
--error 1105
|
|
||||||
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (4, 8);
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
INSERT INTO t1 (a, b) VALUES (5, 5);
|
||||||
|
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
# Test changing key with same name and parts from not unique to unique, should
|
||||||
|
# fail.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT,
|
||||||
|
c INT,
|
||||||
|
KEY kbc(b,c)) ENGINE = ROCKSDB;
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (3,2,2);
|
||||||
|
|
||||||
|
# should cause error here, duplicate value 2-2
|
||||||
|
--error 1062
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc, ADD UNIQUE INDEX kbc(b,c), ALGORITHM=INPLACE;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@@ -71,9 +71,16 @@ CHECK TABLE t1 CHANGED;
|
|||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
# test disabling unique keys
|
# test unique keys with no primary key
|
||||||
--error 1105
|
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
|
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'c');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t1 WHERE a = 2;
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE a = 2;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
## test restarting a table that has no data
|
## test restarting a table that has no data
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
--rocksdb_default_cf_options=write_buffer_size=256k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;};prefix_extractor=capped:20
|
--rocksdb_default_cf_options=write_buffer_size=256k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;};prefix_extractor=capped:20
|
||||||
--rocksdb_override_cf_options=cf_short_prefix={prefix_extractor=capped:4};cf_long_prefix={prefix_extractor=capped:240}
|
--rocksdb_override_cf_options=cf_short_prefix={prefix_extractor=capped:4};rev:cf_short_prefix={prefix_extractor=capped:4};cf_long_prefix={prefix_extractor=capped:240};rev:cf_long_prefix={prefix_extractor=capped:240}
|
||||||
|
@@ -23,12 +23,20 @@ DELIMITER ;//
|
|||||||
--source bloomfilter_table_def.inc
|
--source bloomfilter_table_def.inc
|
||||||
--source bloomfilter_load_select.inc
|
--source bloomfilter_load_select.inc
|
||||||
|
|
||||||
|
--exec sed s/##CF##/" COMMENT 'rev:cf_short_prefix'"/g $tmpl_ddl > $ddl
|
||||||
|
--source $ddl
|
||||||
|
--source suite/rocksdb/t/bloomfilter_load_select.inc
|
||||||
|
|
||||||
#BF is most of the time invoked and useful
|
#BF is most of the time invoked and useful
|
||||||
--let $CF=COMMENT 'cf_long_prefix'
|
--let $CF=COMMENT 'cf_long_prefix'
|
||||||
--source bloomfilter_table_def.inc
|
--source bloomfilter_table_def.inc
|
||||||
--source bloomfilter_load_select.inc
|
--source bloomfilter_load_select.inc
|
||||||
|
|
||||||
|
--exec sed s/##CF##/" COMMENT 'rev:cf_long_prefix'"/g $tmpl_ddl > $ddl
|
||||||
|
--source $ddl
|
||||||
|
--source suite/rocksdb/t/bloomfilter_load_select.inc
|
||||||
|
|
||||||
|
|
||||||
# BUG: Prev() with prefix lookup should not use prefix bloom filter
|
# BUG: Prev() with prefix lookup should not use prefix bloom filter
|
||||||
create table r1 (id1 bigint, id2 bigint, id3 bigint, v1 int, v2 text, primary key (id1, id2, id3)) engine=rocksdb DEFAULT CHARSET=latin1 collate latin1_bin;
|
create table r1 (id1 bigint, id2 bigint, id3 bigint, v1 int, v2 text, primary key (id1, id2, id3)) engine=rocksdb DEFAULT CHARSET=latin1 collate latin1_bin;
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
|
156
storage/rocksdb/mysql-test/rocksdb/t/bulk_load.inc
Normal file
156
storage/rocksdb/mysql-test/rocksdb/t/bulk_load.inc
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
if ($data_order_desc)
|
||||||
|
{
|
||||||
|
--echo Data will be ordered in descending order
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$data_order_desc)
|
||||||
|
{
|
||||||
|
--echo Data will be ordered in ascending order
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create a table with a primary key and one secondary key as well as one
|
||||||
|
# more column
|
||||||
|
eval CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "$pk_cf",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
|
||||||
|
# Create a second identical table to validate that bulk loading different
|
||||||
|
# tables in the same session works
|
||||||
|
eval CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "$pk_cf",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
|
||||||
|
# Create a third table using partitions to validate that bulk loading works
|
||||||
|
# across a partitioned table
|
||||||
|
eval CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "$pk_cf",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin' PARTITION BY KEY() PARTITIONS 4;
|
||||||
|
|
||||||
|
--let $file = `SELECT CONCAT(@@datadir, "test_loadfile.txt")`
|
||||||
|
|
||||||
|
--let MTR_DATA_ORDER_DESC = $data_order_desc;
|
||||||
|
|
||||||
|
# Create a text file with data to import into the table.
|
||||||
|
# The primary key is in sorted order and the secondary keys are randomly generated
|
||||||
|
--let ROCKSDB_INFILE = $file
|
||||||
|
perl;
|
||||||
|
my $fn = $ENV{'ROCKSDB_INFILE'};
|
||||||
|
open(my $fh, '>', $fn) || die "perl open($fn): $!";
|
||||||
|
my $max = 5000000;
|
||||||
|
my $desc = $ENV{'MTR_DATA_ORDER_DESC'};
|
||||||
|
my @chars = ("A".."Z", "a".."z", "0".."9");
|
||||||
|
my @powers_of_26 = (26 * 26 * 26 * 26, 26 * 26 * 26, 26 * 26, 26, 1);
|
||||||
|
for (my $ii = 0; $ii < $max; $ii++)
|
||||||
|
{
|
||||||
|
my $pk;
|
||||||
|
my $tmp = $ii;
|
||||||
|
foreach (@powers_of_26)
|
||||||
|
{
|
||||||
|
if ($desc == 1)
|
||||||
|
{
|
||||||
|
$pk .= chr(ord('z') - int($tmp / $_));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$pk .= chr(ord('a') + int($tmp / $_));
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmp = $tmp % $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $num = int(rand(25)) + 6;
|
||||||
|
my $a;
|
||||||
|
$a .= $chars[rand(@chars)] for 1..$num;
|
||||||
|
|
||||||
|
$num = int(rand(25)) + 6;
|
||||||
|
my $b;
|
||||||
|
$b .= $chars[rand(@chars)] for 1..$num;
|
||||||
|
print $fh "$pk\t$a\t$b\n";
|
||||||
|
}
|
||||||
|
close($fh);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--file_exists $file
|
||||||
|
|
||||||
|
# Make sure a snapshot held by another user doesn't block the bulk load
|
||||||
|
connect (other,localhost,root,,);
|
||||||
|
set session transaction isolation level repeatable read;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
start transaction with consistent snapshot;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
set rocksdb_bulk_load=1;
|
||||||
|
set rocksdb_bulk_load_size=100000;
|
||||||
|
--disable_query_log
|
||||||
|
--echo LOAD DATA INFILE <input_file> INTO TABLE t1;
|
||||||
|
eval LOAD DATA INFILE '$file' INTO TABLE t1;
|
||||||
|
--echo LOAD DATA INFILE <input_file> INTO TABLE t2;
|
||||||
|
eval LOAD DATA INFILE '$file' INTO TABLE t2;
|
||||||
|
--echo LOAD DATA INFILE <input_file> INTO TABLE t3;
|
||||||
|
eval LOAD DATA INFILE '$file' INTO TABLE t3;
|
||||||
|
--enable_query_log
|
||||||
|
set rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
--remove_file $file
|
||||||
|
|
||||||
|
# Make sure row count index stats are correct
|
||||||
|
--replace_column 6 # 7 # 8 # 9 #
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
--replace_column 6 # 7 # 8 # 9 #
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
|
||||||
|
# Make sure all the data is there.
|
||||||
|
select count(pk) from t1;
|
||||||
|
select count(a) from t1;
|
||||||
|
select count(b) from t1;
|
||||||
|
select count(pk) from t2;
|
||||||
|
select count(a) from t2;
|
||||||
|
select count(b) from t2;
|
||||||
|
select count(pk) from t3;
|
||||||
|
select count(a) from t3;
|
||||||
|
select count(b) from t3;
|
||||||
|
|
||||||
|
# Create a dummy file with a bulk load extesion. It should be removed when
|
||||||
|
# the server starts
|
||||||
|
--let $tmpext = .bulk_load.tmp
|
||||||
|
--let $MYSQLD_DATADIR= `SELECT @@datadir`
|
||||||
|
--let $datadir = $MYSQLD_DATADIR/.rocksdb
|
||||||
|
--write_file $datadir/test$tmpext
|
||||||
|
dummy data
|
||||||
|
EOF
|
||||||
|
--write_file $datadir/longfilenamethatvalidatesthatthiswillgetdeleted$tmpext
|
||||||
|
dummy data
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Show the files exists
|
||||||
|
--list_files $datadir *$tmpext
|
||||||
|
|
||||||
|
# Now restart the server and make sure it automatically removes this test file
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
# Show the files do not exist
|
||||||
|
--list_files $datadir *$tmpext
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
disconnect other;
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -4,121 +4,8 @@
|
|||||||
# This test requires ~2.3G of disk space
|
# This test requires ~2.3G of disk space
|
||||||
--source include/big_test.inc
|
--source include/big_test.inc
|
||||||
|
|
||||||
--disable_warnings
|
--let pk_cf=cf1
|
||||||
DROP TABLE IF EXISTS t1, t2, t3;
|
--let data_order_desc=0
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
# Create a table with a primary key and one secondary key as well as one
|
--source bulk_load.inc
|
||||||
# more column
|
|
||||||
CREATE TABLE t1(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin';
|
|
||||||
|
|
||||||
# Create a second identical table to validate that bulk loading different
|
|
||||||
# tables in the same session works
|
|
||||||
CREATE TABLE t2(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin';
|
|
||||||
|
|
||||||
# Create a third table using partitions to validate that bulk loading works
|
|
||||||
# across a partitioned table
|
|
||||||
CREATE TABLE t3(pk CHAR(5) PRIMARY KEY, a char(30), b char(30), key(a)) COLLATE 'latin1_bin'
|
|
||||||
PARTITION BY KEY() PARTITIONS 4;
|
|
||||||
|
|
||||||
--let $file = `SELECT CONCAT(@@datadir, "test_loadfile.txt")`
|
|
||||||
|
|
||||||
# Create a text file with data to import into the table.
|
|
||||||
# The primary key is in sorted order and the secondary keys are randomly generated
|
|
||||||
--let ROCKSDB_INFILE = $file
|
|
||||||
perl;
|
|
||||||
my $fn = $ENV{'ROCKSDB_INFILE'};
|
|
||||||
open(my $fh, '>>', $fn) || die "perl open($fn): $!";
|
|
||||||
my $max = 5000000;
|
|
||||||
my @chars = ("A".."Z", "a".."z", "0".."9");
|
|
||||||
my @lowerchars = ("a".."z");
|
|
||||||
my @powers_of_26 = (26 * 26 * 26 * 26, 26 * 26 * 26, 26 * 26, 26, 1);
|
|
||||||
for (my $ii = 0; $ii < $max; $ii++)
|
|
||||||
{
|
|
||||||
my $pk;
|
|
||||||
my $tmp = $ii;
|
|
||||||
foreach (@powers_of_26)
|
|
||||||
{
|
|
||||||
$pk .= $lowerchars[$tmp / $_];
|
|
||||||
$tmp = $tmp % $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $num = int(rand(25)) + 6;
|
|
||||||
my $a;
|
|
||||||
$a .= $chars[rand(@chars)] for 1..$num;
|
|
||||||
|
|
||||||
$num = int(rand(25)) + 6;
|
|
||||||
my $b;
|
|
||||||
$b .= $chars[rand(@chars)] for 1..$num;
|
|
||||||
print $fh "$pk\t$a\t$b\n";
|
|
||||||
}
|
|
||||||
close($fh);
|
|
||||||
EOF
|
|
||||||
|
|
||||||
--file_exists $file
|
|
||||||
|
|
||||||
# Make sure a snapshot held by another user doesn't block the bulk load
|
|
||||||
connect (other,localhost,root,,);
|
|
||||||
set session transaction isolation level repeatable read;
|
|
||||||
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
|
||||||
start transaction with consistent snapshot;
|
|
||||||
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
|
||||||
|
|
||||||
connection default;
|
|
||||||
set rocksdb_bulk_load=1;
|
|
||||||
set rocksdb_bulk_load_size=100000;
|
|
||||||
--disable_query_log
|
|
||||||
--echo LOAD DATA INFILE <input_file> INTO TABLE t1;
|
|
||||||
eval LOAD DATA INFILE '$file' INTO TABLE t1;
|
|
||||||
--echo LOAD DATA INFILE <input_file> INTO TABLE t2;
|
|
||||||
eval LOAD DATA INFILE '$file' INTO TABLE t2;
|
|
||||||
--echo LOAD DATA INFILE <input_file> INTO TABLE t3;
|
|
||||||
eval LOAD DATA INFILE '$file' INTO TABLE t3;
|
|
||||||
--enable_query_log
|
|
||||||
set rocksdb_bulk_load=0;
|
|
||||||
|
|
||||||
# Make sure row count index stats are correct
|
|
||||||
--replace_column 6 # 7 # 8 # 9 #
|
|
||||||
SHOW TABLE STATUS WHERE name LIKE 't%';
|
|
||||||
|
|
||||||
ANALYZE TABLE t1, t2, t3;
|
|
||||||
|
|
||||||
--replace_column 6 # 7 # 8 # 9 #
|
|
||||||
SHOW TABLE STATUS WHERE name LIKE 't%';
|
|
||||||
|
|
||||||
# Make sure all the data is there.
|
|
||||||
select count(pk) from t1;
|
|
||||||
select count(a) from t1;
|
|
||||||
select count(b) from t1;
|
|
||||||
select count(pk) from t2;
|
|
||||||
select count(a) from t2;
|
|
||||||
select count(b) from t2;
|
|
||||||
select count(pk) from t3;
|
|
||||||
select count(a) from t3;
|
|
||||||
select count(b) from t3;
|
|
||||||
|
|
||||||
# Create a dummy file with a bulk load extesion. It should be removed when
|
|
||||||
# the server starts
|
|
||||||
--let $tmpext = .bulk_load.tmp
|
|
||||||
--let $MYSQLD_DATADIR= `SELECT @@datadir`
|
|
||||||
--let $datadir = $MYSQLD_DATADIR/.rocksdb
|
|
||||||
--write_file $datadir/test$tmpext
|
|
||||||
dummy data
|
|
||||||
EOF
|
|
||||||
--write_file $datadir/longfilenamethatvalidatesthatthiswillgetdeleted$tmpext
|
|
||||||
dummy data
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Show the files exists
|
|
||||||
--list_files $datadir *$tmpext
|
|
||||||
|
|
||||||
# Now restart the server and make sure it automatically removes this test file
|
|
||||||
--source include/restart_mysqld.inc
|
|
||||||
|
|
||||||
# Show the files do not exist
|
|
||||||
--list_files $datadir *$tmpext
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
disconnect other;
|
|
||||||
DROP TABLE t1, t2, t3;
|
|
||||||
--remove_file $file
|
--remove_file $file
|
||||||
|
39
storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test
Normal file
39
storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1(pk INT, PRIMARY KEY(pk));
|
||||||
|
|
||||||
|
# Make sure we get an error with out of order keys during bulk load
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(10);
|
||||||
|
INSERT INTO t1 VALUES(11);
|
||||||
|
--error ER_KEYS_OUT_OF_ORDER
|
||||||
|
INSERT INTO t1 VALUES(9);
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
# Make sure only 10 and 11 got into the table
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
# Make sure we get an error with overlapping data
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
INSERT INTO t1 VALUES(2);
|
||||||
|
INSERT INTO t1 VALUES(20);
|
||||||
|
INSERT INTO t1 VALUES(21);
|
||||||
|
|
||||||
|
# This last crashes the server (intentionally) because we can't return any
|
||||||
|
# error information from a SET <variable>=<value>
|
||||||
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
--error 2013
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
--exec grep "RocksDB: Error 197 finalizing last SST file while setting bulk loading variable" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
||||||
|
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
|
||||||
|
|
||||||
|
# restart the crashed server
|
||||||
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
|
||||||
|
# Make sure the error exists in the .err log and then restart the server
|
||||||
|
--enable_reconnect
|
||||||
|
--source include/wait_until_connected_again.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -0,0 +1,6 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--let pk_cf=rev:cf1
|
||||||
|
--let data_order_desc=0
|
||||||
|
|
||||||
|
--source bulk_load.inc
|
@@ -0,0 +1,6 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--let pk_cf=rev:cf1
|
||||||
|
--let data_order_desc=1
|
||||||
|
|
||||||
|
--source bulk_load.inc
|
@@ -0,0 +1,6 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--let pk_cf=cf1
|
||||||
|
--let data_order_desc=1
|
||||||
|
|
||||||
|
--source bulk_load.inc
|
@@ -14,9 +14,9 @@ CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), va
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
# ci indexed column is not allowed
|
# ci indexed column is not allowed
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value)) engine=rocksdb charset utf8;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value3(50))) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value3(50))) engine=rocksdb charset utf8;
|
||||||
# ci indexed column with rocksdb_strict_collation_check=OFF is allowed.
|
# ci indexed column with rocksdb_strict_collation_check=OFF is allowed.
|
||||||
SET GLOBAL rocksdb_strict_collation_check=0;
|
SET GLOBAL rocksdb_strict_collation_check=0;
|
||||||
@@ -44,20 +44,20 @@ DROP TABLE t1;
|
|||||||
SET GLOBAL rocksdb_strict_collation_exceptions=t1;
|
SET GLOBAL rocksdb_strict_collation_exceptions=t1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE t2 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t2 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test regex for exception list
|
# test regex for exception list
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions="t.*";
|
SET GLOBAL rocksdb_strict_collation_exceptions="t.*";
|
||||||
CREATE TABLE t123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t123;
|
DROP TABLE t123;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE s123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE s123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions=".t.*";
|
SET GLOBAL rocksdb_strict_collation_exceptions=".t.*";
|
||||||
CREATE TABLE xt123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE xt123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE xt123;
|
DROP TABLE xt123;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE t123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t123 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list with commas
|
# test multiple entries in the list with commas
|
||||||
@@ -66,7 +66,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list with vertical bar
|
# test multiple entries in the list with vertical bar
|
||||||
@@ -75,7 +75,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list and extra comma at the front
|
# test multiple entries in the list and extra comma at the front
|
||||||
@@ -84,7 +84,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list and extra vertical bar at the front
|
# test multiple entries in the list and extra vertical bar at the front
|
||||||
@@ -93,7 +93,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list and extra comma in the middle
|
# test multiple entries in the list and extra comma in the middle
|
||||||
@@ -102,7 +102,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list and extra vertical bar in the middle
|
# test multiple entries in the list and extra vertical bar in the middle
|
||||||
@@ -111,7 +111,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list and extra comma at the end
|
# test multiple entries in the list and extra comma at the end
|
||||||
@@ -120,7 +120,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list and extra vertical bar at the end
|
# test multiple entries in the list and extra vertical bar at the end
|
||||||
@@ -129,7 +129,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test multiple entries in the list and tons of commas and vertical bars just for the fun of it
|
# test multiple entries in the list and tons of commas and vertical bars just for the fun of it
|
||||||
@@ -138,7 +138,7 @@ CREATE TABLE s1 (id INT primary key, value varchar(50), index(value)) engine=roc
|
|||||||
DROP TABLE s1;
|
DROP TABLE s1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE u1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
|
|
||||||
# test allowing alters to create temporary tables
|
# test allowing alters to create temporary tables
|
||||||
@@ -146,10 +146,10 @@ SET GLOBAL rocksdb_strict_collation_exceptions='t1';
|
|||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), index(value)) engine=rocksdb;
|
||||||
ALTER TABLE t1 AUTO_INCREMENT=1;
|
ALTER TABLE t1 AUTO_INCREMENT=1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE t2 (id INT primary key, value varchar(50), index(value)) engine=rocksdb;
|
CREATE TABLE t2 (id INT primary key, value varchar(50), index(value)) engine=rocksdb;
|
||||||
CREATE TABLE t2 (id INT primary key, value varchar(50)) engine=rocksdb;
|
CREATE TABLE t2 (id INT primary key, value varchar(50)) engine=rocksdb;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
ALTER TABLE t2 ADD INDEX(value);
|
ALTER TABLE t2 ADD INDEX(value);
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
|
||||||
@@ -159,12 +159,11 @@ SET GLOBAL rocksdb_strict_collation_exceptions="[a-b";
|
|||||||
let SEARCH_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err;
|
let SEARCH_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||||
let SEARCH_PATTERN=Invalid pattern in strict_collation_exceptions: \[a-b;
|
let SEARCH_PATTERN=Invalid pattern in strict_collation_exceptions: \[a-b;
|
||||||
source include/search_pattern_in_file.inc;
|
source include/search_pattern_in_file.inc;
|
||||||
--error ER_UNKNOWN_ERROR
|
|
||||||
CREATE TABLE a (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE a (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b]";
|
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 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 b (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE c (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;
|
||||||
DROP TABLE a, b;
|
DROP TABLE a, b;
|
||||||
|
|
||||||
@@ -173,11 +172,11 @@ call mtr.add_suppression("Invalid pattern in strict_collation_exceptions:");
|
|||||||
SET GLOBAL rocksdb_strict_collation_exceptions="abc\\";
|
SET GLOBAL rocksdb_strict_collation_exceptions="abc\\";
|
||||||
let SEARCH_PATTERN=Invalid pattern in strict_collation_exceptions: abc;
|
let SEARCH_PATTERN=Invalid pattern in strict_collation_exceptions: abc;
|
||||||
source include/search_pattern_in_file.inc;
|
source include/search_pattern_in_file.inc;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE abc (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE abc (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions="abc";
|
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 abc (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE abcd (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;
|
||||||
DROP TABLE abc;
|
DROP TABLE abc;
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
CREATE TABLE `r1.lol` (
|
CREATE TABLE `r1.lol` (
|
||||||
`c1` int(10) NOT NULL DEFAULT '0',
|
`c1` int(10) NOT NULL DEFAULT '0',
|
||||||
`c2` int(11) NOT NULL DEFAULT '0',
|
`c2` int(11) NOT NULL DEFAULT '0',
|
||||||
|
@@ -23,7 +23,7 @@ eval SET SESSION TRANSACTION ISOLATION LEVEL $trx_isolation;
|
|||||||
# no external inserts should be visible to the transaction.
|
# no external inserts should be visible to the transaction.
|
||||||
# But it should only work this way for REPEATABLE-READ and SERIALIZABLE
|
# But it should only work this way for REPEATABLE-READ and SERIALIZABLE
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ connection con2;
|
|||||||
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ SELECT * FROM r1; # 5
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
SELECT * FROM r1; # 6
|
SELECT * FROM r1; # 6
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ SELECT * FROM r1; # 6
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
SELECT * FROM r1; # 8
|
SELECT * FROM r1; # 8
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ connection con2;
|
|||||||
INSERT INTO r1 values (9,9,9);
|
INSERT INTO r1 values (9,9,9);
|
||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -115,11 +115,11 @@ INSERT INTO r1 values (10,10,10);
|
|||||||
connection con1;
|
connection con1;
|
||||||
SELECT * FROM r1; # 9
|
SELECT * FROM r1; # 9
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
# Succeeds with Read Committed, Fails with Repeatable Read
|
# Succeeds with Read Committed, Fails with Repeatable Read
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
|
||||||
INSERT INTO r1 values (11,11,11);
|
INSERT INTO r1 values (11,11,11);
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
SELECT * FROM r1; # self changes should be visible
|
SELECT * FROM r1; # self changes should be visible
|
||||||
|
@@ -24,7 +24,7 @@ select * from t1;
|
|||||||
set @tmp1=@@rocksdb_verify_row_debug_checksums;
|
set @tmp1=@@rocksdb_verify_row_debug_checksums;
|
||||||
set rocksdb_verify_row_debug_checksums=1;
|
set rocksdb_verify_row_debug_checksums=1;
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_row_read1";
|
set session debug_dbug= "+d,myrocks_simulate_bad_row_read1";
|
||||||
--error ER_GET_ERRNO
|
--error ER_GET_ERRMSG
|
||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_row_read1";
|
set session debug_dbug= "-d,myrocks_simulate_bad_row_read1";
|
||||||
set rocksdb_verify_row_debug_checksums=@tmp1;
|
set rocksdb_verify_row_debug_checksums=@tmp1;
|
||||||
@@ -32,12 +32,12 @@ set rocksdb_verify_row_debug_checksums=@tmp1;
|
|||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
|
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_row_read2";
|
set session debug_dbug= "+d,myrocks_simulate_bad_row_read2";
|
||||||
--error ER_GET_ERRNO
|
--error ER_GET_ERRMSG
|
||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_row_read2";
|
set session debug_dbug= "-d,myrocks_simulate_bad_row_read2";
|
||||||
|
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_row_read3";
|
set session debug_dbug= "+d,myrocks_simulate_bad_row_read3";
|
||||||
--error ER_GET_ERRNO
|
--error ER_GET_ERRMSG
|
||||||
select * from t1 where pk=1;
|
select * from t1 where pk=1;
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_row_read3";
|
set session debug_dbug= "-d,myrocks_simulate_bad_row_read3";
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ create table t2 (
|
|||||||
insert into t2 values ('ABCD',1);
|
insert into t2 values ('ABCD',1);
|
||||||
select * from t2;
|
select * from t2;
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
||||||
--error ER_GET_ERRNO
|
--error ER_GET_ERRMSG
|
||||||
select * from t2;
|
select * from t2;
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ insert into t2 values ('ABCD',1);
|
|||||||
|
|
||||||
select * from t2;
|
select * from t2;
|
||||||
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "+d,myrocks_simulate_bad_pk_read1";
|
||||||
--error ER_GET_ERRNO
|
--error ER_GET_ERRMSG
|
||||||
select * from t2;
|
select * from t2;
|
||||||
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
set session debug_dbug= "-d,myrocks_simulate_bad_pk_read1";
|
||||||
|
|
||||||
|
3
storage/rocksdb/mysql-test/rocksdb/t/deadlock_stats.test
Normal file
3
storage/rocksdb/mysql-test/rocksdb/t/deadlock_stats.test
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
let $engine=rocksdb;
|
||||||
|
|
||||||
|
--source include/deadlock_stats.inc
|
@@ -90,9 +90,9 @@ DELETE FROM t1 WHERE a <= 4 ORDER BY b DESC LIMIT 1;
|
|||||||
SAVEPOINT spt1;
|
SAVEPOINT spt1;
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (a,b) VALUES (1,'a');
|
INSERT INTO t1 (a,b) VALUES (1,'a');
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
ROLLBACK TO SAVEPOINT spt1;
|
ROLLBACK TO SAVEPOINT spt1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
COMMIT;
|
COMMIT;
|
||||||
--sorted_result
|
--sorted_result
|
||||||
SELECT a,b FROM t1;
|
SELECT a,b FROM t1;
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
--rocksdb_max_background_compactions=8
|
|
||||||
--rocksdb_max_subcompactions=1
|
--rocksdb_max_subcompactions=1
|
||||||
|
--rocksdb_info_log_level=info_level
|
||||||
--rocksdb_default_cf_options=write_buffer_size=512k;target_file_size_base=512k;level0_file_num_compaction_trigger=2;level0_slowdown_writes_trigger=-1;level0_stop_writes_trigger=1000;max_bytes_for_level_base=1m
|
--rocksdb_default_cf_options=write_buffer_size=512k;target_file_size_base=512k;level0_file_num_compaction_trigger=2;level0_slowdown_writes_trigger=-1;level0_stop_writes_trigger=1000;max_bytes_for_level_base=1m
|
||||||
|
|
||||||
|
@@ -107,9 +107,6 @@ let $wait_condition = select count(*) = 0
|
|||||||
where TYPE = 'DDL_DROP_INDEX_ONGOING';
|
where TYPE = 'DDL_DROP_INDEX_ONGOING';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
# Get list of all indices needing to be dropped
|
|
||||||
# Check total compacted-away rows for all indices
|
|
||||||
# Check that all indices have been successfully dropped
|
|
||||||
perl;
|
perl;
|
||||||
|
|
||||||
sub print_array {
|
sub print_array {
|
||||||
@@ -149,6 +146,5 @@ foreach (sort {$a <=> $b} keys %a){
|
|||||||
print_array("Begin filtering dropped index+", sort {$a <=> $b} @b);
|
print_array("Begin filtering dropped index+", sort {$a <=> $b} @b);
|
||||||
print_array("Finished filtering dropped index+", sort {$a <=> $b} @c);
|
print_array("Finished filtering dropped index+", sort {$a <=> $b} @c);
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@@ -89,6 +89,10 @@ let $max = 1000;
|
|||||||
let $table = t5;
|
let $table = t5;
|
||||||
--source drop_table_repopulate_table.inc
|
--source drop_table_repopulate_table.inc
|
||||||
|
|
||||||
|
set @@global.rocksdb_compact_cf = 'cf1';
|
||||||
|
set @@global.rocksdb_compact_cf = 'rev:cf2';
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
|
|
||||||
perl;
|
perl;
|
||||||
$size+=-s $_ for (<$ENV{MYSQLTEST_VARDIR}/mysqld.1/data/.rocksdb/*.sst>);
|
$size+=-s $_ for (<$ENV{MYSQLTEST_VARDIR}/mysqld.1/data/.rocksdb/*.sst>);
|
||||||
$filename= "$ENV{MYSQLTEST_VARDIR}/tmp/size_output";
|
$filename= "$ENV{MYSQLTEST_VARDIR}/tmp/size_output";
|
||||||
@@ -101,6 +105,10 @@ drop table t3;
|
|||||||
drop table t4;
|
drop table t4;
|
||||||
drop table t5;
|
drop table t5;
|
||||||
|
|
||||||
|
set @@global.rocksdb_compact_cf = 'cf1';
|
||||||
|
set @@global.rocksdb_compact_cf = 'rev:cf2';
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
|
|
||||||
let $show_rpl_debug_info= 1; # to force post-failure printout
|
let $show_rpl_debug_info= 1; # to force post-failure printout
|
||||||
let $wait_timeout= 300; # Override default 30 seconds with 300.
|
let $wait_timeout= 300; # Override default 30 seconds with 300.
|
||||||
let $wait_condition = select count(*) = 0
|
let $wait_condition = select count(*) = 0
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin
|
109
storage/rocksdb/mysql-test/rocksdb/t/index_merge_rocksdb.test
Normal file
109
storage/rocksdb/mysql-test/rocksdb/t/index_merge_rocksdb.test
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# index_merge_rocksdb test copied over from index_merge_ror.inc
|
||||||
|
#
|
||||||
|
# Triggers issue # https://github.com/facebook/mysql-5.6/issues/604
|
||||||
|
|
||||||
|
CREATE TABLE t1
|
||||||
|
(
|
||||||
|
/* fields/keys for row retrieval tests */
|
||||||
|
key1 INT,
|
||||||
|
key2 INT,
|
||||||
|
key3 INT,
|
||||||
|
key4 INT,
|
||||||
|
|
||||||
|
/* make rows much bigger then keys */
|
||||||
|
filler1 CHAR(200),
|
||||||
|
|
||||||
|
KEY(key1),
|
||||||
|
KEY(key2)
|
||||||
|
) ENGINE=ROCKSDB;
|
||||||
|
|
||||||
|
# fill table
|
||||||
|
CREATE TABLE t0 AS SELECT * FROM t1;
|
||||||
|
--disable_query_log
|
||||||
|
--echo # Printing of many insert into t0 values (....) disabled.
|
||||||
|
let $cnt=100;
|
||||||
|
while ($cnt)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t0 VALUES (0, 0, 0, 0, 'data1');
|
||||||
|
dec $cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
--echo # Printing of many insert into t1 select .... from t0 disabled.
|
||||||
|
let $1=4;
|
||||||
|
while ($1)
|
||||||
|
{
|
||||||
|
let $2=4;
|
||||||
|
while ($2)
|
||||||
|
{
|
||||||
|
let $3=4;
|
||||||
|
while ($3)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t1 SELECT key1, key2, key3, key4, filler1 FROM t0;
|
||||||
|
dec $3;
|
||||||
|
}
|
||||||
|
dec $2;
|
||||||
|
}
|
||||||
|
dec $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
--echo # Printing of many insert into t1 (...) values (....) disabled.
|
||||||
|
# Row retrieval tests
|
||||||
|
# -1 is used for values 'out of any range we are using'
|
||||||
|
# insert enough rows for index intersection to be used for (key1,key2)
|
||||||
|
INSERT INTO t1 (key1, key2, key3, key4, filler1) VALUES (100, 100, 100, 100,'key1-key2-key3-key4');
|
||||||
|
let $cnt=400;
|
||||||
|
while ($cnt)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t1 (key1, key2, key3, key4, filler1) VALUES (100, -1, 100, -1,'key1-key3');
|
||||||
|
dec $cnt;
|
||||||
|
}
|
||||||
|
let $cnt=400;
|
||||||
|
while ($cnt)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t1 (key1, key2, key3, key4, filler1) VALUES (-1, 100, -1, 100,'key2-key4');
|
||||||
|
dec $cnt;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
|
||||||
|
-- disable_query_log
|
||||||
|
-- disable_result_log
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
-- enable_result_log
|
||||||
|
-- enable_query_log
|
||||||
|
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
--replace_column 9 #
|
||||||
|
EXPLAIN UPDATE t1 SET filler1='to be deleted' WHERE key1=100 AND key2=100;
|
||||||
|
UPDATE t1 SET filler1='to be deleted' WHERE key1=100 and key2=100;
|
||||||
|
|
||||||
|
DROP TABLE t0, t1;
|
||||||
|
|
||||||
|
# Issue624 - MyRocks executes index_merge query plan incorrectly
|
||||||
|
create table t1 (key1 int, key2 int, key3 int, key (key1), key (key2), key(key3)) engine=rocksdb;
|
||||||
|
insert into t1 values (1, 100, 100), (1, 200, 200), (1, 300, 300);
|
||||||
|
--disable_query_log
|
||||||
|
let $i = 1;
|
||||||
|
while ($i <= 1000) {
|
||||||
|
let $insert = INSERT INTO t1 VALUES(1000,1000,1000);
|
||||||
|
inc $i;
|
||||||
|
eval $insert;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
analyze table t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
|
||||||
|
--replace_column 9 #
|
||||||
|
explain select * from t1 where key1 = 1;
|
||||||
|
--replace_column 9 #
|
||||||
|
explain select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
select * from t1 where key1 = 1;
|
||||||
|
select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin
|
@@ -0,0 +1,70 @@
|
|||||||
|
# Skiping this test from Valgrind execution as per Bug-14627884
|
||||||
|
--source include/not_valgrind.inc
|
||||||
|
# Adding big test option for this test.
|
||||||
|
--source include/big_test.inc
|
||||||
|
|
||||||
|
# t/index_merge_innodb.test
|
||||||
|
#
|
||||||
|
# Index merge tests
|
||||||
|
#
|
||||||
|
# Last update:
|
||||||
|
# 2006-08-07 ML test refactored (MySQL 5.1)
|
||||||
|
# Main code of several index_merge tests
|
||||||
|
# -> include/index_merge*.inc
|
||||||
|
# wrapper t/index_merge_innodb.test sources now several
|
||||||
|
# include/index_merge*.inc files
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/have_rocksdb.inc
|
||||||
|
let $engine_type= RocksDB;
|
||||||
|
# skipping because too unstable in MyRocks
|
||||||
|
let $skip_ror_EXPLAIN_for_MyRocks = 1;
|
||||||
|
let $random_rows_in_EXPLAIN = 1;
|
||||||
|
let $sorted_result = 1;
|
||||||
|
# According to Oracle: "InnoDB's estimate for the index cardinality
|
||||||
|
# depends on a pseudo random number generator (it picks up random
|
||||||
|
# pages to sample). After an optimization that was made in r2625 two
|
||||||
|
# EXPLAINs started returning a different number of rows (3 instead of
|
||||||
|
# 4)", so:
|
||||||
|
let $index_merge_random_rows_in_EXPLAIN = 1;
|
||||||
|
# RocksDB does not support Merge tables (affects include/index_merge1.inc)
|
||||||
|
let $merge_table_support= 0;
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge1.inc
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge_ror.inc
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge2.inc
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge_2sweeps.inc
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge_ror_cpk.inc
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#11747423 32254: INDEX MERGE USED UNNECESSARILY
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
id2 INT NOT NULL,
|
||||||
|
id3 INT NOT NULL,
|
||||||
|
KEY (id2),
|
||||||
|
KEY (id3),
|
||||||
|
KEY covering_index (id2,id3)
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (0, 0, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7);
|
||||||
|
INSERT INTO t1 SELECT id + 8, id2 + 8, id3 +8 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT id + 16, 7, 0 FROM t1;
|
||||||
|
|
||||||
|
-- disable_query_log
|
||||||
|
-- disable_result_log
|
||||||
|
analyze table t1;
|
||||||
|
-- enable_result_log
|
||||||
|
-- enable_query_log
|
||||||
|
|
||||||
|
EXPLAIN SELECT SQL_NO_CACHE count(*) FROM t1 WHERE id2=7 AND id3=0;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -46,12 +46,10 @@ CREATE TABLE t2 (
|
|||||||
b int,
|
b int,
|
||||||
c int,
|
c int,
|
||||||
d int,
|
d int,
|
||||||
e int,
|
|
||||||
PRIMARY KEY (a) COMMENT "cf_a",
|
PRIMARY KEY (a) COMMENT "cf_a",
|
||||||
KEY (b) COMMENT "cf_b",
|
KEY (b) COMMENT "cf_b",
|
||||||
KEY (c) COMMENT "cf_c",
|
KEY (c) COMMENT "cf_c",
|
||||||
KEY (d) COMMENT "$per_index_cf",
|
KEY (d) COMMENT "rev:cf_d") ENGINE=ROCKSDB;
|
||||||
KEY (e) COMMENT "rev:cf_d") ENGINE=ROCKSDB;
|
|
||||||
|
|
||||||
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
|
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
|
||||||
|
|
||||||
|
@@ -86,10 +86,10 @@ INSERT t1 (a) VALUE (10),(20);
|
|||||||
SAVEPOINT spt1;
|
SAVEPOINT spt1;
|
||||||
INSERT INTO t1 SET a = 11, b = 'f';
|
INSERT INTO t1 SET a = 11, b = 'f';
|
||||||
INSERT t1 SET b = DEFAULT;
|
INSERT t1 SET b = DEFAULT;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
ROLLBACK TO SAVEPOINT spt1;
|
ROLLBACK TO SAVEPOINT spt1;
|
||||||
INSERT INTO t1 (b,a) VALUES ('test1',10);
|
INSERT INTO t1 (b,a) VALUES ('test1',10);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
COMMIT;
|
COMMIT;
|
||||||
--sorted_result
|
--sorted_result
|
||||||
SELECT a,b FROM t1;
|
SELECT a,b FROM t1;
|
||||||
|
@@ -0,0 +1,80 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT,
|
||||||
|
val1 INT,
|
||||||
|
val2 INT,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DB operations without Transaction , every count should be 0
|
||||||
|
# so there's no count related output
|
||||||
|
#
|
||||||
|
INSERT INTO t1 VALUES(1,1,1),(2,1,2);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
UPDATE t1 SET val1=2 WHERE id=2;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DB operations with Tansaction, insert_count, update_count, delete_count
|
||||||
|
# and total write_count should be printed
|
||||||
|
# Cases: rollback, commit transaction
|
||||||
|
#
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(20,1,1),(30,30,30);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
UPDATE t1 SET val1=20, val2=20 WHERE id=20;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DELETE FROM t1 WHERE id=30;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(40,40,40);
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
COMMIT;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Secondary Key Tests
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t2;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
id1 INT,
|
||||||
|
id2 INT,
|
||||||
|
value INT,
|
||||||
|
PRIMARY KEY (id1),
|
||||||
|
KEY (id2)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t2 VALUES(1,2,0),(10,20,30);
|
||||||
|
UPDATE t2 SET value=3 WHERE id2=2;
|
||||||
|
DELETE FROM t2 WHERE id1=10;
|
||||||
|
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
ROLLBACK;
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t2;
|
19
storage/rocksdb/mysql-test/rocksdb/t/issue255.test
Normal file
19
storage/rocksdb/mysql-test/rocksdb/t/issue255.test
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (5);
|
||||||
|
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES ('538647864786478647864');
|
||||||
|
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
INSERT INTO t1 VALUES ();
|
||||||
|
SELECT * FROM t1;
|
||||||
|
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -8,7 +8,7 @@ SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|||||||
CREATE TABLE t1(a int);
|
CREATE TABLE t1(a int);
|
||||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
INSERT INTO t1 VALUES(1);
|
INSERT INTO t1 VALUES(1);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ISOLATION_MODE_NOT_SUPPORTED
|
||||||
select * from t1;
|
select * from t1;
|
||||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
@@ -98,7 +98,7 @@ EOF
|
|||||||
--replace_result $datadir <DATADIR>
|
--replace_result $datadir <DATADIR>
|
||||||
if ($skip_unique_check == 1)
|
if ($skip_unique_check == 1)
|
||||||
{
|
{
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ON_DUPLICATE_DISABLED
|
||||||
eval
|
eval
|
||||||
LOAD DATA INFILE '$datadir/se_replacedata.dat' REPLACE INTO TABLE t1;
|
LOAD DATA INFILE '$datadir/se_replacedata.dat' REPLACE INTO TABLE t1;
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,34 @@
|
|||||||
|
create table t (a int primary key) engine=rocksdb;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
insert into t values (0);
|
||||||
|
|
||||||
|
--source include/count_sessions.inc
|
||||||
|
--connect (con1,localhost,root,,)
|
||||||
|
--connection con1
|
||||||
|
set @@rocksdb_lock_wait_timeout=1;
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
begin;
|
||||||
|
|
||||||
|
--connect (con2,localhost,root,,)
|
||||||
|
--connection con2
|
||||||
|
set @@rocksdb_lock_wait_timeout=1;
|
||||||
|
begin;
|
||||||
|
|
||||||
|
--connection con1
|
||||||
|
--error ER_LOCK_WAIT_TIMEOUT
|
||||||
|
insert into t values(0);
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
|
||||||
|
--connection con2
|
||||||
|
--error ER_LOCK_WAIT_TIMEOUT
|
||||||
|
insert into t values(0);
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
|
||||||
|
--disconnect con1
|
||||||
|
--connection default
|
||||||
|
--disconnect con2
|
||||||
|
drop table t;
|
||||||
|
--source include/wait_until_count_sessions.inc
|
@@ -0,0 +1 @@
|
|||||||
|
$NP_EXAMPLE_LIB_OPT
|
@@ -0,0 +1,2 @@
|
|||||||
|
let $engine=rocksdb;
|
||||||
|
--source include/native_procedure.inc
|
@@ -1,3 +1,4 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
let $engine=rocksdb;
|
let $engine=rocksdb;
|
||||||
--source include/loose_index_scans.inc
|
--source include/loose_index_scans.inc
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
--rocksdb_default_cf_options=write_buffer_size=64k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;};prefix_extractor=capped:24;disable_auto_compactions=true
|
@@ -0,0 +1,96 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 (id1 BIGINT, id2 BIGINT, id3 BIGINT, id4 BIGINT, PRIMARY KEY (id1, id2, id3, id4) comment 'cf1') ENGINE=rocksdb collate latin1_bin;
|
||||||
|
--disable_query_log
|
||||||
|
let $i = 1;
|
||||||
|
while ($i <= 100) {
|
||||||
|
let $insert = INSERT INTO t1 VALUES(1, $i, $i, $i);
|
||||||
|
eval $insert;
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Original Prefix Extractor:
|
||||||
|
--echo
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
|
# BF used (4+8+8+8)
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
--exec echo "" > $MYSQLTEST_VARDIR/log/mysqld.1.err
|
||||||
|
--let $_mysqld_option=--rocksdb_override_cf_options=cf1={prefix_extractor=capped:26};
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Prefix Extractor (after override_cf_options set, should not be changed):
|
||||||
|
--echo
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
|
# This should no longer crash. See https://github.com/facebook/mysql-5.6/issues/641
|
||||||
|
--echo
|
||||||
|
--echo Restarting with new Prefix Extractor...
|
||||||
|
--echo
|
||||||
|
--source include/restart_mysqld_with_option.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Changed Prefix Extractor (after restart):
|
||||||
|
--echo
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
|
# Satisfies can_use_bloom_filter (4+8+8+8), but can't use because the old SST
|
||||||
|
# files have old prefix extractor
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
# Insert more data into t1, verify it uses new bloom filter
|
||||||
|
--disable_query_log
|
||||||
|
let $i = 101;
|
||||||
|
while ($i <= 200) {
|
||||||
|
let $insert = INSERT INTO t1 VALUES(1, $i, $i, $i);
|
||||||
|
eval $insert;
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
# BF used w/ new prefix extractor (4+8+8+8) (still increments once because it
|
||||||
|
# needs to check the new SST file, but doesnt increment for SST file with old
|
||||||
|
# extractor)
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
# should have 2 sst files, one with old prefix extractor and one with new
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
|
||||||
|
# update some old data, force compaction, verify that new SST files use
|
||||||
|
# new bloom filter
|
||||||
|
UPDATE t1 SET id1=1,id2 = 30,id3 = 30 WHERE id4 >= 0 AND id4 <=10;
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
# should have 3 sst files, one with old prefix extractor and two with new
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
set global rocksdb_compact_cf='cf1';
|
||||||
|
|
||||||
|
# Select the updated, make sure bloom filter is checked now
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=30 AND id3=30;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -37,7 +37,7 @@ connection con1;
|
|||||||
select case when variable_value-@p < 1000 then 'true' else variable_value-@p end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_put';
|
select case when variable_value-@p < 1000 then 'true' else variable_value-@p end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_put';
|
||||||
select case when variable_value-@s < 100 then 'true' else variable_value-@s end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete';
|
select case when variable_value-@s < 100 then 'true' else variable_value-@s end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete';
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
|
||||||
INSERT INTO t1 values (2, 2);
|
INSERT INTO t1 values (2, 2);
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
@@ -1141,7 +1141,7 @@ set @a=-1;
|
|||||||
insert into t1 select (@a:=@a+1), 1234 from information_schema.session_variables limit 100;
|
insert into t1 select (@a:=@a+1), 1234 from information_schema.session_variables limit 100;
|
||||||
set @tmp1= @@rocksdb_max_row_locks;
|
set @tmp1= @@rocksdb_max_row_locks;
|
||||||
set rocksdb_max_row_locks= 20;
|
set rocksdb_max_row_locks= 20;
|
||||||
--error ER_GET_ERRMSG
|
--error ER_RDB_STATUS_GENERAL
|
||||||
update t1 set a=a+10;
|
update t1 set a=a+10;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
@@ -1356,7 +1356,9 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Issue #17: Automatic per-index column families
|
--echo # Issue #17: Automatic per-index column families
|
||||||
|
--echo # (Now deprecated)
|
||||||
--echo #
|
--echo #
|
||||||
|
--error ER_PER_INDEX_CF_DEPRECATED
|
||||||
create table t1 (
|
create table t1 (
|
||||||
id int not null,
|
id int not null,
|
||||||
key1 int,
|
key1 int,
|
||||||
@@ -1364,44 +1366,6 @@ create table t1 (
|
|||||||
index (key1) comment '$per_index_cf'
|
index (key1) comment '$per_index_cf'
|
||||||
) engine=rocksdb;
|
) engine=rocksdb;
|
||||||
|
|
||||||
--echo #Same CF ids with different CF flags
|
|
||||||
--error ER_UNKNOWN_ERROR
|
|
||||||
create table t1_err (
|
|
||||||
id int not null,
|
|
||||||
key1 int,
|
|
||||||
PRIMARY KEY (id),
|
|
||||||
index (key1) comment 'test.t1.key1'
|
|
||||||
) engine=rocksdb;
|
|
||||||
|
|
||||||
create table t1_err (
|
|
||||||
id int not null,
|
|
||||||
key1 int,
|
|
||||||
PRIMARY KEY (id),
|
|
||||||
index (key1) comment 'test.t1.key2'
|
|
||||||
) engine=rocksdb;
|
|
||||||
drop table t1_err;
|
|
||||||
|
|
||||||
--echo # Unfortunately there is no way to check which column family everything goes to
|
|
||||||
insert into t1 values (1,1);
|
|
||||||
select * from t1;
|
|
||||||
--echo # Check that ALTER and RENAME are disallowed
|
|
||||||
--error ER_NOT_SUPPORTED_YET
|
|
||||||
alter table t1 add col2 int;
|
|
||||||
|
|
||||||
--error ER_NOT_SUPPORTED_YET
|
|
||||||
rename table t1 to t2;
|
|
||||||
|
|
||||||
drop table t1;
|
|
||||||
|
|
||||||
--echo # Check detection of typos in \$per_index_cf
|
|
||||||
--error ER_NOT_SUPPORTED_YET
|
|
||||||
create table t1 (
|
|
||||||
id int not null,
|
|
||||||
key1 int,
|
|
||||||
PRIMARY KEY (id),
|
|
||||||
index (key1) comment '$per_idnex_cf'
|
|
||||||
)engine=rocksdb;
|
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Issue #22: SELECT ... FOR UPDATE takes a long time
|
--echo # Issue #22: SELECT ... FOR UPDATE takes a long time
|
||||||
@@ -1795,9 +1759,9 @@ INSERT INTO t1 VALUES(1, 1);
|
|||||||
INSERT INTO t1 VALUES(1, 2);
|
INSERT INTO t1 VALUES(1, 2);
|
||||||
INSERT INTO t1 VALUES(1, 3);
|
INSERT INTO t1 VALUES(1, 3);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ON_DUPLICATE_DISABLED
|
||||||
REPLACE INTO t1 VALUES(4, 4);
|
REPLACE INTO t1 VALUES(4, 4);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ON_DUPLICATE_DISABLED
|
||||||
INSERT INTO t1 VALUES(5, 5) ON DUPLICATE KEY UPDATE value=value+1;
|
INSERT INTO t1 VALUES(5, 5) ON DUPLICATE KEY UPDATE value=value+1;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET @save_rocksdb_bulk_load_size= @@rocksdb_bulk_load_size;
|
SET @save_rocksdb_bulk_load_size= @@rocksdb_bulk_load_size;
|
||||||
|
@@ -420,6 +420,7 @@ ALTER TABLE t2 ADD KEY (`col3`, `col4`) COMMENT 'custom_p5_cfname=another_cf_for
|
|||||||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5';
|
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5';
|
||||||
|
|
||||||
# Verify that correct partition and key are used when searching.
|
# Verify that correct partition and key are used when searching.
|
||||||
|
ANALYZE TABLE t2;
|
||||||
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567;
|
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567;
|
||||||
|
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
@@ -494,3 +495,18 @@ SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
DROP TABLE IF EXISTS t2;
|
DROP TABLE IF EXISTS t2;
|
||||||
|
|
||||||
|
|
||||||
|
# Test that truncating table actually removes rows.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT NOT NULL,
|
||||||
|
PRIMARY KEY (a) COMMENT 'p1_cfname=foo;'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
PARTITION BY LIST COLUMNS(a)
|
||||||
|
(PARTITION p1 VALUES IN (1) ENGINE = ROCKSDB);
|
||||||
|
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
@@ -17,9 +17,9 @@ begin;
|
|||||||
insert into t1 values (11, 1);
|
insert into t1 values (11, 1);
|
||||||
savepoint a;
|
savepoint a;
|
||||||
insert into t1 values (12, 1);
|
insert into t1 values (12, 1);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
rollback to savepoint a;
|
rollback to savepoint a;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
commit;
|
commit;
|
||||||
commit;
|
commit;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@@ -34,11 +34,11 @@ begin;
|
|||||||
insert into t1 values (21, 1);
|
insert into t1 values (21, 1);
|
||||||
savepoint a;
|
savepoint a;
|
||||||
insert into t1 values (22, 1);
|
insert into t1 values (22, 1);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
rollback to savepoint a;
|
rollback to savepoint a;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
insert into t1 values (23, 1);
|
insert into t1 values (23, 1);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
commit;
|
commit;
|
||||||
commit;
|
commit;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@@ -55,9 +55,9 @@ savepoint a;
|
|||||||
insert into t1 values (32, 1);
|
insert into t1 values (32, 1);
|
||||||
savepoint b;
|
savepoint b;
|
||||||
insert into t1 values (33, 1);
|
insert into t1 values (33, 1);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
rollback to savepoint a;
|
rollback to savepoint a;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
insert into t1 values (34, 1);
|
insert into t1 values (34, 1);
|
||||||
rollback;
|
rollback;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@@ -74,9 +74,9 @@ SAVEPOINT A;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
SAVEPOINT A;
|
SAVEPOINT A;
|
||||||
insert into t1 values (35, 35);
|
insert into t1 values (35, 35);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
ROLLBACK TO SAVEPOINT A;
|
ROLLBACK TO SAVEPOINT A;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
--source include/sync_slave_sql_with_master.inc
|
--source include/sync_slave_sql_with_master.inc
|
||||||
|
@@ -12,7 +12,7 @@ connection master;
|
|||||||
|
|
||||||
select @@binlog_format;
|
select @@binlog_format;
|
||||||
create table t1 (pk int primary key) engine=rocksdb;
|
create table t1 (pk int primary key) engine=rocksdb;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_REQUIRE_ROW_BINLOG_FORMAT
|
||||||
insert into t1 values (1),(2),(3);
|
insert into t1 values (1),(2),(3);
|
||||||
|
|
||||||
set session rocksdb_unsafe_for_binlog=on;
|
set session rocksdb_unsafe_for_binlog=on;
|
||||||
@@ -21,7 +21,7 @@ select * from t1;
|
|||||||
delete from t1;
|
delete from t1;
|
||||||
set session rocksdb_unsafe_for_binlog=off;
|
set session rocksdb_unsafe_for_binlog=off;
|
||||||
|
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_REQUIRE_ROW_BINLOG_FORMAT
|
||||||
insert into t1 values (1),(2),(3);
|
insert into t1 values (1),(2),(3);
|
||||||
|
|
||||||
set binlog_format=row;
|
set binlog_format=row;
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
call mtr.add_suppression("Did not write failed ");
|
call mtr.add_suppression("Did not write failed ");
|
||||||
call mtr.add_suppression("Can't open and lock privilege tables");
|
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||||
|
call mtr.add_suppression("Attempt to delete the trigger file");
|
||||||
|
|
||||||
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
## SKIP LOCKED | NOWAIT are *not* supported for SELECT...FOR UPDATE in RocksDB
|
## SKIP LOCKED | NOWAIT are *not* supported for SELECT...FOR UPDATE in RocksDB
|
||||||
|
|
||||||
|
@@ -23,7 +23,7 @@ if (!$succeeds)
|
|||||||
{
|
{
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_RDB_STATUS_GENERAL
|
||||||
eval SET GLOBAL ROCKSDB_CREATE_CHECKPOINT = '$checkpoint';
|
eval SET GLOBAL ROCKSDB_CREATE_CHECKPOINT = '$checkpoint';
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
--enable_result_log
|
--enable_result_log
|
||||||
|
@@ -26,7 +26,9 @@ CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB;
|
|||||||
CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
|
CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
|
||||||
PARTITION BY KEY(l) PARTITIONS 4;
|
PARTITION BY KEY(l) PARTITIONS 4;
|
||||||
|
|
||||||
--replace_column 3 #
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
|
|
||||||
|
--replace_column 2 # 3 #
|
||||||
SHOW ENGINE rocksdb STATUS;
|
SHOW ENGINE rocksdb STATUS;
|
||||||
|
|
||||||
INSERT INTO t1 VALUES (1), (2), (3);
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
|
@@ -1 +1 @@
|
|||||||
--rocksdb_default_cf_options=write_buffer_size=16k
|
--rocksdb_default_cf_options=write_buffer_size=16k --rocksdb_strict_collation_check=0
|
||||||
|
@@ -86,4 +86,20 @@ optimize table t5;
|
|||||||
select case when variable_value-@s > 5 and variable_value-@s < 100 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete';
|
select case when variable_value-@s > 5 and variable_value-@s < 100 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete';
|
||||||
select case when variable_value-@d < 10 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_delete';
|
select case when variable_value-@d < 10 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_delete';
|
||||||
|
|
||||||
DROP TABLE t1, t2, t3, t4, t5;
|
# SingleDelete used for PK. Verify old PK is always deleted.
|
||||||
|
CREATE TABLE t6 (
|
||||||
|
pk VARCHAR(64) COLLATE latin1_swedish_ci PRIMARY KEY
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t6 VALUES ('a');
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
UPDATE t6 SET pk='A' WHERE pk='a';
|
||||||
|
SELECT * FROM t6;
|
||||||
|
DELETE FROM t6 where pk='A';
|
||||||
|
--echo SELECT should return nothing;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
|
--echo SELECT should return nothing;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2, t3, t4, t5, t6;
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
--source include/master-slave.inc
|
--source include/master-slave.inc
|
||||||
--source include/have_binlog_format_row.inc
|
--source include/have_binlog_format_row.inc
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user