From f9e4c6e76e9d51b659feacb7bf0fed7a8d190952 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 19 Jul 2005 03:04:51 +0200 Subject: 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. --- sql/ha_federated.cc | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'sql/ha_federated.cc') 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 -- cgit v1.2.1