mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Copy of
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:
@@ -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}
|
||||||
|
@@ -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
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
|
@@ -79,11 +79,25 @@ INSERT INTO t1 (a, b) VALUES (1, 5);
|
|||||||
INSERT INTO t1 (a, b) VALUES (2, 6);
|
INSERT INTO t1 (a, b) VALUES (2, 6);
|
||||||
INSERT INTO t1 (a, b) VALUES (3, 7);
|
INSERT INTO t1 (a, b) VALUES (3, 7);
|
||||||
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
||||||
ERROR HY000: Unique index support is disabled when the table has no primary key.
|
INSERT INTO t1 (a, b) VALUES (4, 8);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (5, 5);
|
||||||
|
ERROR 23000: Duplicate entry '5' for key 'kb'
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) DEFAULT NULL,
|
`a` int(11) DEFAULT NULL,
|
||||||
`b` int(11) DEFAULT NULL
|
`b` int(11) DEFAULT NULL,
|
||||||
|
UNIQUE KEY `kb` (`b`)
|
||||||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT,
|
||||||
|
c INT,
|
||||||
|
KEY kbc(b,c)) ENGINE = ROCKSDB;
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (3,2,2);
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc, ADD UNIQUE INDEX kbc(b,c), ALGORITHM=INPLACE;
|
||||||
|
ERROR 23000: Duplicate entry '2-2' for key 'kbc'
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -229,7 +229,20 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
|
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
|
||||||
ERROR HY000: Unique index support is disabled when the table has no primary key.
|
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'c');
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 'a'
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 a
|
||||||
|
2 b
|
||||||
|
SELECT * FROM t1 WHERE a = 2;
|
||||||
|
a b
|
||||||
|
2 b
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE a = 2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 const a a 5 const 1 NULL
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
19
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result
Normal file
19
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_errors.result
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE t1(pk INT, PRIMARY KEY(pk));
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(10);
|
||||||
|
INSERT INTO t1 VALUES(11);
|
||||||
|
INSERT INTO t1 VALUES(9);
|
||||||
|
ERROR HY000: Rows must be inserted in primary key order during bulk load operation
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk
|
||||||
|
10
|
||||||
|
11
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
INSERT INTO t1 VALUES(2);
|
||||||
|
INSERT INTO t1 VALUES(20);
|
||||||
|
INSERT INTO t1 VALUES(21);
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
|
DROP TABLE t1;
|
82
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_rev_cf.result
Normal file
82
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_rev_cf.result
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
Data will be ordered in ascending order
|
||||||
|
CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin' PARTITION BY KEY() PARTITIONS 4;
|
||||||
|
set session transaction isolation level repeatable read;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
STAT_TYPE VALUE
|
||||||
|
DB_NUM_SNAPSHOTS 0
|
||||||
|
start transaction with consistent snapshot;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
STAT_TYPE VALUE
|
||||||
|
DB_NUM_SNAPSHOTS 1
|
||||||
|
set rocksdb_bulk_load=1;
|
||||||
|
set rocksdb_bulk_load_size=100000;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t1;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t2;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t3;
|
||||||
|
set rocksdb_bulk_load=0;
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
test.t2 analyze status OK
|
||||||
|
test.t3 analyze status OK
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
select count(pk) from t1;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t1;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t1;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t2;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t2;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t2;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t3;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t3;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t3;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
|
||||||
|
test.bulk_load.tmp
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -0,0 +1,82 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
Data will be ordered in descending order
|
||||||
|
CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "rev:cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin' PARTITION BY KEY() PARTITIONS 4;
|
||||||
|
set session transaction isolation level repeatable read;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
STAT_TYPE VALUE
|
||||||
|
DB_NUM_SNAPSHOTS 0
|
||||||
|
start transaction with consistent snapshot;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
STAT_TYPE VALUE
|
||||||
|
DB_NUM_SNAPSHOTS 1
|
||||||
|
set rocksdb_bulk_load=1;
|
||||||
|
set rocksdb_bulk_load_size=100000;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t1;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t2;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t3;
|
||||||
|
set rocksdb_bulk_load=0;
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
test.t2 analyze status OK
|
||||||
|
test.t3 analyze status OK
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
select count(pk) from t1;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t1;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t1;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t2;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t2;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t2;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t3;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t3;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t3;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
|
||||||
|
test.bulk_load.tmp
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -0,0 +1,82 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
Data will be ordered in descending order
|
||||||
|
CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "cf1",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin' PARTITION BY KEY() PARTITIONS 4;
|
||||||
|
set session transaction isolation level repeatable read;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
STAT_TYPE VALUE
|
||||||
|
DB_NUM_SNAPSHOTS 0
|
||||||
|
start transaction with consistent snapshot;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
STAT_TYPE VALUE
|
||||||
|
DB_NUM_SNAPSHOTS 1
|
||||||
|
set rocksdb_bulk_load=1;
|
||||||
|
set rocksdb_bulk_load_size=100000;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t1;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t2;
|
||||||
|
LOAD DATA INFILE <input_file> INTO TABLE t3;
|
||||||
|
set rocksdb_bulk_load=0;
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
test.t2 analyze status OK
|
||||||
|
test.t3 analyze status OK
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t2 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL
|
||||||
|
t3 ROCKSDB 10 Fixed 5000000 # # # # 0 NULL NULL NULL NULL latin1_bin NULL partitioned
|
||||||
|
select count(pk) from t1;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t1;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t1;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t2;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t2;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t2;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
select count(pk) from t3;
|
||||||
|
count(pk)
|
||||||
|
5000000
|
||||||
|
select count(a) from t3;
|
||||||
|
count(a)
|
||||||
|
5000000
|
||||||
|
select count(b) from t3;
|
||||||
|
count(b)
|
||||||
|
5000000
|
||||||
|
longfilenamethatvalidatesthatthiswillgetdeleted.bulk_load.tmp
|
||||||
|
test.bulk_load.tmp
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -5,7 +5,7 @@ connection con1;
|
|||||||
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=ROCKSDB;
|
CREATE TABLE t1 (a INT, pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=ROCKSDB;
|
||||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
STAT_TYPE VALUE
|
STAT_TYPE VALUE
|
||||||
@@ -18,7 +18,7 @@ STAT_TYPE VALUE
|
|||||||
DB_NUM_SNAPSHOTS 0
|
DB_NUM_SNAPSHOTS 0
|
||||||
connection con1;
|
connection con1;
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO t1 (a) VALUES (1);
|
INSERT INTO t1 (a) VALUES (1);
|
||||||
connection con1;
|
connection con1;
|
||||||
@@ -69,7 +69,7 @@ id value value2
|
|||||||
5 5 5
|
5 5 5
|
||||||
6 6 6
|
6 6 6
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO r1 values (7,7,7);
|
INSERT INTO r1 values (7,7,7);
|
||||||
connection con1;
|
connection con1;
|
||||||
@@ -107,12 +107,12 @@ id value value2
|
|||||||
7 7 7
|
7 7 7
|
||||||
8 8 8
|
8 8 8
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO r1 values (9,9,9);
|
INSERT INTO r1 values (9,9,9);
|
||||||
connection con1;
|
connection con1;
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
connection con2;
|
connection con2;
|
||||||
INSERT INTO r1 values (10,10,10);
|
INSERT INTO r1 values (10,10,10);
|
||||||
connection con1;
|
connection con1;
|
||||||
@@ -129,7 +129,7 @@ id value value2
|
|||||||
9 9 9
|
9 9 9
|
||||||
10 10 10
|
10 10 10
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 1105
|
ERROR: 1938
|
||||||
INSERT INTO r1 values (11,11,11);
|
INSERT INTO r1 values (11,11,11);
|
||||||
ERROR: 0
|
ERROR: 0
|
||||||
SELECT * FROM r1;
|
SELECT * FROM r1;
|
||||||
|
@@ -125,7 +125,7 @@ id value value2
|
|||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR: 0
|
ERROR: 0
|
||||||
INSERT INTO r1 values (11,11,11);
|
INSERT INTO r1 values (11,11,11);
|
||||||
ERROR: 1105
|
ERROR: 1935
|
||||||
SELECT * FROM r1;
|
SELECT * FROM r1;
|
||||||
id value value2
|
id value value2
|
||||||
1 1 1
|
1 1 1
|
||||||
|
@@ -20,7 +20,7 @@ set @tmp1=@@rocksdb_verify_row_debug_checksums;
|
|||||||
set rocksdb_verify_row_debug_checksums=1;
|
set rocksdb_verify_row_debug_checksums=1;
|
||||||
set session debug= "+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;
|
||||||
|
51
storage/rocksdb/mysql-test/rocksdb/r/deadlock_stats.result
Normal file
51
storage/rocksdb/mysql-test/rocksdb/r/deadlock_stats.result
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
set @prior_lock_wait_timeout = @@rocksdb_lock_wait_timeout; set @prior_deadlock_detect = @@rocksdb_deadlock_detect; set global rocksdb_deadlock_detect = on; set global rocksdb_lock_wait_timeout = 100000;;
|
||||||
|
create table t (i int primary key) engine=rocksdb;
|
||||||
|
insert into t values (1), (2), (3);
|
||||||
|
begin;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
i
|
||||||
|
1
|
||||||
|
begin;
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
rollback;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
rollback;
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
1
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
1
|
||||||
|
begin;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
i
|
||||||
|
1
|
||||||
|
begin;
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
select * from t where i=2 for update;
|
||||||
|
select * from t where i=1 for update;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
rollback;
|
||||||
|
i
|
||||||
|
2
|
||||||
|
rollback;
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
2
|
||||||
|
select row_lock_deadlocks from information_schema.table_statistics where
|
||||||
|
table_name = "t";
|
||||||
|
row_lock_deadlocks
|
||||||
|
2
|
||||||
|
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout; set global rocksdb_deadlock_detect = @prior_deadlock_detect;;
|
||||||
|
drop table t;
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
@@ -1,16 +1,16 @@
|
|||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
CREATE TABLE t1 (b INT PRIMARY KEY);
|
CREATE TABLE t1 (b INT PRIMARY KEY);
|
||||||
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL, FOREIGN KEY (b) REFERENCES t1(b));
|
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL, FOREIGN KEY (b) REFERENCES t1(b));
|
||||||
ERROR 42000: MyRocks does not currently support foreign key constraints
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
CREATE TABLE t2 (a INT NOT NULL, bforeign INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL, bforeign INT NOT NULL);
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL, foreignkey INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL, foreignkey INT NOT NULL);
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL, bforeign INT not null, FOREIGN KEY (bforeign) REFERENCES t1(b));
|
CREATE TABLE t2 (a INT NOT NULL, bforeign INT not null, FOREIGN KEY (bforeign) REFERENCES t1(b));
|
||||||
ERROR 42000: MyRocks does not currently support foreign key constraints
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL, b INT NOT NULL);
|
||||||
ALTER TABLE t2 ADD FOREIGN KEY (b) REFERENCES t1(b);
|
ALTER TABLE t2 ADD FOREIGN KEY (b) REFERENCES t1(b);
|
||||||
ERROR 42000: MyRocks does not currently support foreign key constraints
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL);
|
||||||
ALTER TABLE t2 ADD bforeign INT NOT NULL;
|
ALTER TABLE t2 ADD bforeign INT NOT NULL;
|
||||||
@@ -20,6 +20,6 @@ ALTER TABLE t2 ADD foreignkey INT NOT NULL;
|
|||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
CREATE TABLE t2 (a INT NOT NULL);
|
CREATE TABLE t2 (a INT NOT NULL);
|
||||||
ALTER TABLE t2 ADD bforeign INT NOT NULL, ADD FOREIGN KEY (bforeign) REFERENCES t1(b);
|
ALTER TABLE t2 ADD bforeign INT NOT NULL, ADD FOREIGN KEY (bforeign) REFERENCES t1(b);
|
||||||
ERROR 42000: MyRocks does not currently support foreign key constraints
|
ERROR 42000: This version of MySQL doesn't yet support 'FOREIGN KEY for the RocksDB storage engine'
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@@ -483,7 +483,7 @@ delete from test where value = 20;
|
|||||||
connection con1;
|
connection con1;
|
||||||
commit;
|
commit;
|
||||||
connection con2;
|
connection con2;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_snapshot_conflict_errors';
|
select variable_value-@a from information_schema.global_status where variable_name='rocksdb_snapshot_conflict_errors';
|
||||||
variable_value-@a
|
variable_value-@a
|
||||||
1
|
1
|
||||||
@@ -511,7 +511,7 @@ update test set value = 12 where id = 1;
|
|||||||
connection con1;
|
connection con1;
|
||||||
commit;
|
commit;
|
||||||
connection con2;
|
connection con2;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
commit;
|
commit;
|
||||||
connection con1;
|
connection con1;
|
||||||
truncate table test;
|
truncate table test;
|
||||||
@@ -582,7 +582,7 @@ update test set value = 18 where id = 2;
|
|||||||
commit;
|
commit;
|
||||||
connection con1;
|
connection con1;
|
||||||
delete from test where value = 20;
|
delete from test where value = 20;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
commit;
|
commit;
|
||||||
connection con1;
|
connection con1;
|
||||||
truncate table test;
|
truncate table test;
|
||||||
|
@@ -8,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;
|
||||||
|
@@ -0,0 +1,48 @@
|
|||||||
|
CREATE TABLE t1
|
||||||
|
(
|
||||||
|
/* fields/keys for row retrieval tests */
|
||||||
|
key1 INT,
|
||||||
|
key2 INT,
|
||||||
|
key3 INT,
|
||||||
|
key4 INT,
|
||||||
|
/* make rows much bigger then keys */
|
||||||
|
filler1 CHAR(200),
|
||||||
|
KEY(key1),
|
||||||
|
KEY(key2)
|
||||||
|
) ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t0 AS SELECT * FROM t1;
|
||||||
|
# Printing of many insert into t0 values (....) disabled.
|
||||||
|
# Printing of many insert into t1 select .... from t0 disabled.
|
||||||
|
# Printing of many insert into t1 (...) values (....) disabled.
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
7201
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now = 1;
|
||||||
|
EXPLAIN UPDATE t1 SET filler1='to be deleted' WHERE key1=100 AND key2=100;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index_merge key1,key2 key1,key2 5,5 NULL # Using intersect(key1,key2); Using where
|
||||||
|
UPDATE t1 SET filler1='to be deleted' WHERE key1=100 and key2=100;
|
||||||
|
DROP TABLE t0, t1;
|
||||||
|
create table t1 (key1 int, key2 int, key3 int, key (key1), key (key2), key(key3)) engine=rocksdb;
|
||||||
|
insert into t1 values (1, 100, 100), (1, 200, 200), (1, 300, 300);
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
explain select * from t1 where key1 = 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref key1 key1 5 const # NULL
|
||||||
|
explain select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index_merge key1,key2 key1,key2 5,5 NULL # Using union(key1,key2); Using where
|
||||||
|
select * from t1 where key1 = 1;
|
||||||
|
key1 key2 key3
|
||||||
|
1 100 100
|
||||||
|
1 200 200
|
||||||
|
1 300 300
|
||||||
|
select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
key1 key2
|
||||||
|
1 100
|
||||||
|
1 200
|
||||||
|
1 300
|
||||||
|
drop table t1;
|
1419
storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result
Normal file
1419
storage/rocksdb/mysql-test/rocksdb/r/index_merge_rocksdb2.result
Normal file
File diff suppressed because it is too large
Load Diff
@@ -39,12 +39,10 @@ a int,
|
|||||||
b int,
|
b int,
|
||||||
c int,
|
c int,
|
||||||
d int,
|
d int,
|
||||||
e int,
|
|
||||||
PRIMARY KEY (a) COMMENT "cf_a",
|
PRIMARY KEY (a) COMMENT "cf_a",
|
||||||
KEY (b) COMMENT "cf_b",
|
KEY (b) COMMENT "cf_b",
|
||||||
KEY (c) COMMENT "cf_c",
|
KEY (c) COMMENT "cf_c",
|
||||||
KEY (d) COMMENT "$per_index_cf",
|
KEY (d) COMMENT "rev:cf_d") ENGINE=ROCKSDB;
|
||||||
KEY (e) COMMENT "rev:cf_d") ENGINE=ROCKSDB;
|
|
||||||
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
|
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where TYPE = 'CF_FLAGS';
|
||||||
TYPE NAME VALUE
|
TYPE NAME VALUE
|
||||||
CF_FLAGS 0 default [0]
|
CF_FLAGS 0 default [0]
|
||||||
@@ -52,8 +50,7 @@ CF_FLAGS 1 __system__ [0]
|
|||||||
CF_FLAGS 2 cf_a [0]
|
CF_FLAGS 2 cf_a [0]
|
||||||
CF_FLAGS 3 cf_b [0]
|
CF_FLAGS 3 cf_b [0]
|
||||||
CF_FLAGS 4 cf_c [0]
|
CF_FLAGS 4 cf_c [0]
|
||||||
CF_FLAGS 5 test.t2.d [2]
|
CF_FLAGS 5 rev:cf_d [1]
|
||||||
CF_FLAGS 6 rev:cf_d [1]
|
|
||||||
CREATE TABLE t3 (a INT, PRIMARY KEY (a)) ENGINE=ROCKSDB;
|
CREATE TABLE t3 (a INT, PRIMARY KEY (a)) ENGINE=ROCKSDB;
|
||||||
insert into t3 (a) values (1), (2), (3);
|
insert into t3 (a) values (1), (2), (3);
|
||||||
SET @ORIG_ROCKSDB_PAUSE_BACKGROUND_WORK = @@GLOBAL.ROCKSDB_PAUSE_BACKGROUND_WORK;
|
SET @ORIG_ROCKSDB_PAUSE_BACKGROUND_WORK = @@GLOBAL.ROCKSDB_PAUSE_BACKGROUND_WORK;
|
||||||
@@ -69,7 +66,7 @@ SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
rocksdb_pause_background_work ON
|
rocksdb_pause_background_work ON
|
||||||
DROP TABLE t3;
|
DROP TABLE t3;
|
||||||
cf_id:0,index_id:268
|
cf_id:0,index_id:267
|
||||||
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=0;
|
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK=0;
|
||||||
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
|
SHOW GLOBAL VARIABLES LIKE 'ROCKSDB_PAUSE_BACKGROUND_WORK';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
|
@@ -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;
|
||||||
|
@@ -0,0 +1,155 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT,
|
||||||
|
val1 INT,
|
||||||
|
val2 INT,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 VALUES(1,1,1),(2,1,2);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 1 2
|
||||||
|
UPDATE t1 SET val1=2 WHERE id=2;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 2 2
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(20,1,1),(30,30,30);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 2 2
|
||||||
|
20 1 1
|
||||||
|
30 30 30
|
||||||
|
UPDATE t1 SET val1=20, val2=20 WHERE id=20;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id val1 val2
|
||||||
|
1 1 1
|
||||||
|
2 2 2
|
||||||
|
20 20 20
|
||||||
|
30 30 30
|
||||||
|
DELETE FROM t1 WHERE id=30;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
---SNAPSHOT, ACTIVE NUM sec
|
||||||
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
|
lock count 8, write count 4
|
||||||
|
insert count 2, update count 1, delete count 1
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(40,40,40);
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
---SNAPSHOT, ACTIVE NUM sec
|
||||||
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
|
lock count 2, write count 1
|
||||||
|
insert count 1, update count 0, delete count 0
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE IF EXISTS t2;
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
id1 INT,
|
||||||
|
id2 INT,
|
||||||
|
value INT,
|
||||||
|
PRIMARY KEY (id1),
|
||||||
|
KEY (id2)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t2 VALUES(1,2,0),(10,20,30);
|
||||||
|
UPDATE t2 SET value=3 WHERE id2=2;
|
||||||
|
DELETE FROM t2 WHERE id1=10;
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
Type Name Status
|
||||||
|
SNAPSHOTS rocksdb
|
||||||
|
============================================================
|
||||||
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
============================================================
|
||||||
|
---------
|
||||||
|
SNAPSHOTS
|
||||||
|
---------
|
||||||
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
||||||
|
---SNAPSHOT, ACTIVE NUM sec
|
||||||
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
|
lock count 9, write count 7
|
||||||
|
insert count 2, update count 1, delete count 1
|
||||||
|
-----------------------------------------
|
||||||
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t2;
|
21
storage/rocksdb/mysql-test/rocksdb/r/issue255.result
Normal file
21
storage/rocksdb/mysql-test/rocksdb/r/issue255.result
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
CREATE TABLE t1 (pk BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT);
|
||||||
|
INSERT INTO t1 VALUES (5);
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB # Fixed 1 # # # # # 6 NULL NULL NULL latin1_swedish_ci NULL
|
||||||
|
INSERT INTO t1 VALUES ('538647864786478647864');
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'pk' at row 1
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB # Fixed 2 # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL
|
||||||
|
INSERT INTO t1 VALUES ();
|
||||||
|
ERROR 23000: Duplicate entry '9223372036854775807' for key 'PRIMARY'
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk
|
||||||
|
5
|
||||||
|
9223372036854775807
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
t1 ROCKSDB # Fixed 2 # # # # # 9223372036854775807 NULL NULL NULL latin1_swedish_ci NULL
|
||||||
|
DROP TABLE t1;
|
@@ -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,
|
||||||
|
@@ -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;
|
@@ -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
|
||||||
|
397
storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result
Normal file
397
storage/rocksdb/mysql-test/rocksdb/r/native_procedure.result
Normal file
@@ -0,0 +1,397 @@
|
|||||||
|
create database linkdb;
|
||||||
|
use linkdb;
|
||||||
|
create table linktable (
|
||||||
|
id1 bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
id2 bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
link_type bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
visibility tinyint(3) NOT NULL DEFAULT '0',
|
||||||
|
data varchar(255) NOT NULL DEFAULT '',
|
||||||
|
time bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
version int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
primary key (id1,id2,link_type) COMMENT 'cf_link_pk',
|
||||||
|
KEY id1_type (id1,link_type,visibility,time,version,data)
|
||||||
|
COMMENT 'rev:cf_link_id1_type') ENGINE=rocksdb DEFAULT COLLATE=latin1_bin;
|
||||||
|
create table counttable (
|
||||||
|
id bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
link_type bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
count int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
time bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
version bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
primary key (id,link_type) COMMENT 'cf_count_pk')
|
||||||
|
ENGINE=rocksdb DEFAULT COLLATE=latin1_bin;
|
||||||
|
create table nodetable (
|
||||||
|
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
type int(10) unsigned NOT NULL,
|
||||||
|
version bigint(20) unsigned NOT NULL,
|
||||||
|
time int(10) unsigned NOT NULL,
|
||||||
|
data mediumtext NOT NULL,
|
||||||
|
primary key(id) COMMENT 'cf_node_pk')
|
||||||
|
ENGINE=rocksdb DEFAULT COLLATE=latin1_bin;
|
||||||
|
#
|
||||||
|
# Test nodeGet function
|
||||||
|
#
|
||||||
|
create native procedure nodeGet soname "NP_EXAMPLE_LIB";
|
||||||
|
%nodeGet 1;
|
||||||
|
id type version time data
|
||||||
|
1 1 1 1000 data
|
||||||
|
%nodeGet 50 anything can go here;
|
||||||
|
id type version time data
|
||||||
|
50 1 1 50000 data
|
||||||
|
%nodeGet 39;
|
||||||
|
id type version time data
|
||||||
|
39 1 1 39000 data
|
||||||
|
%nodeGet 98;
|
||||||
|
id type version time data
|
||||||
|
98 1 1 98000 data
|
||||||
|
%nodeGet 1000;
|
||||||
|
id type version time data
|
||||||
|
%nodeGet -1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'nodeGet -1')
|
||||||
|
%nodeGet asdf;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'nodeGet asdf')
|
||||||
|
#
|
||||||
|
# Test linkGetRange/linkGetId2s function
|
||||||
|
#
|
||||||
|
create native procedure linkGetRange soname "NP_EXAMPLE_LIB";
|
||||||
|
create native procedure linkGetId2s soname "NP_EXAMPLE_LIB";
|
||||||
|
%linkGetRange 1 1 1000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%linkGetRange 1 2 1000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%linkGetRange 1 1 5000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%linkGetRange 1 2 1000 6000 0 5;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
%linkGetRange 1 2 1000 6000 0 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
%linkGetRange 1 2 1000 6000 2 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
%linkGetId2s 1 3 3 1 2 3;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 3 1 data 3001 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
%linkGetId2s 1 3 3 3 2 1;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
1 1 3 1 data 3001 1
|
||||||
|
%linkGetId2s 1 3 3 3 2 10;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
%linkGetId2s 1 3 3 3 2 1 asdf;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 3 1 data 3003 1
|
||||||
|
1 2 3 1 data 3002 1
|
||||||
|
1 1 3 1 data 3001 1
|
||||||
|
%linkGetId2s 1 3 0;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%linkGetId2s 1 3 4 2;
|
||||||
|
ERROR HY000: Incorrect arguments to native procedure. (query 'linkGetId2s 1 3 4 2')
|
||||||
|
#
|
||||||
|
# Test rangeQuery function
|
||||||
|
#
|
||||||
|
create native procedure rangeQuery soname "NP_EXAMPLE_LIB";
|
||||||
|
%rangeQuery 1 0 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
%rangeQuery 1 0 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
%rangeQuery 1 1 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
%rangeQuery 1 1 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
%rangeQuery 0 0 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 0 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 1 0 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
%rangeQuery 0 1 1 4 id1 1 link_type 1 visibility 1 time 1001 4 id1 1 link_type 1 visibility 1 time 1005;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
%rangeQuery 1 0 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
%rangeQuery 1 0 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
%rangeQuery 1 1 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
%rangeQuery 1 1 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%rangeQuery 0 0 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 0 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 1 0 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 2 1 data 2005 1
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
%rangeQuery 0 1 1 2 id1 1 link_type 1 2 id1 1 link_type 2;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
%rangeQuery 0 0 0 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 0 1 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
%rangeQuery 0 1 0 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 4 2 1 data 2004 1
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
%rangeQuery 0 1 1 2 id1 1 link_type 1 4 id1 1 link_type 2 visibility 1 time 2004;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 3 2 1 data 2003 1
|
||||||
|
1 2 2 1 data 2002 1
|
||||||
|
1 1 2 1 data 2001 1
|
||||||
|
#
|
||||||
|
# Test countGet function
|
||||||
|
#
|
||||||
|
create native procedure countGet soname "NP_EXAMPLE_LIB";
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
%countGet 10 1;
|
||||||
|
count
|
||||||
|
20
|
||||||
|
%countGet 111 1;
|
||||||
|
count
|
||||||
|
%countGet 1 111;
|
||||||
|
count
|
||||||
|
%countGet -1 1 1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'countGet -1 1 1')
|
||||||
|
%countGet -1 1 2;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 7, msg: 'Invalid arguments: Conversion failed for field id.', query 'countGet -1 1 2')
|
||||||
|
%countGet;
|
||||||
|
ERROR HY000: Incorrect arguments to native procedure. (query 'countGet')
|
||||||
|
#
|
||||||
|
# Check that DDL locks are respected.
|
||||||
|
#
|
||||||
|
create native procedure sleepRange soname "NP_EXAMPLE_LIB";
|
||||||
|
%sleepRange 1;
|
||||||
|
set @start_lock_wait_timeout = @@session.lock_wait_timeout;
|
||||||
|
set lock_wait_timeout = 1;
|
||||||
|
drop table counttable;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: linkdb.counttable
|
||||||
|
set lock_wait_timeout = @start_lock_wait_timeout;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
4
|
||||||
|
6
|
||||||
|
8
|
||||||
|
10
|
||||||
|
12
|
||||||
|
14
|
||||||
|
16
|
||||||
|
18
|
||||||
|
20
|
||||||
|
#
|
||||||
|
# Check that queries can be killed.
|
||||||
|
#
|
||||||
|
%sleepRange 0;
|
||||||
|
kill query ID;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
#
|
||||||
|
# Check that native procedures work properly with transactions.
|
||||||
|
#
|
||||||
|
use linkdb;
|
||||||
|
set session transaction isolation level repeatable read;
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
begin;
|
||||||
|
select count from counttable where id = 1 and link_type = 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
# Before update
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
update counttable set count = count + 1 where id = 1 and link_type = 1;
|
||||||
|
# After update
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
3
|
||||||
|
# Unchanged due to consistent reads
|
||||||
|
%countGet 1 1;
|
||||||
|
count
|
||||||
|
2
|
||||||
|
#
|
||||||
|
# Check index reads on prefixed data.
|
||||||
|
#
|
||||||
|
alter table linktable drop index id1_type;
|
||||||
|
alter table linktable
|
||||||
|
add index id1_type (id1,link_type,visibility,time,version,data(1))
|
||||||
|
COMMENT 'rev:cf_link_id1_type';
|
||||||
|
%linkGetRange 1 1 1000 2000 0 1000;
|
||||||
|
id1 id2 link_type visibility data time version
|
||||||
|
1 5 1 1 data 1005 1
|
||||||
|
1 4 1 1 data 1004 1
|
||||||
|
1 3 1 1 data 1003 1
|
||||||
|
1 2 1 1 data 1002 1
|
||||||
|
1 1 1 1 data 1001 1
|
||||||
|
#
|
||||||
|
# Check correct error handling for various scenarios.
|
||||||
|
#
|
||||||
|
create native procedure invalidKey1 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidKey1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 6, msg: 'Not found: ', query 'invalidKey1')
|
||||||
|
create native procedure invalidOpen1 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen1;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen1')
|
||||||
|
create native procedure invalidOpen2 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen2;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen2')
|
||||||
|
create native procedure invalidOpen3 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen3;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen3')
|
||||||
|
create native procedure invalidOpen4 soname "NP_EXAMPLE_LIB";
|
||||||
|
%invalidOpen4;
|
||||||
|
ERROR HY000: Native procedure failed. (code: 5, msg: 'Cannot reinitialize: ', query 'invalidOpen4')
|
||||||
|
%invalidProcedure;
|
||||||
|
ERROR HY000: Unknown native procedure. 'invalidProcedure'
|
||||||
|
create native procedure invalidProcedure soname "invalid.so";
|
||||||
|
ERROR HY000: Can't open shared library
|
||||||
|
create native procedure invalidProcedure soname "NP_EXAMPLE_LIB";
|
||||||
|
ERROR HY000: Can't find symbol 'invalidProcedure' in library
|
||||||
|
#
|
||||||
|
# Check that our functions are reloaded after restart.
|
||||||
|
#
|
||||||
|
select * from mysql.native_proc order by name;
|
||||||
|
name type dl lua
|
||||||
|
countGet native np_example.so
|
||||||
|
invalidKey1 native np_example.so
|
||||||
|
invalidOpen1 native np_example.so
|
||||||
|
invalidOpen2 native np_example.so
|
||||||
|
invalidOpen3 native np_example.so
|
||||||
|
invalidOpen4 native np_example.so
|
||||||
|
linkGetId2s native np_example.so
|
||||||
|
linkGetRange native np_example.so
|
||||||
|
nodeGet native np_example.so
|
||||||
|
rangeQuery native np_example.so
|
||||||
|
sleepRange native np_example.so
|
||||||
|
drop native procedure nodeGet;
|
||||||
|
create native procedure nodeGet soname "NP_EXAMPLE_LIB";
|
||||||
|
ERROR HY000: Native procedure 'nodeGet' exists.
|
||||||
|
drop native procedure linkGetRange;
|
||||||
|
drop native procedure linkGetId2s;
|
||||||
|
drop native procedure countGet;
|
||||||
|
drop native procedure sleepRange;
|
||||||
|
drop native procedure rangeQuery;
|
||||||
|
drop native procedure invalidKey1;
|
||||||
|
drop native procedure invalidOpen1;
|
||||||
|
drop native procedure invalidOpen2;
|
||||||
|
drop native procedure invalidOpen3;
|
||||||
|
drop native procedure invalidOpen4;
|
||||||
|
%nodeGet 1;
|
||||||
|
ERROR HY000: Unknown native procedure. 'nodeGet'
|
||||||
|
#
|
||||||
|
# Check that our functions are unloaded after restart.
|
||||||
|
#
|
||||||
|
select * from mysql.native_proc order by name;
|
||||||
|
name type dl lua
|
||||||
|
%nodeGet 1;
|
||||||
|
ERROR HY000: Unknown native procedure. 'nodeGet'
|
||||||
|
drop database linkdb;
|
@@ -0,0 +1,76 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (id1 BIGINT, id2 BIGINT, id3 BIGINT, id4 BIGINT, PRIMARY KEY (id1, id2, id3, id4) comment 'cf1') ENGINE=rocksdb collate latin1_bin;
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
Original Prefix Extractor:
|
||||||
|
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
CF_NAME OPTION_TYPE VALUE
|
||||||
|
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
1
|
||||||
|
|
||||||
|
Prefix Extractor (after override_cf_options set, should not be changed):
|
||||||
|
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
CF_NAME OPTION_TYPE VALUE
|
||||||
|
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
|
||||||
|
Restarting with new Prefix Extractor...
|
||||||
|
|
||||||
|
|
||||||
|
Changed Prefix Extractor (after restart):
|
||||||
|
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
CF_NAME OPTION_TYPE VALUE
|
||||||
|
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.26
|
||||||
|
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
0
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
UPDATE t1 SET id1=1,id2 = 30,id3 = 30 WHERE id4 >= 0 AND id4 <=10;
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
COUNT(*)
|
||||||
|
3
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
2
|
||||||
|
set global rocksdb_compact_cf='cf1';
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=30 AND id3=30;
|
||||||
|
COUNT(*)
|
||||||
|
11
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
variable_value-@u
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
@@ -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;
|
||||||
|
@@ -348,6 +348,9 @@ ALTER TABLE t2 ADD KEY (`col3`, `col4`) COMMENT 'custom_p5_cfname=another_cf_for
|
|||||||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5';
|
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5';
|
||||||
cf_name
|
cf_name
|
||||||
another_cf_for_p5
|
another_cf_for_p5
|
||||||
|
ANALYZE TABLE t2;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t2 analyze status OK
|
||||||
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567;
|
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567;
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 custom_p2 ref col3 col3 258 const 1 Using where
|
1 SIMPLE t2 custom_p2 ref col3 col3 258 const 1 Using where
|
||||||
@@ -407,3 +410,14 @@ cf_name
|
|||||||
notsharedcf
|
notsharedcf
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
DROP TABLE IF EXISTS t2;
|
DROP TABLE IF EXISTS t2;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT NOT NULL,
|
||||||
|
PRIMARY KEY (a) COMMENT 'p1_cfname=foo;'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
PARTITION BY LIST COLUMNS(a)
|
||||||
|
(PARTITION p1 VALUES IN (1) ENGINE = ROCKSDB);
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -57,7 +57,7 @@ UPDATE t1 SET value=30 WHERE id=3;
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
connection con1;
|
connection con1;
|
||||||
SELECT * FROM t1 WHERE id=3 FOR UPDATE;
|
SELECT * FROM t1 WHERE id=3 FOR UPDATE;
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction (snapshot conflict)
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
connection default;
|
connection default;
|
||||||
|
@@ -94,7 +94,7 @@ drop table t1, t2;
|
|||||||
CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(5)) PARTITION BY HASH(c1) PARTITIONS 4;
|
CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(5)) PARTITION BY HASH(c1) PARTITIONS 4;
|
||||||
INSERT INTO t1 VALUES(1,'a');
|
INSERT INTO t1 VALUES(1,'a');
|
||||||
RENAME TABLE t1 TO db3.t3;
|
RENAME TABLE t1 TO db3.t3;
|
||||||
ERROR HY000: Error on rename of './test/t1' to './db3/t3' (errno: 122 - Internal (unspecified) error in handler)
|
ERROR HY000: Error on rename of './test/t1' to './db3/t3' (errno: -1 - Unknown error -1)
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
c1 c2
|
c1 c2
|
||||||
1 a
|
1 a
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
call mtr.add_suppression("Did not write failed ");
|
call mtr.add_suppression("Did not write failed ");
|
||||||
call mtr.add_suppression("Can't open and lock privilege tables");
|
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||||
|
call mtr.add_suppression("Attempt to delete the trigger file");
|
||||||
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
||||||
CREATE TABLE mysql.user_temp LIKE mysql.user;
|
CREATE TABLE mysql.user_temp LIKE mysql.user;
|
||||||
INSERT mysql.user_temp SELECT * FROM mysql.user;
|
INSERT mysql.user_temp SELECT * FROM mysql.user;
|
||||||
|
@@ -7,14 +7,17 @@ CREATE TABLE t2 (j INT, PRIMARY KEY (j) COMMENT 'rev:cf_t2') ENGINE = ROCKSDB;
|
|||||||
CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB;
|
CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB;
|
||||||
CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
|
CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
|
||||||
PARTITION BY KEY(l) PARTITIONS 4;
|
PARTITION BY KEY(l) PARTITIONS 4;
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
SHOW ENGINE rocksdb STATUS;
|
SHOW ENGINE rocksdb STATUS;
|
||||||
Type Name Status
|
Type Name Status
|
||||||
DBSTATS rocksdb #
|
STATISTICS # #
|
||||||
CF_COMPACTION __system__ #
|
DBSTATS # #
|
||||||
CF_COMPACTION cf_t1 #
|
CF_COMPACTION # #
|
||||||
CF_COMPACTION default #
|
CF_COMPACTION # #
|
||||||
CF_COMPACTION rev:cf_t2 #
|
CF_COMPACTION # #
|
||||||
Memory_Stats rocksdb #
|
CF_COMPACTION # #
|
||||||
|
MEMORY_STATS # #
|
||||||
|
BG_THREADS # #
|
||||||
INSERT INTO t1 VALUES (1), (2), (3);
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@@ -125,19 +128,30 @@ __system__ PREFIX_EXTRACTOR #
|
|||||||
__system__ COMPACTION_STYLE #
|
__system__ COMPACTION_STYLE #
|
||||||
__system__ COMPACTION_OPTIONS_UNIVERSAL #
|
__system__ COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
__system__ COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
__system__ COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
__system__ TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
__system__ TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
__system__ TABLE_FACTORY::INDEX_TYPE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
__system__ TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
__system__ TABLE_FACTORY::CHECKSUM #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
__system__ TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
__system__ TABLE_FACTORY::BLOCK_CACHE #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
__system__ TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
__system__ TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
__system__ TABLE_FACTORY::CAPACITY #
|
||||||
__system__ BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
__system__ TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
__system__ TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
__system__ TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
__system__ TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
__system__ TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
__system__ TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
__system__ TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
__system__ TABLE_FACTORY::FORMAT_VERSION #
|
||||||
cf_t1 COMPARATOR #
|
cf_t1 COMPARATOR #
|
||||||
cf_t1 MERGE_OPERATOR #
|
cf_t1 MERGE_OPERATOR #
|
||||||
cf_t1 COMPACTION_FILTER #
|
cf_t1 COMPACTION_FILTER #
|
||||||
@@ -179,19 +193,30 @@ cf_t1 PREFIX_EXTRACTOR #
|
|||||||
cf_t1 COMPACTION_STYLE #
|
cf_t1 COMPACTION_STYLE #
|
||||||
cf_t1 COMPACTION_OPTIONS_UNIVERSAL #
|
cf_t1 COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
cf_t1 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
cf_t1 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
cf_t1 TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
cf_t1 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
cf_t1 TABLE_FACTORY::INDEX_TYPE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
cf_t1 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
cf_t1 TABLE_FACTORY::CHECKSUM #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
cf_t1 TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
cf_t1 TABLE_FACTORY::CAPACITY #
|
||||||
cf_t1 BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
cf_t1 TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
cf_t1 TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
cf_t1 TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
cf_t1 TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
cf_t1 TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
cf_t1 TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
cf_t1 TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
cf_t1 TABLE_FACTORY::FORMAT_VERSION #
|
||||||
default COMPARATOR #
|
default COMPARATOR #
|
||||||
default MERGE_OPERATOR #
|
default MERGE_OPERATOR #
|
||||||
default COMPACTION_FILTER #
|
default COMPACTION_FILTER #
|
||||||
@@ -233,19 +258,30 @@ default PREFIX_EXTRACTOR #
|
|||||||
default COMPACTION_STYLE #
|
default COMPACTION_STYLE #
|
||||||
default COMPACTION_OPTIONS_UNIVERSAL #
|
default COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
default COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
default COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
default TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
default TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
default TABLE_FACTORY::INDEX_TYPE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
default TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
default TABLE_FACTORY::CHECKSUM #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
default TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
default TABLE_FACTORY::BLOCK_CACHE #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
default TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
default TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
default TABLE_FACTORY::CAPACITY #
|
||||||
default BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
default TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
default TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
default TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
default TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
default TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
default TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
default TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
default TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
default TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
default TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
default TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
default TABLE_FACTORY::FORMAT_VERSION #
|
||||||
rev:cf_t2 COMPARATOR #
|
rev:cf_t2 COMPARATOR #
|
||||||
rev:cf_t2 MERGE_OPERATOR #
|
rev:cf_t2 MERGE_OPERATOR #
|
||||||
rev:cf_t2 COMPACTION_FILTER #
|
rev:cf_t2 COMPACTION_FILTER #
|
||||||
@@ -287,19 +323,30 @@ rev:cf_t2 PREFIX_EXTRACTOR #
|
|||||||
rev:cf_t2 COMPACTION_STYLE #
|
rev:cf_t2 COMPACTION_STYLE #
|
||||||
rev:cf_t2 COMPACTION_OPTIONS_UNIVERSAL #
|
rev:cf_t2 COMPACTION_OPTIONS_UNIVERSAL #
|
||||||
rev:cf_t2 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
rev:cf_t2 COMPACTION_OPTION_FIFO::MAX_TABLE_FILES_SIZE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
rev:cf_t2 TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::INDEX_TYPE #
|
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::CHECKSUM #
|
rev:cf_t2 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::NO_BLOCK_CACHE #
|
rev:cf_t2 TABLE_FACTORY::INDEX_TYPE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::FILTER_POLICY #
|
rev:cf_t2 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
rev:cf_t2 TABLE_FACTORY::CHECKSUM #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE #
|
rev:cf_t2 TABLE_FACTORY::NO_BLOCK_CACHE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE #
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE_NAME #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE_OPTIONS #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
rev:cf_t2 TABLE_FACTORY::CAPACITY #
|
||||||
rev:cf_t2 BLOCK_BASED_TABLE_FACTORY::FORMAT_VERSION #
|
rev:cf_t2 TABLE_FACTORY::NUM_SHARD_BITS #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::STRICT_CAPACITY_LIMIT #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::HIGH_PRI_POOL_RATIO #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_CACHE_COMPRESSED #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::PERSISTENT_CACHE #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_SIZE #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_SIZE_DEVIATION #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_RESTART_INTERVAL #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::INDEX_BLOCK_RESTART_INTERVAL #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::FILTER_POLICY #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::WHOLE_KEY_FILTERING #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::FORMAT_VERSION #
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE t3;
|
DROP TABLE t3;
|
||||||
@@ -336,6 +383,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
||||||
SHOW ENGINE rocksdb TRANSACTION STATUS
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
||||||
lock count 0, write count 0
|
lock count 0, write count 0
|
||||||
|
insert count 0, update count 0, delete count 0
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
=========================================
|
=========================================
|
||||||
|
@@ -63,4 +63,24 @@ true
|
|||||||
select case when variable_value-@d < 10 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_delete';
|
select case when variable_value-@d < 10 then 'true' else 'false' end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_delete';
|
||||||
case when variable_value-@d < 10 then 'true' else 'false' end
|
case when variable_value-@d < 10 then 'true' else 'false' end
|
||||||
true
|
true
|
||||||
DROP TABLE t1, t2, t3, t4, t5;
|
CREATE TABLE t6 (
|
||||||
|
pk VARCHAR(64) COLLATE latin1_swedish_ci PRIMARY KEY
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t6 VALUES ('a');
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
a
|
||||||
|
UPDATE t6 SET pk='A' WHERE pk='a';
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
A
|
||||||
|
DELETE FROM t6 where pk='A';
|
||||||
|
SELECT should return nothing;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT should return nothing;
|
||||||
|
SELECT * FROM t6;
|
||||||
|
pk
|
||||||
|
DROP TABLE t1, t2, t3, t4, t5, t6;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
491
storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result
Normal file
491
storage/rocksdb/mysql-test/rocksdb/r/ttl_primary.result
Normal file
@@ -0,0 +1,491 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
`a` binary(8) NOT NULL,
|
||||||
|
`b` varbinary(64) NOT NULL,
|
||||||
|
`c` varbinary(256) NOT NULL,
|
||||||
|
`ts` bigint(20) UNSIGNED NOT NULL,
|
||||||
|
`value` mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (`b`,`a`,`c`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values ('a', 'b', 'c', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values ('d', 'e', 'f', UNIX_TIMESTAMP(), 'g');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5);
|
||||||
|
INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, 5, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, 4, 6, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, 5, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, 4, 6, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int,
|
||||||
|
c int,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, NULL, NULL, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, NULL, NULL, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
`a` binary(8) NOT NULL,
|
||||||
|
`b` varbinary(64),
|
||||||
|
`c` varbinary(256),
|
||||||
|
`ts` bigint(20) UNSIGNED NOT NULL,
|
||||||
|
`value` mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values ('d', 'efghijk', NULL, UNIX_TIMESTAMP(), 'l');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, 5);
|
||||||
|
INSERT INTO t1 values (2, 4, 6);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a, ts)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;ttl_col=ts;';
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, UNIX_TIMESTAMP());
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = -10;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 10;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a, ts)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1, 3, UNIX_TIMESTAMP(), 5);
|
||||||
|
INSERT INTO t1 values (2, 4, UNIX_TIMESTAMP(), 6);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
`a` binary(8) NOT NULL,
|
||||||
|
`b` varbinary(64),
|
||||||
|
`c` varbinary(256),
|
||||||
|
`ts` bigint(20) UNSIGNED NOT NULL,
|
||||||
|
`value` mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (`a`, `ts`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values ('a', NULL, 'bc', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values ('de', 'fghijk', NULL, UNIX_TIMESTAMP(), 'l');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT NOT NULL,
|
||||||
|
b varbinary(64) NOT NULL,
|
||||||
|
c varbinary(256) NOT NULL,
|
||||||
|
ts bigint(20) UNSIGNED NOT NULL,
|
||||||
|
value mediumblob NOT NULL,
|
||||||
|
PRIMARY KEY (b,a,c)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='ttl_duration=10;ttl_col=ts;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1, 'b', 'c', UNIX_TIMESTAMP(), 'd');
|
||||||
|
INSERT INTO t1 values (2, 'e', 'f', UNIX_TIMESTAMP(), 'g');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (3, 'i', 'j', UNIX_TIMESTAMP(), 'k');
|
||||||
|
INSERT INTO t1 values (4, 'm', 'n', UNIX_TIMESTAMP(), 'o');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = -3600;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
4
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts bigint(20),
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
ERROR HY000: TTL column (ts) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
ts int,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=ts;';
|
||||||
|
ERROR HY000: TTL column (ts) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=abc;';
|
||||||
|
ERROR HY000: TTL duration (abc) in MyRocks must be an unsigned non-null 64-bit integer.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;ttl_col=abc;';
|
||||||
|
ERROR HY000: TTL column (abc) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int NOT NULL,
|
||||||
|
c int NOT NULL,
|
||||||
|
PRIMARY KEY (a,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_col=abc;';
|
||||||
|
ERROR HY000: TTL column (abc) in MyRocks must be an unsigned non-null 64-bit integer, exist inside the table, and have an accompanying ttl duration.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=500;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
ALTER TABLE t1 COMMENT = 'ttl_duration=1';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COMMENT='ttl_duration=1'
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
ALTER TABLE t1 DROP PRIMARY KEY;
|
||||||
|
ERROR HY000: TTL support is currently disabled when table has secondary indexes or hidden PK.
|
||||||
|
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
|
||||||
|
ERROR HY000: TTL support is currently disabled when table has secondary indexes or hidden PK.
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;';
|
||||||
|
INSERT INTO t1 VALUES (1,1);
|
||||||
|
INSERT INTO t1 VALUES (2,2);
|
||||||
|
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b);
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = -3600;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set @@global.rocksdb_compact_cf = 'default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) UNSIGNED NOT NULL,
|
||||||
|
b int,
|
||||||
|
PRIMARY KEY (a,b)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='asdadfasdfsadfadf ;ttl_duration=1; asfasdfasdfadfa';
|
||||||
|
INSERT INTO t1 values (UNIX_TIMESTAMP(), 1);
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
ALTER TABLE t1 COMMENT = 'adsf;;ttl_duration=5;asfasdfa;ttl_col=a;asdfasdf;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (UNIX_TIMESTAMP(), 2);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
INSERT INTO t1 values (9);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
UPDATE t1 SET a=a+1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
2
|
||||||
|
4
|
||||||
|
6
|
||||||
|
8
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
8
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT,
|
||||||
|
b bigint(20) UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;ttl_col=b;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (3, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (5, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (7, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
UPDATE t1 SET b=UNIX_TIMESTAMP() WHERE a < 4;
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_enable_ttl=0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_enable_ttl=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
3
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a bigint(20) NOT NULL,
|
||||||
|
PRIMARY KEY (a)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
@@ -0,0 +1,238 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY,
|
||||||
|
b BIGINT UNSIGNED NOT NULL
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=10;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 300;
|
||||||
|
INSERT INTO t1 values (2, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (3, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
3
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
3
|
||||||
|
set global rocksdb_debug_ttl_read_filter_ts = -310;
|
||||||
|
SELECT a FROM t1;
|
||||||
|
a
|
||||||
|
set global rocksdb_debug_ttl_read_filter_ts = 0;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int,
|
||||||
|
b int,
|
||||||
|
c int,
|
||||||
|
PRIMARY KEY (a,b,c)
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (0,0,0);
|
||||||
|
INSERT INTO t1 values (0,0,1);
|
||||||
|
INSERT INTO t1 values (0,1,0);
|
||||||
|
INSERT INTO t1 values (0,1,1);
|
||||||
|
INSERT INTO t1 values (1,1,2);
|
||||||
|
INSERT INTO t1 values (1,2,1);
|
||||||
|
INSERT INTO t1 values (1,2,2);
|
||||||
|
INSERT INTO t1 values (1,2,3);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT * FROM t1 WHERE a=1 AND b=2 AND c=2;
|
||||||
|
a b c
|
||||||
|
SELECT * FROM t1 WHERE a = 1;
|
||||||
|
a b c
|
||||||
|
SELECT max(a) from t1 where a < 3;
|
||||||
|
max(a)
|
||||||
|
NULL
|
||||||
|
SELECT max(a) from t1 where a < 2 AND b = 1 AND c < 3;
|
||||||
|
max(a)
|
||||||
|
NULL
|
||||||
|
SELECT min(a) from t1 where a >= 1;
|
||||||
|
min(a)
|
||||||
|
NULL
|
||||||
|
SELECT min(a) from t1 where a > 1;
|
||||||
|
min(a)
|
||||||
|
NULL
|
||||||
|
select * from t1 where a=1 and b in (1) order by c desc;
|
||||||
|
a b c
|
||||||
|
select max(a) from t1 where a <=10;
|
||||||
|
max(a)
|
||||||
|
NULL
|
||||||
|
select a from t1 where a > 0 and a <= 2;
|
||||||
|
a
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
0
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_expired';
|
||||||
|
variable_value-@c
|
||||||
|
8
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -110;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -100;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
UPDATE t1 set a = 1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY,
|
||||||
|
b int
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=100;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -110;
|
||||||
|
INSERT INTO t1 values (1,1);
|
||||||
|
INSERT INTO t1 values (3,3);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
INSERT INTO t1 values (5,5);
|
||||||
|
UPDATE t1 set a = 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 5
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 5
|
||||||
|
3 3
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=1;
|
||||||
|
UPDATE t1 set a = 999 where a = 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
999 5
|
||||||
|
UPDATE t1 set a = a - 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
998 5
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=5;';
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
# Creating Snapshot (start transaction)
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# Switching to connection 2
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
# Switching to connection 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
UPDATE t1 set a = a + 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
COMMIT;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int PRIMARY KEY
|
||||||
|
) ENGINE=rocksdb
|
||||||
|
COMMENT='ttl_duration=1;';
|
||||||
|
# On Connection 1
|
||||||
|
# Creating Snapshot (start transaction)
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
# On Connection 2
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -2;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
# On Connection 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
# On Connection 2
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
set global rocksdb_enable_ttl_read_filtering=1;
|
||||||
|
DROP TABLE t1;
|
@@ -0,0 +1,256 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT,
|
||||||
|
PRIMARY KEY (`c1`)
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="custom_p0_ttl_duration=1;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 4, 7),
|
||||||
|
PARTITION custom_p1 VALUES IN (2, 5, 8),
|
||||||
|
PARTITION custom_p2 VALUES IN (3, 6, 9)
|
||||||
|
);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -3600;
|
||||||
|
INSERT INTO t1 values (1);
|
||||||
|
INSERT INTO t1 values (2);
|
||||||
|
INSERT INTO t1 values (3);
|
||||||
|
INSERT INTO t1 values (4);
|
||||||
|
INSERT INTO t1 values (5);
|
||||||
|
INSERT INTO t1 values (6);
|
||||||
|
INSERT INTO t1 values (7);
|
||||||
|
INSERT INTO t1 values (8);
|
||||||
|
INSERT INTO t1 values (9);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
5
|
||||||
|
6
|
||||||
|
8
|
||||||
|
9
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT,
|
||||||
|
c2 INT,
|
||||||
|
name VARCHAR(25) NOT NULL,
|
||||||
|
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=my_custom_cf;custom_p2_cfname=baz'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="custom_p0_ttl_duration=1;custom_p1_ttl_duration=7;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 4, 7),
|
||||||
|
PARTITION custom_p1 VALUES IN (2, 5, 8),
|
||||||
|
PARTITION custom_p2 VALUES IN (3, 6, 9)
|
||||||
|
);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -1200;
|
||||||
|
INSERT INTO t1 values (1,1,'a');
|
||||||
|
INSERT INTO t1 values (4,4,'aaaa');
|
||||||
|
INSERT INTO t1 values (7,7,'aaaaaaa');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 1200;
|
||||||
|
INSERT INTO t1 values (2,2,'aa');
|
||||||
|
INSERT INTO t1 values (3,3,'aaa');
|
||||||
|
INSERT INTO t1 values (5,5,'aaaaa');
|
||||||
|
INSERT INTO t1 values (6,6,'aaaaaa');
|
||||||
|
INSERT INTO t1 values (8,8,'aaaaaaaa');
|
||||||
|
INSERT INTO t1 values (9,9,'aaaaaaaaa');
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
1 1 a
|
||||||
|
2 2 aa
|
||||||
|
3 3 aaa
|
||||||
|
4 4 aaaa
|
||||||
|
5 5 aaaaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
7 7 aaaaaaa
|
||||||
|
8 8 aaaaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
set @@global.rocksdb_compact_cf = 'my_custom_cf';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
2 2 aa
|
||||||
|
3 3 aaa
|
||||||
|
5 5 aaaaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
8 8 aaaaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 3600;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
2 2 aa
|
||||||
|
3 3 aaa
|
||||||
|
5 5 aaaaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
8 8 aaaaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
set @@global.rocksdb_compact_cf = 'my_custom_cf';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name
|
||||||
|
3 3 aaa
|
||||||
|
6 6 aaaaaa
|
||||||
|
9 9 aaaaaaaaa
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 INT,
|
||||||
|
c2 INT,
|
||||||
|
name VARCHAR(25) NOT NULL,
|
||||||
|
event DATE,
|
||||||
|
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="custom_p0_ttl_duration=9999;custom_p2_ttl_duration=5;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 2, 3),
|
||||||
|
PARTITION custom_p1 VALUES IN (4, 5, 6),
|
||||||
|
PARTITION custom_p2 VALUES IN (7, 8, 9)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (1, 1, "one", null);
|
||||||
|
INSERT INTO t1 VALUES (2, 2, "two", null);
|
||||||
|
INSERT INTO t1 VALUES (3, 3, "three", null);
|
||||||
|
INSERT INTO t1 VALUES (4, 4, "four", null);
|
||||||
|
INSERT INTO t1 VALUES (5, 5, "five", null);
|
||||||
|
INSERT INTO t1 VALUES (6, 6, "six", null);
|
||||||
|
INSERT INTO t1 VALUES (7, 7, "seven", null);
|
||||||
|
INSERT INTO t1 VALUES (8, 8, "eight", null);
|
||||||
|
INSERT INTO t1 VALUES (9, 9, "nine", null);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name event
|
||||||
|
1 1 one NULL
|
||||||
|
2 2 two NULL
|
||||||
|
3 3 three NULL
|
||||||
|
4 4 four NULL
|
||||||
|
5 5 five NULL
|
||||||
|
6 6 six NULL
|
||||||
|
7 7 seven NULL
|
||||||
|
8 8 eight NULL
|
||||||
|
9 9 nine NULL
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 600;
|
||||||
|
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(`c2`,`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;';
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL DEFAULT '0',
|
||||||
|
`c2` int(11) NOT NULL DEFAULT '0',
|
||||||
|
`name` varchar(25) NOT NULL,
|
||||||
|
`event` date DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`c2`,`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 COMMENT='custom_p0_ttl_duration=9999;custom_p2_ttl_duration=5;'
|
||||||
|
/*!50100 PARTITION BY LIST (c1)
|
||||||
|
(PARTITION custom_p0 VALUES IN (1,2,3) ENGINE = ROCKSDB,
|
||||||
|
PARTITION custom_p1 VALUES IN (4,5,6) ENGINE = ROCKSDB,
|
||||||
|
PARTITION custom_p2 VALUES IN (7,8,9) ENGINE = ROCKSDB) */
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 100;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'baz';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name event
|
||||||
|
1 1 one NULL
|
||||||
|
2 2 two NULL
|
||||||
|
3 3 three NULL
|
||||||
|
4 4 four NULL
|
||||||
|
5 5 five NULL
|
||||||
|
6 6 six NULL
|
||||||
|
7 7 seven NULL
|
||||||
|
8 8 eight NULL
|
||||||
|
9 9 nine NULL
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 1200;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
set @@global.rocksdb_compact_cf = 'baz';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 name event
|
||||||
|
1 1 one NULL
|
||||||
|
2 2 two NULL
|
||||||
|
3 3 three NULL
|
||||||
|
4 4 four NULL
|
||||||
|
5 5 five NULL
|
||||||
|
6 6 six NULL
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 BIGINT,
|
||||||
|
c2 BIGINT UNSIGNED NOT NULL,
|
||||||
|
name VARCHAR(25) NOT NULL,
|
||||||
|
event DATE,
|
||||||
|
PRIMARY KEY (`c1`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz;'
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="ttl_duration=1;custom_p1_ttl_duration=100;custom_p1_ttl_col=c2;custom_p2_ttl_duration=5000;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1, 2, 3),
|
||||||
|
PARTITION custom_p1 VALUES IN (4, 5, 6),
|
||||||
|
PARTITION custom_p2 VALUES IN (7, 8, 9)
|
||||||
|
);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = -300;
|
||||||
|
INSERT INTO t1 VALUES (1, UNIX_TIMESTAMP(), "one", null);
|
||||||
|
INSERT INTO t1 VALUES (2, UNIX_TIMESTAMP(), "two", null);
|
||||||
|
INSERT INTO t1 VALUES (3, UNIX_TIMESTAMP(), "three", null);
|
||||||
|
set global rocksdb_debug_ttl_rec_ts = 0;
|
||||||
|
INSERT INTO t1 VALUES (4, UNIX_TIMESTAMP(), "four", null);
|
||||||
|
INSERT INTO t1 VALUES (5, UNIX_TIMESTAMP(), "five", null);
|
||||||
|
INSERT INTO t1 VALUES (6, UNIX_TIMESTAMP(), "six", null);
|
||||||
|
INSERT INTO t1 VALUES (7, UNIX_TIMESTAMP(), "seven", null);
|
||||||
|
INSERT INTO t1 VALUES (8, UNIX_TIMESTAMP(), "eight", null);
|
||||||
|
INSERT INTO t1 VALUES (9, UNIX_TIMESTAMP(), "nine", null);
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set @@global.rocksdb_compact_cf = 'foo';
|
||||||
|
set @@global.rocksdb_compact_cf = 'baz';
|
||||||
|
set @@global.rocksdb_compact_cf = 'bar';
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 600;
|
||||||
|
set @@global.rocksdb_compact_cf = 'bar';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 BIGINT,
|
||||||
|
c2 BIGINT UNSIGNED NOT NULL,
|
||||||
|
PRIMARY KEY (`c1`, `c2`)
|
||||||
|
) ENGINE=ROCKSDB
|
||||||
|
COMMENT="ttl_duration=100;ttl_col=c2;"
|
||||||
|
PARTITION BY LIST(c1) (
|
||||||
|
PARTITION custom_p0 VALUES IN (1),
|
||||||
|
PARTITION custom_p1 VALUES IN (2),
|
||||||
|
PARTITION custom_p2 VALUES IN (3)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 values (1, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (2, UNIX_TIMESTAMP());
|
||||||
|
INSERT INTO t1 values (3, UNIX_TIMESTAMP());
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 300;
|
||||||
|
set global rocksdb_compact_cf='default';
|
||||||
|
set global rocksdb_debug_ttl_snapshot_ts = 0;
|
||||||
|
SELECT c1 FROM t1;
|
||||||
|
c1
|
||||||
|
DROP TABLE t1;
|
@@ -77,4 +77,39 @@ a
|
|||||||
Africa,Europe,Asia
|
Africa,Europe,Asia
|
||||||
S.America,Europe
|
S.America,Europe
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a SET('N.America','S.America','Africa','Antarctica','Australia','Europe','Asia'),
|
||||||
|
b SET('test1','test2','test3','test4','test5'),
|
||||||
|
c SET('01','22','23','33','34','39','40','44','50','63','64'),
|
||||||
|
pk SET('1','2','3','4','5','6','7','8','9') PRIMARY KEY,
|
||||||
|
UNIQUE INDEX b_a (b,a)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
SHOW INDEX IN t1;
|
||||||
|
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
|
||||||
|
t1 0 PRIMARY 1 pk A 1000 NULL NULL LSMTREE
|
||||||
|
t1 0 b_a 1 b A 500 NULL NULL YES LSMTREE
|
||||||
|
t1 0 b_a 2 a A 1000 NULL NULL YES LSMTREE
|
||||||
|
INSERT INTO t1 (a,b,c,pk) VALUES
|
||||||
|
('','test2,test3','01,34,44,23',1),
|
||||||
|
('',5,2,2),
|
||||||
|
('N.America,Asia','test4,test2','',3),
|
||||||
|
('Africa,Europe,Asia','test2,test3','01',4),
|
||||||
|
('Antarctica','test3','34,44',5),
|
||||||
|
('Asia','test5','50',6),
|
||||||
|
('Europe,S.America','test1,','39',7);
|
||||||
|
Warnings:
|
||||||
|
Warning 1265 Data truncated for column 'b' at row 7
|
||||||
|
EXPLAIN SELECT DISTINCT a, b FROM t1 ORDER BY b DESC, a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL # Using temporary; Using filesort
|
||||||
|
SELECT DISTINCT a, b FROM t1 ORDER BY b DESC, a;
|
||||||
|
a b
|
||||||
|
test1,test3
|
||||||
|
test2,test3
|
||||||
|
Africa,Europe,Asia test2,test3
|
||||||
|
Antarctica test3
|
||||||
|
Asia test5
|
||||||
|
N.America,Asia test2,test4
|
||||||
|
S.America,Europe test1
|
||||||
|
DROP TABLE t1;
|
||||||
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK = @ORIG_PAUSE_BACKGROUND_WORK;
|
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK = @ORIG_PAUSE_BACKGROUND_WORK;
|
||||||
|
@@ -190,6 +190,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -302,6 +305,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -414,6 +420,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -526,6 +535,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
@@ -638,6 +650,9 @@ insert into t1 values (0, 'ab', 'a-b');
|
|||||||
insert into t1 values (1, 'a ', 'a-space');
|
insert into t1 values (1, 'a ', 'a-space');
|
||||||
insert into t1 values (2, 'a', 'a');
|
insert into t1 values (2, 'a', 'a');
|
||||||
insert into t1 values (3, 'a \t', 'a-tab');
|
insert into t1 values (3, 'a \t', 'a-tab');
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
# Must show 'using index' for latin1_bin and utf8_bin:
|
# Must show 'using index' for latin1_bin and utf8_bin:
|
||||||
explain
|
explain
|
||||||
select col1, hex(col1) from t1;
|
select col1, hex(col1) from t1;
|
||||||
|
@@ -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
|
||||||
|
260
storage/rocksdb/mysql-test/rocksdb/r/varbinary_format.result
Normal file
260
storage/rocksdb/mysql-test/rocksdb/r/varbinary_format.result
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
CREATE TABLE t1(
|
||||||
|
vb VARBINARY(64) primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 values(0x00);
|
||||||
|
INSERT INTO t1 values(0x0000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000);
|
||||||
|
SELECT hex(vb) FROM t1;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
BEGIN;
|
||||||
|
SELECT hex(vb) FROM t1 FOR UPDATE;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
000000000000000001
|
||||||
|
000000000000000002
|
||||||
|
000000000000000003
|
||||||
|
000000000000000004
|
||||||
|
000000000000000005
|
||||||
|
000000000000000006
|
||||||
|
000000000000000007
|
||||||
|
000000000000000008
|
||||||
|
000000000000000009000000000000000001
|
||||||
|
000000000000000009000000000000000002
|
||||||
|
000000000000000009000000000000000009000000000000000009000000000000000007
|
||||||
|
000000000000000009000000000000000009000000000000000009000000000000000008
|
||||||
|
000000000000000009000000000000000009000000000000000009000000000000000009000000000000000001
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set session debug= '+d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
CREATE TABLE t1(
|
||||||
|
vb VARBINARY(64) primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
set session debug= '-d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
INSERT INTO t1 values(0x00);
|
||||||
|
INSERT INTO t1 values(0x0000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000000000000000000000000000000000000000000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000);
|
||||||
|
INSERT INTO t1 values(0x0000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000);
|
||||||
|
INSERT INTO t1 values(0x00000000000000);
|
||||||
|
INSERT INTO t1 values(0x000000000000000000);
|
||||||
|
SELECT hex(vb) FROM t1;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
BEGIN;
|
||||||
|
SELECT hex(vb) FROM t1 FOR UPDATE;
|
||||||
|
hex(vb)
|
||||||
|
00
|
||||||
|
0000
|
||||||
|
000000
|
||||||
|
00000000
|
||||||
|
0000000000
|
||||||
|
000000000000
|
||||||
|
00000000000000
|
||||||
|
0000000000000000
|
||||||
|
000000000000000000
|
||||||
|
00000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
0000000000000000f8
|
||||||
|
0000000000000000f9
|
||||||
|
0000000000000000fa
|
||||||
|
0000000000000000fb
|
||||||
|
0000000000000000fc
|
||||||
|
0000000000000000fd
|
||||||
|
0000000000000000fe
|
||||||
|
0000000000000000ff0000000000000000f7
|
||||||
|
0000000000000000ff0000000000000000f8
|
||||||
|
0000000000000000ff0000000000000000f9
|
||||||
|
0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000fe
|
||||||
|
0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000f7
|
||||||
|
0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000ff0000000000000000f8
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
vc VARCHAR(64) collate 'binary' primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 values('a');
|
||||||
|
INSERT INTO t1 values('aa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaa');
|
||||||
|
INSERT INTO t1 values('aaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaa');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1 FOR UPDATE;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
610000000000000001
|
||||||
|
616100000000000002
|
||||||
|
616161000000000003
|
||||||
|
616161610000000004
|
||||||
|
616161616100000005
|
||||||
|
616161616161000006
|
||||||
|
616161616161610007
|
||||||
|
616161616161616108
|
||||||
|
616161616161616109610000000000000001
|
||||||
|
616161616161616109616100000000000002
|
||||||
|
616161616161616109616161616161616109616161616161616109616161616161610007
|
||||||
|
616161616161616109616161616161616109616161616161616109616161616161616108
|
||||||
|
616161616161616109616161616161616109616161616161616109616161616161616109610000000000000001
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
||||||
|
set session debug= '+d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
CREATE TABLE t1(
|
||||||
|
vc VARCHAR(64) collate 'binary' primary key
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
set session debug= '-d,MYROCKS_LEGACY_VARBINARY_FORMAT';
|
||||||
|
INSERT INTO t1 values('a');
|
||||||
|
INSERT INTO t1 values('aa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaa');
|
||||||
|
INSERT INTO t1 values('aaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaa');
|
||||||
|
INSERT INTO t1 values('aaaaaaaaa');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
BEGIN;
|
||||||
|
SELECT * FROM t1 FOR UPDATE;
|
||||||
|
vc
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
aaa
|
||||||
|
aaaa
|
||||||
|
aaaaa
|
||||||
|
aaaaaa
|
||||||
|
aaaaaaa
|
||||||
|
aaaaaaaa
|
||||||
|
aaaaaaaaa
|
||||||
|
aaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
SELECT SUBSTRING(a.key,9) FROM information_schema.rocksdb_locks AS a ORDER BY a.key;
|
||||||
|
SUBSTRING(a.key,9)
|
||||||
|
6100000000000000f8
|
||||||
|
6161000000000000f9
|
||||||
|
6161610000000000fa
|
||||||
|
6161616100000000fb
|
||||||
|
6161616161000000fc
|
||||||
|
6161616161610000fd
|
||||||
|
6161616161616100fe
|
||||||
|
6161616161616161ff0000000000000000f7
|
||||||
|
6161616161616161ff6100000000000000f8
|
||||||
|
6161616161616161ff6161000000000000f9
|
||||||
|
6161616161616161ff6161616161616161ff6161616161616161ff6161616161616100fe
|
||||||
|
6161616161616161ff6161616161616161ff6161616161616161ff6161616161616161ff0000000000000000f7
|
||||||
|
6161616161616161ff6161616161616161ff6161616161616161ff6161616161616161ff6100000000000000f8
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
@@ -1,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;
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -72,11 +72,30 @@ INSERT INTO t1 (a, b) VALUES (1, 5);
|
|||||||
INSERT INTO t1 (a, b) VALUES (2, 6);
|
INSERT INTO t1 (a, b) VALUES (2, 6);
|
||||||
INSERT INTO t1 (a, b) VALUES (3, 7);
|
INSERT INTO t1 (a, b) VALUES (3, 7);
|
||||||
|
|
||||||
# should fail, can't add unique index on table w/ no pk
|
# should succeed, we can add unique index on table w/ no pk
|
||||||
--error 1105
|
|
||||||
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (4, 8);
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
INSERT INTO t1 (a, b) VALUES (5, 5);
|
||||||
|
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
# Test changing key with same name and parts from not unique to unique, should
|
||||||
|
# fail.
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b INT,
|
||||||
|
c INT,
|
||||||
|
KEY kbc(b,c)) ENGINE = ROCKSDB;
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (1,1,1);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (2,2,2);
|
||||||
|
INSERT INTO t1 (a,b,c) VALUES (3,2,2);
|
||||||
|
|
||||||
|
# should cause error here, duplicate value 2-2
|
||||||
|
--error 1062
|
||||||
|
ALTER TABLE t1 DROP INDEX kbc, ADD UNIQUE INDEX kbc(b,c), ALGORITHM=INPLACE;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@@ -71,9 +71,16 @@ CHECK TABLE t1 CHANGED;
|
|||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
# test disabling unique keys
|
# test unique keys with no primary key
|
||||||
--error 1105
|
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
|
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=rocksdb;
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'c');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t1 WHERE a = 2;
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE a = 2;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
## test restarting a table that has no data
|
## test restarting a table that has no data
|
||||||
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=rocksdb;
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
--rocksdb_default_cf_options=write_buffer_size=256k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;};prefix_extractor=capped:20
|
--rocksdb_default_cf_options=write_buffer_size=256k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;};prefix_extractor=capped:20
|
||||||
--rocksdb_override_cf_options=cf_short_prefix={prefix_extractor=capped:4};cf_long_prefix={prefix_extractor=capped:240}
|
--rocksdb_override_cf_options=cf_short_prefix={prefix_extractor=capped:4};rev:cf_short_prefix={prefix_extractor=capped:4};cf_long_prefix={prefix_extractor=capped:240};rev:cf_long_prefix={prefix_extractor=capped:240}
|
||||||
|
@@ -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
|
||||||
|
156
storage/rocksdb/mysql-test/rocksdb/t/bulk_load.inc
Normal file
156
storage/rocksdb/mysql-test/rocksdb/t/bulk_load.inc
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2, t3;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
if ($data_order_desc)
|
||||||
|
{
|
||||||
|
--echo Data will be ordered in descending order
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$data_order_desc)
|
||||||
|
{
|
||||||
|
--echo Data will be ordered in ascending order
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create a table with a primary key and one secondary key as well as one
|
||||||
|
# more column
|
||||||
|
eval CREATE TABLE t1(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "$pk_cf",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
|
||||||
|
# Create a second identical table to validate that bulk loading different
|
||||||
|
# tables in the same session works
|
||||||
|
eval CREATE TABLE t2(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "$pk_cf",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin';
|
||||||
|
|
||||||
|
# Create a third table using partitions to validate that bulk loading works
|
||||||
|
# across a partitioned table
|
||||||
|
eval CREATE TABLE t3(
|
||||||
|
pk CHAR(5),
|
||||||
|
a CHAR(30),
|
||||||
|
b CHAR(30),
|
||||||
|
PRIMARY KEY(pk) COMMENT "$pk_cf",
|
||||||
|
KEY(a)
|
||||||
|
) COLLATE 'latin1_bin' PARTITION BY KEY() PARTITIONS 4;
|
||||||
|
|
||||||
|
--let $file = `SELECT CONCAT(@@datadir, "test_loadfile.txt")`
|
||||||
|
|
||||||
|
--let MTR_DATA_ORDER_DESC = $data_order_desc;
|
||||||
|
|
||||||
|
# Create a text file with data to import into the table.
|
||||||
|
# The primary key is in sorted order and the secondary keys are randomly generated
|
||||||
|
--let ROCKSDB_INFILE = $file
|
||||||
|
perl;
|
||||||
|
my $fn = $ENV{'ROCKSDB_INFILE'};
|
||||||
|
open(my $fh, '>', $fn) || die "perl open($fn): $!";
|
||||||
|
my $max = 5000000;
|
||||||
|
my $desc = $ENV{'MTR_DATA_ORDER_DESC'};
|
||||||
|
my @chars = ("A".."Z", "a".."z", "0".."9");
|
||||||
|
my @powers_of_26 = (26 * 26 * 26 * 26, 26 * 26 * 26, 26 * 26, 26, 1);
|
||||||
|
for (my $ii = 0; $ii < $max; $ii++)
|
||||||
|
{
|
||||||
|
my $pk;
|
||||||
|
my $tmp = $ii;
|
||||||
|
foreach (@powers_of_26)
|
||||||
|
{
|
||||||
|
if ($desc == 1)
|
||||||
|
{
|
||||||
|
$pk .= chr(ord('z') - int($tmp / $_));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$pk .= chr(ord('a') + int($tmp / $_));
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmp = $tmp % $_;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $num = int(rand(25)) + 6;
|
||||||
|
my $a;
|
||||||
|
$a .= $chars[rand(@chars)] for 1..$num;
|
||||||
|
|
||||||
|
$num = int(rand(25)) + 6;
|
||||||
|
my $b;
|
||||||
|
$b .= $chars[rand(@chars)] for 1..$num;
|
||||||
|
print $fh "$pk\t$a\t$b\n";
|
||||||
|
}
|
||||||
|
close($fh);
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--file_exists $file
|
||||||
|
|
||||||
|
# Make sure a snapshot held by another user doesn't block the bulk load
|
||||||
|
connect (other,localhost,root,,);
|
||||||
|
set session transaction isolation level repeatable read;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
start transaction with consistent snapshot;
|
||||||
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
set rocksdb_bulk_load=1;
|
||||||
|
set rocksdb_bulk_load_size=100000;
|
||||||
|
--disable_query_log
|
||||||
|
--echo LOAD DATA INFILE <input_file> INTO TABLE t1;
|
||||||
|
eval LOAD DATA INFILE '$file' INTO TABLE t1;
|
||||||
|
--echo LOAD DATA INFILE <input_file> INTO TABLE t2;
|
||||||
|
eval LOAD DATA INFILE '$file' INTO TABLE t2;
|
||||||
|
--echo LOAD DATA INFILE <input_file> INTO TABLE t3;
|
||||||
|
eval LOAD DATA INFILE '$file' INTO TABLE t3;
|
||||||
|
--enable_query_log
|
||||||
|
set rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
--remove_file $file
|
||||||
|
|
||||||
|
# Make sure row count index stats are correct
|
||||||
|
--replace_column 6 # 7 # 8 # 9 #
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
|
||||||
|
ANALYZE TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
--replace_column 6 # 7 # 8 # 9 #
|
||||||
|
SHOW TABLE STATUS WHERE name LIKE 't%';
|
||||||
|
|
||||||
|
# Make sure all the data is there.
|
||||||
|
select count(pk) from t1;
|
||||||
|
select count(a) from t1;
|
||||||
|
select count(b) from t1;
|
||||||
|
select count(pk) from t2;
|
||||||
|
select count(a) from t2;
|
||||||
|
select count(b) from t2;
|
||||||
|
select count(pk) from t3;
|
||||||
|
select count(a) from t3;
|
||||||
|
select count(b) from t3;
|
||||||
|
|
||||||
|
# Create a dummy file with a bulk load extesion. It should be removed when
|
||||||
|
# the server starts
|
||||||
|
--let $tmpext = .bulk_load.tmp
|
||||||
|
--let $MYSQLD_DATADIR= `SELECT @@datadir`
|
||||||
|
--let $datadir = $MYSQLD_DATADIR/.rocksdb
|
||||||
|
--write_file $datadir/test$tmpext
|
||||||
|
dummy data
|
||||||
|
EOF
|
||||||
|
--write_file $datadir/longfilenamethatvalidatesthatthiswillgetdeleted$tmpext
|
||||||
|
dummy data
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Show the files exists
|
||||||
|
--list_files $datadir *$tmpext
|
||||||
|
|
||||||
|
# Now restart the server and make sure it automatically removes this test file
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
# Show the files do not exist
|
||||||
|
--list_files $datadir *$tmpext
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
disconnect other;
|
||||||
|
DROP TABLE t1, t2, t3;
|
@@ -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;
|
|
||||||
|
39
storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test
Normal file
39
storage/rocksdb/mysql-test/rocksdb/t/bulk_load_errors.test
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1(pk INT, PRIMARY KEY(pk));
|
||||||
|
|
||||||
|
# Make sure we get an error with out of order keys during bulk load
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(10);
|
||||||
|
INSERT INTO t1 VALUES(11);
|
||||||
|
--error ER_KEYS_OUT_OF_ORDER
|
||||||
|
INSERT INTO t1 VALUES(9);
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
# Make sure only 10 and 11 got into the table
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
# Make sure we get an error with overlapping data
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
INSERT INTO t1 VALUES(2);
|
||||||
|
INSERT INTO t1 VALUES(20);
|
||||||
|
INSERT INTO t1 VALUES(21);
|
||||||
|
|
||||||
|
# This last crashes the server (intentionally) because we can't return any
|
||||||
|
# error information from a SET <variable>=<value>
|
||||||
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
--error 2013
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
--exec grep "RocksDB: Error 197 finalizing last SST file while setting bulk loading variable" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
||||||
|
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
|
||||||
|
|
||||||
|
# restart the crashed server
|
||||||
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
|
||||||
|
# Make sure the error exists in the .err log and then restart the server
|
||||||
|
--enable_reconnect
|
||||||
|
--source include/wait_until_connected_again.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -0,0 +1,6 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--let pk_cf=rev:cf1
|
||||||
|
--let data_order_desc=0
|
||||||
|
|
||||||
|
--source bulk_load.inc
|
@@ -0,0 +1,6 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--let pk_cf=rev:cf1
|
||||||
|
--let data_order_desc=1
|
||||||
|
|
||||||
|
--source bulk_load.inc
|
@@ -0,0 +1,6 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--let pk_cf=cf1
|
||||||
|
--let data_order_desc=1
|
||||||
|
|
||||||
|
--source bulk_load.inc
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
CREATE TABLE `r1.lol` (
|
CREATE TABLE `r1.lol` (
|
||||||
`c1` int(10) NOT NULL DEFAULT '0',
|
`c1` int(10) NOT NULL DEFAULT '0',
|
||||||
`c2` int(11) NOT NULL DEFAULT '0',
|
`c2` int(11) NOT NULL DEFAULT '0',
|
||||||
|
@@ -23,7 +23,7 @@ eval SET SESSION TRANSACTION ISOLATION LEVEL $trx_isolation;
|
|||||||
# no external inserts should be visible to the transaction.
|
# no external inserts should be visible to the transaction.
|
||||||
# But it should only work this way for REPEATABLE-READ and SERIALIZABLE
|
# But it should only work this way for REPEATABLE-READ and SERIALIZABLE
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ connection con2;
|
|||||||
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
select * from information_schema.rocksdb_dbstats where stat_type='DB_NUM_SNAPSHOTS';
|
||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ SELECT * FROM r1; # 5
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
SELECT * FROM r1; # 6
|
SELECT * FROM r1; # 6
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ SELECT * FROM r1; # 6
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
SELECT * FROM r1; # 8
|
SELECT * FROM r1; # 8
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ connection con2;
|
|||||||
INSERT INTO r1 values (9,9,9);
|
INSERT INTO r1 values (9,9,9);
|
||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
|
|
||||||
@@ -115,11 +115,11 @@ INSERT INTO r1 values (10,10,10);
|
|||||||
connection con1;
|
connection con1;
|
||||||
SELECT * FROM r1; # 9
|
SELECT * FROM r1; # 9
|
||||||
|
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_ISOLATION_LEVEL_WITH_CONSISTENT_SNAPSHOT
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
# Succeeds with Read Committed, Fails with Repeatable Read
|
# Succeeds with Read Committed, Fails with Repeatable Read
|
||||||
--error 0,ER_UNKNOWN_ERROR
|
--error 0,ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
|
||||||
INSERT INTO r1 values (11,11,11);
|
INSERT INTO r1 values (11,11,11);
|
||||||
--echo ERROR: $mysql_errno
|
--echo ERROR: $mysql_errno
|
||||||
SELECT * FROM r1; # self changes should be visible
|
SELECT * FROM r1; # self changes should be visible
|
||||||
|
@@ -24,7 +24,7 @@ select * from t1;
|
|||||||
set @tmp1=@@rocksdb_verify_row_debug_checksums;
|
set @tmp1=@@rocksdb_verify_row_debug_checksums;
|
||||||
set rocksdb_verify_row_debug_checksums=1;
|
set rocksdb_verify_row_debug_checksums=1;
|
||||||
set session debug= "+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";
|
||||||
|
|
||||||
|
3
storage/rocksdb/mysql-test/rocksdb/t/deadlock_stats.test
Normal file
3
storage/rocksdb/mysql-test/rocksdb/t/deadlock_stats.test
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
let $engine=rocksdb;
|
||||||
|
|
||||||
|
--source include/deadlock_stats.inc
|
@@ -90,9 +90,9 @@ DELETE FROM t1 WHERE a <= 4 ORDER BY b DESC LIMIT 1;
|
|||||||
SAVEPOINT spt1;
|
SAVEPOINT spt1;
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
INSERT INTO t1 (a,b) VALUES (1,'a');
|
INSERT INTO t1 (a,b) VALUES (1,'a');
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
ROLLBACK TO SAVEPOINT spt1;
|
ROLLBACK TO SAVEPOINT spt1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
COMMIT;
|
COMMIT;
|
||||||
--sorted_result
|
--sorted_result
|
||||||
SELECT a,b FROM t1;
|
SELECT a,b FROM t1;
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
--rocksdb_max_background_compactions=8
|
|
||||||
--rocksdb_max_subcompactions=1
|
--rocksdb_max_subcompactions=1
|
||||||
|
--rocksdb_info_log_level=info_level
|
||||||
--rocksdb_default_cf_options=write_buffer_size=512k;target_file_size_base=512k;level0_file_num_compaction_trigger=2;level0_slowdown_writes_trigger=-1;level0_stop_writes_trigger=1000;max_bytes_for_level_base=1m
|
--rocksdb_default_cf_options=write_buffer_size=512k;target_file_size_base=512k;level0_file_num_compaction_trigger=2;level0_slowdown_writes_trigger=-1;level0_stop_writes_trigger=1000;max_bytes_for_level_base=1m
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
@@ -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);
|
|
@@ -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;
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin
|
109
storage/rocksdb/mysql-test/rocksdb/t/index_merge_rocksdb.test
Normal file
109
storage/rocksdb/mysql-test/rocksdb/t/index_merge_rocksdb.test
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# index_merge_rocksdb test copied over from index_merge_ror.inc
|
||||||
|
#
|
||||||
|
# Triggers issue # https://github.com/facebook/mysql-5.6/issues/604
|
||||||
|
|
||||||
|
CREATE TABLE t1
|
||||||
|
(
|
||||||
|
/* fields/keys for row retrieval tests */
|
||||||
|
key1 INT,
|
||||||
|
key2 INT,
|
||||||
|
key3 INT,
|
||||||
|
key4 INT,
|
||||||
|
|
||||||
|
/* make rows much bigger then keys */
|
||||||
|
filler1 CHAR(200),
|
||||||
|
|
||||||
|
KEY(key1),
|
||||||
|
KEY(key2)
|
||||||
|
) ENGINE=ROCKSDB;
|
||||||
|
|
||||||
|
# fill table
|
||||||
|
CREATE TABLE t0 AS SELECT * FROM t1;
|
||||||
|
--disable_query_log
|
||||||
|
--echo # Printing of many insert into t0 values (....) disabled.
|
||||||
|
let $cnt=100;
|
||||||
|
while ($cnt)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t0 VALUES (0, 0, 0, 0, 'data1');
|
||||||
|
dec $cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
--echo # Printing of many insert into t1 select .... from t0 disabled.
|
||||||
|
let $1=4;
|
||||||
|
while ($1)
|
||||||
|
{
|
||||||
|
let $2=4;
|
||||||
|
while ($2)
|
||||||
|
{
|
||||||
|
let $3=4;
|
||||||
|
while ($3)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t1 SELECT key1, key2, key3, key4, filler1 FROM t0;
|
||||||
|
dec $3;
|
||||||
|
}
|
||||||
|
dec $2;
|
||||||
|
}
|
||||||
|
dec $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
--echo # Printing of many insert into t1 (...) values (....) disabled.
|
||||||
|
# Row retrieval tests
|
||||||
|
# -1 is used for values 'out of any range we are using'
|
||||||
|
# insert enough rows for index intersection to be used for (key1,key2)
|
||||||
|
INSERT INTO t1 (key1, key2, key3, key4, filler1) VALUES (100, 100, 100, 100,'key1-key2-key3-key4');
|
||||||
|
let $cnt=400;
|
||||||
|
while ($cnt)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t1 (key1, key2, key3, key4, filler1) VALUES (100, -1, 100, -1,'key1-key3');
|
||||||
|
dec $cnt;
|
||||||
|
}
|
||||||
|
let $cnt=400;
|
||||||
|
while ($cnt)
|
||||||
|
{
|
||||||
|
eval INSERT INTO t1 (key1, key2, key3, key4, filler1) VALUES (-1, 100, -1, 100,'key2-key4');
|
||||||
|
dec $cnt;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
|
||||||
|
-- disable_query_log
|
||||||
|
-- disable_result_log
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
-- enable_result_log
|
||||||
|
-- enable_query_log
|
||||||
|
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
--replace_column 9 #
|
||||||
|
EXPLAIN UPDATE t1 SET filler1='to be deleted' WHERE key1=100 AND key2=100;
|
||||||
|
UPDATE t1 SET filler1='to be deleted' WHERE key1=100 and key2=100;
|
||||||
|
|
||||||
|
DROP TABLE t0, t1;
|
||||||
|
|
||||||
|
# Issue624 - MyRocks executes index_merge query plan incorrectly
|
||||||
|
create table t1 (key1 int, key2 int, key3 int, key (key1), key (key2), key(key3)) engine=rocksdb;
|
||||||
|
insert into t1 values (1, 100, 100), (1, 200, 200), (1, 300, 300);
|
||||||
|
--disable_query_log
|
||||||
|
let $i = 1;
|
||||||
|
while ($i <= 1000) {
|
||||||
|
let $insert = INSERT INTO t1 VALUES(1000,1000,1000);
|
||||||
|
inc $i;
|
||||||
|
eval $insert;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
analyze table t1;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
|
||||||
|
--replace_column 9 #
|
||||||
|
explain select * from t1 where key1 = 1;
|
||||||
|
--replace_column 9 #
|
||||||
|
explain select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
select * from t1 where key1 = 1;
|
||||||
|
select key1,key2 from t1 where key1 = 1 or key2 = 1;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin
|
@@ -0,0 +1,70 @@
|
|||||||
|
# Skiping this test from Valgrind execution as per Bug-14627884
|
||||||
|
--source include/not_valgrind.inc
|
||||||
|
# Adding big test option for this test.
|
||||||
|
--source include/big_test.inc
|
||||||
|
|
||||||
|
# t/index_merge_innodb.test
|
||||||
|
#
|
||||||
|
# Index merge tests
|
||||||
|
#
|
||||||
|
# Last update:
|
||||||
|
# 2006-08-07 ML test refactored (MySQL 5.1)
|
||||||
|
# Main code of several index_merge tests
|
||||||
|
# -> include/index_merge*.inc
|
||||||
|
# wrapper t/index_merge_innodb.test sources now several
|
||||||
|
# include/index_merge*.inc files
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/have_rocksdb.inc
|
||||||
|
let $engine_type= RocksDB;
|
||||||
|
# skipping because too unstable in MyRocks
|
||||||
|
let $skip_ror_EXPLAIN_for_MyRocks = 1;
|
||||||
|
let $random_rows_in_EXPLAIN = 1;
|
||||||
|
let $sorted_result = 1;
|
||||||
|
# According to Oracle: "InnoDB's estimate for the index cardinality
|
||||||
|
# depends on a pseudo random number generator (it picks up random
|
||||||
|
# pages to sample). After an optimization that was made in r2625 two
|
||||||
|
# EXPLAINs started returning a different number of rows (3 instead of
|
||||||
|
# 4)", so:
|
||||||
|
let $index_merge_random_rows_in_EXPLAIN = 1;
|
||||||
|
# RocksDB does not support Merge tables (affects include/index_merge1.inc)
|
||||||
|
let $merge_table_support= 0;
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge1.inc
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge_ror.inc
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge2.inc
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge_2sweeps.inc
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--source include/index_merge_ror_cpk.inc
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#11747423 32254: INDEX MERGE USED UNNECESSARILY
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT NOT NULL PRIMARY KEY,
|
||||||
|
id2 INT NOT NULL,
|
||||||
|
id3 INT NOT NULL,
|
||||||
|
KEY (id2),
|
||||||
|
KEY (id3),
|
||||||
|
KEY covering_index (id2,id3)
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (0, 0, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5), (6, 6, 6), (7, 7, 7);
|
||||||
|
INSERT INTO t1 SELECT id + 8, id2 + 8, id3 +8 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT id + 16, 7, 0 FROM t1;
|
||||||
|
|
||||||
|
-- disable_query_log
|
||||||
|
-- disable_result_log
|
||||||
|
analyze table t1;
|
||||||
|
-- enable_result_log
|
||||||
|
-- enable_query_log
|
||||||
|
|
||||||
|
EXPLAIN SELECT SQL_NO_CACHE count(*) FROM t1 WHERE id2=7 AND id3=0;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -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';
|
||||||
|
|
||||||
|
@@ -86,10 +86,10 @@ INSERT t1 (a) VALUE (10),(20);
|
|||||||
SAVEPOINT spt1;
|
SAVEPOINT spt1;
|
||||||
INSERT INTO t1 SET a = 11, b = 'f';
|
INSERT INTO t1 SET a = 11, b = 'f';
|
||||||
INSERT t1 SET b = DEFAULT;
|
INSERT t1 SET b = DEFAULT;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_TO_SAVEPOINT
|
||||||
ROLLBACK TO SAVEPOINT spt1;
|
ROLLBACK TO SAVEPOINT spt1;
|
||||||
INSERT INTO t1 (b,a) VALUES ('test1',10);
|
INSERT INTO t1 (b,a) VALUES ('test1',10);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ROLLBACK_ONLY
|
||||||
COMMIT;
|
COMMIT;
|
||||||
--sorted_result
|
--sorted_result
|
||||||
SELECT a,b FROM t1;
|
SELECT a,b FROM t1;
|
||||||
|
@@ -0,0 +1,80 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT,
|
||||||
|
val1 INT,
|
||||||
|
val2 INT,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DB operations without Transaction , every count should be 0
|
||||||
|
# so there's no count related output
|
||||||
|
#
|
||||||
|
INSERT INTO t1 VALUES(1,1,1),(2,1,2);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
UPDATE t1 SET val1=2 WHERE id=2;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
#
|
||||||
|
# DB operations with Tansaction, insert_count, update_count, delete_count
|
||||||
|
# and total write_count should be printed
|
||||||
|
# Cases: rollback, commit transaction
|
||||||
|
#
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(20,1,1),(30,30,30);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
UPDATE t1 SET val1=20, val2=20 WHERE id=20;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DELETE FROM t1 WHERE id=30;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES(40,40,40);
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
COMMIT;
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Secondary Key Tests
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t2;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
id1 INT,
|
||||||
|
id2 INT,
|
||||||
|
value INT,
|
||||||
|
PRIMARY KEY (id1),
|
||||||
|
KEY (id2)
|
||||||
|
) ENGINE=rocksdb;
|
||||||
|
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t2 VALUES(1,2,0),(10,20,30);
|
||||||
|
UPDATE t2 SET value=3 WHERE id2=2;
|
||||||
|
DELETE FROM t2 WHERE id1=10;
|
||||||
|
|
||||||
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
|
||||||
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
||||||
|
ROLLBACK;
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
DROP TABLE t2;
|
19
storage/rocksdb/mysql-test/rocksdb/t/issue255.test
Normal file
19
storage/rocksdb/mysql-test/rocksdb/t/issue255.test
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (5);
|
||||||
|
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES ('538647864786478647864');
|
||||||
|
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
INSERT INTO t1 VALUES ();
|
||||||
|
SELECT * FROM t1;
|
||||||
|
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
||||||
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -8,7 +8,7 @@ SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|||||||
CREATE TABLE t1(a int);
|
CREATE TABLE t1(a int);
|
||||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
INSERT INTO t1 VALUES(1);
|
INSERT INTO t1 VALUES(1);
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ISOLATION_MODE_NOT_SUPPORTED
|
||||||
select * from t1;
|
select * from t1;
|
||||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
@@ -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,
|
||||||
|
@@ -98,7 +98,7 @@ EOF
|
|||||||
--replace_result $datadir <DATADIR>
|
--replace_result $datadir <DATADIR>
|
||||||
if ($skip_unique_check == 1)
|
if ($skip_unique_check == 1)
|
||||||
{
|
{
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_ON_DUPLICATE_DISABLED
|
||||||
eval
|
eval
|
||||||
LOAD DATA INFILE '$datadir/se_replacedata.dat' REPLACE INTO TABLE t1;
|
LOAD DATA INFILE '$datadir/se_replacedata.dat' REPLACE INTO TABLE t1;
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,34 @@
|
|||||||
|
create table t (a int primary key) engine=rocksdb;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
insert into t values (0);
|
||||||
|
|
||||||
|
--source include/count_sessions.inc
|
||||||
|
--connect (con1,localhost,root,,)
|
||||||
|
--connection con1
|
||||||
|
set @@rocksdb_lock_wait_timeout=1;
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
begin;
|
||||||
|
|
||||||
|
--connect (con2,localhost,root,,)
|
||||||
|
--connection con2
|
||||||
|
set @@rocksdb_lock_wait_timeout=1;
|
||||||
|
begin;
|
||||||
|
|
||||||
|
--connection con1
|
||||||
|
--error ER_LOCK_WAIT_TIMEOUT
|
||||||
|
insert into t values(0);
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
|
||||||
|
--connection con2
|
||||||
|
--error ER_LOCK_WAIT_TIMEOUT
|
||||||
|
insert into t values(0);
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
select ROW_LOCK_WAIT_TIMEOUTS from information_schema.table_statistics where table_name="t";
|
||||||
|
|
||||||
|
--disconnect con1
|
||||||
|
--connection default
|
||||||
|
--disconnect con2
|
||||||
|
drop table t;
|
||||||
|
--source include/wait_until_count_sessions.inc
|
@@ -0,0 +1 @@
|
|||||||
|
$NP_EXAMPLE_LIB_OPT
|
@@ -0,0 +1,2 @@
|
|||||||
|
let $engine=rocksdb;
|
||||||
|
--source include/native_procedure.inc
|
@@ -1,3 +1,4 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
let $engine=rocksdb;
|
let $engine=rocksdb;
|
||||||
--source include/loose_index_scans.inc
|
--source include/loose_index_scans.inc
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
--rocksdb_default_cf_options=write_buffer_size=64k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;};prefix_extractor=capped:24;disable_auto_compactions=true
|
@@ -0,0 +1,96 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 (id1 BIGINT, id2 BIGINT, id3 BIGINT, id4 BIGINT, PRIMARY KEY (id1, id2, id3, id4) comment 'cf1') ENGINE=rocksdb collate latin1_bin;
|
||||||
|
--disable_query_log
|
||||||
|
let $i = 1;
|
||||||
|
while ($i <= 100) {
|
||||||
|
let $insert = INSERT INTO t1 VALUES(1, $i, $i, $i);
|
||||||
|
eval $insert;
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Original Prefix Extractor:
|
||||||
|
--echo
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
|
# BF used (4+8+8+8)
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
--exec echo "" > $MYSQLTEST_VARDIR/log/mysqld.1.err
|
||||||
|
--let $_mysqld_option=--rocksdb_override_cf_options=cf1={prefix_extractor=capped:26};
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Prefix Extractor (after override_cf_options set, should not be changed):
|
||||||
|
--echo
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
|
# This should no longer crash. See https://github.com/facebook/mysql-5.6/issues/641
|
||||||
|
--echo
|
||||||
|
--echo Restarting with new Prefix Extractor...
|
||||||
|
--echo
|
||||||
|
--source include/restart_mysqld_with_option.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo Changed Prefix Extractor (after restart):
|
||||||
|
--echo
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
|
# Satisfies can_use_bloom_filter (4+8+8+8), but can't use because the old SST
|
||||||
|
# files have old prefix extractor
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
# Insert more data into t1, verify it uses new bloom filter
|
||||||
|
--disable_query_log
|
||||||
|
let $i = 101;
|
||||||
|
while ($i <= 200) {
|
||||||
|
let $insert = INSERT INTO t1 VALUES(1, $i, $i, $i);
|
||||||
|
eval $insert;
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
# BF used w/ new prefix extractor (4+8+8+8) (still increments once because it
|
||||||
|
# needs to check the new SST file, but doesnt increment for SST file with old
|
||||||
|
# extractor)
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
# should have 2 sst files, one with old prefix extractor and one with new
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
|
||||||
|
# update some old data, force compaction, verify that new SST files use
|
||||||
|
# new bloom filter
|
||||||
|
UPDATE t1 SET id1=1,id2 = 30,id3 = 30 WHERE id4 >= 0 AND id4 <=10;
|
||||||
|
set global rocksdb_force_flush_memtable_now = 1;
|
||||||
|
|
||||||
|
# should have 3 sst files, one with old prefix extractor and two with new
|
||||||
|
SELECT COUNT(*) FROM information_schema.rocksdb_index_file_map WHERE COLUMN_FAMILY != 1;
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
set global rocksdb_compact_cf='cf1';
|
||||||
|
|
||||||
|
# Select the updated, make sure bloom filter is checked now
|
||||||
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=30 AND id3=30;
|
||||||
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@@ -37,7 +37,7 @@ connection con1;
|
|||||||
select case when variable_value-@p < 1000 then 'true' else variable_value-@p end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_put';
|
select case when variable_value-@p < 1000 then 'true' else variable_value-@p end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_put';
|
||||||
select case when variable_value-@s < 100 then 'true' else variable_value-@s end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete';
|
select case when variable_value-@s < 100 then 'true' else variable_value-@s end from information_schema.global_status where variable_name='rocksdb_number_sst_entry_singledelete';
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
--error ER_UNKNOWN_ERROR
|
--error ER_UPDATES_WITH_CONSISTENT_SNAPSHOT
|
||||||
INSERT INTO t1 values (2, 2);
|
INSERT INTO t1 values (2, 2);
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
call mtr.add_suppression("Did not write failed ");
|
call mtr.add_suppression("Did not write failed ");
|
||||||
call mtr.add_suppression("Can't open and lock privilege tables");
|
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||||
|
call mtr.add_suppression("Attempt to delete the trigger file");
|
||||||
|
|
||||||
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
SET @ORIG_EVENT_SCHEDULER = @@EVENT_SCHEDULER;
|
||||||
|
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
## SKIP LOCKED | NOWAIT are *not* supported for SELECT...FOR UPDATE in RocksDB
|
## SKIP LOCKED | NOWAIT are *not* supported for SELECT...FOR UPDATE in RocksDB
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user