List:Commits« Previous MessageNext Message »
From:Alexander Nozdrin Date:November 21 2008 5:30pm
Subject:bzr push into mysql-6.0-runtime branch (alik:2759 to 2761)
View as plain text  
 2761 Alexander Nozdrin	2008-11-21
      Address various notes from Rafal's review.
modified:
  mysql-test/suite/backup/r/backup_views.result
  mysql-test/suite/backup/t/backup_views.test
  sql/log.cc
  sql/si_objects.cc

 2760 Alexander Nozdrin	2008-11-20
      Add comments.
modified:
  sql/si_objects.cc

 2759 Alexander Nozdrin	2008-11-20
      Eliminate copy & paste in serialization code.
modified:
  sql/si_objects.cc

=== modified file 'mysql-test/suite/backup/r/backup_views.result'
--- a/mysql-test/suite/backup/r/backup_views.result	2008-11-19 16:32:01 +0000
+++ b/mysql-test/suite/backup/r/backup_views.result	2008-11-21 16:29:06 +0000
@@ -280,7 +280,6 @@ RESTORE FROM 'bup_objectview1.bak';
 backup_id
 #
 DROP DATABASE bup_db1;
-DROP DATABASE bup_db2;
 RESTORE FROM 'bup_objectview2.bak';
 backup_id
 #

=== modified file 'mysql-test/suite/backup/t/backup_views.test'
--- a/mysql-test/suite/backup/t/backup_views.test	2008-11-19 16:32:01 +0000
+++ b/mysql-test/suite/backup/t/backup_views.test	2008-11-21 16:29:06 +0000
@@ -211,7 +211,6 @@ RESTORE FROM 'bup_objectview1.bak';
 # An incomplete bup_db1 was created by the failing restore operation.
 # Remove it before trying restore of bup_db2.
 DROP DATABASE bup_db1;
-DROP DATABASE bup_db2;
 
 replace_column 1 #;
 RESTORE FROM 'bup_objectview2.bak';

=== modified file 'sql/log.cc'
--- a/sql/log.cc	2008-11-19 16:32:01 +0000
+++ b/sql/log.cc	2008-11-21 16:29:06 +0000
@@ -918,27 +918,8 @@ bool Log_to_csv_event_handler::
 
   if (history_data->command)
   {
-    LEX_STRING cmd;
-    uint str_end_unused;
-
-    if (String::needs_conversion(0, thd->charset(), system_charset_info,
-                                 &str_end_unused))
-    {
-      if (thd->convert_string(&cmd, system_charset_info,
-                              history_data->command,
-                              strlen(history_data->command),
-                              thd->charset()))
-        goto err;
-
-    }
-    else
-    {
-      cmd.str= history_data->command;
-      cmd.length= strlen(cmd.str);
-    }
-
-    if (table->field[ET_OBH_FIELD_COMMAND]->store(cmd.str, cmd.length,
-                                                  system_charset_info))
+    if (table->field[ET_OBH_FIELD_COMMAND]->store(history_data->command,
+       strlen(history_data->command), system_charset_info))
       goto err;
     table->field[ET_OBH_FIELD_COMMAND]->set_notnull();
   }

=== modified file 'sql/si_objects.cc'
--- a/sql/si_objects.cc	2008-11-20 18:08:22 +0000
+++ b/sql/si_objects.cc	2008-11-21 16:29:06 +0000
@@ -28,6 +28,16 @@
 
 DDL_blocker_class *DDL_blocker= NULL;
 
+///////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
+
+#define STR(x) (int) (x).length(), (x).ptr()
+#define LXS(x) (int) (x).length, (x).str
+
+#define LXS_INIT(x) {((char *) (x)), ((size_t) (sizeof (x) - 1))}
+
+///////////////////////////////////////////////////////////////////////////
+
 #define QUERY_BUFFER_SIZE 4096
 
 ///////////////////////////////////////////////////////////////////////////
@@ -210,9 +220,7 @@ Out_stream &Out_stream::operator <<(cons
   chunk.str= chunk_buffer;
   chunk.length= my_snprintf(chunk_buffer, QUERY_BUFFER_SIZE,
     "%d %.*s\n",
-    (int) query->length,
-    (int) query->length,
-    (const char *) query->str);
+    (int) query->length, LXS(*query));
 
   m_serialization->append(chunk.str, chunk.length);
 
@@ -295,14 +303,6 @@ bool In_stream::next(LEX_STRING *chunk)
 }
 
 ///////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
