List:Commits« Previous MessageNext Message »
From:Davi Arnaut Date:April 14 2009 12:12pm
Subject:bzr commit into mysql-5.1-bugteam branch (Davi.Arnaut:2874) Bug#44164
View as plain text  
#At file:///data0/my/darnaut/mysql-repo/work/44164-5.1/ based on revid:sergey.glukhov@stripped

 2874 Davi Arnaut	2009-04-14
      Bug#44164: TL_WRITE has no description in lock_descriptions[]
      
      The problem was that new lock types were being added without a
      corresponding description. Since the lock types (enum values)
      are used as indices to the description array, the descriptions
      could be shifted depending on the lock type. The solution is to
      ensure that every lock type has a correspondent description.
     @ include/thr_lock.h
        Add warning.
     @ sql/sql_test.cc
        Update lock descriptions.

    modified:
      include/thr_lock.h
      sql/sql_test.cc
=== modified file 'include/thr_lock.h'
--- a/include/thr_lock.h	2009-02-03 17:16:24 +0000
+++ b/include/thr_lock.h	2009-04-14 12:05:32 +0000
@@ -27,6 +27,10 @@ extern "C" {
 struct st_thr_lock;
 extern ulong locks_immediate,locks_waited ;
 
+/*
+  Important: if a new lock type is added, a matching lock description
+             must be added to sql_test.cc's lock_descriptions array.
+*/
 enum thr_lock_type { TL_IGNORE=-1,
 		     TL_UNLOCK,			/* UNLOCK ANY LOCK */
                      /*

=== modified file 'sql/sql_test.cc'
--- a/sql/sql_test.cc	2009-01-26 15:39:00 +0000
+++ b/sql/sql_test.cc	2009-04-14 12:05:32 +0000
@@ -33,18 +33,20 @@
 
 static const char *lock_descriptions[] =
 {
-  "No lock",
-  "Low priority read lock",
-  "Shared Read lock",
-  "High priority read lock",
-  "Read lock  without concurrent inserts",
-  "Write lock that allows other writers",
-  "Write lock, but allow reading",
-  "Concurrent insert lock",
-  "Lock Used by delayed insert",
-  "Low priority write lock",
-  "High priority write lock",
-  "Highest priority write lock"
+  /* TL_UNLOCK                  */  "No lock",
+  /* TL_READ_DEFAULT            */  NULL,
+  /* TL_READ                    */  "Low priority read lock",
+  /* TL_READ_WITH_SHARED_LOCKS  */  "Shared read lock",
+  /* TL_READ_HIGH_PRIORITY      */  "High priority read lock",
+  /* TL_READ_NO_INSERT          */  "Read lock without concurrent inserts",
+  /* TL_WRITE_ALLOW_WRITE       */  "Write lock that allows other writers",
+  /* TL_WRITE_ALLOW_READ        */  "Write lock, but allow reading",
+  /* TL_WRITE_CONCURRENT_INSERT */  "Concurrent insert lock",
+  /* TL_WRITE_DELAYED           */  "Lock used by delayed insert",
+  /* TL_WRITE_DEFAULT           */  NULL,
+  /* TL_WRITE_LOW_PRIORITY      */  "Low priority write lock",
+  /* TL_WRITE                   */  "High priority write lock",
+  /* TL_WRITE_ONLY              */  "Highest priority write lock"
 };
 
 
@@ -75,6 +77,8 @@ void print_cached_tables(void)
   uint idx,count,unused;
   TABLE *start_link,*lnk;
 
+  compile_time_assert(TL_WRITE_ONLY+1 == array_elements(lock_descriptions));
+
   /* purecov: begin tested */
   VOID(pthread_mutex_lock(&LOCK_open));
   puts("DB             Table                            Version  Thread  Open  Lock");


Attachment: [text/bzr-bundle] bzr/davi.arnaut@sun.com-20090414120532-0w5pmpbbe5i3i1t2.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (Davi.Arnaut:2874) Bug#44164Davi Arnaut14 Apr