diff options
author | unknown <patg@radha.local> | 2005-07-19 03:04:51 +0200 |
---|---|---|
committer | unknown <patg@radha.local> | 2005-07-19 03:04:51 +0200 |
commit | f9e4c6e76e9d51b659feacb7bf0fed7a8d190952 (patch) | |
tree | ffd05d5ba2c5502792dfb8e2eb98484c1d304f73 /sql/ha_federated.cc | |
parent | 0d0aa7a45a4f1ae9c8a1d17559345a4d25aa3c97 (diff) | |
download | mariadb-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.cc | 58 |
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 |