-
-#define STR(x) (int) (x).length(), (x).ptr()
-#define LXS(x) (int) (x).length, (x).str
-
-#define LXS_INIT(x) {((char *) (x)), ((size_t) (sizeof (x) - 1))}
-
-///////////////////////////////////////////////////////////////////////////
 
 }
 
@@ -807,7 +807,7 @@ protected:
   /* These attributes are to be used only for serialization. */
   String m_user_name;
   String m_host_name;
-  String m_grant_info;
+  String m_grant_info; //< contains privilege definition
 
 private:
   virtual bool do_serialize(THD *thd, Out_stream &os);
@@ -830,6 +830,7 @@ Iterator *create_row_set_iterator(THD *t
     return NULL;
   }
 
+  /* The result must contain only one result-set. */
   DBUG_ASSERT(result->elements == 1);
 
   return new Iterator(result);
@@ -908,7 +909,9 @@ Obj *Database_iterator::next()
   if (!row)
     return NULL;
 
+  /* The only column is the database name.*/
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 1);
+
   const Ed_column *db_name= row->get_column(0);
 
   return new Database_obj(db_name->str, db_name->length);
@@ -963,6 +966,7 @@ Obj *Db_tables_iterator::next()
   if (!row)
     return NULL;
 
+  /* The only column is the table name. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *db_name= row->get_column(0);
@@ -1021,6 +1025,7 @@ Obj *Db_views_iterator::next()
   if (!row)
     return NULL;
 
+  /* The only column is the view name. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *db_name= row->get_column(0);
@@ -1079,6 +1084,7 @@ Obj *Db_trigger_iterator::next()
   if (!row)
     return NULL;
 
+  /* There must be two columns: database name and trigger name. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *db_name= row->get_column(0);
@@ -1139,6 +1145,7 @@ Obj *Db_stored_proc_iterator::next()
   if (!row)
     return NULL;
 
+  /* There must be two columns: database name and routine name. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *db_name= row->get_column(0);
@@ -1199,6 +1206,7 @@ Obj *Db_stored_func_iterator::next()
   if (!row)
     return NULL;
 
+  /* There must be two columns: database name and function name. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *db_name= row->get_column(0);
@@ -1270,6 +1278,7 @@ Obj *Db_event_iterator::next()
   if (!row)
     return NULL;
 
+  /* There must be two columns: database name and event name. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *db_name= row->get_column(0);
@@ -1356,6 +1365,7 @@ bool View_base_obj_iterator::init(THD *t
                                   const String *db_name,
                                   const String *view_name)
 {
+  /* Ensure that init() will not be run twice. */
   DBUG_ASSERT(!m_table_names);
 
   uint not_used; /* Passed to open_tables(). Not used. */
@@ -1560,6 +1570,7 @@ Obj *Grant_iterator::next()
   if (!row)
     return NULL;
 
+  /* Ensure that there are 6 columns. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 6);
 
   const Ed_column *user_name= row->get_column(0);
@@ -1657,20 +1668,24 @@ bool Database_obj::do_serialize(THD *thd
 
   /* Generate serialization. */
 
+  /* The result must contain only one result-set... */
   DBUG_ASSERT(result.elements == 1);
 
   Ed_result_set *rs= result.get_cur_result_set();
 
+  /* ... which is not NULL. */
   DBUG_ASSERT(rs);
 
   if (rs->data()->elements == 0)
     DBUG_RETURN(TRUE);
 
+  /* There must be one row. */
   DBUG_ASSERT(rs->data()->elements == 1);
 
   List_iterator_fast<Ed_row> row_it(*rs->data());
   Ed_row *row= row_it++;
 
+  /* There must be two columns: database name and create statement. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *create_stmt= row->get_column(1);
@@ -1734,20 +1749,24 @@ bool Table_obj::do_serialize(THD *thd, O
     DBUG_RETURN(TRUE);
   }
 
+  /* The result must contain only one result-set... */
   DBUG_ASSERT(result.elements == 1);
 
   Ed_result_set *rs= result.get_cur_result_set();
 
+  /* ... which is not NULL. */
   DBUG_ASSERT(rs);
 
   if (rs->data()->elements == 0)
     DBUG_RETURN(TRUE);
 
+  /* There must be one row. */
   DBUG_ASSERT(rs->data()->elements == 1);
 
   List_iterator_fast<Ed_row> row_it(*rs->data());
   Ed_row *row= row_it++;
 
