summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <sasha@mysql.sashanet.com>2002-02-09 13:58:53 -0700
committerunknown <sasha@mysql.sashanet.com>2002-02-09 13:58:53 -0700
commit0d1a632d8d8dc3c23f1ea849b89d483154a6f4cc (patch)
tree159883a38e8769c7736f92e4bfa2b11967adcabb /client
parent932ef26091c272dae826427fab7ace4321ffc005 (diff)
downloadmariadb-git-0d1a632d8d8dc3c23f1ea849b89d483154a6f4cc.tar.gz
updated test suite to be able to run 3.23 master and 4.0 slave
got LOAD DATA INFILE replication from 3.23 master to 4.0 slave to work for some reason query_cache now fails - will push anyway and document the failure if I can repeat it. client/mysqltest.c: added require_version mysql-test/mysql-test-run.sh: added --master-binary=,--slave-binary=,--old-master options sleep_until_file_exists -> sleep_until_file_created sql/slave.cc: fixed bug in LOAD DATA INFILE replication from 3.23 master
Diffstat (limited to 'client')
-rw-r--r--client/mysqltest.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 510fe6a3f4c..4ae74d129b9 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -192,6 +192,7 @@ Q_ENABLE_QUERY_LOG, Q_DISABLE_QUERY_LOG,
Q_ENABLE_RESULT_LOG, Q_DISABLE_RESULT_LOG,
Q_SERVER_START, Q_SERVER_STOP,Q_REQUIRE_MANAGER,
Q_WAIT_FOR_SLAVE_TO_STOP,
+Q_REQUIRE_VERSION,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
Q_COMMENT_WITH_COMMAND
@@ -228,6 +229,7 @@ const char *command_names[] = {
"enable_result_log", "disable_result_log",
"server_start", "server_stop",
"require_manager", "wait_for_slave_to_stop",
+ "require_version",
0
};
@@ -748,6 +750,42 @@ int do_server_op(struct st_query* q,const char* op)
}
#endif
+int do_require_version(struct st_query* q)
+{
+ MYSQL* mysql = &cur_con->mysql;
+ MYSQL_RES* res;
+ MYSQL_ROW row;
+ char* p=q->first_argument, *ver_arg;
+ uint ver_arg_len,ver_len;
+ LINT_INIT(res);
+
+ if (!*p)
+ die("Missing version argument in require_version\n");
+ ver_arg = p;
+ while (*p && !isspace(*p))
+ p++;
+ *p = 0;
+ ver_arg_len = p - ver_arg;
+
+ if (mysql_query(mysql, "select version()") ||
+ !(res=mysql_store_result(mysql)))
+ die("Query failed while check server version: %s",
+ mysql_error(mysql));
+ if (!(row=mysql_fetch_row(res)) || !row[0])
+ {
+ mysql_free_result(res);
+ die("Strange result from query while checking version");
+ }
+ ver_len = strlen(row[0]);
+ if (ver_len < ver_arg_len || memcmp(row[0],ver_arg,ver_arg_len))
+ {
+ mysql_free_result(res);
+ abort_not_supported_test();
+ }
+ mysql_free_result(res);
+ return 0;
+}
+
int do_source(struct st_query* q)
{
char* p=q->first_argument, *name;
@@ -2379,6 +2417,7 @@ int main(int argc, char** argv)
case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
case Q_SOURCE: do_source(q); break;
case Q_SLEEP: do_sleep(q); break;
+ case Q_REQUIRE_VERSION: do_require_version(q); break;
case Q_WAIT_FOR_SLAVE_TO_STOP: do_wait_for_slave_to_stop(q); break;
case Q_REQUIRE_MANAGER: do_require_manager(q); break;
#ifndef EMBEDDED_LIBRARY