[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mysql-internals
Subject:    bk commit into 5.1 tree (msvensson:1.1901)
From:       msvensson () mysql ! com
Date:       2005-09-30 14:48:57
Message-ID: 20050930144857.413C225DF93 () blaudden ! homeip ! net
[Download RAW message or body]

Below is the list of changes that have just been committed into a local
5.1 repository of msvensson. When msvensson does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1901 05/09/30 16:48:50 msvensson@neptunus.(none) +3 -0
  Merge neptunus.(none):/home/msvensson/mysql/bug13231/my50-bug13231
  into  neptunus.(none):/home/msvensson/mysql/bug13231/my51-bug13231

  sql/sql_cache.cc
    1.84 05/09/30 16:48:44 msvensson@neptunus.(none) +0 -0
    Auto merged

  sql/mysql_priv.h
    1.335 05/09/30 16:48:44 msvensson@neptunus.(none) +0 -0
    Auto merged

  client/mysqltest.c
    1.160 05/09/30 16:48:44 msvensson@neptunus.(none) +0 -0
    Auto merged

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	msvensson
# Host:	neptunus.(none)
# Root:	/home/msvensson/mysql/bug13231/my51-bug13231/RESYNC

--- 1.334/sql/mysql_priv.h	2005-09-15 07:31:40 +02:00
+++ 1.335/sql/mysql_priv.h	2005-09-30 16:48:44 +02:00
@@ -544,6 +544,7 @@
   unsigned int client_long_flag:1;
   unsigned int client_protocol_41:1;
   unsigned int more_results_exists:1;
+  unsigned int pkt_nr;
   uint character_set_client_num;
   uint character_set_results_num;
   uint collation_connection_num;

--- 1.83/sql/sql_cache.cc	2005-09-07 09:39:27 +02:00
+++ 1.84/sql/sql_cache.cc	2005-09-30 16:48:44 +02:00
@@ -801,6 +801,7 @@
                                    CLIENT_PROTOCOL_41);
     flags.more_results_exists= test(thd->server_status &
                                     SERVER_MORE_RESULTS_EXISTS);
+    flags.pkt_nr= net->pkt_nr;
     flags.character_set_client_num=
       thd->variables.character_set_client->number;
     flags.character_set_results_num=
@@ -814,12 +815,13 @@
     flags.sql_mode= thd->variables.sql_mode;
     flags.max_sort_length= thd->variables.max_sort_length;
     flags.group_concat_max_len= thd->variables.group_concat_max_len;
