List:Commits« Previous MessageNext Message »
From:Marc Alff Date:March 9 2010 6:03pm
Subject:bzr commit into mysql-next-mr-bugfixing branch (marc.alff:3121) Bug#51878
View as plain text  
#At file:///home/malff/BZR_TREE/mysql-next-mr-bugfixing/ based on revid:tor.didriksen@stripped

 3121 Marc Alff	2010-03-09
      Bug#51878 Build break in HPUX involving mysql_prlock on a client
      
      This is a fix specific for HPUX,
      for which the compiler does not resolve properly dependencies
      involving unused inline functions.
      (See existing comments in mysql_thread.h)
      
      In include/mysql/psi/mysql_thread.h,
      the instrumentation helpers for mysql_prlock_*
      uses the pr lock apis.
      
      These apis are implemented in mysys/thr_rwlock.c,
      which is not linked to client code.
      
      As a result, the code does not link in libmysql_r, on HPUX.
      
      The fix is to cut dependencies explicitely,
      by introducing -DDISABLE_MYSQL_RWLOCK_H,
      when building client code.

    modified:
      include/mysql/psi/mysql_thread.h
      libmysql_r/Makefile.am
=== modified file 'include/mysql/psi/mysql_thread.h'
--- a/include/mysql/psi/mysql_thread.h	2010-03-07 17:50:47 +0000
+++ b/include/mysql/psi/mysql_thread.h	2010-03-09 18:03:02 +0000
@@ -192,6 +192,8 @@ typedef struct st_mysql_cond mysql_cond_
   on some platforms.
   The proper fix would be to cut these extra dependencies in the calling code.
   DISABLE_MYSQL_THREAD_H is a work around to limit dependencies.
+  DISABLE_MYSQL_PRLOCK_H is similar, and is used to disable specifically
+  the prlock wrappers.
 */
 #ifndef DISABLE_MYSQL_THREAD_H
 
@@ -714,6 +716,7 @@ static inline int inline_mysql_rwlock_in
   return my_rwlock_init(&that->m_rwlock, NULL);
 }
 
+#ifndef DISABLE_MYSQL_PRLOCK_H
 static inline int inline_mysql_prlock_init(
 #ifdef HAVE_PSI_INTERFACE
   PSI_rwlock_key key,
@@ -728,6 +731,7 @@ static inline int inline_mysql_prlock_in
 #endif
   return rw_pr_init(&that->m_prlock);
 }
+#endif
 
 static inline int inline_mysql_rwlock_destroy(
   mysql_rwlock_t *that)
@@ -742,6 +746,7 @@ static inline int inline_mysql_rwlock_de
   return rwlock_destroy(&that->m_rwlock);
 }
 
+#ifndef DISABLE_MYSQL_PRLOCK_H
 static inline int inline_mysql_prlock_destroy(
   mysql_prlock_t *that)
 {
@@ -754,6 +759,7 @@ static inline int inline_mysql_prlock_de
 #endif
   return rw_pr_destroy(&that->m_prlock);
 }
+#endif
 
 static inline int inline_mysql_rwlock_rdlock(
   mysql_rwlock_t *that
@@ -781,6 +787,7 @@ static inline int inline_mysql_rwlock_rd
   return result;
 }
 
+#ifndef DISABLE_MYSQL_PRLOCK_H
 static inline int inline_mysql_prlock_rdlock(
   mysql_prlock_t *that
 #ifdef HAVE_PSI_INTERFACE
@@ -806,6 +813,7 @@ static inline int inline_mysql_prlock_rd
 #endif
   return result;
 }
+#endif
 
 static inline int inline_mysql_rwlock_wrlock(
   mysql_rwlock_t *that
@@ -833,6 +841,7 @@ static inline int inline_mysql_rwlock_wr
   return result;
 }
 
+#ifndef DISABLE_MYSQL_PRLOCK_H
 static inline int inline_mysql_prlock_wrlock(
   mysql_prlock_t *that
 #ifdef HAVE_PSI_INTERFACE
@@ -858,6 +867,7 @@ static inline int inline_mysql_prlock_wr
 #endif
   return result;
 }
+#endif
 
 static inline int inline_mysql_rwlock_tryrdlock(
   mysql_rwlock_t *that
@@ -885,6 +895,7 @@ static inline int inline_mysql_rwlock_tr
   return result;
 }
 
+#ifndef DISABLE_MYSQL_PRLOCK_H
 static inline int inline_mysql_prlock_tryrdlock(
   mysql_prlock_t *that
 #ifdef HAVE_PSI_INTERFACE
@@ -910,6 +921,7 @@ static inline int inline_mysql_prlock_tr
 #endif
   return result;
 }
+#endif
 
 static inline int inline_mysql_rwlock_trywrlock(
   mysql_rwlock_t *that
@@ -937,6 +949,7 @@ static inline int inline_mysql_rwlock_tr
   return result;
 }
 
+#ifndef DISABLE_MYSQL_PRLOCK_H
 static inline int inline_mysql_prlock_trywrlock(
   mysql_prlock_t *that
 #ifdef HAVE_PSI_INTERFACE
@@ -962,6 +975,7 @@ static inline int inline_mysql_prlock_tr
 #endif
   return result;
 }
+#endif
 
 static inline int inline_mysql_rwlock_unlock(
   mysql_rwlock_t *that)
@@ -980,6 +994,7 @@ static inline int inline_mysql_rwlock_un
   return result;
 }
 
+#ifndef DISABLE_MYSQL_PRLOCK_H
 static inline int inline_mysql_prlock_unlock(
   mysql_prlock_t *that)
 {
@@ -996,6 +1011,7 @@ static inline int inline_mysql_prlock_un
   result= rw_pr_unlock(&that->m_prlock);
   return result;
 }
+#endif
 
 static inline int inline_mysql_cond_init(
 #ifdef HAVE_PSI_INTERFACE

=== modified file 'libmysql_r/Makefile.am'
--- a/libmysql_r/Makefile.am	2007-10-08 18:55:44 +0000
+++ b/libmysql_r/Makefile.am	2010-03-09 18:03:02 +0000
@@ -20,9 +20,11 @@
 #
 # This file is public domain and comes with NO WARRANTY of any kind
 
-target = libmysqlclient_r.la
-target_defs = -DDONT_USE_RAID -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@
-LIBS = @LIBS@ @ZLIB_LIBS@ @openssl_libs@
+target = 	libmysqlclient_r.la
+target_defs = 	-DDISABLE_MYSQL_PRLOCK_H -DDONT_USE_RAID \
+		-DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@
+
+LIBS = 		@LIBS@ @ZLIB_LIBS@ @openssl_libs@
 
 INCLUDES =	-I$(top_builddir)/include -I$(top_srcdir)/include \
 		$(openssl_includes) @ZLIB_INCLUDES@


Attachment: [text/bzr-bundle] bzr/marc.alff@oracle.com-20100309180302-oglr315h8p09ljqz.bundle
Thread
bzr commit into mysql-next-mr-bugfixing branch (marc.alff:3121) Bug#51878Marc Alff9 Mar