summaryrefslogtreecommitdiffstats
path: root/storage/spider/spd_db_include.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/spider/spd_db_include.cc')
-rw-r--r--storage/spider/spd_db_include.cc236
1 files changed, 236 insertions, 0 deletions
diff --git a/storage/spider/spd_db_include.cc b/storage/spider/spd_db_include.cc
new file mode 100644
index 00000000..a4d7d4b4
--- /dev/null
+++ b/storage/spider/spd_db_include.cc
@@ -0,0 +1,236 @@
+/* Copyright (C) 2018-2020 Kentoku Shiba
+ Copyright (C) 2018-2020 MariaDB corp
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */
+
+#define MYSQL_SERVER 1
+#include <my_global.h>
+#include "mysql_version.h"
+#include "spd_environ.h"
+#include "sql_priv.h"
+#include "probes_mysql.h"
+#include "sql_class.h"
+#include "sql_common.h"
+#include <mysql.h>
+#include <errmsg.h>
+#include "spd_err.h"
+#include "spd_db_include.h"
+#include "spd_include.h"
+#include "spd_conn.h"
+
+extern SPIDER_DBTON spider_dbton[SPIDER_DBTON_SIZE];
+
+spider_db_result::spider_db_result(
+ SPIDER_DB_CONN *in_db_conn
+) : db_conn(in_db_conn), dbton_id(in_db_conn->dbton_id)
+{
+ DBUG_ENTER("spider_db_result::spider_db_result");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_VOID_RETURN;
+}
+
+int spider_db_result::fetch_table_checksum(
+ ha_spider *spider
+) {
+ DBUG_ENTER("spider_db_result::fetch_table_checksum");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(0);
+}
+
+uint spider_db_result::limit_mode()
+{
+ DBUG_ENTER("spider_db_result::limit_mode");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(spider_dbton[dbton_id].db_util->limit_mode());
+}
+
+spider_db_conn::spider_db_conn(
+ SPIDER_CONN *in_conn
+) : conn(in_conn), dbton_id(in_conn->dbton_id)
+{
+ DBUG_ENTER("spider_db_conn::spider_db_conn");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_VOID_RETURN;
+}
+
+bool spider_db_conn::set_loop_check_in_bulk_sql()
+{
+ DBUG_ENTER("spider_db_conn::set_loop_check_in_bulk_sql");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+int spider_db_conn::set_loop_check(
+ int *need_mon
+) {
+ DBUG_ENTER("spider_db_conn::set_loop_check");
+ DBUG_PRINT("info",("spider this=%p", this));
+ /* nothing to do */
+ DBUG_RETURN(0);
+}
+
+int spider_db_conn::fin_loop_check()
+{
+ st_spider_conn_loop_check *lcptr;
+ DBUG_ENTER("spider_db_conn::fin_loop_check");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (conn->loop_check_queue.records)
+ {
+ uint l = 0;
+ while ((lcptr = (SPIDER_CONN_LOOP_CHECK *) my_hash_element(
+ &conn->loop_check_queue, l)))
+ {
+ lcptr->flag = 0;
+ ++l;
+ }
+ my_hash_reset(&conn->loop_check_queue);
+ }
+ lcptr = conn->loop_check_ignored_first;
+ while (lcptr)
+ {
+ lcptr->flag = 0;
+ lcptr = lcptr->next;
+ }
+ conn->loop_check_ignored_first = NULL;
+ lcptr = conn->loop_check_meraged_first;
+ while (lcptr)
+ {
+ lcptr->flag = 0;
+ lcptr = lcptr->next;
+ }
+ conn->loop_check_meraged_first = NULL;
+ DBUG_RETURN(0);
+}
+
+uint spider_db_conn::limit_mode()
+{
+ DBUG_ENTER("spider_db_conn::limit_mode");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(spider_dbton[dbton_id].db_util->limit_mode());
+}
+
+int spider_db_util::append_loop_check(
+ spider_string *str,
+ SPIDER_CONN *conn
+) {
+ DBUG_ENTER("spider_db_util::append_loop_check");
+ DBUG_PRINT("info",("spider this=%p", this));
+ /* nothing to do */
+ DBUG_RETURN(0);
+}
+
+bool spider_db_util::tables_on_different_db_are_joinable()
+{
+ DBUG_ENTER("spider_db_util::tables_on_different_db_are_joinable");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+bool spider_db_util::socket_has_default_value()
+{
+ DBUG_ENTER("spider_db_util::socket_has_default_value");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+bool spider_db_util::database_has_default_value()
+{
+ DBUG_ENTER("spider_db_util::database_has_default_value");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+bool spider_db_util::default_file_has_default_value()
+{
+ DBUG_ENTER("spider_db_util::default_file_has_default_value");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+bool spider_db_util::host_has_default_value()
+{
+ DBUG_ENTER("spider_db_util::host_has_default_value");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+bool spider_db_util::port_has_default_value()
+{
+ DBUG_ENTER("spider_db_util::port_has_default_value");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+bool spider_db_util::append_charset_name_before_string()
+{
+ DBUG_ENTER("spider_db_util::append_charset_name_before_string");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+uint spider_db_util::limit_mode()
+{
+ DBUG_ENTER("spider_db_util::limit_mode");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(0);
+}
+
+bool spider_db_share::checksum_support()
+{
+ DBUG_ENTER("spider_db_share::checksum_support");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(FALSE);
+}
+
+int spider_db_handler::checksum_table(
+ int link_idx
+) {
+ DBUG_ENTER("spider_db_handler::checksum_table");
+ DBUG_PRINT("info",("spider this=%p", this));
+ DBUG_RETURN(0);
+}
+
+bool spider_db_handler::check_direct_update(
+ st_select_lex *select_lex,
+ longlong select_limit,
+ longlong offset_limit
+) {
+ DBUG_ENTER("spider_db_handler::check_direct_update");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (
+ select_limit != 9223372036854775807LL ||
+ offset_limit != 0 ||
+ select_lex->order_list.elements
+ ) {
+ DBUG_RETURN(TRUE);
+ }
+ DBUG_RETURN(FALSE);
+}
+
+bool spider_db_handler::check_direct_delete(
+ st_select_lex *select_lex,
+ longlong select_limit,
+ longlong offset_limit
+) {
+ DBUG_ENTER("spider_db_handler::check_direct_delete");
+ DBUG_PRINT("info",("spider this=%p", this));
+ if (
+ select_limit != 9223372036854775807LL ||
+ offset_limit != 0 ||
+ select_lex->order_list.elements
+ ) {
+ DBUG_RETURN(TRUE);
+ }
+ DBUG_RETURN(FALSE);
+}