summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorjani@a193-229-222-105.elisa-laajakaista.fi <>2005-09-19 19:33:59 +0300
committerjani@a193-229-222-105.elisa-laajakaista.fi <>2005-09-19 19:33:59 +0300
commit7c57c41a06a89f391f22291c923f6ae46a24496a (patch)
tree70f1629e9330954b19b57cb467250bf91c22cdd1 /client
parent76956fdf90ad855e44608e646f7ad4aff661c034 (diff)
parenta8bdf632d3cd52d97f2c9fac3cc87c257b080982 (diff)
downloadmariadb-git-7c57c41a06a89f391f22291c923f6ae46a24496a.tar.gz
Merge a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-4.0
into a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-4.1
Diffstat (limited to 'client')
-rw-r--r--client/mysqltest.c43
1 files changed, 32 insertions, 11 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 374f0cb1336..f5facccee3a 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -97,6 +97,10 @@
#define DEFAULT_DELIMITER ";"
#define MAX_DELIMITER 16
+#define RESULT_OK 0
+#define RESULT_CONTENT_MISMATCH 1
+#define RESULT_LENGTH_MISMATCH 2
+
enum {OPT_MANAGER_USER=256,OPT_MANAGER_HOST,OPT_MANAGER_PASSWD,
OPT_MANAGER_PORT,OPT_MANAGER_WAIT_TIMEOUT, OPT_SKIP_SAFEMALLOC,
OPT_SSL_SSL, OPT_SSL_KEY, OPT_SSL_CERT, OPT_SSL_CA, OPT_SSL_CAPATH,
@@ -650,7 +654,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
{
DBUG_PRINT("info",("Size differs: result size: %u file size: %u",
ds->length, stat_info.st_size));
- DBUG_RETURN(2);
+ DBUG_RETURN(RESULT_LENGTH_MISMATCH);
}
if (!(tmp = (char*) my_malloc(stat_info.st_size + 1, MYF(MY_WME))))
die(NullS);
@@ -667,7 +671,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
res_ptr = res_ds.str;
if ((res_len = res_ds.length) != ds->length)
{
- res = 2;
+ res= RESULT_LENGTH_MISMATCH;
goto err;
}
}
@@ -677,7 +681,8 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
res_len = stat_info.st_size;
}
- res = (memcmp(res_ptr, ds->str, res_len)) ? 1 : 0;
+ res= (memcmp(res_ptr, ds->str, res_len)) ?
+ RESULT_CONTENT_MISMATCH : RESULT_OK;
err:
if (res && eval_result)
@@ -694,21 +699,21 @@ err:
static int check_result(DYNAMIC_STRING* ds, const char *fname,
my_bool require_option)
{
- int error = 0;
- int res=dyn_string_cmp(ds, fname);
+ int error= RESULT_OK;
+ int res= dyn_string_cmp(ds, fname);
if (res && require_option)
abort_not_supported_test();
switch (res) {
- case 0:
+ case RESULT_OK:
break; /* ok */
- case 2:
+ case RESULT_LENGTH_MISMATCH:
verbose_msg("Result length mismatch");
- error = 1;
+ error= RESULT_LENGTH_MISMATCH;
break;
- case 1:
+ case RESULT_CONTENT_MISMATCH:
verbose_msg("Result content mismatch");
- error = 1;
+ error= RESULT_CONTENT_MISMATCH;
break;
default: /* impossible */
die("Unknown error code from dyn_string_cmp()");
@@ -3738,8 +3743,9 @@ int main(int argc, char **argv)
{
int error = 0;
struct st_query *q;
- my_bool require_file=0, q_send_flag=0;
+ my_bool require_file=0, q_send_flag=0, query_executed= 0;
char save_file[FN_REFLEN];
+ MY_STAT res_info;
MY_INIT(argv[0]);
{
DBUG_ENTER("main");
@@ -3932,6 +3938,7 @@ int main(int argc, char **argv)
save_file[0]=0;
}
error |= run_query(&cur_con->mysql, q, flags);
+ query_executed= 1;
q->last_argument= q->end;
break;
}
@@ -3952,6 +3959,7 @@ int main(int argc, char **argv)
is given on this connection.
*/
error |= run_query(&cur_con->mysql, q, QUERY_SEND);
+ query_executed= 1;
q->last_argument= q->end;
break;
case Q_RESULT:
@@ -3992,6 +4000,7 @@ int main(int argc, char **argv)
break;
case Q_EXEC:
do_exec(q);
+ query_executed= 1;
break;
case Q_START_TIMER:
/* Overwrite possible earlier start of timer */
@@ -4048,6 +4057,18 @@ int main(int argc, char **argv)
parser.current_line += current_line_inc;
}
+ if (!query_executed && result_file && my_stat(result_file, &res_info, 0))
+ {
+ /*
+ my_stat() successful on result file. Check if we have not run a
+ single query, but we do have a result file that contains data.
+ Note that we don't care, if my_stat() fails. For example for
+ non-existing or non-readable file we assume it's fine to have
+ no query output from the test file, e.g. regarded as no error.
+ */
+ if (res_info.st_size)
+ error|= (RESULT_CONTENT_MISMATCH | RESULT_LENGTH_MISMATCH);
+ }
if (result_file && ds_res.length && !error)
{
if (!record)