summaryrefslogtreecommitdiffstats
path: root/storage/rocksdb/rdb_mariadb_server_port.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--storage/rocksdb/rdb_mariadb_server_port.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/storage/rocksdb/rdb_mariadb_server_port.h b/storage/rocksdb/rdb_mariadb_server_port.h
new file mode 100644
index 00000000..fe963446
--- /dev/null
+++ b/storage/rocksdb/rdb_mariadb_server_port.h
@@ -0,0 +1,76 @@
+/*
+ A temporary header to resolve WebScaleSQL vs MariaDB differences
+ when porting MyRocks to MariaDB.
+*/
+#ifndef RDB_MARIADB_SERVER_PORT_H
+#define RDB_MARIADB_SERVER_PORT_H
+
+#include "my_global.h" /* ulonglong */
+#include "atomic_stat.h"
+#include "my_pthread.h"
+#include <mysql/psi/mysql_table.h>
+#include <mysql/psi/mysql_thread.h>
+
+/*
+ Code that is on SQL layer in facebook/mysql-5.6,
+ but is part of the storage engine in MariaRocks
+*/
+#include <regex>
+
+class Regex_list_handler
+{
+ private:
+#if defined(HAVE_PSI_INTERFACE)
+ const PSI_rwlock_key& m_key;
+#endif
+
+ char m_delimiter;
+ std::string m_bad_pattern_str;
+ const std::regex* m_pattern;
+
+ mutable mysql_rwlock_t m_rwlock;
+
+ Regex_list_handler(const Regex_list_handler& other)= delete;
+ Regex_list_handler& operator=(const Regex_list_handler& other)= delete;
+
+ public:
+#if defined(HAVE_PSI_INTERFACE)
+ Regex_list_handler(const PSI_rwlock_key& key,
+ char delimiter= ',') :
+ m_key(key),
+#else
+ Regex_list_handler(char delimiter= ',') :
+#endif
+ m_delimiter(delimiter),
+ m_bad_pattern_str(""),
+ m_pattern(nullptr)
+ {
+ mysql_rwlock_init(key, &m_rwlock);
+ }
+
+ ~Regex_list_handler()
+ {
+ mysql_rwlock_destroy(&m_rwlock);
+ delete m_pattern;
+ }
+
+ // Set the list of patterns
+ bool set_patterns(const std::string& patterns);
+
+ // See if a string matches at least one pattern
+ bool matches(const std::string& str) const;
+
+ // See the list of bad patterns
+ const std::string& bad_pattern() const
+ {
+ return m_bad_pattern_str;
+ }
+};
+
+void warn_about_bad_patterns(const Regex_list_handler* regex_list_handler,
+ const char *name);
+
+void print_keydup_error(TABLE *table, KEY *key, myf errflag,
+ const THD *thd, const char *org_table_name=NULL);
+
+#endif