1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00
commit 394d0712d3d46a87a8063e14e998e9c22336e3a6
Author: Anca Agape <anca@fb.com>
Date:   Thu Jul 27 15:43:07 2017 -0700

    Fix rpl.rpl_4threads_deadlock test broken by D5005670

    Summary:
    In D5005670 in fill_fields_processlist() function we introduced a point
    where we were trying to take the LOCK_thd_data before the
    synchronization point used by test
    processlist_after_LOCK_thd_count_before_LOCK_thd_data. This was
    happening in get_attached_srv_session() function called. Replaced this
    with get_attached_srv_session_safe() and moved it after lock is aquired.

    Reviewed By: tianx

    Differential Revision: D5505992

    fbshipit-source-id: bc53924
This commit is contained in:
Sergei Petrunia
2017-07-28 17:52:07 +00:00
parent 65d01da29c
commit 43d5edf97c
302 changed files with 13797 additions and 2671 deletions

View File

@@ -6,7 +6,7 @@ ENDIF()
CHECK_FUNCTION_EXISTS(sched_getcpu HAVE_SCHED_GETCPU) CHECK_FUNCTION_EXISTS(sched_getcpu HAVE_SCHED_GETCPU)
IF(HAVE_SCHED_GETCPU) IF(HAVE_SCHED_GETCPU)
ADD_DEFINITIONS(-DHAVE_SCHED_GETCPU=1) ADD_DEFINITIONS(-DHAVE_SCHED_GETCPU=1 -DROCKSDB_SCHED_GETCPU_PRESENT)
ENDIF() ENDIF()
# get a list of rocksdb library source files # get a list of rocksdb library source files
@@ -25,13 +25,33 @@ INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/rocksdb/third-party/gtest-1.7.0/fused-src ${CMAKE_SOURCE_DIR}/rocksdb/third-party/gtest-1.7.0/fused-src
) )
ADD_DEFINITIONS(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX -DOS_LINUX # This is a strong requirement coming from RocksDB. No conditional checks here.
-DZLIB) ADD_DEFINITIONS(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX)
IF(UNIX)
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
ADD_DEFINITIONS(-DOS_LINUX)
CHECK_INCLUDE_FILES(linux/falloc.h HAVE_LINUX_FALLOC_H)
CHECK_FUNCTION_EXISTS(fallocate HAVE_FALLOCATE) CHECK_FUNCTION_EXISTS(fallocate HAVE_FALLOCATE)
IF(HAVE_FALLOCATE)
IF(HAVE_FALLOCATE AND HAVE_LINUX_FALLOC_H)
ADD_DEFINITIONS(-DROCKSDB_FALLOCATE_PRESENT) ADD_DEFINITIONS(-DROCKSDB_FALLOCATE_PRESENT)
ENDIF() ENDIF()
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()
SET(ROCKSDB_SOURCES SET(ROCKSDB_SOURCES
ha_rocksdb.cc ha_rocksdb.h ha_rocksdb_proto.h ha_rocksdb.cc ha_rocksdb.h ha_rocksdb_proto.h
@@ -44,6 +64,7 @@ SET(ROCKSDB_SOURCES
event_listener.cc event_listener.h event_listener.cc event_listener.h
rdb_i_s.cc rdb_i_s.h rdb_i_s.cc rdb_i_s.h
rdb_index_merge.cc rdb_index_merge.h rdb_index_merge.cc rdb_index_merge.h
rdb_io_watchdog.cc rdb_io_watchdog.h
rdb_perf_context.cc rdb_perf_context.h rdb_perf_context.cc rdb_perf_context.h
rdb_mutex_wrapper.cc rdb_mutex_wrapper.h rdb_mutex_wrapper.cc rdb_mutex_wrapper.h
rdb_psi.h rdb_psi.cc rdb_psi.h rdb_psi.cc
@@ -85,7 +106,14 @@ IF (NOT "$ENV{WITH_ZSTD}" STREQUAL "")
ADD_DEFINITIONS(-DZSTD) ADD_DEFINITIONS(-DZSTD)
ENDIF() ENDIF()
SET(rocksdb_static_libs ${rocksdb_static_libs} ${ZLIB_LIBRARY} "-lrt") CHECK_INCLUDE_FILES(zlib.h HAVE_ZLIB_H)
IF (HAVE_ZLIB_H)
ADD_DEFINITIONS(-DZLIB)
SET(rocksdb_static_libs ${rocksdb_static_libs} ${ZLIB_LIBRARY})
ENDIF()
SET(rocksdb_static_libs ${rocksdb_static_libs} "-lrt")
MYSQL_ADD_PLUGIN(rocksdb_se ${ROCKSDB_SOURCES} STORAGE_ENGINE DEFAULT STATIC_ONLY MYSQL_ADD_PLUGIN(rocksdb_se ${ROCKSDB_SOURCES} STORAGE_ENGINE DEFAULT STATIC_ONLY
LINK_LIBRARIES ${rocksdb_static_libs} LINK_LIBRARIES ${rocksdb_static_libs}

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -34,6 +34,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"
@@ -42,6 +43,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"
@@ -93,12 +95,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.
@@ -107,9 +109,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.
@@ -135,7 +137,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:
@@ -149,6 +151,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.
@@ -177,12 +189,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, ...]
@@ -214,19 +230,50 @@ const char *const RDB_CF_NAME_QUALIFIER = "cfname";
#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
@@ -239,6 +286,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
@@ -283,15 +332,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
@@ -305,6 +358,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 */
@@ -314,11 +369,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
@@ -425,6 +491,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;
@@ -490,14 +561,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
@@ -506,13 +577,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();
@@ -724,14 +797,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);
@@ -750,6 +815,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__));
@@ -884,7 +952,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;
}; };
@@ -894,12 +961,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;
}; };
/* /*
@@ -955,6 +1033,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)
@@ -975,7 +1064,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)
@@ -1000,18 +1089,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__));
@@ -1091,7 +1184,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__));
@@ -1121,6 +1214,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,
@@ -1223,5 +1320,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

View File

@@ -69,7 +69,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)
@@ -82,5 +93,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

View File

@@ -394,3 +394,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;

View File

@@ -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;

View File

@@ -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

View File

@@ -817,6 +817,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',
@@ -1205,6 +1603,404 @@ count(*)
call bloom_end(); call bloom_end();
checked checked
false 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;
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
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;
call bloom_start(); call bloom_start();
select * from r1 where id1=1 and id2 in (1) order by id3 asc; select * from r1 where id1=1 and id2 in (1) order by id3 asc;

View File

@@ -817,6 +817,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',
@@ -1205,6 +1603,404 @@ count(*)
call bloom_end(); call bloom_end();
checked checked
false 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;
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
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;
call bloom_start(); call bloom_start();
select * from r1 where id1=1 and id2 in (1) order by id3 asc; select * from r1 where id1=1 and id2 in (1) order by id3 asc;

View File

@@ -1,8 +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),
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

View 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;

View 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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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= "+d,myrocks_simulate_bad_row_read1"; set session debug= "+d,myrocks_simulate_bad_row_read1";
select * from t1 where pk=1; select * from t1 where pk=1;
ERROR HY000: Got error 122 from storage engine ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
set session debug= "-d,myrocks_simulate_bad_row_read1"; set session debug= "-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= "+d,myrocks_simulate_bad_row_read2"; set session debug= "+d,myrocks_simulate_bad_row_read2";
select * from t1 where pk=1; select * from t1 where pk=1;
ERROR HY000: Got error 122 from storage engine ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
set session debug= "-d,myrocks_simulate_bad_row_read2"; set session debug= "-d,myrocks_simulate_bad_row_read2";
set session debug= "+d,myrocks_simulate_bad_row_read3"; set session debug= "+d,myrocks_simulate_bad_row_read3";
select * from t1 where pk=1; select * from t1 where pk=1;
ERROR HY000: Got error 122 from storage engine ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
set session debug= "-d,myrocks_simulate_bad_row_read3"; set session debug= "-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= "+d,myrocks_simulate_bad_pk_read1"; set session debug= "+d,myrocks_simulate_bad_pk_read1";
select * from t2; select * from t2;
ERROR HY000: Got error 122 from storage engine ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
set session debug= "-d,myrocks_simulate_bad_pk_read1"; set session debug= "-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= "+d,myrocks_simulate_bad_pk_read1"; set session debug= "+d,myrocks_simulate_bad_pk_read1";
select * from t2; select * from t2;
ERROR HY000: Got error 122 from storage engine ERROR HY000: Got error 199 'Found data corruption.' from ROCKSDB
set session debug= "-d,myrocks_simulate_bad_pk_read1"; set session debug= "-d,myrocks_simulate_bad_pk_read1";
drop table t2; drop table t2;

View 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;

View File

@@ -52,20 +52,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;

View File

@@ -45,9 +45,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

View File

@@ -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;

View File

@@ -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;

View File

@@ -8,10 +8,10 @@ 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_t2 NULL PRIMARY 1 11 zy_cf test is_ddl_t2 NULL PRIMARY 1 13 zy_cf
test is_ddl_t2 NULL x 2 11 default test is_ddl_t2 NULL x 2 12 default
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
DROP TABLE is_ddl_t1; DROP TABLE is_ddl_t1;
DROP TABLE is_ddl_t2; DROP TABLE is_ddl_t2;

View File

@@ -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;

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -28,5 +28,5 @@ begin;
update t1 set col2=123456 where pk=0; update t1 set col2=123456 where pk=0;
commit; commit;
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)
drop table t1, ten, one_k; drop table t1, ten, one_k;

View File

@@ -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;

View 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;

View File

@@ -1,6 +1,4 @@
drop table if exists t; drop table if exists t;
Warnings:
Note 1051 Unknown table 'test.t'
create table t ( create table t (
a int, a int,
b int, b int,

View File

@@ -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;

View File

@@ -47,6 +47,7 @@ help_relation help_keyword_id NULL NULL
help_relation help_topic_id NULL NULL help_relation help_topic_id NULL NULL
help_topic help_topic_id NULL NULL help_topic help_topic_id NULL NULL
help_topic name NULL NULL help_topic name NULL NULL
native_proc name NULL NULL
ndb_binlog_index epoch NULL NULL ndb_binlog_index epoch NULL NULL
ndb_binlog_index orig_epoch NULL NULL ndb_binlog_index orig_epoch NULL NULL
ndb_binlog_index orig_server_id NULL NULL ndb_binlog_index orig_server_id NULL NULL

View 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;

View File

@@ -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;

View File

@@ -862,8 +862,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
@@ -889,22 +887,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 1 rocksdb_flush_log_at_trx_commit 1
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
@@ -912,8 +917,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
@@ -935,11 +939,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
@@ -949,9 +955,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
@@ -961,6 +968,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;
@@ -1316,7 +1324,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 196 '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,
@@ -1427,10 +1435,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 #
@@ -1456,9 +1469,6 @@ rocksdb_flush_write_bytes #
rocksdb_getupdatessince_calls # rocksdb_getupdatessince_calls #
rocksdb_git_date # rocksdb_git_date #
rocksdb_git_hash # rocksdb_git_hash #
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 #
@@ -1486,6 +1496,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 #
@@ -1500,10 +1511,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
@@ -1529,9 +1545,6 @@ ROCKSDB_FLUSH_WRITE_BYTES
ROCKSDB_GETUPDATESSINCE_CALLS ROCKSDB_GETUPDATESSINCE_CALLS
ROCKSDB_GIT_DATE ROCKSDB_GIT_DATE
ROCKSDB_GIT_HASH ROCKSDB_GIT_HASH
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
@@ -1559,6 +1572,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
@@ -1575,10 +1589,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
@@ -1604,9 +1623,6 @@ ROCKSDB_FLUSH_WRITE_BYTES
ROCKSDB_GETUPDATESSINCE_CALLS ROCKSDB_GETUPDATESSINCE_CALLS
ROCKSDB_GIT_DATE ROCKSDB_GIT_DATE
ROCKSDB_GIT_HASH ROCKSDB_GIT_HASH
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
@@ -1634,6 +1650,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
@@ -1742,6 +1759,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,
@@ -1749,40 +1767,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 MySQL doesn't yet support 'ALTER TABLE on table with per-index CF'
rename table t1 to t2;
ERROR 42000: This version of MySQL 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 MySQL 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
# #
@@ -2256,6 +2241,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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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
========================================= =========================================

View File

@@ -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;

View File

@@ -4,6 +4,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*) COUNT(*)
1000 1000
SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME = "t1"; SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME = "t1";
TABLE_SCHEMA TABLE_NAME TABLE_ENGINE ROWS_INSERTED ROWS_UPDATED ROWS_DELETED ROWS_READ ROWS_REQUESTED COMPRESSED_PAGE_SIZE COMPRESS_PADDING COMPRESS_OPS COMPRESS_OPS_OK COMPRESS_PRIMARY_OPS COMPRESS_PRIMARY_OPS_OK COMPRESS_USECS COMPRESS_OK_USECS COMPRESS_PRIMARY_USECS COMPRESS_PRIMARY_OK_USECS UNCOMPRESS_OPS UNCOMPRESS_USECS ROWS_INDEX_FIRST ROWS_INDEX_NEXT IO_READ_BYTES IO_READ_REQUESTS IO_READ_SVC_USECS IO_READ_SVC_USECS_MAX IO_READ_WAIT_USECS IO_READ_WAIT_USECS_MAX IO_READ_SLOW_IOS IO_WRITE_BYTES IO_WRITE_REQUESTS IO_WRITE_SVC_USECS IO_WRITE_SVC_USECS_MAX IO_WRITE_WAIT_USECS IO_WRITE_WAIT_USECS_MAX IO_WRITE_SLOW_IOS IO_READ_BYTES_BLOB IO_READ_REQUESTS_BLOB IO_READ_SVC_USECS_BLOB IO_READ_SVC_USECS_MAX_BLOB IO_READ_WAIT_USECS_BLOB IO_READ_WAIT_USECS_MAX_BLOB IO_READ_SLOW_IOS_BLOB IO_READ_BYTES_PRIMARY IO_READ_REQUESTS_PRIMARY IO_READ_SVC_USECS_PRIMARY IO_READ_SVC_USECS_MAX_PRIMARY IO_READ_WAIT_USECS_PRIMARY IO_READ_WAIT_USECS_MAX_PRIMARY IO_READ_SLOW_IOS_PRIMARY IO_READ_BYTES_SECONDARY IO_READ_REQUESTS_SECONDARY IO_READ_SVC_USECS_SECONDARY IO_READ_SVC_USECS_MAX_SECONDARY IO_READ_WAIT_USECS_SECONDARY IO_READ_WAIT_USECS_MAX_SECONDARY IO_READ_SLOW_IOS_SECONDARY IO_INDEX_INSERTS QUERIES_USED QUERIES_EMPTY COMMENT_BYTES INNODB_ROW_LOCK_WAITS INNODB_ROW_LOCK_WAIT_TIMEOUTS INNODB_PAGES_READ INNODB_PAGES_READ_INDEX INNODB_PAGES_READ_BLOB INNODB_PAGES_WRITTEN INNODB_PAGES_WRITTEN_INDEX INNODB_PAGES_WRITTEN_BLOB TABLE_SCHEMA TABLE_NAME TABLE_ENGINE ROWS_INSERTED ROWS_UPDATED ROWS_DELETED ROWS_READ ROWS_REQUESTED COMPRESSED_PAGE_SIZE COMPRESS_PADDING COMPRESS_OPS COMPRESS_OPS_OK COMPRESS_PRIMARY_OPS COMPRESS_PRIMARY_OPS_OK COMPRESS_USECS COMPRESS_OK_USECS COMPRESS_PRIMARY_USECS COMPRESS_PRIMARY_OK_USECS UNCOMPRESS_OPS UNCOMPRESS_USECS ROWS_INDEX_FIRST ROWS_INDEX_NEXT IO_READ_BYTES IO_READ_REQUESTS IO_READ_SVC_USECS IO_READ_SVC_USECS_MAX IO_READ_WAIT_USECS IO_READ_WAIT_USECS_MAX IO_READ_SLOW_IOS IO_WRITE_BYTES IO_WRITE_REQUESTS IO_WRITE_SVC_USECS IO_WRITE_SVC_USECS_MAX IO_WRITE_WAIT_USECS IO_WRITE_WAIT_USECS_MAX IO_WRITE_SLOW_IOS IO_READ_BYTES_BLOB IO_READ_REQUESTS_BLOB IO_READ_SVC_USECS_BLOB IO_READ_SVC_USECS_MAX_BLOB IO_READ_WAIT_USECS_BLOB IO_READ_WAIT_USECS_MAX_BLOB IO_READ_SLOW_IOS_BLOB IO_READ_BYTES_PRIMARY IO_READ_REQUESTS_PRIMARY IO_READ_SVC_USECS_PRIMARY IO_READ_SVC_USECS_MAX_PRIMARY IO_READ_WAIT_USECS_PRIMARY IO_READ_WAIT_USECS_MAX_PRIMARY IO_READ_SLOW_IOS_PRIMARY IO_READ_BYTES_SECONDARY IO_READ_REQUESTS_SECONDARY IO_READ_SVC_USECS_SECONDARY IO_READ_SVC_USECS_MAX_SECONDARY IO_READ_WAIT_USECS_SECONDARY IO_READ_WAIT_USECS_MAX_SECONDARY IO_READ_SLOW_IOS_SECONDARY IO_INDEX_INSERTS QUERIES_USED QUERIES_EMPTY COMMENT_BYTES ROW_LOCK_WAITS ROW_LOCK_WAIT_TIMEOUTS ROW_LOCK_DEADLOCKS INNODB_PAGES_READ INNODB_PAGES_READ_INDEX INNODB_PAGES_READ_BLOB INNODB_PAGES_WRITTEN INNODB_PAGES_WRITTEN_INDEX INNODB_PAGES_WRITTEN_BLOB
test t1 ROCKSDB 1000 0 0 1000 1001 0 0 0 0 0 0 0 0 0 0 0 0 1 999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1001 0 0 0 0 0 0 0 0 0 0 test t1 ROCKSDB 1000 0 0 1000 1001 0 0 0 0 0 0 0 0 0 0 0 0 1 999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1001 0 0 0 0 0 0 0 0 0 0 0
DROP TABLE t1; DROP TABLE t1;

View File

@@ -1,8 +1,8 @@
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: Got error 197 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB ERROR HY000: Got error 195 'Specifying DATA DIRECTORY for an individual table is not supported.' from 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: Got error 198 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB ERROR HY000: Got error 196 'Specifying INDEX 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)
@@ -11,7 +11,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: Got error 197 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB 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)
@@ -20,4 +20,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: Got error 198 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB ERROR HY000: Got error 196 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB

View 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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -1,2 +1,2 @@
RocksDB: Can't enable both use_direct_reads and allow_mmap_reads RocksDB: Can't enable both use_direct_reads and allow_mmap_reads
RocksDB: Can't enable both use_direct_writes and allow_mmap_writes RocksDB: Can't enable both use_direct_io_for_flush_and_compaction and allow_mmap_writes

View 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;

View File

@@ -1,7 +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 LOCAL rocksdb_flush_log_at_trx_commit=0; set @save_rocksdb_flush_log_at_trx_commit=@@global.rocksdb_flush_log_at_trx_commit;
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';
@@ -15,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
@@ -28,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=1; 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;

View File

@@ -170,7 +170,7 @@ DROP TABLE t1;
# test failure in prepare phase (due to collation) # test failure in prepare phase (due to collation)
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;
@@ -341,3 +341,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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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}

View File

@@ -26,12 +26,20 @@ DELIMITER ;//
--source $ddl --source $ddl
--source suite/rocksdb/t/bloomfilter_load_select.inc --source suite/rocksdb/t/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
--exec sed s/##CF##/" COMMENT 'cf_long_prefix'"/g $tmpl_ddl > $ddl --exec sed s/##CF##/" COMMENT 'cf_long_prefix'"/g $tmpl_ddl > $ddl
--source $ddl --source $ddl
--source suite/rocksdb/t/bloomfilter_load_select.inc --source suite/rocksdb/t/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

View 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;

View File

@@ -1,119 +1,6 @@
--source include/have_rocksdb.inc --source include/have_rocksdb.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;

View 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;

View File

@@ -0,0 +1,6 @@
--source include/have_rocksdb.inc
--let pk_cf=rev:cf1
--let data_order_desc=0
--source bulk_load.inc

View File

@@ -0,0 +1,6 @@
--source include/have_rocksdb.inc
--let pk_cf=rev:cf1
--let data_order_desc=1
--source bulk_load.inc

View File

@@ -0,0 +1,6 @@
--source include/have_rocksdb.inc
--let pk_cf=cf1
--let data_order_desc=1
--source bulk_load.inc

View File

@@ -12,9 +12,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;
@@ -42,20 +42,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
@@ -64,7 +64,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
@@ -73,7 +73,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
@@ -82,7 +82,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
@@ -91,7 +91,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
@@ -100,7 +100,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
@@ -109,7 +109,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
@@ -118,7 +118,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
@@ -127,7 +127,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
@@ -136,7 +136,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
@@ -144,10 +144,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;
@@ -156,12 +156,12 @@ DROP TABLE t2;
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err --exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b"; SET GLOBAL rocksdb_strict_collation_exceptions="[a-b";
--exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2 --exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
--error ER_UNKNOWN_ERROR --error ER_UNSUPPORTED_COLLATION
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;
@@ -169,11 +169,11 @@ DROP TABLE a, b;
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err --exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
SET GLOBAL rocksdb_strict_collation_exceptions="abc\\"; SET GLOBAL rocksdb_strict_collation_exceptions="abc\\";
--exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2 --exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
--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;

View File

@@ -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',

View File

@@ -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

View File

@@ -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= "+d,myrocks_simulate_bad_row_read1"; set session debug= "+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= "-d,myrocks_simulate_bad_row_read1"; set session debug= "-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= "+d,myrocks_simulate_bad_row_read2"; set session debug= "+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= "-d,myrocks_simulate_bad_row_read2"; set session debug= "-d,myrocks_simulate_bad_row_read2";
set session debug= "+d,myrocks_simulate_bad_row_read3"; set session debug= "+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= "-d,myrocks_simulate_bad_row_read3"; set session debug= "-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= "+d,myrocks_simulate_bad_pk_read1"; set session debug= "+d,myrocks_simulate_bad_pk_read1";
--error ER_GET_ERRNO --error ER_GET_ERRMSG
select * from t2; select * from t2;
set session debug= "-d,myrocks_simulate_bad_pk_read1"; set session debug= "-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= "+d,myrocks_simulate_bad_pk_read1"; set session debug= "+d,myrocks_simulate_bad_pk_read1";
--error ER_GET_ERRNO --error ER_GET_ERRMSG
select * from t2; select * from t2;
set session debug= "-d,myrocks_simulate_bad_pk_read1"; set session debug= "-d,myrocks_simulate_bad_pk_read1";

View File

@@ -0,0 +1,3 @@
let $engine=rocksdb;
--source include/deadlock_stats.inc

View File

@@ -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;

View File

@@ -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

View File

@@ -106,10 +106,5 @@ 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
--exec perl suite/rocksdb/t/drop_table_compactions.pl $MYSQLTEST_VARDIR/log/mysqld.1.err
# Cleanup # Cleanup
drop table t1; drop table t1;

View File

@@ -87,6 +87,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';
let $output= $MYSQLTEST_VARDIR/tmp/size_output; let $output= $MYSQLTEST_VARDIR/tmp/size_output;
--exec du -c $MYSQLTEST_VARDIR/mysqld.1/data/.rocksdb/*.sst |grep total |sed 's/[\t]total/ before/' > $output --exec du -c $MYSQLTEST_VARDIR/mysqld.1/data/.rocksdb/*.sst |grep total |sed 's/[\t]total/ before/' > $output
@@ -96,6 +100,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

View File

@@ -1,37 +0,0 @@
sub print_array {
$str = shift;
@arr = @_;
$prev= 0;
foreach (@arr) {
if ($prev) {
$dummy_idx = $_ - $prev;
}else {
$dummy_idx = 0;
}
$prev= $_;
print "$str $dummy_idx\n";
}
}
while (<>) {
if (/Compacting away elements from dropped index \(\d+,(\d+)\): (\d+)/) {
$a{$1} += $2;
}
if (/Begin filtering dropped index \(\d+,(\d+)\)/) {
push @b, $1;
}
if (/Finished filtering dropped index \(\d+,(\d+)\)/) {
push @c, $1;
}
}
$prev= 0;
foreach (sort {$a <=> $b} keys %a){
if ($prev) {
$dummy_idx= $_ - $prev;
}else {
$dummy_idx= 0;
}
$prev= $_;
}
print_array("Begin filtering dropped index+", sort {$a <=> $b} @b);
print_array("Finished filtering dropped index+", sort {$a <=> $b} @c);

View File

@@ -8,7 +8,7 @@ INSERT INTO t values (1), (2), (3);
CREATE TABLE t(id int primary key) engine=rocksdb; CREATE TABLE t(id int primary key) engine=rocksdb;
FLUSH TABLES; FLUSH TABLES;
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm.tmp --exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm.tmp
--error ER_UNKNOWN_ERROR --error ER_METADATA_INCONSISTENCY
CREATE TABLE t(id int primary key) engine=rocksdb; CREATE TABLE t(id int primary key) engine=rocksdb;
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm.tmp $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm --exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm.tmp $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm
FLUSH TABLES; FLUSH TABLES;

View File

@@ -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

View File

@@ -0,0 +1 @@
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin

View 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;

View File

@@ -0,0 +1 @@
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin

View File

@@ -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;

View File

@@ -44,12 +44,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';

View File

@@ -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;

View File

@@ -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;

View 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;

View File

@@ -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;

View File

@@ -1,4 +1,9 @@
--source include/have_rocksdb.inc
--source include/have_partition.inc
--disable_warnings
drop table if exists t; drop table if exists t;
--enable_warnings
create table t ( create table t (
a int, a int,
b int, b int,

View File

@@ -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;
} }

View File

@@ -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

View File

@@ -0,0 +1 @@
$NP_EXAMPLE_LIB_OPT

View File

@@ -0,0 +1,2 @@
let $engine=rocksdb;
--source include/native_procedure.inc

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -1135,7 +1135,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;
@@ -1350,7 +1350,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,
@@ -1358,44 +1360,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
@@ -1787,9 +1751,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;

View File

@@ -418,6 +418,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;
@@ -492,3 +493,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;

View File

@@ -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

View File

@@ -16,9 +16,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;
@@ -33,11 +33,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;
@@ -54,9 +54,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;
@@ -73,9 +73,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

View File

@@ -10,7 +10,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;
@@ -19,7 +19,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;

View File

@@ -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;

View File

@@ -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

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