-    DBUG_PRINT("qcache", ("long %d, 4.1: %d, more results %d, \
+    DBUG_PRINT("qcache", ("long %d, 4.1: %d, more results %d, pkt_nr: %d, \
 CS client: %u, CS result: %u, CS conn: %u, limit: %lu, TZ: 0x%lx, \
 sql mode: 0x%lx, sort len: %lu, conncat len: %lu",
                           (int)flags.client_long_flag,
                           (int)flags.client_protocol_41,
                           (int)flags.more_results_exists,
+                          flags.pkt_nr,
                           flags.character_set_client_num,
                           flags.character_set_results_num,
                           flags.collation_connection_num,
@@ -1019,6 +1021,7 @@
                                  CLIENT_PROTOCOL_41);
   flags.more_results_exists= test(thd->server_status &
                                   SERVER_MORE_RESULTS_EXISTS);
+  flags.pkt_nr= thd->net.pkt_nr;
   flags.character_set_client_num= thd->variables.character_set_client->number;
   flags.character_set_results_num=
     (thd->variables.character_set_results ?
@@ -1030,12 +1033,13 @@
   flags.sql_mode= thd->variables.sql_mode;
   flags.max_sort_length= thd->variables.max_sort_length;
   flags.group_concat_max_len= thd->variables.group_concat_max_len;
-  DBUG_PRINT("qcache", ("long %d, 4.1: %d, more results %d, \
+  DBUG_PRINT("qcache", ("long %d, 4.1: %d, more results %d, pkt_nr: %d, \
 CS client: %u, CS result: %u, CS conn: %u, limit: %lu, TZ: 0x%lx, \
 sql mode: 0x%lx, sort len: %lu, conncat len: %lu",
                           (int)flags.client_long_flag,
                           (int)flags.client_protocol_41,
                           (int)flags.more_results_exists,
+                          flags.pkt_nr,
                           flags.character_set_client_num,
                           flags.character_set_results_num,
                           flags.collation_connection_num,

--- 1.159/client/mysqltest.c	2005-09-13 05:30:18 +02:00
+++ 1.160/client/mysqltest.c	2005-09-30 16:48:44 +02:00
@@ -3056,12 +3056,6 @@
       goto end;
     }
 
-    if (handle_no_error(q))
-    {
-      error= 1;
-      goto end;
-    }
-
     if (!disable_result_log)
     {
       ulong affected_rows;    /* Ok to be undef if 'disable_info' is set */
@@ -3106,12 +3100,9 @@
 	MYSQL_RES *warn_res=0;
 	uint count= mysql_warning_count(mysql);
 	if (!mysql_real_query(mysql, "SHOW WARNINGS", 13))
-	{
 	  warn_res= mysql_store_result(mysql);
-	}
 	if (!warn_res)
-	  verbose_msg("Warning count is %u but didn't get any warnings",
-		      count);
+	  die("Warning count is %u but didn't get any warnings", count);
 	else
 	{
 	  dynstr_append_mem(ds, "Warnings:\n", 10);
@@ -3142,15 +3133,28 @@
     }
     else if (q->record_file[0])
     {
-      error = check_result(ds, q->record_file, q->require_file);
+      error= check_result(ds, q->record_file, q->require_file);
     }
     if (res)
       mysql_free_result(res);
     last_result= 0;
     counter++;
   } while (!(err= mysql_next_result(mysql)));
-  if (err >= 1)
-    mysql_error(mysql);
+  if (err > 0)
+  {
+      /* We got an error from mysql_next_result, maybe expected */
+    if (handle_error(query, q, mysql_errno(mysql), mysql_error(mysql),
+                     mysql_sqlstate(mysql), ds))
+      error= 1;
+    goto end;
+  }
+
+  // If we come here the query is both executed and read successfully
+  if (handle_no_error(q))
+  {
+    error= 1;
+    goto end;
+  }
 
 end:
   free_replace();
@@ -3203,8 +3207,7 @@
     abort_not_supported_test();
  
   if (q->abort_on_error)
-    die("query '%s' failed: %d: %s", query,
-        err_errno, err_error);
+    die("query '%s' failed: %d: %s", query, err_errno, err_error);
 
   for (i= 0 ; (uint) i < q->expected_errors ; i++)
   {
@@ -3243,13 +3246,11 @@
   if (i)
   {
     if (q->expected_errno[0].type == ERR_ERRNO)
-      verbose_msg("query '%s' failed with wrong errno %d instead of %d...",
-                  q->query, err_errno,
-                  q->expected_errno[0].code.errnum);
+      die("query '%s' failed with wrong errno %d instead of %d...",
+          q->query, err_errno, q->expected_errno[0].code.errnum);
     else
-      verbose_msg("query '%s' failed with wrong sqlstate %s instead of %s...",
-                  q->query, err_sqlstate,
-                  q->expected_errno[0].code.sqlstate);
+      die("query '%s' failed with wrong sqlstate %s instead of %s...",
+          q->query, err_sqlstate, q->expected_errno[0].code.sqlstate);
     DBUG_RETURN(1);
   }
 
@@ -3283,16 +3284,16 @@
       q->expected_errno[0].code.errnum != 0)
   {
     /* Error code we wanted was != 0, i.e. not an expected success */
-    verbose_msg("query '%s' succeeded - should have failed with errno %d...",
-                q->query, q->expected_errno[0].code.errnum);
+    die("query '%s' succeeded - should have failed with errno %d...",
+        q->query, q->expected_errno[0].code.errnum);
     DBUG_RETURN(1);
   }
   else if (q->expected_errno[0].type == ERR_SQLSTATE &&
            strcmp(q->expected_errno[0].code.sqlstate,"00000") != 0)
   {
     /* SQLSTATE we wanted was != "00000", i.e. not an expected success */
-    verbose_msg("query '%s' succeeded - should have failed with sqlstate %s...",
-                q->query, q->expected_errno[0].code.sqlstate);
+    die("query '%s' succeeded - should have failed with sqlstate %s...",
+        q->query, q->expected_errno[0].code.sqlstate);
     DBUG_RETURN(1);
   }
 
@@ -3312,7 +3313,7 @@
 {
   int error= 0;             /* Function return code if "goto end;" */
   int err;                  /* Temporary storage of return code from calls */
-  int query_len, got_error_on_execute;
+  int query_len;
   ulonglong num_rows;
   char *query;
   MYSQL_RES *res= NULL;     /* Note that here 'res' is meta data result set */
@@ -3328,7 +3329,7 @@
   */
   if (!(stmt= mysql_stmt_init(mysql)))
     die("unable init stmt structure");
-  
+
   if (q->type != Q_EVAL)
   {
     query= q->query;
@@ -3369,30 +3370,21 @@
 
   if (err != 0)
   {
-    if (q->abort_on_error)
-    {
-      die("query '%s' failed: %d: %s", query,
-          mysql_stmt_errno(stmt), mysql_stmt_error(stmt));
-    }
-    else
-    {
-      /*
-        Preparing is part of normal execution and some errors may be expected
-      */
-      error= handle_error(query, q, mysql_stmt_errno(stmt),
-                          mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt),
-                          ds);
-      goto end;
-    }
+    /*
+      Preparing is part of normal execution and some errors may be expected
+    */
+    if (handle_error(query, q,  mysql_stmt_errno(stmt),
+                     mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds))
+      error= 1;
+    goto end;
   }
 
   /* We may have got warnings already, collect them if any */
-  /* FIXME we only want this if the statement succeeds I think */ 
   if (!disable_ps_warnings)
     run_query_stmt_handle_warnings(mysql, ds);
 
   /*
-    No need to call mysql_stmt_bind_param() because we have no 
+    No need to call mysql_stmt_bind_param() because we have no
     parameter markers.
 
     To optimize performance we use a global 'stmt' that is initiated
@@ -3401,24 +3393,13 @@
     prepared statement.
   */
 
-  if ((got_error_on_execute= mysql_stmt_execute(stmt)) != 0) /* 0 == Success */
+  if (mysql_stmt_execute(stmt) != 0) /* 0 == Success */
   {
-    if (q->abort_on_error)
-    {
-      /* We got an error, unexpected */
-      die("unable to execute statement '%s': "
-          "%s (mysql_stmt_errno=%d returned=%d)",
-          query, mysql_stmt_error(stmt),
-          mysql_stmt_errno(stmt), got_error_on_execute);
-    }
-    else
-    {
-      /* We got an error, maybe expected */
-      error= handle_error(query, q, mysql_stmt_errno(stmt),
-                          mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt),
-                          ds);
-      goto end;
-    }
+    /* We got an error, maybe expected */
+    if (handle_error(query, q, mysql_stmt_errno(stmt),
+                     mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds))
+      error= 1;
+    goto end;
   }
 
   /*
@@ -3428,11 +3409,10 @@
   */
   {
     my_bool one= 1;
-    if (mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH,
-                            (void*) &one) != 0)
+    if ((err= mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH,
+                                  (void*) &one)) != 0)
       die("unable to set stmt attribute "
-          "'STMT_ATTR_UPDATE_MAX_LENGTH': %s (returned=%d)",
-          query, err);
+          "'STMT_ATTR_UPDATE_MAX_LENGTH' err: %d", err);
   }
 
   /*
@@ -3441,22 +3421,11 @@
   */
   if ((err= mysql_stmt_store_result(stmt)) != 0)
   {
-    if (q->abort_on_error)
-    {
-      /* We got an error, unexpected */
-      die("unable to execute statement '%s': "
-          "%s (mysql_stmt_errno=%d returned=%d)",
-          query, mysql_stmt_error(stmt),
-          mysql_stmt_errno(stmt), got_error_on_execute);
-    }
-    else
-    {
-      /* We got an error, maybe expected */
-      error= handle_error(query, q, mysql_stmt_errno(stmt),
-                          mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt),
-                          ds);
-      goto end;
-    }
+    /* We got an error, maybe expected */
+    if(handle_error(query, q, mysql_stmt_errno(stmt),
+                    mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds))
+      error = 1;
+    goto end;
   }
 
   /* If we got here the statement was both executed and read succeesfully */
@@ -3480,8 +3449,6 @@
     MYSQL_FIELD *field= mysql_fetch_fields(res);
     uint num_fields= mysql_num_fields(res);
 
-    /* FIXME check error from the above? */
-
     if (display_metadata)
       run_query_display_metadata(field, num_fields, ds);
 
@@ -3634,9 +3601,6 @@
     mysql_free_result(res);     /* Free normal result set with meta data */
   last_result= 0;               /* FIXME have no idea what this is about... */
 
-  if (err >= 1)
-    mysql_error(mysql);         /* FIXME strange, has no effect... */
-
 end:
   free_replace();
   last_result=0;
@@ -3727,8 +3691,8 @@
     {
       MYSQL_RES *warn_res= mysql_store_result(mysql);
       if (!warn_res)
-        verbose_msg("Warning count is %u but didn't get any warnings",
-                    count);
+        die("Warning count is %u but didn't get any warnings",
+            count);
       else
       {
         dynstr_append_mem(ds, "Warnings:\n", 10);

-- 
MySQL Internals Mailing List
For list archives: http://lists.mysql.com/internals
To unsubscribe:    http://lists.mysql.com/internals?unsub=mysql-internals@progressive-comp.com

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic