summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/m_ctype.h156
-rw-r--r--include/my_bit.h44
-rw-r--r--include/mysql/plugin.h17
-rw-r--r--mysys/my_bit.c18
-rw-r--r--storage/rocksdb/CMakeLists.txt231
-rw-r--r--storage/rocksdb/build_rocksdb.cmake337
-rw-r--r--storage/rocksdb/ha_rocksdb.cc112
-rw-r--r--storage/rocksdb/ha_rocksdb.h8
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result42
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/r/partition.result10
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/suite.opt2
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/checkpoint.test3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/collation.test4
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/compact_deletes.test1
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/concurrent_alter.test3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/drop_table.test2
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/duplicate_table.test6
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test8
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/partition.test3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/rocksdb_checksums.test2
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/rocksdb_datadir.test3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/rocksdb_parts.test1
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/rqg.inc3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/slow_query_log.test3
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/statistics.test2
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/t/unique_sec.test2
-rw-r--r--storage/rocksdb/properties_collector.cc13
-rw-r--r--storage/rocksdb/rdb_buff.h10
-rw-r--r--storage/rocksdb/rdb_datadic.cc12
-rw-r--r--storage/rocksdb/rdb_datadic.h3
-rw-r--r--storage/rocksdb/rdb_i_s.cc6
-rw-r--r--storage/rocksdb/rdb_mariadb_server_port.cc2
-rw-r--r--storage/rocksdb/rdb_sst_info.h2
-rw-r--r--storage/rocksdb/rdb_threads.h26
35 files changed, 756 insertions, 344 deletions
diff --git a/include/m_ctype.h b/include/m_ctype.h
index 04a82953f0a..1639332f5f7 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -360,7 +360,7 @@ struct my_collation_handler_st
};
extern MY_COLLATION_HANDLER my_collation_8bit_bin_handler;
-extern MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler;
+extern MYSQL_PLUGIN_IMPORT MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler;
extern MY_COLLATION_HANDLER my_collation_8bit_nopad_bin_handler;
extern MY_COLLATION_HANDLER my_collation_8bit_simple_nopad_ci_handler;
extern MY_COLLATION_HANDLER my_collation_ucs2_uca_handler;
@@ -586,83 +586,83 @@ extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin1_nopad;
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_filename;
extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_general_ci;
-extern struct charset_info_st my_charset_big5_bin;
-extern struct charset_info_st my_charset_big5_chinese_ci;
-extern struct charset_info_st my_charset_big5_nopad_bin;
-extern struct charset_info_st my_charset_big5_chinese_nopad_ci;
-extern struct charset_info_st my_charset_cp1250_czech_ci;
-extern struct charset_info_st my_charset_cp932_bin;
-extern struct charset_info_st my_charset_cp932_japanese_ci;
-extern struct charset_info_st my_charset_cp932_nopad_bin;
-extern struct charset_info_st my_charset_cp932_japanese_nopad_ci;
-extern struct charset_info_st my_charset_eucjpms_bin;
-extern struct charset_info_st my_charset_eucjpms_japanese_ci;
-extern struct charset_info_st my_charset_eucjpms_nopad_bin;
-extern struct charset_info_st my_charset_eucjpms_japanese_nopad_ci;
-extern struct charset_info_st my_charset_euckr_bin;
-extern struct charset_info_st my_charset_euckr_korean_ci;
-extern struct charset_info_st my_charset_euckr_nopad_bin;
-extern struct charset_info_st my_charset_euckr_korean_nopad_ci;
-extern struct charset_info_st my_charset_gb2312_bin;
-extern struct charset_info_st my_charset_gb2312_chinese_ci;
-extern struct charset_info_st my_charset_gb2312_nopad_bin;
-extern struct charset_info_st my_charset_gb2312_chinese_nopad_ci;
-extern struct charset_info_st my_charset_gbk_bin;
-extern struct charset_info_st my_charset_gbk_chinese_ci;
-extern struct charset_info_st my_charset_gbk_nopad_bin;
-extern struct charset_info_st my_charset_gbk_chinese_nopad_ci;
-extern struct charset_info_st my_charset_latin1_bin;
-extern struct charset_info_st my_charset_latin1_nopad_bin;
-extern struct charset_info_st my_charset_latin1_german2_ci;
-extern struct charset_info_st my_charset_latin2_czech_ci;
-extern struct charset_info_st my_charset_sjis_bin;
-extern struct charset_info_st my_charset_sjis_japanese_ci;
-extern struct charset_info_st my_charset_sjis_nopad_bin;
-extern struct charset_info_st my_charset_sjis_japanese_nopad_ci;
-extern struct charset_info_st my_charset_tis620_bin;
-extern struct charset_info_st my_charset_tis620_thai_ci;
-extern struct charset_info_st my_charset_tis620_nopad_bin;
-extern struct charset_info_st my_charset_tis620_thai_nopad_ci;
-extern struct charset_info_st my_charset_ucs2_bin;
-extern struct charset_info_st my_charset_ucs2_general_ci;
-extern struct charset_info_st my_charset_ucs2_nopad_bin;
-extern struct charset_info_st my_charset_ucs2_general_nopad_ci;
-extern struct charset_info_st my_charset_ucs2_general_mysql500_ci;
-extern struct charset_info_st my_charset_ucs2_unicode_ci;
-extern struct charset_info_st my_charset_ucs2_unicode_nopad_ci;
-extern struct charset_info_st my_charset_ucs2_general_mysql500_ci;
-extern struct charset_info_st my_charset_ujis_bin;
-extern struct charset_info_st my_charset_ujis_japanese_ci;
-extern struct charset_info_st my_charset_ujis_nopad_bin;
-extern struct charset_info_st my_charset_ujis_japanese_nopad_ci;
-extern struct charset_info_st my_charset_utf16_bin;
-extern struct charset_info_st my_charset_utf16_general_ci;
-extern struct charset_info_st my_charset_utf16_unicode_ci;
-extern struct charset_info_st my_charset_utf16_unicode_nopad_ci;
-extern struct charset_info_st my_charset_utf16le_bin;
-extern struct charset_info_st my_charset_utf16le_general_ci;
-extern struct charset_info_st my_charset_utf16_general_nopad_ci;
-extern struct charset_info_st my_charset_utf16_nopad_bin;
-extern struct charset_info_st my_charset_utf16le_nopad_bin;
-extern struct charset_info_st my_charset_utf16le_general_nopad_ci;
-extern struct charset_info_st my_charset_utf32_bin;
-extern struct charset_info_st my_charset_utf32_general_ci;
-extern struct charset_info_st my_charset_utf32_unicode_ci;
-extern struct charset_info_st my_charset_utf32_unicode_nopad_ci;
-extern struct charset_info_st my_charset_utf32_nopad_bin;
-extern struct charset_info_st my_charset_utf32_general_nopad_ci;
-extern struct charset_info_st my_charset_utf8_bin;
-extern struct charset_info_st my_charset_utf8_nopad_bin;
-extern struct charset_info_st my_charset_utf8_general_nopad_ci;
-extern struct charset_info_st my_charset_utf8_general_mysql500_ci;
-extern struct charset_info_st my_charset_utf8_unicode_ci;
-extern struct charset_info_st my_charset_utf8_unicode_nopad_ci;
-extern struct charset_info_st my_charset_utf8mb4_bin;
-extern struct charset_info_st my_charset_utf8mb4_general_ci;
-extern struct charset_info_st my_charset_utf8mb4_nopad_bin;
-extern struct charset_info_st my_charset_utf8mb4_general_nopad_ci;
-extern struct charset_info_st my_charset_utf8mb4_unicode_ci;
-extern struct charset_info_st my_charset_utf8mb4_unicode_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_big5_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_big5_chinese_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_big5_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_big5_chinese_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_cp1250_czech_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_cp932_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_cp932_japanese_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_cp932_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_cp932_japanese_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_eucjpms_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_eucjpms_japanese_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_eucjpms_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_eucjpms_japanese_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_euckr_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_euckr_korean_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_euckr_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_euckr_korean_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gb2312_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gb2312_chinese_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gb2312_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gb2312_chinese_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gbk_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gbk_chinese_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gbk_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_gbk_chinese_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin1_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin1_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin1_german2_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_latin2_czech_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_sjis_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_sjis_japanese_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_sjis_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_sjis_japanese_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_tis620_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_tis620_thai_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_tis620_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_tis620_thai_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_general_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_general_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_general_mysql500_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_unicode_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_unicode_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ucs2_general_mysql500_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ujis_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ujis_japanese_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ujis_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_ujis_japanese_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16_general_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16_unicode_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16_unicode_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16le_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16le_general_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16_general_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16le_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf16le_general_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf32_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf32_general_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf32_unicode_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf32_unicode_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf32_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf32_general_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_general_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_general_mysql500_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_unicode_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8_unicode_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8mb4_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8mb4_general_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8mb4_nopad_bin;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8mb4_general_nopad_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8mb4_unicode_ci;
+extern MYSQL_PLUGIN_IMPORT struct charset_info_st my_charset_utf8mb4_unicode_nopad_ci;
#define MY_UTF8MB3 "utf8"
#define MY_UTF8MB4 "utf8mb4"
diff --git a/include/my_bit.h b/include/my_bit.h
index a50403c312d..218829ba747 100644
--- a/include/my_bit.h
+++ b/include/my_bit.h
@@ -25,7 +25,6 @@
C_MODE_START
-extern const char _my_bits_nbits[256];
extern const uchar _my_bits_reverse_table[256];
/*
@@ -40,37 +39,32 @@ static inline uint my_bit_log2(ulong value)
return bit;
}
-static inline uint my_count_bits(ulonglong v)
+
+/*
+Count bits in 32bit integer
+
+ Algorithm by Sean Anderson, according to:
+ http://graphics.stanford.edu/~seander/bithacks.html
+ under "Counting bits set, in parallel"
+
+ (Orignal code public domain).
+*/
+static inline uint my_count_bits_uint32(uint32 v)
{
-#if SIZEOF_LONG_LONG > 4
- /* The following code is a bit faster on 16 bit machines than if we would
- only shift v */
- ulong v2=(ulong) (v >> 32);
- return (uint) (uchar) (_my_bits_nbits[(uchar) v] +
- _my_bits_nbits[(uchar) (v >> 8)] +
- _my_bits_nbits[(uchar) (v >> 16)] +
- _my_bits_nbits[(uchar) (v >> 24)] +
- _my_bits_nbits[(uchar) (v2)] +
- _my_bits_nbits[(uchar) (v2 >> 8)] +
- _my_bits_nbits[(uchar) (v2 >> 16)] +
- _my_bits_nbits[(uchar) (v2 >> 24)]);
-#else
- return (uint) (uchar) (_my_bits_nbits[(uchar) v] +
- _my_bits_nbits[(uchar) (v >> 8)] +
- _my_bits_nbits[(uchar) (v >> 16)] +
- _my_bits_nbits[(uchar) (v >> 24)]);
-#endif
+ v = v - ((v >> 1) & 0x55555555);
+ v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
+ return (((v + (v >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24;
}
-static inline uint my_count_bits_uint32(uint32 v)
+
+static inline uint my_count_bits(ulonglong x)
{
- return (uint) (uchar) (_my_bits_nbits[(uchar) v] +
- _my_bits_nbits[(uchar) (v >> 8)] +
- _my_bits_nbits[(uchar) (v >> 16)] +
- _my_bits_nbits[(uchar) (v >> 24)]);
+ return my_count_bits_uint32((uint32)x) + my_count_bits_uint32((uint32)(x >> 32));
}
+
+
/*
Next highest power of two
diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h
index b3c71c65488..12fdab4f2fe 100644
--- a/include/mysql/plugin.h
+++ b/include/mysql/plugin.h
@@ -393,6 +393,23 @@ DECLARE_MYSQL_SYSVAR_SIMPLE(name, unsigned long long) = { \
PLUGIN_VAR_LONGLONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, min, max, blk }
+#define MYSQL_SYSVAR_UINT64_T(name, varname, opt, comment, check, update, def, min, max, blk) \
+DECLARE_MYSQL_SYSVAR_SIMPLE(name, uint64_t) = { \
+ PLUGIN_VAR_LONGLONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
+ #name, comment, check, update, &varname, def, min, max, blk }
+
+#ifdef _WIN64
+#define MYSQL_SYSVAR_SIZE_T(name, varname, opt, comment, check, update, def, min, max, blk) \
+DECLARE_MYSQL_SYSVAR_SIMPLE(name, size_t) = { \
+ PLUGIN_VAR_LONGLONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
+ #name, comment, check, update, &varname, def, min, max, blk }
+#else
+#define MYSQL_SYSVAR_SIZE_T(name, varname, opt, comment, check, update, def, min, max, blk) \
+DECLARE_MYSQL_SYSVAR_SIMPLE(name, size_t) = { \
+ PLUGIN_VAR_LONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
+ #name, comment, check, update, &varname, def, min, max, blk }
+#endif
+
#define MYSQL_SYSVAR_ENUM(name, varname, opt, comment, check, update, def, typelib) \
DECLARE_MYSQL_SYSVAR_TYPELIB(name, unsigned long) = { \
PLUGIN_VAR_ENUM | ((opt) & PLUGIN_VAR_MASK), \
diff --git a/mysys/my_bit.c b/mysys/my_bit.c
index d36f52bb3c0..9ceb083cd48 100644
--- a/mysys/my_bit.c
+++ b/mysys/my_bit.c
@@ -17,24 +17,6 @@
#include <my_bit.h>
-const char _my_bits_nbits[256] = {
- 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
- 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8,
-};
/*
perl -e 'print map{", 0x".unpack H2,pack B8,unpack b8,chr$_}(0..255)'
diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt
index e6948c60a51..e9e63dcfcd7 100644
--- a/storage/rocksdb/CMakeLists.txt
+++ b/storage/rocksdb/CMakeLists.txt
@@ -1,91 +1,157 @@
# TODO: Copyrights
-IF (NOT EXISTS "${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/Makefile")
+
+IF (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/rocksdb/Makefile")
MESSAGE(SEND_ERROR "Missing Makefile in rocksdb directory. Try \"git submodule update\".")
ENDIF()
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+MACRO(SKIP_ROCKSDB_PLUGIN msg)
+ MESSAGE_ONCE(SKIP_ROCKSDB_PLUGIN "Can't build rocksdb engine - ${msg}")
+ RETURN()
+ENDMACRO()
+
+
+# This plugin needs recent C++ compilers (it is using C++11 features)
+# Skip build for the old compilers
+SET(CXX11_FLAGS)
+SET(OLD_COMPILER_MSG "requires c++11 -capable compiler (minimal supported versions are g++ 4.8, clang 3.3, VS2015)")
+
+IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
+ IF (GCC_VERSION VERSION_LESS 4.8)
+ SKIP_ROCKSDB_PLUGIN("${OLD_COMPILER_MSG}")
+ ENDIF()
+ SET(CXX11_FLAGS "-std=c++11")
+ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ IF ((CMAKE_CXX_COMPILER_VERSION AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.3) OR
+ (CLANG_VERSION_STRING AND CLANG_VERSION_STRING VERSION_LESS 3.3))
+ SKIP_ROCKSDB_PLUGIN("${OLD_COMPILER_MSG}")
+ ENDIF()
+ SET(CXX11_FLAGS "-stdlib=libc++ -std=c++11")
+ELSEIF(MSVC)
+ IF (MSVC_VERSION LESS 1900)
+ SKIP_ROCKSDB_PLUGIN("${OLD_COMPILER_MSG}")
+ ENDIF()
+ELSE()
+ SKIP_ROCKSDB_PLUGIN("Compiler not supported")
+ENDIF()
-CHECK_FUNCTION_EXISTS(sched_getcpu HAVE_SCHED_GETCPU)
-IF(HAVE_SCHED_GETCPU)
- ADD_DEFINITIONS(-DHAVE_SCHED_GETCPU=1)
+IF(CXX11_FLAGS)
+ ADD_DEFINITIONS(${CXX11_FLAGS})
ENDIF()
-# get a list of rocksdb library source files
-# run with env -i to avoid passing variables
-EXECUTE_PROCESS(
- COMMAND env -i ${CMAKE_SOURCE_DIR}/storage/rocksdb/get_rocksdb_files.sh
- OUTPUT_VARIABLE SCRIPT_OUTPUT
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+SET(ROCKSDB_SE_SOURCES
+ rdb_mariadb_server_port.cc
+ rdb_mariadb_server_port.h
+ ha_rocksdb.cc
+ ha_rocksdb.h
+ rdb_i_s.cc
+ rdb_i_s.h
+ rdb_mutex_wrapper.cc
+ rdb_mutex_wrapper.h
+ rdb_index_merge.cc
+ rdb_index_merge.h
+ properties_collector.cc
+ properties_collector.h
+ rdb_datadic.cc
+ rdb_datadic.h
+ rdb_cf_manager.cc
+ rdb_cf_manager.h
+ rdb_utils.cc rdb_utils.h
+ rdb_threads.cc
+ rdb_threads.h
)
-# split the list into lines
-STRING(REGEX MATCHALL "[^\n]+" ROCKSDB_LIB_SOURCES ${SCRIPT_OUTPUT})
-INCLUDE_DIRECTORIES(
- ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb
- ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/include
- ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/third-party/gtest-1.7.0/fused-src
-)
+MYSQL_ADD_PLUGIN(rocksdb_se ${ROCKSDB_SE_SOURCES} STORAGE_ENGINE MODULE_OUTPUT_NAME ha_rocksdb)
-ADD_DEFINITIONS(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX -DOS_LINUX
- -DZLIB)
-
-# MARIAROCKS_NOT_YET: Add -frtti flag when compiling RocksDB files.
-# TODO: is this the right way to do this?
-# - SQL layer and storage/rocksdb/*.cc are compiled with -fnortti
-# - RocksDB files are compiled with "-fnortti ... -frtti"
-# - This causes RocksDB headers to be compiled with different settings:
-# = with RTTI when compiling RocksDB
-# = without RTTI when compiling storage/rocksdb/*.cc
-#
-# (facebook/mysql-5.6 just compiles everything without -f*rtti, which means
-# everything is compiled with -frtti)
-#
-# (also had to add -frtti above, because something that event_listener.cc
-# includes requires it. So, now everything in MariaRocks is compiled with
-# -frtti)
-set_source_files_properties(${ROCKSDB_LIB_SOURCES} PROPERTIES COMPILE_FLAGS -frtti)
-set_source_files_properties(event_listener.cc PROPERTIES COMPILE_FLAGS -frtti)
-set_source_files_properties(rdb_cf_options.cc PROPERTIES COMPILE_FLAGS -frtti)
-
-ADD_CONVENIENCE_LIBRARY(
- ROCKSDB_AUX_LIB
+IF(NOT TARGET rocksdb_se)
+ # Bail out if compilation with rocksdb engine is not requested
+ RETURN()
+ENDIF()
+
+INCLUDE(build_rocksdb.cmake)
+
+ADD_CONVENIENCE_LIBRARY(rocksdb_aux_lib
ha_rocksdb_proto.h
logger.h
rdb_comparator.h
- rdb_datadic.cc rdb_datadic.h
- rdb_cf_options.cc rdb_cf_options.h
- rdb_cf_manager.cc rdb_cf_manager.h
- properties_collector.cc properties_collector.h
- event_listener.cc event_listener.h
- rdb_i_s.cc rdb_i_s.h
- rdb_index_merge.cc rdb_index_merge.h
- rdb_perf_context.cc rdb_perf_context.h
- rdb_mutex_wrapper.cc rdb_mutex_wrapper.h
- rdb_sst_info.cc rdb_sst_info.h
- rdb_utils.cc rdb_utils.h rdb_buff.h
- rdb_threads.cc rdb_threads.h
- rdb_mariadb_port.h
- ${ROCKSDB_LIB_SOURCES}
-)
+ rdb_cf_options.cc
+ rdb_cf_options.h
+ event_listener.cc
+ event_listener.h
+ rdb_perf_context.cc
+ rdb_perf_context.h
+ rdb_sst_info.cc
+ rdb_sst_info.h
+ rdb_buff.h
+ rdb_mariadb_port.h)
+
+ADD_DEPENDENCIES(rocksdb_aux_lib GenError)
+
+TARGET_LINK_LIBRARIES(rocksdb_aux_lib rocksdblib ${ZLIB_LIBRARY})
+TARGET_LINK_LIBRARIES(rocksdb_se rocksdb_aux_lib)
+
+IF(CMAKE_COMPILER_IS_GNUCXX)
+ # MARIAROCKS_NOT_YET: Add -frtti flag when compiling RocksDB files.
+ # TODO: is this the right way to do this?
+ # - SQL layer and storage/rocksdb/*.cc are compiled with -fnortti
+ # - RocksDB files are compiled with "-fnortti ... -frtti"
+ # - This causes RocksDB headers to be compiled with different settings:
+ # = with RTTI when compiling RocksDB
+ # = without RTTI when compiling storage/rocksdb/*.cc
+ #
+ # (facebook/mysql-5.6 just compiles everything without -f*rtti, which means
+ # everything is compiled with -frtti)
+ #
+ # (also had to add -frtti above, because something that event_listener.cc
+ # includes requires it. So, now everything in MariaRocks is compiled with
+ # -frtti)
+ set_source_files_properties(event_listener.cc rdb_cf_options.cc
+ PROPERTIES COMPILE_FLAGS -frtti)
+ENDIF()
+
+CHECK_FUNCTION_EXISTS(sched_getcpu HAVE_SCHED_GETCPU)
+IF(HAVE_SCHED_GETCPU)
+ ADD_DEFINITIONS(-DHAVE_SCHED_GETCPU=1)
+ENDIF()
-# We include storage/innobase/include/ut0counter.h, which includes
-# univ.i, which includes mysqld_error.h.
-# Indicate that MyRocks is dependent on that file (just like innochecksum does)
-ADD_DEPENDENCIES(ROCKSDB_AUX_LIB GenError)
+IF(WITH_UNIT_TESTS AND WITH_EMBEDDED_SERVER)
+ ADD_SUBDIRECTORY(unittest)
+ENDIF()
-SET(ROCKSDB_SOURCES
- rdb_mariadb_server_port.cc rdb_mariadb_server_port.h
- ha_rocksdb.cc ha_rocksdb.h
+ADD_LIBRARY(rocksdb_tools STATIC
+ rocksdb/tools/ldb_tool.cc
+ rocksdb/tools/ldb_cmd.cc
+ rocksdb/tools/sst_dump_tool.cc
)
-IF(WITH_FB_TSAN)
- SET(PIC_EXT "_pic")
-ELSE()
- SET(PIC_EXT "")
+MYSQL_ADD_EXECUTABLE(sst_dump rocksdb/tools/sst_dump.cc)
+TARGET_LINK_LIBRARIES(sst_dump rocksdblib)
+
+MYSQL_ADD_EXECUTABLE(ldb rocksdb/tools/ldb.cc)
+TARGET_LINK_LIBRARIES(ldb rocksdb_tools rocksdblib)
+
+MYSQL_ADD_EXECUTABLE(mysql_ldb tools/mysql_ldb.cc)
+TARGET_LINK_LIBRARIES(mysql_ldb rocksdb_tools rocksdb_aux_lib)
+
+IF(CMAKE_COMPILER_IS_GNUCXX)
+ SET_TARGET_PROPERTIES(rocksdb_tools sst_dump ldb mysql_ldb PROPERTIES COMPILE_FLAGS -frtti)
+ENDIF()
+IF(MSVC)
+ # RocksDB, the storage engine, overdoes "const" by adding
+ # additional const qualifiers to parameters of the overriden virtual functions
+ # This creates a lot of warnings, that we silence here.
+ ADD_DEFINITIONS(/wd4373)
+
+ # Some checks in C++ runtime that make debug build much slower
+ ADD_DEFINITIONS(-D_ITERATOR_DEBUG_LEVEL=0)
ENDIF()
-SET(rocksdb_static_libs )
+# Optional compression libraries.
+#
+# TODO: search compression libraries properly.
+# Use FIND_PACKAGE, CHECK_LIBRARY_EXISTS etc
+IF(MARIAROCKS_NOT_YET)
IF (NOT "$ENV{WITH_SNAPPY}" STREQUAL "")
SET(rocksdb_static_libs ${rocksdb_static_libs}
$ENV{WITH_SNAPPY}/libsnappy${PIC_EXT}.a)
@@ -110,31 +176,4 @@ IF (NOT "$ENV{WITH_ZSTD}" STREQUAL "")
$ENV{WITH_ZSTD}/libzstd${PIC_EXT}.a)
ADD_DEFINITIONS(-DZSTD)
ENDIF()
-
-SET(rocksdb_static_libs ROCKSDB_AUX_LIB ${rocksdb_static_libs} ${ZLIB_LIBRARY} "-lrt")
-
-MYSQL_ADD_PLUGIN(rocksdb_se ${ROCKSDB_SOURCES} STORAGE_ENGINE DEFAULT MODULE_ONLY
- LINK_LIBRARIES ${rocksdb_static_libs}
-)
-
-IF(WITH_EMBEDDED_SERVER)
- ADD_SUBDIRECTORY(unittest)
-ENDIF()
-
-IF (WITH_ROCKSDB_SE_STORAGE_ENGINE)
- # TODO: read this file list from src.mk:TOOL_SOURCES
- SET(ROCKSDB_TOOL_SOURCES
- ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/tools/ldb_tool.cc
- ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/tools/ldb_cmd.cc
- ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/tools/sst_dump_tool.cc
- )
- set_source_files_properties(${ROCKSDB_TOOL_SOURCES} PROPERTIES COMPILE_FLAGS -frtti)
- MYSQL_ADD_EXECUTABLE(sst_dump ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/tools/sst_dump.cc ${ROCKSDB_TOOL_SOURCES})
- TARGET_LINK_LIBRARIES(sst_dump ${rocksdb_static_libs})
-
- MYSQL_ADD_EXECUTABLE(ldb ${CMAKE_SOURCE_DIR}/storage/rocksdb/rocksdb/tools/ldb.cc ${ROCKSDB_TOOL_SOURCES})
- TARGET_LINK_LIBRARIES(ldb ${rocksdb_static_libs})
-
- MYSQL_ADD_EXECUTABLE(mysql_ldb ${CMAKE_SOURCE_DIR}/storage/rocksdb/tools/mysql_ldb.cc ${ROCKSDB_TOOL_SOURCES})
- TARGET_LINK_LIBRARIES(mysql_ldb ${rocksdb_static_libs})
-ENDIF()
+ENDIF(MARIAROCKS_NOT_YET)
diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake
new file mode 100644
index 00000000000..35e83af73dc
--- /dev/null
+++ b/storage/rocksdb/build_rocksdb.cmake
@@ -0,0 +1,337 @@
+
+if(POLICY CMP0042)
+ cmake_policy(SET CMP0042 NEW)
+endif()
+
+SET(ROCKSDB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rocksdb)
+
+INCLUDE_DIRECTORIES(
+ ${ROCKSDB_SOURCE_DIR}
+ ${ROCKSDB_SOURCE_DIR}/include
+ ${ROCKSDB_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src
+)
+
+
+
+list(APPEND CMAKE_MODULE_PATH "${ROCKSDB_SOURCE_DIR}/cmake/modules/")
+
+if(WIN32)
+ # include(${ROCKSDB_SOURCE_DIR}/thirdparty.inc)
+else()
+ option(WITH_ROCKSDB_JEMALLOC "build RocksDB with JeMalloc" OFF)
+ if(WITH_ROCKSDB_JEMALLOC)
+ find_package(JeMalloc REQUIRED)
+ add_definitions(-DROCKSDB_JEMALLOC)
+ include_directories(${JEMALLOC_INCLUDE_DIR})
+ endif()
+ if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ # FreeBSD has jemaloc as default malloc
+ add_definitions(-DROCKSDB_JEMALLOC)
+ set(WITH_JEMALLOC ON)
+ endif()
+ option(WITH_ROCKSDB_SNAPPY "build RocksDB with SNAPPY" OFF)
+ if(WITH_ROCKSDB_SNAPPY)
+ find_package(snappy REQUIRED)
+ add_definitions(-DSNAPPY)
+ include_directories(${SNAPPY_INCLUDE_DIR})
+ list(APPEND THIRDPARTY_LIBS ${SNAPPY_LIBRARIES})
+ endif()
+endif()
+
+
+
+
+
+if(CMAKE_SYSTEM_NAME MATCHES "Cygwin")
+ add_definitions(-fno-builtin-memcmp -DCYGWIN)
+elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ add_definitions(-DOS_MACOSX)
+elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ add_definitions(-DOS_LINUX)
+elseif(CMAKE_SYSTEM_NAME MATCHES "SunOS")
+ add_definitions(-DOS_SOLARIS)
+elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ add_definitions(-DOS_FREEBSD)
+elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
+ add_definitions(-DOS_NETBSD)
+elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
+ add_definitions(-DOS_OPENBSD)
+elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly")
+ add_definitions(-DOS_DRAGONFLYBSD)
+elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
+ add_definitions(-DOS_ANDROID)
+elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
+ add_definitions(-DOS_WIN)
+endif()
+
+IF(MSVC)
+ add_definitions(/wd4244)
+ENDIF()
+if(NOT WIN32)
+ add_definitions(-DROCKSDB_PLATFORM_POSIX -DROCKSDB_LIB_IO_POSIX)
+endif()
+
+option(WITH_FALLOCATE "build with fallocate" ON)
+
+if(WITH_FALLOCATE AND UNIX)
+ include(CheckCSourceCompiles)
+ CHECK_C_SOURCE_COMPILES("
+#include <fcntl.h>
+#include <linux/falloc.h>
+int main() {
+ int fd = open(\"/dev/null\", 0);
+ fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, 0, 1024);
+}
+" HAVE_FALLOCATE)
+ if(HAVE_FALLOCATE)
+ add_definitions(-DROCKSDB_FALLOCATE_PRESENT)
+ endif()
+endif()
+
+include(CheckFunctionExists)
+CHECK_FUNCTION_EXISTS(malloc_usable_size HAVE_MALLOC_USABLE_SIZE)
+if(HAVE_MALLOC_USABLE_SIZE)
+ add_definitions(-DROCKSDB_MALLOC_USABLE_SIZE)
+endif()
+
+include_directories(${ROCKSDB_SOURCE_DIR})
+include_directories(${ROCKSDB_SOURCE_DIR}/include)
+include_directories(SYSTEM ${ROCKSDB_SOURCE_DIR}/third-party/gtest-1.7.0/fused-src)
+
+find_package(Threads REQUIRED)
+if(WIN32)
+ set(SYSTEM_LIBS ${SYSTEM_LIBS} Shlwapi.lib Rpcrt4.lib)
+else()
+ set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT})
+endif()
+
+set(ROCKSDB_LIBS rocksdblib})
+set(LIBS ${ROCKSDB_LIBS} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
+
+#add_subdirectory(${ROCKSDB_SOURCE_DIR}/tools)
+
+# Main library source code
+
+set(ROCKSDB_SOURCES
+ db/auto_roll_logger.cc
+ db/builder.cc
+ db/c.cc
+ db/column_family.cc
+ db/compacted_db_impl.cc
+ db/compaction.cc
+ db/compaction_iterator.cc
+ db/compaction_job.cc
+ db/compaction_picker.cc
+ db/convenience.cc
+ db/dbformat.cc
+ db/db_filesnapshot.cc
+ db/db_impl.cc
+ db/db_impl_debug.cc
+ db/db_impl_experimental.cc
+ db/db_impl_readonly.cc
+ db/db_info_dumper.cc
+ db/db_iter.cc
+ db/event_helpers.cc
+ db/external_sst_file_ingestion_job.cc
+ db/experimental.cc
+ db/filename.cc
+ db/file_indexer.cc
+ db/flush_job.cc
+ db/flush_scheduler.cc
+ db/forward_iterator.cc
+ db/internal_stats.cc
+ db/log_reader.cc
+ db/log_writer.cc
+ db/managed_iterator.cc
+ db/memtable.cc
+ db/memtable_allocator.cc
+ db/memtable_list.cc
+ db/merge_helper.cc
+ db/merge_operator.cc
+ db/range_del_aggregator.cc
+ db/repair.cc
+ db/snapshot_impl.cc
+ db/table_cache.cc
+ db/table_properties_collector.cc
+ db/transaction_log_impl.cc
+ db/version_builder.cc
+ db/version_edit.cc
+ db/version_set.cc
+ db/wal_manager.cc
+ db/write_batch.cc
+ db/write_batch_base.cc
+ db/write_controller.cc
+ db/write_thread.cc
+ db/xfunc_test_points.cc
+ memtable/hash_cuckoo_rep.cc
+ memtable/hash_linklist_rep.cc
+ memtable/hash_skiplist_rep.cc
+ memtable/skiplistrep.cc
+ memtable/vectorrep.cc
+ port/stack_trace.cc
+ table/adaptive_table_factory.cc
+ table/block.cc
+ table/block_based_filter_block.cc
+ table/block_based_table_builder.cc
+ table/block_based_table_factory.cc
+ table/block_based_table_reader.cc
+ table/block_builder.cc
+ table/block_prefix_index.cc
+ table/bloom_block.cc
+ table/cuckoo_table_builder.cc
+ table/cuckoo_table_factory.cc
+ table/cuckoo_table_reader.cc
+ table/flush_block_policy.cc
+ table/format.cc
+ table/full_filter_block.cc
+ table/get_context.cc
+ table/iterator.cc
+ table/merger.cc
+ table/sst_file_writer.cc
+ table/meta_blocks.cc
+ table/plain_table_builder.cc
+ table/plain_table_factory.cc
+ table/plain_table_index.cc
+ table/plain_table_key_coding.cc
+ table/plain_table_reader.cc
+ table/persistent_cache_helper.cc
+ table/table_properties.cc
+ table/two_level_iterator.cc
+ tools/sst_dump_tool.cc
+ tools/db_bench_tool.cc
+ tools/dump/db_dump_tool.cc
+ util/arena.cc
+ util/bloom.cc
+ util/cf_options.cc
+ util/clock_cache.cc
+ util/coding.cc
+ util/compaction_job_stats_impl.cc
+ util/comparator.cc
+ util/concurrent_arena.cc
+ util/crc32c.cc
+ util/db_options.cc
+ util/delete_scheduler.cc
+ util/dynamic_bloom.cc
+ util/env.cc
+ util/env_chroot.cc
+ util/env_hdfs.cc
+ util/event_logger.cc
+ util/file_util.cc
+ util/file_reader_writer.cc
+ util/sst_file_manager_impl.cc
+ util/filter_policy.cc
+ util/hash.cc
+ util/histogram.cc
+ util/histogram_windowing.cc
+ util/instrumented_mutex.cc
+ util/iostats_context.cc
+ util/lru_cache.cc
+ tools/ldb_cmd.cc
+ tools/ldb_tool.cc
+ util/logging.cc
+ util/log_buffer.cc
+ util/memenv.cc
+ util/murmurhash.cc
+ util/options.cc
+ util/options_helper.cc
+ util/options_parser.cc
+ util/options_sanity_check.cc
+ util/perf_context.cc
+ util/perf_level.cc
+ util/random.cc
+ util/rate_limiter.cc
+ util/sharded_cache.cc
+ util/slice.cc
+ util/statistics.cc
+ util/status.cc
+ util/status_message.cc
+ util/string_util.cc
+ util/sync_point.cc
+ util/testutil.cc
+ util/thread_local.cc
+ util/threadpool_imp.cc
+ util/thread_status_impl.cc
+ util/thread_status_updater.cc
+ util/thread_status_util.cc
+ util/thread_status_util_debug.cc
+ util/transaction_test_util.cc
+ util/xfunc.cc
+ util/xxhash.cc
+ utilities/backupable/backupable_db.cc
+ utilities/blob_db/blob_db.cc
+ utilities/checkpoint/checkpoint.cc
+ utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc
+ utilities/date_tiered/date_tiered_db_impl.cc
+ utilities/document/document_db.cc
+ utilities/document/json_document.cc
+ utilities/document/json_document_builder.cc
+ utilities/env_mirror.cc
+ utilities/env_registry.cc
+ utilities/geodb/geodb_impl.cc
+ utilities/leveldb_options/leveldb_options.cc
+ utilities/lua/rocks_lua_compaction_filter.cc
+ utilities/memory/memory_util.cc
+ utilities/merge_operators/string_append/stringappend.cc
+ utilities/merge_operators/string_append/stringappend2.cc
+ utilities/merge_operators/put.cc
+ utilities/merge_operators/max.cc
+ utilities/merge_operators/uint64add.cc
+ utilities/option_change_migration/option_change_migration.cc
+ utilities/options/options_util.cc
+ utilities/persistent_cache/block_cache_tier.cc
+ utilities/persistent_cache/block_cache_tier_file.cc
+ utilities/persistent_cache/block_cache_tier_metadata.cc
+ utilities/persistent_cache/persistent_cache_tier.cc
+ utilities/persistent_cache/volatile_tier_impl.cc
+ utilities/redis/redis_lists.cc
+ utilities/simulator_cache/sim_cache.cc
+ utilities/spatialdb/spatial_db.cc
+ utilities/table_properties_collectors/compact_on_deletion_collector.cc
+ utilities/transactions/optimistic_transaction_impl.cc
+ utilities/transactions/optimistic_transaction_db_impl.cc
+ utilities/transactions/transaction_base.cc
+ utilities/transactions/transaction_impl.cc
+ utilities/transactions/transaction_db_impl.cc
+ utilities/transactions/transaction_db_mutex_impl.cc
+ utilities/transactions/transaction_lock_mgr.cc
+ utilities/transactions/transaction_util.cc
+ utilities/ttl/db_ttl_impl.cc
+ utilities/write_batch_with_index/write_batch_with_index.cc
+ utilities/write_batch_with_index/write_batch_with_index_internal.cc
+ utilities/col_buf_encoder.cc
+ utilities/col_buf_decoder.cc
+ utilities/column_aware_encoding_util.cc
+)
+
+if(WIN32)
+ list(APPEND ROCKSDB_SOURCES
+ port/win/io_win.cc
+ port/win/env_win.cc
+ port/win/env_default.cc
+ port/win/port_win.cc
+ port/win/win_logger.cc
+ port/win/xpress_win.cc)
+else()
+ list(APPEND ROCKSDB_SOURCES
+ port/port_posix.cc
+ util/env_posix.cc
+ util/io_posix.cc)
+endif()
+SET(SOURCES)
+FOREACH(s ${ROCKSDB_SOURCES})
+ list(APPEND SOURCES ${ROCKSDB_SOURCE_DIR}/${s})
+ENDFOREACH()
+
+IF(CMAKE_VERSION VERSION_GREATER "2.8.10")
+ STRING(TIMESTAMP GIT_DATE_TIME "%Y-%m-%d %H:%M:%S")
+ENDIF()
+
+CONFIGURE_FILE(${ROCKSDB_SOURCE_DIR}/util/build_version.cc.in build_version.cc @ONLY)
+INCLUDE_DIRECTORIES(${ROCKSDB_SOURCE_DIR}/util)
+list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/build_version.cc)
+
+ADD_CONVENIENCE_LIBRARY(rocksdblib STATIC ${SOURCES})
+target_link_libraries(rocksdblib ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
+if(CMAKE_COMPILER_IS_GNUCXX)
+ set_target_properties(rocksdblib PROPERTIES COMPILE_FLAGS "-fno-builtin-memcmp -frtti")
+endif()
diff --git a/storage/rocksdb/ha_rocksdb.cc b/storage/rocksdb/ha_rocksdb.cc
index c97d7976ba3..fa83b3f5a52 100644
--- a/storage/rocksdb/ha_rocksdb.cc
+++ b/storage/rocksdb/ha_rocksdb.cc
@@ -394,9 +394,9 @@ static long long rocksdb_block_cache_size;
/* Use unsigned long long instead of uint64_t because of MySQL compatibility */
static unsigned long long // NOLINT(runtime/int)
rocksdb_rate_limiter_bytes_per_sec;
-static uint64_t rocksdb_info_log_level;
+static ulong rocksdb_info_log_level;
static char * rocksdb_wal_dir;
-static uint64_t rocksdb_index_type;
+static ulong rocksdb_index_type;
static char rocksdb_background_sync;
static uint32_t rocksdb_debug_optimizer_n_rows;
static my_bool rocksdb_debug_optimizer_no_zero_cardinality;
@@ -651,12 +651,12 @@ static MYSQL_SYSVAR_UINT(wal_recovery_mode,
/* min */ (uint) rocksdb::WALRecoveryMode::kTolerateCorruptedTailRecords,
/* max */ (uint) rocksdb::WALRecoveryMode::kSkipAnyCorruptedRecords, 0);
-static MYSQL_SYSVAR_ULONG(compaction_readahead_size,
+static MYSQL_SYSVAR_SIZE_T(compaction_readahead_size,
rocksdb_db_options.compaction_readahead_size,
PLUGIN_VAR_RQCMDARG,
"DBOptions::compaction_readahead_size for RocksDB",
nullptr, nullptr, rocksdb_db_options.compaction_readahead_size,
- /* min */ 0L, /* max */ ULONG_MAX, 0);
+ /* min */ 0L, /* max */ SIZE_T_MAX, 0);
static MYSQL_SYSVAR_BOOL(new_table_reader_for_compaction_inputs,
*reinterpret_cast<my_bool*>
@@ -695,12 +695,12 @@ static MYSQL_SYSVAR_INT(max_open_files,
nullptr, nullptr, rocksdb_db_options.max_open_files,
/* min */ -1, /* max */ INT_MAX, 0);
-static MYSQL_SYSVAR_ULONG(max_total_wal_size,
+static MYSQL_SYSVAR_UINT64_T(max_total_wal_size,
rocksdb_db_options.max_total_wal_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::max_total_wal_size for RocksDB",
nullptr, nullptr, rocksdb_db_options.max_total_wal_size,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0, /* max */ LONGLONG_MAX, 0);
static MYSQL_SYSVAR_BOOL(disabledatasync,
*reinterpret_cast<my_bool*>(&rocksdb_db_options.disableDataSync),
@@ -719,12 +719,12 @@ static MYSQL_SYSVAR_STR(wal_dir, rocksdb_wal_dir,
"DBOptions::wal_dir for RocksDB",
nullptr, nullptr, rocksdb_db_options.wal_dir.c_str());
-static MYSQL_SYSVAR_ULONG(delete_obsolete_files_period_micros,
+static MYSQL_SYSVAR_UINT64_T(delete_obsolete_files_period_micros,
rocksdb_db_options.delete_obsolete_files_period_micros,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::delete_obsolete_files_period_micros for RocksDB",
nullptr, nullptr, rocksdb_db_options.delete_obsolete_files_period_micros,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0, /* max */ LONGLONG_MAX, 0);
static MYSQL_SYSVAR_INT(base_background_compactions,
rocksdb_db_options.base_background_compactions,
@@ -754,33 +754,33 @@ static MYSQL_SYSVAR_UINT(max_subcompactions,
nullptr, nullptr, rocksdb_db_options.max_subcompactions,
/* min */ 1, /* max */ MAX_SUBCOMPACTIONS, 0);
-static MYSQL_SYSVAR_ULONG(max_log_file_size,
+static MYSQL_SYSVAR_SIZE_T(max_log_file_size,
rocksdb_db_options.max_log_file_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::max_log_file_size for RocksDB",
nullptr, nullptr, rocksdb_db_options.max_log_file_size,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ SIZE_T_MAX, 0);
-static MYSQL_SYSVAR_ULONG(log_file_time_to_roll,
+static MYSQL_SYSVAR_SIZE_T(log_file_time_to_roll,
rocksdb_db_options.log_file_time_to_roll,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::log_file_time_to_roll for RocksDB",
nullptr, nullptr, rocksdb_db_options.log_file_time_to_roll,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ SIZE_T_MAX, 0);
-static MYSQL_SYSVAR_ULONG(keep_log_file_num,
+static MYSQL_SYSVAR_SIZE_T(keep_log_file_num,
rocksdb_db_options.keep_log_file_num,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::keep_log_file_num for RocksDB",
nullptr, nullptr, rocksdb_db_options.keep_log_file_num,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ SIZE_T_MAX, 0);
-static MYSQL_SYSVAR_ULONG(max_manifest_file_size,
+static MYSQL_SYSVAR_UINT64_T(max_manifest_file_size,
rocksdb_db_options.max_manifest_file_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::max_manifest_file_size for RocksDB",
nullptr, nullptr, rocksdb_db_options.max_manifest_file_size,
- /* min */ 0L, /* max */ ULONG_MAX, 0);
+ /* min */ 0L, /* max */ ULONGLONG_MAX, 0);
static MYSQL_SYSVAR_INT(table_cache_numshardbits,
rocksdb_db_options.table_cache_numshardbits,
@@ -789,26 +789,26 @@ static MYSQL_SYSVAR_INT(table_cache_numshardbits,
nullptr, nullptr, rocksdb_db_options.table_cache_numshardbits,
/* min */ 0, /* max */ INT_MAX, 0);
-static MYSQL_SYSVAR_ULONG(wal_ttl_seconds,
+static MYSQL_SYSVAR_UINT64_T(wal_ttl_seconds,
rocksdb_db_options.WAL_ttl_seconds,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::WAL_ttl_seconds for RocksDB",
nullptr, nullptr, rocksdb_db_options.WAL_ttl_seconds,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ LONGLONG_MAX, 0);
-static MYSQL_SYSVAR_ULONG(wal_size_limit_mb,
+static MYSQL_SYSVAR_UINT64_T(wal_size_limit_mb,
rocksdb_db_options.WAL_size_limit_MB,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::WAL_size_limit_MB for RocksDB",
nullptr, nullptr, rocksdb_db_options.WAL_size_limit_MB,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ LONGLONG_MAX, 0);
-static MYSQL_SYSVAR_ULONG(manifest_preallocation_size,
+static MYSQL_SYSVAR_SIZE_T(manifest_preallocation_size,
rocksdb_db_options.manifest_preallocation_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::manifest_preallocation_size for RocksDB",
nullptr, nullptr, rocksdb_db_options.manifest_preallocation_size,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ SIZE_T_MAX, 0);
static MYSQL_SYSVAR_BOOL(use_direct_reads,
*reinterpret_cast<my_bool*>(&rocksdb_db_options.use_direct_reads),
@@ -853,12 +853,12 @@ static MYSQL_SYSVAR_BOOL(advise_random_on_open,
"DBOptions::advise_random_on_open for RocksDB",
nullptr, nullptr, rocksdb_db_options.advise_random_on_open);
-static MYSQL_SYSVAR_ULONG(db_write_buffer_size,
+static MYSQL_SYSVAR_SIZE_T(db_write_buffer_size,
rocksdb_db_options.db_write_buffer_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::db_write_buffer_size for RocksDB",
nullptr, nullptr, rocksdb_db_options.db_write_buffer_size,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ SIZE_T_MAX, 0);
static MYSQL_SYSVAR_BOOL(use_adaptive_mutex,
*reinterpret_cast<my_bool*>(&rocksdb_db_options.use_adaptive_mutex),
@@ -866,19 +866,19 @@ static MYSQL_SYSVAR_BOOL(use_adaptive_mutex,
"DBOptions::use_adaptive_mutex for RocksDB",
nullptr, nullptr, rocksdb_db_options.use_adaptive_mutex);
-static MYSQL_SYSVAR_ULONG(bytes_per_sync,
+static MYSQL_SYSVAR_UINT64_T(bytes_per_sync,
rocksdb_db_options.bytes_per_sync,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::bytes_per_sync for RocksDB",
nullptr, nullptr, rocksdb_db_options.bytes_per_sync,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ ULONGLONG_MAX, 0);
-static MYSQL_SYSVAR_ULONG(wal_bytes_per_sync,
+static MYSQL_SYSVAR_UINT64_T(wal_bytes_per_sync,
rocksdb_db_options.wal_bytes_per_sync,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"DBOptions::wal_bytes_per_sync for RocksDB",
nullptr, nullptr, rocksdb_db_options.wal_bytes_per_sync,
- /* min */ 0L, /* max */ LONG_MAX, 0);
+ /* min */ 0L, /* max */ ULONGLONG_MAX, 0);
static MYSQL_SYSVAR_BOOL(enable_thread_tracking,
*reinterpret_cast<my_bool*>(&rocksdb_db_options.enable_thread_tracking),
@@ -921,7 +921,7 @@ static MYSQL_SYSVAR_ENUM(index_type,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"BlockBasedTableOptions::index_type for RocksDB",
nullptr, nullptr,
- (uint64_t)rocksdb_tbl_options.index_type, &index_type_typelib);
+ (ulong)rocksdb_tbl_options.index_type, &index_type_typelib);
static MYSQL_SYSVAR_BOOL(hash_index_allow_collision,
*reinterpret_cast<my_bool*>(&rocksdb_tbl_options.hash_index_allow_collision),
@@ -935,12 +935,12 @@ static MYSQL_SYSVAR_BOOL(no_block_cache,
"BlockBasedTableOptions::no_block_cache for RocksDB",
nullptr, nullptr, rocksdb_tbl_options.no_block_cache);
-static MYSQL_SYSVAR_ULONG(block_size,
+static MYSQL_SYSVAR_SIZE_T(block_size,
rocksdb_tbl_options.block_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"BlockBasedTableOptions::block_size for RocksDB",
nullptr, nullptr, rocksdb_tbl_options.block_size,
- /* min */ 1L, /* max */ LONG_MAX, 0);
+ /* min */ 1L, /* max */ SIZE_T_MAX, 0);
static MYSQL_SYSVAR_INT(block_size_deviation,
rocksdb_tbl_options.block_size_deviation,
@@ -3097,7 +3097,7 @@ class Rdb_snapshot_status : public Rdb_tx_list_walker
m_data += format_string("---SNAPSHOT, ACTIVE %lld sec\n"
"%s\n"
"lock count %llu, write count %llu\n",
- curr_time - snapshot_timestamp,
+ (longlong)(curr_time - snapshot_timestamp),
buffer,
tx->get_lock_count(), tx->get_write_count());
}
@@ -3307,20 +3307,20 @@ static bool rocksdb_show_status(handlerton* const hton,
str.clear();
rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(
dbs, cache_set, &temp_usage_by_type);
- snprintf(buf, sizeof(buf), "\nMemTable Total: %lu",
- temp_usage_by_type[rocksdb::MemoryUtil::kMemTableTotal]);
+ snprintf(buf, sizeof(buf), "\nMemTable Total: %llu",
+ (ulonglong)temp_usage_by_type[rocksdb::MemoryUtil::kMemTableTotal]);
str.append(buf);
- snprintf(buf, sizeof(buf), "\nMemTable Unflushed: %lu",
- temp_usage_by_type[rocksdb::MemoryUtil::kMemTableUnFlushed]);
+ snprintf(buf, sizeof(buf), "\nMemTable Unflushed: %llu",
+ (ulonglong)temp_usage_by_type[rocksdb::MemoryUtil::kMemTableUnFlushed]);
str.append(buf);
- snprintf(buf, sizeof(buf), "\nTable Readers Total: %lu",
- temp_usage_by_type[rocksdb::MemoryUtil::kTableReadersTotal]);
+ snprintf(buf, sizeof(buf), "\nTable Readers Total: %llu",
+ (ulonglong)temp_usage_by_type[rocksdb::MemoryUtil::kTableReadersTotal]);
str.append(buf);
- snprintf(buf, sizeof(buf), "\nCache Total: %lu",
- temp_usage_by_type[rocksdb::MemoryUtil::kCacheTotal]);
+ snprintf(buf, sizeof(buf), "\nCache Total: %llu",
+ (ulonglong)temp_usage_by_type[rocksdb::MemoryUtil::kCacheTotal]);
str.append(buf);
- snprintf(buf, sizeof(buf), "\nDefault Cache Capacity: %lu",
- internal_cache_count * kDefaultInternalCacheSize);
+ snprintf(buf, sizeof(buf), "\nDefault Cache Capacity: %llu",
+ (ulonglong)internal_cache_count * kDefaultInternalCacheSize);
str.append(buf);
res |= print_stats(thd, "Memory_Stats", "rocksdb", str, stat_print);
}
@@ -3711,7 +3711,11 @@ static int rocksdb_init_func(void* const p)
and RocksDB doesn't provide any way to check what kind of error it was.
Checking system errno happens to work right now.
*/
- if (status.IsIOError() && errno == ENOENT)
+ if (status.IsIOError()
+#ifndef _WIN32
+ && errno == ENOENT
+#endif
+ )
{
sql_print_information("RocksDB: Got ENOENT when listing column families");
sql_print_information("RocksDB: assuming that we're creating a new database");
@@ -5662,13 +5666,13 @@ int rdb_normalize_tablename(const std::string& tablename,
{
DBUG_ASSERT(strbuf != nullptr);
- if (tablename.size() < 2 || tablename[0] != '.' || tablename[1] != '/')
+ if (tablename.size() < 2 || tablename[0] != '.' || tablename[1] != FN_LIBCHAR)
{
DBUG_ASSERT(0); // We were not passed table name?
return HA_ERR_INTERNAL_ERROR;
}
- size_t pos = tablename.find_first_of('/', 2);
+ size_t pos = tablename.find_first_of(FN_LIBCHAR, 2);
if (pos == std::string::npos)
{
DBUG_ASSERT(0); // We were not passed table name?
@@ -9271,10 +9275,10 @@ void Rdb_drop_index_thread::run()
}
timespec ts;
- clock_gettime(CLOCK_REALTIME, &ts);
- ts.tv_sec += dict_manager.is_drop_index_empty()
- ? 24*60*60 // no filtering
+ int sec= dict_manager.is_drop_index_empty()
+ ? 24 * 60 * 60 // no filtering
: 60; // filtering
+ set_timespec(ts,sec);
const auto ret __attribute__((__unused__)) = mysql_cond_timedwait(
&m_signal_cond, &m_signal_mutex, &ts);
@@ -10805,8 +10809,7 @@ void Rdb_background_thread::run()
const int WAKE_UP_INTERVAL = 1;
timespec ts_next_sync;
- clock_gettime(CLOCK_REALTIME, &ts_next_sync);
- ts_next_sync.tv_sec += WAKE_UP_INTERVAL;
+ set_timespec(ts_next_sync, WAKE_UP_INTERVAL);
for (;;)
{
@@ -10840,8 +10843,9 @@ void Rdb_background_thread::run()
ddl_manager.persist_stats();
}
- timespec ts;
- clock_gettime(CLOCK_REALTIME, &ts);
+ // Set the next timestamp for mysql_cond_timedwait() (which ends up calling
+ // pthread_cond_timedwait()) to wait on.
+ set_timespec(ts_next_sync, WAKE_UP_INTERVAL);
// Flush the WAL.
if (rdb && rocksdb_background_sync)
@@ -10852,10 +10856,6 @@ void Rdb_background_thread::run()
rdb_handle_io_error(s, RDB_IO_ERROR_BG_THREAD);
}
}
-
- // Set the next timestamp for mysql_cond_timedwait() (which ends up calling
- // pthread_cond_timedwait()) to wait on.
- ts_next_sync.tv_sec= ts.tv_sec + WAKE_UP_INTERVAL;
}
// save remaining stats which might've left unsaved
diff --git a/storage/rocksdb/ha_rocksdb.h b/storage/rocksdb/ha_rocksdb.h
index 824b56b958f..b7fd7062460 100644
--- a/storage/rocksdb/ha_rocksdb.h
+++ b/storage/rocksdb/ha_rocksdb.h
@@ -30,6 +30,14 @@
#include "./my_global.h" /* ulonglong */
#include "./sql_string.h"
+#ifdef _WIN32
+#undef pthread_key_create
+#undef pthread_key_delete
+#undef pthread_setspecific
+#undef pthread_getspecific
+#endif
+
+
/* RocksDB header files */
#include "rocksdb/cache.h"
#include "rocksdb/perf_context.h"
diff --git a/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result b/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
index 16df96bc74d..c75fe5893b0 100644
--- a/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
+++ b/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
@@ -1,39 +1,21 @@
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
trx_id trx_state trx_started trx_requested_lock_id trx_wait_started trx_weight trx_mysql_thread_id trx_query trx_operation_state trx_tables_in_use trx_tables_locked trx_lock_structs trx_lock_memory_bytes trx_rows_locked trx_rows_modified trx_concurrency_tickets trx_isolation_level trx_unique_checks trx_foreign_key_checks trx_last_foreign_key_error trx_adaptive_hash_latched trx_adaptive_hash_timeout trx_is_read_only trx_autocommit_non_locking
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_TRX but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
lock_id lock_trx_id lock_mode lock_type lock_table lock_index lock_space lock_page lock_rec lock_data
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCKS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
requesting_trx_id requested_lock_id blocking_trx_id blocking_lock_id
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_LOCK_WAITS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP;
page_size compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_RESET;
page_size compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_RESET but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX;
database_name table_name index_name compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX_RESET;
database_name table_name index_name compress_ops compress_ops_ok compress_time uncompress_ops uncompress_time
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX_RESET but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM;
page_size buffer_pool_instance pages_used pages_free relocation_ops relocation_time
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM_RESET;
page_size buffer_pool_instance pages_used pages_free relocation_ops relocation_time
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_CMPMEM_RESET but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_METRICS;
NAME SUBSYSTEM COUNT MAX_COUNT MIN_COUNT AVG_COUNT COUNT_RESET MAX_COUNT_RESET MIN_COUNT_RESET AVG_COUNT_RESET TIME_ENABLED TIME_DISABLED TIME_ELAPSED TIME_RESET STATUS TYPE COMMENT
metadata_table_handles_opened metadata 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled counter Number of table handles opened
@@ -346,49 +328,25 @@ SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
KEY VALUE
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
POOL_ID POOL_SIZE FREE_BUFFERS DATABASE_PAGES OLD_DATABASE_PAGES MODIFIED_DATABASE_PAGES PENDING_DECOMPRESS PENDING_READS PENDING_FLUSH_LRU PENDING_FLUSH_LIST PAGES_MADE_YOUNG PAGES_NOT_MADE_YOUNG PAGES_MADE_YOUNG_RATE PAGES_MADE_NOT_YOUNG_RATE NUMBER_PAGES_READ NUMBER_PAGES_CREATED NUMBER_PAGES_WRITTEN PAGES_READ_RATE PAGES_CREATE_RATE PAGES_WRITTEN_RATE NUMBER_PAGES_GET HIT_RATE YOUNG_MAKE_PER_THOUSAND_GETS NOT_YOUNG_MAKE_PER_THOUSAND_GETS NUMBER_PAGES_READ_AHEAD NUMBER_READ_AHEAD_EVICTED READ_AHEAD_RATE READ_AHEAD_EVICTED_RATE LRU_IO_TOTAL LRU_IO_CURRENT UNCOMPRESS_TOTAL UNCOMPRESS_CURRENT
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE;
POOL_ID BLOCK_ID SPACE PAGE_NUMBER PAGE_TYPE FLUSH_TYPE FIX_COUNT IS_HASHED NEWEST_MODIFICATION OLDEST_MODIFICATION ACCESS_TIME TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE COMPRESSED_SIZE PAGE_STATE IO_FIX IS_OLD FREE_PAGE_CLOCK
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_PAGE but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU;
POOL_ID LRU_POSITION SPACE PAGE_NUMBER PAGE_TYPE FLUSH_TYPE FIX_COUNT IS_HASHED NEWEST_MODIFICATION OLDEST_MODIFICATION ACCESS_TIME TABLE_NAME INDEX_NAME NUMBER_RECORDS DATA_SIZE COMPRESSED_SIZE COMPRESSED IO_FIX IS_OLD FREE_PAGE_CLOCK
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
TABLE_ID NAME FLAG N_COLS SPACE FILE_FORMAT ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLES but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS;
TABLE_ID NAME STATS_INITIALIZED NUM_ROWS CLUST_INDEX_SIZE OTHER_INDEX_SIZE MODIFIED_COUNTER AUTOINC REF_COUNT
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES;
INDEX_ID NAME TABLE_ID TYPE N_FIELDS PAGE_NO SPACE MERGE_THRESHOLD
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_INDEXES but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS;
TABLE_ID NAME POS MTYPE PRTYPE LEN
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_COLUMNS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS;
INDEX_ID NAME POS
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_FIELDS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
ID FOR_NAME REF_NAME N_COLS TYPE
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_FOREIGN but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
ID FOR_COL_NAME REF_COL_NAME POS
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES;
SPACE NAME FLAG FILE_FORMAT ROW_FORMAT PAGE_SIZE ZIP_PAGE_SIZE SPACE_TYPE FS_BLOCK_SIZE FILE_SIZE ALLOCATED_SIZE
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES but the InnoDB storage engine is not installed
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES;
SPACE PATH
-Warnings:
-Warning 1012 InnoDB: SELECTing from INFORMATION_SCHEMA.INNODB_SYS_DATAFILES but the InnoDB storage engine is not installed
diff --git a/storage/rocksdb/mysql-test/rocksdb/r/partition.result b/storage/rocksdb/mysql-test/rocksdb/r/partition.result
index 76085cc1d27..c016c88ab8c 100644
--- a/storage/rocksdb/mysql-test/rocksdb/r/partition.result
+++ b/storage/rocksdb/mysql-test/rocksdb/r/partition.result
@@ -3,12 +3,12 @@ DROP TABLE IF EXISTS VAR_POP;
DROP TABLE IF EXISTS TEMP0;
DROP TABLE IF EXISTS VAR_SAMP;
CREATE TABLE t1 (i INT, j INT, k INT, PRIMARY KEY (i)) ENGINE = ROCKSDB PARTITION BY KEY(i) PARTITIONS 4;
-SHOW TABLES;
-Tables_in_test
-TEMP0
-VAR_POP
-VAR_SAMP
+show tables;
+tables_in_test
t1
+temp0
+var_pop
+var_samp
SELECT * FROM t1 ORDER BY i LIMIT 10;
i j k
1 1 1
diff --git a/storage/rocksdb/mysql-test/rocksdb/suite.opt b/storage/rocksdb/mysql-test/rocksdb/suite.opt
index 0d92a9bb29d..431fc331458 100644
--- a/storage/rocksdb/mysql-test/rocksdb/suite.opt
+++ b/storage/rocksdb/mysql-test/rocksdb/suite.opt
@@ -1,2 +1,2 @@
---ignore-db-dirs=.rocksdb --plugin-load=ha_rocksdb_se
+--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/checkpoint.test b/storage/rocksdb/mysql-test/rocksdb/t/checkpoint.test
index e5de6246f60..70ab64f8194 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/checkpoint.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/checkpoint.test
@@ -1,5 +1,8 @@
--source include/have_rocksdb.inc
+# Unixisms ("exec ls" in set_checkpoint.inc etc)
+--source include/not_windows.inc
+
--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/collation.test b/storage/rocksdb/mysql-test/rocksdb/t/collation.test
index 63756aec48a..65cd6b09cc0 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/collation.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/collation.test
@@ -3,6 +3,10 @@
# following check is commented out:
# --source include/have_fullregex.inc
+# Unixisms (exec grep)
+--source include/not_windows.inc
+
+
SET @start_global_value = @@global.ROCKSDB_STRICT_COLLATION_EXCEPTIONS;
--disable_warnings
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/compact_deletes.test b/storage/rocksdb/mysql-test/rocksdb/t/compact_deletes.test
index 9cb32e8d615..121c0d610d6 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/compact_deletes.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/compact_deletes.test
@@ -1,3 +1,4 @@
+--source include/not_windows.inc
--source include/have_rocksdb.inc
--disable_warnings
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/concurrent_alter.test b/storage/rocksdb/mysql-test/rocksdb/t/concurrent_alter.test
index 2a2896691b7..9ee58aa5217 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/concurrent_alter.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/concurrent_alter.test
@@ -1,5 +1,8 @@
--source include/have_rocksdb.inc
+# Bash
+--source include/not_windows.inc
+
#
# Generate concurrent requests to alter a table using mysqlslap
#
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test b/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test
index 32d8133fab1..f06b04ec561 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/drop_table.test
@@ -1,4 +1,6 @@
--source include/have_rocksdb.inc
+#Unixisms (possibly Linuxisms, exec truncate)
+--source include/not_windows.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test b/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test
index d259114dbda..69c3ca28f17 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/drop_table2.test
@@ -1,5 +1,8 @@
--source include/have_rocksdb.inc
+#Unixisms (--exec truncate, du, grep ,sed)
+--source include/not_windows.inc
+
--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/duplicate_table.test b/storage/rocksdb/mysql-test/rocksdb/t/duplicate_table.test
index 781163f34fb..9ac89a128c9 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/duplicate_table.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/duplicate_table.test
@@ -7,10 +7,10 @@ INSERT INTO t values (1), (2), (3);
--error ER_TABLE_EXISTS_ERROR
CREATE TABLE t(id int primary key) engine=rocksdb;
FLUSH TABLES;
---exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm.tmp
---error ER_UNKNOWN_ERROR
+move_file $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm.tmp;
+--error ER_UNKNOWN_ERROR
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
+move_file $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm.tmp $MYSQLTEST_VARDIR/mysqld.1/data/test/t.frm;
FLUSH TABLES;
SELECT * FROM t;
DROP TABLE t;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test b/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test
index b50cf08b227..4ff48e13089 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/innodb_i_s_tables_disabled.test
@@ -3,8 +3,14 @@
# Make sure that the InnoDb information schema tables are disabled when InnoDB
# is turned off and attempting to access them doesn't crash.
+# Disable warnings, as the table names in warnings appear in lower or uppercase
+# depending on platform
+
+--disable_warnings
+
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
#Not in MariaDB: SELECT * FROM INFORMATION_SCHEMA.INNODB_FILE_STATUS;
+
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP;
@@ -33,3 +39,5 @@ SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DATAFILES;
#Not in MariaDB: SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_DOCSTORE_FIELDS;
+
+--enable_warnings
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/partition.test b/storage/rocksdb/mysql-test/rocksdb/t/partition.test
index d5e13fea0a7..52e7d658f67 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/partition.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/partition.test
@@ -1,3 +1,4 @@
+
--source include/have_rocksdb.inc
--source include/have_partition.inc
@@ -30,7 +31,7 @@ CREATE TABLE TEMP0 (a int) ENGINE = ROCKSDB PARTITION BY HASH (a) PARTITIONS 3;
CREATE TABLE VAR_SAMP (a int) ENGINE = ROCKSDB PARTITION BY HASH (a) PARTITIONS 10;
--enable_query_log
-
+--lowercase_result
SHOW TABLES;
SELECT * FROM t1 ORDER BY i LIMIT 10;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_checksums.test b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_checksums.test
index 72eef91196d..101b2085ac4 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_checksums.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_checksums.test
@@ -1,4 +1,6 @@
--source include/have_rocksdb.inc
+# Does not run on Windows, because of unixisms (exec grep, cut, truncate file with exec echo)
+--source include/not_windows.inc
#
# Tests for row checksums feature
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_datadir.test b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_datadir.test
index 6dd4dd11748..ba10dcbe3b6 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_datadir.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_datadir.test
@@ -1,5 +1,6 @@
--source include/have_rocksdb.inc
-
+# Unixisms (exec ls | wc -l)
+--source include/not_windows.inc
let $ddir = $MYSQL_TMP_DIR/.rocksdb_datadir.test.install.db;
let $rdb_ddir = $MYSQL_TMP_DIR/.rocksdb_datadir.test;
let $sql_file = $MYSQL_TMP_DIR/rocksdb_datadir.sql;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_parts.test b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_parts.test
index 53ca05c7fdc..59472e565ab 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_parts.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/rocksdb_parts.test
@@ -99,6 +99,7 @@ drop table t1, t2;
--echo #
CREATE TABLE t1 (c1 INT NOT NULL, c2 CHAR(5)) PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t1 VALUES(1,'a');
+--replace_result \\ /
--error ER_ERROR_ON_RENAME
RENAME TABLE t1 TO db3.t3;
SELECT * FROM t1;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/rqg.inc b/storage/rocksdb/mysql-test/rocksdb/t/rqg.inc
index 9a6bf73d6a0..40154d9eaa7 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/rqg.inc
+++ b/storage/rocksdb/mysql-test/rocksdb/t/rqg.inc
@@ -20,10 +20,11 @@ let TESTDB = $TESTDB;
--perl
+$ENV{'RQG_HOME'}=$ENV{'RQG_BASE'};
foreach $grammar_file (split(/ /, $ENV{'GRAMMAR_FILES'})) {
# Errors from the gentest.pl file will be captured in the results file
- my $cmd = "RQG_HOME=$ENV{'RQG_BASE'} perl $ENV{'RQG_BASE'}/gentest.pl " .
+ my $cmd = "perl $ENV{'RQG_BASE'}/gentest.pl " .
"--dsn=dbi:mysql:host=:port=:user=root:database=$ENV{'TESTDB'}" .
":mysql_socket=$ENV{'MYSQL_SOCKET'} " .
"--gendata=$ENV{'RQG_BASE'}/conf/$ENV{'TESTDIR'}/$ENV{'DATA_FILE'} " .
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/slow_query_log.test b/storage/rocksdb/mysql-test/rocksdb/t/slow_query_log.test
index 9f36a7fb958..9f1694ab8bd 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/slow_query_log.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/slow_query_log.test
@@ -1,4 +1,7 @@
--source include/have_rocksdb.inc
+#Unixism (exec awk)
+-- source include/not_windows.inc
+
SET @cur_long_query_time = @@long_query_time;
# Set the long query time to something big so that nothing unexpected gets into it
SET @@long_query_time = 600;
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/statistics.test b/storage/rocksdb/mysql-test/rocksdb/t/statistics.test
index 3971fd18ecd..70fc2f72b7e 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/statistics.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/statistics.test
@@ -60,7 +60,7 @@ SELECT table_name, data_length>0, index_length>0 FROM information_schema.tables
--source include/restart_mysqld.inc
# give the server a chance to load in statistics
---exec sleep 5
+--sleep 5
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
SELECT table_name, data_length>0, index_length>0 FROM information_schema.tables WHERE table_schema = DATABASE();
diff --git a/storage/rocksdb/mysql-test/rocksdb/t/unique_sec.test b/storage/rocksdb/mysql-test/rocksdb/t/unique_sec.test
index 4483f48b4ca..afae67b48ba 100644
--- a/storage/rocksdb/mysql-test/rocksdb/t/unique_sec.test
+++ b/storage/rocksdb/mysql-test/rocksdb/t/unique_sec.test
@@ -1,5 +1,7 @@
--source include/have_rocksdb.inc
--source include/have_partition.inc
+# Unixism, exec sed
+--source include/not_windows.inc
let ddl= $MYSQL_TMP_DIR/unique_sec.sql;
--exec sed s/##CF##//g ../storage/rocksdb/mysql-test/rocksdb/t/unique_sec.inc > $ddl
diff --git a/storage/rocksdb/properties_collector.cc b/storage/rocksdb/properties_collector.cc
index 0ddff023f79..10d667181ef 100644
--- a/storage/rocksdb/properties_collector.cc
+++ b/storage/rocksdb/properties_collector.cc
@@ -15,7 +15,11 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include <my_config.h>
-
+#ifdef _WIN32
+#define _CRT_RAND_S
+#include <stdlib.h>
+#define rand_r rand_s
+#endif
/* This C++ file's header file */
#include "./properties_collector.h"
@@ -130,10 +134,9 @@ void Rdb_tbl_prop_coll::AdjustDeletedRows(rocksdb::EntryType type)
Rdb_index_stats* Rdb_tbl_prop_coll::AccessStats(
const rocksdb::Slice& key)
{
- GL_INDEX_ID gl_index_id = {
- .cf_id = m_cf_id,
- .index_id = rdb_netbuf_to_uint32(reinterpret_cast<const uchar*>(key.data()))
- };
+ GL_INDEX_ID gl_index_id;
+ gl_index_id.cf_id = m_cf_id;
+ gl_index_id.index_id = rdb_netbuf_to_uint32(reinterpret_cast<const uchar*>(key.data()));
if (m_last_stats == nullptr || m_last_stats->m_gl_index_id != gl_index_id)
{
diff --git a/storage/rocksdb/rdb_buff.h b/storage/rocksdb/rdb_buff.h
index deb718e88c9..17bbc1c6015 100644
--- a/storage/rocksdb/rdb_buff.h
+++ b/storage/rocksdb/rdb_buff.h
@@ -20,6 +20,16 @@
#include <string>
#include <vector>
+#ifdef _WIN32
+#include <stdlib.h>
+#define htobe64 _byteswap_uint64
+#define be64toh _byteswap_uint64
+#define htobe32 _byteswap_ulong
+#define be32toh _byteswap_ulong
+#define htobe16 _byteswap_ushort
+#define be16toh _byteswap_ushort
+#endif
+
namespace myrocks {
/*
diff --git a/storage/rocksdb/rdb_datadic.cc b/storage/rocksdb/rdb_datadic.cc
index 9d917b8dd62..d5af9d83754 100644
--- a/storage/rocksdb/rdb_datadic.cc
+++ b/storage/rocksdb/rdb_datadic.cc
@@ -1523,7 +1523,7 @@ static void rdb_pack_with_varchar_encoding(
// pad with zeros if necessary;
for (size_t idx= 0; idx < padding_bytes; idx++)
*(ptr++)= 0;
- *(ptr++) = 255 - padding_bytes;
+ *(ptr++) = 255 - (uchar)padding_bytes;
xfrm_len -= copy_len;
encoded_size += RDB_ESCAPE_LENGTH;
@@ -1814,7 +1814,7 @@ static int rdb_unpack_binary_or_utf8_varchar(
/* Save the length */
if (field_var->length_bytes == 1)
{
- d0[0]= len;
+ d0[0]= (uchar)len;
}
else
{
@@ -1944,7 +1944,7 @@ static int rdb_unpack_binary_or_utf8_varchar_space_pad(
/* Save the length */
if (field_var->length_bytes == 1)
{
- d0[0]= len;
+ d0[0]= (uchar)len;
}
else
{
@@ -2257,7 +2257,7 @@ rdb_unpack_simple_varchar_space_pad(Rdb_field_packing* const fpi,
/* Save the length */
if (field_var->length_bytes == 1)
{
- d0[0]= len;
+ d0[0]= (uchar)len;
}
else
{
@@ -3796,7 +3796,7 @@ rocksdb::Slice Rdb_binlog_manager::pack_value(uchar* const buf,
// store binlog file name length
DBUG_ASSERT(strlen(binlog_name) <= FN_REFLEN);
- const uint16_t binlog_name_len = strlen(binlog_name);
+ const uint16_t binlog_name_len = (uint16_t)strlen(binlog_name);
rdb_netbuf_store_uint16(buf+pack_len, binlog_name_len);
pack_len += sizeof(uint16);
@@ -3810,7 +3810,7 @@ rocksdb::Slice Rdb_binlog_manager::pack_value(uchar* const buf,
// store binlog gtid length.
// If gtid was not set, store 0 instead
- const uint16_t binlog_gtid_len = binlog_gtid? strlen(binlog_gtid) : 0;
+ const uint16_t binlog_gtid_len = binlog_gtid? (uint16_t)strlen(binlog_gtid) : 0;
rdb_netbuf_store_uint16(buf+pack_len, binlog_gtid_len);
pack_len += sizeof(uint16);
diff --git a/storage/rocksdb/rdb_datadic.h b/storage/rocksdb/rdb_datadic.h
index 91cb9b8d563..35861bb2088 100644
--- a/storage/rocksdb/rdb_datadic.h
+++ b/storage/rocksdb/rdb_datadic.h
@@ -24,9 +24,12 @@
#include <unordered_set>
#include <utility>
#include <vector>
+#include <array>
/* C standard header files */
+#ifndef _WIN32
#include <arpa/inet.h>
+#endif
/* MyRocks header files */
#include "./ha_rocksdb.h"
diff --git a/storage/rocksdb/rdb_i_s.cc b/storage/rocksdb/rdb_i_s.cc
index e9a3577b7e8..ab917a62cf6 100644
--- a/storage/rocksdb/rdb_i_s.cc
+++ b/storage/rocksdb/rdb_i_s.cc
@@ -797,7 +797,7 @@ static int rdb_i_s_global_info_fill_table(
char gtid_buf[GTID_BUF_LEN]= {0};
if (blm->read(file_buf, &pos, gtid_buf)) {
- snprintf(pos_buf, INT_BUF_LEN, "%lu", (uint64_t) pos);
+ snprintf(pos_buf, INT_BUF_LEN, "%llu", (ulonglong) pos);
ret |= rdb_global_info_fill_row(thd, tables, "BINLOG", "FILE", file_buf);
ret |= rdb_global_info_fill_row(thd, tables, "BINLOG", "POS", pos_buf);
ret |= rdb_global_info_fill_row(thd, tables, "BINLOG", "GTID", gtid_buf);
@@ -1534,7 +1534,7 @@ struct st_maria_plugin rdb_i_s_index_file_map=
0, /* flags */
};
-struct st_mysql_plugin rdb_i_s_lock_info=
+struct st_maria_plugin rdb_i_s_lock_info=
{
MYSQL_INFORMATION_SCHEMA_PLUGIN,
&rdb_i_s_info,
@@ -1551,7 +1551,7 @@ struct st_mysql_plugin rdb_i_s_lock_info=
0, /* flags */
};
-struct st_mysql_plugin rdb_i_s_trx_info=
+struct st_maria_plugin rdb_i_s_trx_info=
{
MYSQL_INFORMATION_SCHEMA_PLUGIN,
&rdb_i_s_info,
diff --git a/storage/rocksdb/rdb_mariadb_server_port.cc b/storage/rocksdb/rdb_mariadb_server_port.cc
index 59315c199cd..bd2c730d33d 100644
--- a/storage/rocksdb/rdb_mariadb_server_port.cc
+++ b/storage/rocksdb/rdb_mariadb_server_port.cc
@@ -64,7 +64,7 @@ bool Regex_list_handler::set_patterns(const std::string& pattern_str)
delete m_pattern;
m_pattern= pattern;
}
- catch (const std::regex_error& e)
+ catch (const std::regex_error&)
{
// This pattern is invalid.
pattern_valid= false;
diff --git a/storage/rocksdb/rdb_sst_info.h b/storage/rocksdb/rdb_sst_info.h
index 933357c8f08..422cd420cfa 100644
--- a/storage/rocksdb/rdb_sst_info.h
+++ b/storage/rocksdb/rdb_sst_info.h
@@ -68,7 +68,7 @@ class Rdb_sst_info {
const rocksdb::DBOptions& m_db_options;
uint64_t m_curr_size;
uint64_t m_max_size;
- uint m_sst_count;
+ uint32_t m_sst_count;
std::string m_error_msg;
std::string m_prefix;
static std::string m_suffix;
diff --git a/storage/rocksdb/rdb_threads.h b/storage/rocksdb/rdb_threads.h
index 01be32f8a6a..b7a1c7cb9b0 100644
--- a/storage/rocksdb/rdb_threads.h
+++ b/storage/rocksdb/rdb_threads.h
@@ -18,6 +18,17 @@
/* MySQL includes */
#include "./my_global.h"
+#ifdef _WIN32
+#include <my_pthread.h>
+/*
+ Rocksdb implements their own pthread_key functions
+ undefine some my_pthread.h macros
+*/
+#undef pthread_key_create
+#undef pthread_key_delete
+#undef pthread_setspecific
+#undef pthread_getspecific
+#endif
#include <mysql/psi/mysql_table.h>
#ifdef MARIAROCKS_NOT_YET
#include <mysql/thread_pool_priv.h>
@@ -64,7 +75,22 @@ class Rdb_thread
int join()
{
+#ifndef _WIN32
return pthread_join(m_handle, nullptr);
+#else
+ /*
+ mysys on Windows creates "detached" threads in pthread_create().
+
+ m_handle here is the thread id I(it is not reused by the OS
+ thus it is safe to state there can't be other thread with
+ the same id at this point).
+
+ If thread is already finished before pthread_join(),
+ we get EINVAL, and it is safe to ignore and handle this as success.
+ */
+ (void)pthread_join(m_handle, nullptr);
+ return 0;
+#endif
}
void uninit();