+  /* There must be two columns: database name and create statement. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 2);
 
   const Ed_column *create_stmt= row->get_column(1);
@@ -1799,20 +1818,24 @@ get_view_create_stmt(THD *thd,
     return TRUE;
   }
 
+  /* The result must contain only one result-set... */
   DBUG_ASSERT(result.elements == 1);
 
   Ed_result_set *rs= result.get_cur_result_set();
 
+  /* ... which is not NULL. */
   DBUG_ASSERT(rs);
 
   if (rs->data()->elements == 0)
     return TRUE;
 
+  /* There must be one row. */
   DBUG_ASSERT(rs->data()->elements == 1);
 
   List_iterator_fast<Ed_row> row_it(*rs->data());
   Ed_row *row= row_it++;
 
+  /* There must be four columns. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 4);
 
   const LEX_STRING *c1= row->get_column(1);
@@ -1887,9 +1910,12 @@ dump_base_object_stubs(THD *thd,
       return TRUE;
     }
 
+    /* The result must contain only one result-set... */
     DBUG_ASSERT(result.elements == 1);
 
     Ed_result_set *rs= result.get_cur_result_set();
+
+    /* ... which is not NULL. */
     DBUG_ASSERT(rs);
 
     /* Dump structure of base obj stub. */
@@ -1904,6 +1930,7 @@ dump_base_object_stubs(THD *thd,
       if (!row)
         break;
 
+      /* There must be 6 columns. */
       DBUG_ASSERT(row->get_metadata()->get_num_columns() == 6);
 
       const LEX_STRING *col_name= row->get_column(0);
@@ -2041,15 +2068,18 @@ bool Stored_program_obj::do_serialize(TH
     DBUG_RETURN(TRUE);
   }
 
+  /* The result must contain only one result-set... */
   DBUG_ASSERT(result.elements == 1);
 
   Ed_result_set *rs= result.get_cur_result_set();
 
+  /* ... which is not NULL. */
   DBUG_ASSERT(rs);
 
   if (rs->data()->elements == 0)
     DBUG_RETURN(TRUE);
 
+  /* There must be one row. */
   DBUG_ASSERT(rs->data()->elements == 1);
 
   List_iterator_fast<Ed_row> row_it(*rs->data());
@@ -2234,6 +2264,7 @@ bool Tablespace_obj::materialize(uint se
   List_iterator_fast<String> it(m_stmt_lst);
   String *desc= it++;
 
+  /* Tablespace description must not be NULL. */
   DBUG_ASSERT(desc);
 
   m_description.set(desc->ptr(), desc->length(), desc->charset());
@@ -2256,6 +2287,7 @@ const String *Tablespace_obj::get_descri
 {
   DBUG_ENTER("Tablespace_obj::get_description");
 
+  /* Either description or id and data file name must be not empty. */
   DBUG_ASSERT(m_description.length() ||
               m_id.length() && m_data_file_name.length());
 
@@ -2299,14 +2331,17 @@ void Grant_obj::generate_unique_id(const
 
   id->length(0);
 
-  if (user_name->length() && host_name->length())
-  {
+  if (user_name->length())
+    id->append("<empty>");
+  else
     id->append(*user_name);
-    id->append('@');
-    id->append(*host_name);
-  }
+
+  id->append('@');
+
+  if (host_name->length())
+    id->append("<empty>");
   else
-    id->append("<no_name>");
+    id->append(*host_name);
 
   char buf[10];
   my_snprintf(buf, 10, " %08lu", ++id_counter);
@@ -2766,10 +2801,12 @@ Obj *find_tablespace(THD *thd, const Str
 
   Ed_result_set *rs= result.get_cur_result_set();
 
+  /* The result must contain only one result-set. */
   DBUG_ASSERT(rs->data()->elements == 1);
 
   Ed_row *row= rs->get_cur_row();
 
+  /* There must be 3 columns. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 3);
 
   const Ed_column *comment= row->get_column(0);
@@ -2835,10 +2872,12 @@ Obj *find_tablespace_for_table(THD *thd,
   if (!rs->data()->elements)
     return NULL;
 
+  /* The result must contain only one result-set. */
   DBUG_ASSERT(rs->data()->elements == 1);
 
   Ed_row *row= rs->get_cur_row();
 
+  /* There must be 4 columns. */
   DBUG_ASSERT(row->get_metadata()->get_num_columns() == 4);
 
   const Ed_column *ts_name= row->get_column(0);

Thread
bzr push into mysql-6.0-runtime branch (alik:2759 to 2761) Alexander Nozdrin21 Nov