summaryrefslogtreecommitdiff
path: root/sql/ha_federated.cc
diff options
context:
space:
mode:
authorunknown <patg@radha.local>2005-07-19 03:04:51 +0200
committerunknown <patg@radha.local>2005-07-19 03:04:51 +0200
commitf9e4c6e76e9d51b659feacb7bf0fed7a8d190952 (patch)
treeffd05d5ba2c5502792dfb8e2eb98484c1d304f73 /sql/ha_federated.cc
parent0d0aa7a45a4f1ae9c8a1d17559345a4d25aa3c97 (diff)
downloadmariadb-git-f9e4c6e76e9d51b659feacb7bf0fed7a8d190952.tar.gz
Eric's implentation of OPTIMIZE TABLE and REPAIR TABLE,
as well as changes to the test. mysql-test/r/federated.result: New test results mysql-test/t/federated.test: Removed explains per brian's suggestion since on his 64-bit amd, you get different information, something to be ironed out later, as well as it having nothing to do with federated. sql/ha_federated.cc: - Eric Herman's implementation of repair and optimize!!! - Eric's changes to 1EQ0 to FALSE sql/ha_federated.h: Eric's addition of LEN for each SQL string tokens.
Diffstat (limited to 'sql/ha_federated.cc')
-rw-r--r--sql/ha_federated.cc58
1 files changed, 57 insertions, 1 deletions
diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc
index c953ff1d7ed..e0e35c6b866 100644
--- a/sql/ha_federated.cc
+++ b/sql/ha_federated.cc
@@ -495,7 +495,7 @@ static int check_foreign_data_source(
query.append(escaped_table_name);
query.append(FEDERATED_BTICK);
query.append(FEDERATED_WHERE);
- query.append(FEDERATED_1EQ0);
+ query.append(FEDERATED_FALSE);
DBUG_PRINT("info", ("check_foreign_data_source query %s", query.c_ptr_quick()));
if (mysql_real_query(mysql, query.ptr(), query.length()))
@@ -1661,6 +1661,62 @@ int ha_federated::write_row(byte *buf)
}
+int ha_federated::optimize(THD* thd, HA_CHECK_OPT* check_opt)
+{
+ char query_buffer[STRING_BUFFER_USUAL_SIZE];
+ String query(query_buffer, sizeof(query_buffer), &my_charset_bin);
+
+ DBUG_ENTER("ha_federated::optimize");
+
+ query.length(0);
+
+ query.set_charset(system_charset_info);
+ query.append(FEDERATED_OPTIMIZE);
+ query.append(FEDERATED_BTICK);
+ query.append(share->table_name, share->table_name_length);
+ query.append(FEDERATED_BTICK);
+
+ if (mysql_real_query(mysql, query.ptr(), query.length()))
+ {
+ my_error(-1, MYF(0), mysql_error(mysql));
+ DBUG_RETURN(-1);
+ }
+
+ DBUG_RETURN(0);
+}
+
+
+int ha_federated::repair(THD* thd, HA_CHECK_OPT* check_opt)
+{
+ char query_buffer[STRING_BUFFER_USUAL_SIZE];
+ String query(query_buffer, sizeof(query_buffer), &my_charset_bin);
+
+ DBUG_ENTER("ha_federated::repair");
+
+ query.length(0);
+
+ query.set_charset(system_charset_info);
+ query.append(FEDERATED_REPAIR);
+ query.append(FEDERATED_BTICK);
+ query.append(share->table_name, share->table_name_length);
+ query.append(FEDERATED_BTICK);
+ if (check_opt->flags & T_QUICK)
+ query.append(FEDERATED_QUICK);
+ if (check_opt->flags & T_EXTEND)
+ query.append(FEDERATED_EXTENDED);
+ if (check_opt->sql_flags & TT_USEFRM)
+ query.append(FEDERATED_USE_FRM);
+
+ if (mysql_real_query(mysql, query.ptr(), query.length()))
+ {
+ my_error(-1, MYF(0), mysql_error(mysql));
+ DBUG_RETURN(-1);
+ }
+
+ DBUG_RETURN(0);
+}
+
+
/*
Yes, update_row() does what you expect, it updates a row. old_data will have
the previous row record in it, while new_data will have the newest data in