From: Gary R. S. <grs...@ac...> - 2010-01-27 11:35:21
|
Kern Sibbald wrote: [SNIP] > The purpose of SQL_LIB is to be able to determine if Batch insert will work or > not. SQL_LIB should *never* be returned pointing to a .so file. If it does, > batch insert will be turned off in *all* cases. So any patch that returns > a .so for SQL_LIB will break Bacula for all platforms as did the orginally > submitted patch that you mention above. Sigh. There is no .a library supplied with the WebStack MySQL. As of Solaris 10 there are no static system libraries. WebStack is a Sun delivery, so it follows the internal rules of only supplying shared objects. > Batch insert works very well on all versions of MySQL and PostgreSQL, except > for one or two MySQL versions that are broken. Unfortunately it seems to be > one of the more common versions used on Solaris. And it works perfectly well on Solaris 10 with the .so library. > If you want to disable batch insert, the proper way to do it is by adding > a .configure option. Enable, enable, enable. Not disable, not disable, not disable. A fix to allow Bacula to enable the batch insert facility where MySQL has only supplied a shared object is represented in this context diff: *** bacula-5.0.0-orig/configure Mon Jan 25 18:56:28 2010 --- bacula-5.0.0/configure Wed Jan 27 21:23:13 2010 *************** *** 23019,23032 **** fi fi SQL_INCLUDE=-I$MYSQL_INCDIR ! if test -f $MYSQL_LIBDIR/libmysqlclient_r.a \ ! -o -f $MYSQL_LIBDIR/libmysqlclient_r.so; then SQL_LFLAGS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz" $as_echo "#define HAVE_THREAD_SAFE_MYSQL 1" >>confdefs.h ! fi SQL_BINDIR=$MYSQL_BINDIR - SQL_LIB=$MYSQL_LIBDIR/libmysqlclient_r.a $as_echo "#define HAVE_MYSQL 1" >>confdefs.h --- 23019,23036 ---- fi fi SQL_INCLUDE=-I$MYSQL_INCDIR ! if test -f $MYSQL_LIBDIR/libmysqlclient_r.a; then SQL_LFLAGS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz" + SQL_LIB=$MYSQL_LIBDIR/libmysqlclient_r.a $as_echo "#define HAVE_THREAD_SAFE_MYSQL 1" >>confdefs.h ! elif test -f $MYSQL_LIBDIR/libmysqlclient_r.so; then ! SQL_LFLAGS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz" ! SQL_LIB=$MYSQL_LIBDIR/libmysqlclient_r.so ! $as_echo "#define HAVE_THREAD_SAFE_MYSQL 1" >>confdefs.h ! else ! SQL_LIB=$MYSQL_LIBDIR/libmysqlclient.a fi SQL_BINDIR=$MYSQL_BINDIR $as_echo "#define HAVE_MYSQL 1" >>confdefs.h *************** The change is required because of the following lines: 23665:A=`test -f $SQL_LIB && nm $SQL_LIB | grep pthread_mutex_lock` 23866:A=`test -f $SQL_LIB && nm $SQL_LIB | grep pthread_mutex_lock` 23871:A=`test -f $SQL_LIB && nm $DB_PROG_LIB | grep pthread_mutex_lock` The test for batch insert (re-?)occurs *after* SQL_LIB has been set. Thinking about it, if this particular mistake in configuration occurs in the other database sections of the configure file, it will bite on any database that is supplied with only a shared object. Cheers, Gary B-) |