Hello Kern, and thank you for your precious comment
about the mysql pthread_mutex_lock availability.

I cut all none interesting part. And add what I've found
I'm working now on openSUSE 11.2 and I want to extend the bacula.spec of Scott 
to include
the su112 tag and a way to build with and without batch-insert-enabled binary.

After several check, none of the rpm build have batch insert inside.

So to be sure, I've reget the tar.gz original sources try to reconfigure with 
simple flags

./configure --enable-smartalloc --with-tcp-wrappers --with-libiconv-prefix 
--with-libintl-prefix --enable-largefile --with-x
--enable-ipv6 --enable-acl --enable-xattr --enable-batch-insert --with-python 
--with-qwt --enable-gnome --enable-bat
--with-sqlite3 ( or --with-mysql or --with-postgresql )

In every try I only get Enable Batch insert No

Configuration on Thu Dec 17 07:59:22 CET 2009:

   Host:                    i686-pc-linux-gnu -- suse 11.2
   Bacula version:          Bacula 3.0.2 (18 July 2009)
   Source code location:    .
   Install binaries:        /sbin
   Install libraries:       /usr/lib
   Install config files:    /etc/bacula
   Scripts directory:       /etc/bacula
   Archive directory:       /tmp
   Working directory:       /var/bacula/working
   PID directory:           /var/run
   Subsys directory:        /var/lock/subsys
   Man directory:           ${datarootdir}/man
   Data directory:          /usr/share
   Plugin directory:        /usr/lib
   C Compiler:              gcc Linux)
   C++ Compiler:            /usr/bin/g++ Linux)
   Compiler flags:           -g -O2 -Wall -fno-strict-aliasing -fno-exceptions 
-fno-rtti
   Linker flags:
   Libraries:               -lpthread -ldl
   Statically Linked Tools: no
   Statically Linked FD:    no
   Statically Linked SD:    no
   Statically Linked DIR:   no
   Statically Linked CONS:  no
   Database type:           MySQL
   Database port:
   Database lib:            -L/usr/lib -lmysqlclient_r -lz
   Database name:           bacula
   Database user:           bacula

   Job Output Email:        r...@localhost
   Traceback Email:         r...@localhost
   SMTP Host Address:       localhost

   Director Port:           9101
   File daemon Port:        9102
   Storage daemon Port:     9103

   Director User:
   Director Group:
   Storage Daemon User:
   Storage DaemonGroup:
   File Daemon User:
   File Daemon Group:

   SQL binaries Directory   /usr/bin

   Large file support:      yes
   Bacula conio support:    yes -lncurses
   readline support:        no
   TCP Wrappers support:    yes -lwrap
   TLS support:             yes
   Encryption support:      yes
   ZLIB support:            yes
   enable-smartalloc:       yes
   enable-lockmgr:          no
   bat support:             yes -L/usr/lib
   enable-gnome:            yes Version 2.x
   enable-bwx-console:      no
   enable-tray-monitor:     no
   client-only:             no
   build-dird:              yes
   build-stored:            yes
   ACL support:             yes
   XATTR support:           yes
   Python support:          yes -lpthread -ldl -lutil -lm -lpython2.6 -lutil 
-lrt
   Batch insert enabled:    no


I put here the pg_config and mysql_config results
mysql_config
Usage: /usr/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/usr/include/mysql  -fomit-frame-pointer 
-fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector
-funwind-tables -fasynchronous-unwind-tables -g -DPIC -fPIC 
-DUNDEF_HAVE_INITGROUPS -fno-strict-aliasing   -DUNIV_LINUX]
        --include        [-I/usr/include/mysql]
        --libs           [-L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm 
-L/usr/lib -L/usr/lib64 -lssl -lcrypto]
        --libs_r         [-L/usr/lib/mysql -lmysqlclient_r -lz -lpthread 
-lcrypt -lnsl -lm -lpthread -L/usr/lib -L/usr/lib64
-lssl -lcrypto]
        --plugindir      [/usr/lib/mysql/plugin]
        --socket         [/var/run/mysql/mysql.sock]
        --port           [0]
        --version        [5.1.36]
        --libmysqld-libs [-L/usr/lib/mysql -lmysqld -ldl -lz -lpthread -lcrypt 
-lnsl -lm -lpthread -lwrap -lrt -L/usr/lib
-L/usr/lib64 -lssl -lcrypto]

pg_config
BINDIR = /usr/bin
DOCDIR = /usr/share/doc/packages/postgresql
HTMLDIR = /usr/share/doc/packages/postgresql
INCLUDEDIR = /usr/include/pgsql
PKGINCLUDEDIR = /usr/include/pgsql
INCLUDEDIR-SERVER = /usr/include/pgsql/server
LIBDIR = /usr/lib
PKGLIBDIR = /usr/lib/postgresql
LOCALEDIR = /usr/share/locale
MANDIR = /usr/share/man
SHAREDIR = /usr/share/postgresql
SYSCONFDIR = /usr/etc/postgresql
PGXS = /usr/lib/postgresql/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/usr' '--libdir=/usr/lib' '--bindir=/usr/bin' 
'--includedir=/usr/include/pgsql'
'--datadir=/usr/share/postgresql' '--mandir=/usr/share/man' 
'--docdir=/usr/share/doc/packages' '--disable-rpath' '--enable-nls'
'--enable-thread-safety' '--enable-integer-datetimes' '--without-python' 
'--without-perl' '--without-tcl' '--with-openssl'
'--with-pam' '--with-krb5' '--with-gssapi' '--with-ldap' '--with-libxml' 
'--with-libxslt'
'--with-system-tzdata=/usr/share/zoneinfo' 'CFLAGS=-fomit-frame-pointer 
-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2
-fstack-protector -funwind-tables -fasynchronous-unwind-tables '
CC = gcc
CPPFLAGS = -D_GNU_SOURCE -I/usr/include/libxml2
CFLAGS = -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 
-fstack-protector -funwind-tables
-fasynchronous-unwind-tables  -Wall -Wmissing-prototypes -Wpointer-arith 
-Wdeclaration-after-statement -Wendif-labels
-fno-strict-aliasing -fwrapv
CFLAGS_SL = -fpic
LDFLAGS = -Wl,--as-needed
LDFLAGS_SL =
LIBS = -lpgport -lxslt -lxml2 -lpam -lssl -lcrypto -lkrb5 -lcom_err 
-lgssapi_krb5 -lz -lreadline -lcrypt -ldl -lm
VERSION = PostgreSQL 8.4.1


The two main database are quiet new 5.1 and 8.4.1.

I really don't understand why I didn't get batch enable insert to on openSUSE 
11.2,
and need some advice to find why and/or where to look. So perharps i could 
complain in bugzilla.novell.com


ps : I'm using the default new desktop kernel (mainly preempt+pae)
uname -a
Linux c-3po 2.6.31.5-0.1-desktop #1 SMP PREEMPT 2009-10-26 15:49:03 +0100 i686 
i686 i386 GNU/Linux



rest of mail is for archive.

On 12/16/2009 08:24 AM, Kern Sibbald wrote:
> Hello Bruno,
> 
> On Wednesday 16 December 2009 07:18:48 Bruno Friedmann wrote:
>> On 12/14/2009 10:00 PM, John Jorgensen wrote:
>>>>>>>> "bruno" == Bruno Friedmann <[email protected]> writes:
>>>
>>>     bruno> ok I've try and only get this on the two proposed
>>>
>>>     bruno> strings /usr/sbin/bacula-dir | grep batch
>>>     bruno> _Z27db_write_batch_file_recordsP3JCR
>>>     bruno> _Z23db_open_batch_connexionP3JCRP4B_DB
>>>
>>> I think that the string that Eric suggested searching for might
>>> have changed from one release of bacula to another.
>>>
>>> So in case you're as far behind the times as our site (we're
>>> still running Bacula 2.4.3) ...
>>>
>>> While I'm pretty sure our old server is doing batch inserts,
>>> grep'ing for "batch" produces only:
>>>
>>>   558 backup $strings /usr/local/bacula/sbin/bacula-dir | grep -i batch
>>>   Cannot select %s in batch mode.
>>>
>>> Searching for "temporary" hits though:
>>>
>>>  559 backup $strings /usr/local/bacula/sbin/bacula-dir | grep -i
>>> temporary CREATE TEMPORARY TABLE DelCandidates (JobId INTEGER NOT NULL,
>>> PurgedFiles SMALLINT, FileSetId INTEGER, JobFiles INTEGER, JobStatus
>>> char(1)) CREATE TEMPORARY TABLE temp (JobId INTEGER NOT NULL,JobTDate
>>> BIGINT,ClientId INTEGER,Level CHAR,JobFiles INTEGER,JobBytes
>>> BIGINT,StartTime TEXT,VolumeName TEXT,StartFile INTEGER,VolSessionId
>>> INTEGER,VolSessionTime INTEGER) CREATE TEMPORARY TABLE temp1 (JobId
>>> INTEGER NOT NULL,JobTDate BIGINT) 560 backup $
>>>
>>> As does looking for the message that I see in bconsole while the
>>> directory is unbatching the attributes:
>>>
>>>   560 backup $strings /usr/local/bacula/sbin/bacula-dir | grep -i
>>> inserting Inserting first %s res: %s index=%d
>>>   Inserting %s res: %s index=%d pass=%d
>>>   Dir inserting Attributes
>>
>> Thanks John on a 3.0.3 build the temporary search give more instructions
>> strings /usr/sbin/bacula-dir | grep -i temporary
>> CREATE TEMPORARY TABLE cpy_tmp AS SELECT MIN(JobId) AS JobId FROM Job WHERE
>> Type='%c' AND ( PriorJobId IN (%s) OR  PriorJobId IN ( SELECT PriorJobId
>> FROM Job WHERE JobId IN (%s)  AND Type='B' ) ) GROUP BY PriorJobId
>>
>> and in libbacsql.so
>>
>> strings libbacsql.so.1.0.0 | grep -i temporary
>> CREATE TEMPORARY TABLE DelCandidates (JobId INTEGER UNSIGNED NOT NULL,
>> PurgedFiles TINYINT, FileSetId INTEGER UNSIGNED, JobFiles INTEGER UNSIGNED,
>> JobStatus BINARY(1))
>> CREATE TEMPORARY TABLE DelCandidates (JobId INTEGER NOT NULL, PurgedFiles
>> SMALLINT, FileSetId INTEGER, JobFiles INTEGER, JobStatus char(1))
>> CREATE TEMPORARY TABLE DelCandidates (JobId INTEGER UNSIGNED NOT NULL,
>> PurgedFiles TINYINT, FileSetId INTEGER UNSIGNED, JobFiles INTEGER UNSIGNED,
>> JobStatus CHAR)
>> CREATE TEMPORARY TABLE temp (JobId INTEGER UNSIGNED NOT NULL,JobTDate
>> BIGINT UNSIGNED,ClientId INTEGER UNSIGNED,Level CHAR,JobFiles INTEGER
>> UNSIGNED,JobBytes BIGINT UNSIGNED,StartTime TEXT,VolumeName TEXT,StartFile
>> INTEGER UNSIGNED,VolSessionId INTEGER UNSIGNED,VolSessionTime INTEGER
>> UNSIGNED)
>> CREATE TEMPORARY TABLE temp (JobId INTEGER NOT NULL,JobTDate
>> BIGINT,ClientId INTEGER,Level CHAR,JobFiles INTEGER,JobBytes
>> BIGINT,StartTime TEXT,VolumeName TEXT,StartFile INTEGER,VolSessionId
>> INTEGER,VolSessionTime INTEGER) CREATE TEMPORARY TABLE temp1 (JobId INTEGER
>> UNSIGNED NOT NULL,JobTDate BIGINT UNSIGNED) CREATE TEMPORARY TABLE temp1
>> (JobId INTEGER NOT NULL,JobTDate BIGINT)
>>
>> So in this case I can deduct that there's batch-insert enable ..
> 
> None of the above look to me like the Batch Insert code.  I am not the 
> expert, 
> but these are not the SQL statements that Eric said would be present in Batch 
> Insert.
> 
>>
>> BUT when I check against a package newly build with --disable-batch-inssert
>> confirmed by the result of config
>>
>> Configuration on Wed Dec 16 06:33:02 CET 2009:
>>
>>    Host:                    i686-pc-linux-gnu -- suse 11.2
>>    Bacula version:          Bacula 3.0.3 (18 October 2009)
>>    Source code location:    .
>>    Install binaries:        /usr/sbin
>>    Install libraries:       /usr/lib
>>    Install config files:    /etc/bacula
>>    Scripts directory:       /usr/lib/bacula
>>    Archive directory:       /tmp
>>    Working directory:       /var/lib/bacula
>>    PID directory:           /var/run
>>    Subsys directory:        /var/lock/subsys
>>    Man directory:           /usr/share/man
>>    Data directory:          /usr/share
>>    Plugin directory:        /usr/lib/bacula
>>    C Compiler:              gcc Linux)
>>    C++ Compiler:            /usr/bin/g++ Linux)
>>    Compiler flags:           -O2 -g -msse -mmmx -march=i586 -mtune=i686
>> -funroll-loops -mfpmath=sse -fmessage-length=0 -fno-strict-aliasing -pipe
>> -fstack-protector -Wall -D_FORTIFY_SOURCE=0 -fno-strict-aliasing
>> -fno-exceptions -fno-rtti
>>
>>    Linker flags:             -I/usr/lib -L/usr/lib/termcap
>>
>>    Libraries:               -lpthread -ldl
>>
>>    Statically Linked Tools: no
>>
>>    Statically Linked FD:    no
>>
>>    Statically Linked SD:    no
>>
>>    Statically Linked DIR:   no
>>
>>    Statically Linked CONS:  no
>>
>>    Database type:           MySQL
>>
>>    Database port:
>>
>>    Database lib:            -L/usr/lib -lmysqlclient_r -lz
>>
>>    Database name:           bacula
>>
>>    Database user:           bacula
>>
>>
>>    Job Output Email:        r...@localhost
>>    Traceback Email:         r...@localhost
>>    SMTP Host Address:       localhost
>>
>>    Director Port:           9101
>>    File daemon Port:        9102
>>    Storage daemon Port:     9103
>>
>>    Director User:           bacula
>>    Director Group:          bacula
>>    Storage Daemon User:     bacula
>>    Storage DaemonGroup:     disk
>>    File Daemon User:        root
>>    File Daemon Group:       bacula
>>
>>    SQL binaries Directory   /usr/bin
>>
>>    Large file support:      yes
>>    Bacula conio support:    yes -ltermcap
>>    readline support:        no
>>    TCP Wrappers support:    yes -lwrap
>>    TLS support:             yes
>>    Encryption support:      yes
>>    ZLIB support:            yes
>>    enable-smartalloc:       yes
>>    enable-lockmgr:          no
>>    bat support:             no
>>    enable-gnome:            no
>>    enable-bwx-console:      no
>>    enable-tray-monitor:     no
>>    client-only:             no
>>    build-dird:              yes
>>    build-stored:            yes
>>    ACL support:             yes
>>    XATTR support:           yes
>>    Python support:          yes -lpthread -ldl -lutil -lm -lpython2.6
>> -lutil -lrt Batch insert enabled:    no
>>
>>
>> I'm getting the same string inside bacula-dir and libbacsql.so ?
>>
>> CREATE TEMPORARY TABLE cpy_tmp AS SELECT MIN(JobId) AS JobId FROM Job WHERE
>> Type='%c' AND ( PriorJobId IN (%s) OR  PriorJobId IN ( SELECT PriorJobId
>> FROM Job WHERE JobId IN (%s)  AND Type='B' ) ) GROUP BY PriorJobId
>>
>> strings libbacsql.so.1.0.0 | grep -i temporary
>> CREATE TEMPORARY TABLE DelCandidates (JobId INTEGER UNSIGNED NOT NULL,
>> PurgedFiles TINYINT, FileSetId INTEGER UNSIGNED, JobFiles INTEGER UNSIGNED,
>> JobStatus BINARY(1))
>> CREATE TEMPORARY TABLE DelCandidates (JobId INTEGER NOT NULL, PurgedFiles
>> SMALLINT, FileSetId INTEGER, JobFiles INTEGER, JobStatus char(1))
>> CREATE TEMPORARY TABLE DelCandidates (JobId INTEGER UNSIGNED NOT NULL,
>> PurgedFiles TINYINT, FileSetId INTEGER UNSIGNED, JobFiles INTEGER UNSIGNED,
>> JobStatus CHAR)
>> CREATE TEMPORARY TABLE temp (JobId INTEGER UNSIGNED NOT NULL,JobTDate
>> BIGINT UNSIGNED,ClientId INTEGER UNSIGNED,Level CHAR,JobFiles INTEGER
>> UNSIGNED,JobBytes BIGINT UNSIGNED,StartTime TEXT,VolumeName TEXT,StartFile
>> INTEGER UNSIGNED,VolSessionId INTEGER UNSIGNED,VolSessionTime INTEGER
>> UNSIGNED)
>> CREATE TEMPORARY TABLE temp (JobId INTEGER NOT NULL,JobTDate
>> BIGINT,ClientId INTEGER,Level CHAR,JobFiles INTEGER,JobBytes
>> BIGINT,StartTime TEXT,VolumeName TEXT,StartFile INTEGER,VolSessionId
>> INTEGER,VolSessionTime INTEGER) CREATE TEMPORARY TABLE temp1 (JobId INTEGER
>> UNSIGNED NOT NULL,JobTDate BIGINT UNSIGNED) CREATE TEMPORARY TABLE temp1
>> (JobId INTEGER NOT NULL,JobTDate BIGINT)
>>
>>
>> So there's two solutions, the strings are always present, or there's
>> somewhere a default in sources or build ....
>>
>> Eric can you recheck about the string on a 3.0.3 pure git trunk ?
> 
> It is pretty clear from the code that there will be differences in the SQL 
> statements that are in the binary files when Batch Insert is on and when it 
> is off.  If you are getting the same code with Batch Insert on and off, then 
> the problem lies in MySQL not having the multithread option turned on when it 
> was built (i.e. it has no references to pthread_mutex_lock in the MySQL 
> client library that Bacula links in).  If that is the case,  batch insert 
> will be flagged as "no" in the output of ./configure.
> 
> If you are getting the same strings in both bacula-dir and libbacsql.so, then 
> you are mixing code.  That is you have built bacula-dir statically and 
> dynamically.  You probably need to do "make uninstall" between make installs, 
> but make uninstall is so seldom used, I am not 100% sure it handles 
> uninstalling the shared objects.
> 
> The CREATE TEMPORARY TABLE cpy_tmp should appear only in bacula-dir and not 
> in 
> libbacsq.so
> 
>>
>> What make me in doubt is that bacula-dir/libbacsql with ou without batch
>> enabled have the same md5sum ? b9156e6cb7902024c790add0291216bc  bacula-dir
>> (without bi)
>>  b9156e6cb7902024c790add0291216bc  /usr/sbin/bacula-dir
>>  f01fe8fb42648dae586762b44987bfe1  libbacsql.so.1.0.0 (without bi)
>>  f01fe8fb42648dae586762b44987bfe1  /usr/lib/libbacsql.so.1.0.0
>>
>> What are the result for you ?
> 
> Given what I wrote above, you are clearly not comparing Bacula with and 
> without Batch Insert.
> 
> Regards,
> 
> Kern


-- 

     Bruno Friedmann

Ioda-Net Sàrl
  2830 Vellerat - Switzerland

  Tél : ++41 32 435 7171
  Fax : ++41 32 435 7172
  gsm : ++41 78 802 6760
  www.ioda-net.ch

 Centre de Formation et de Coaching En Ligne
 www.cfcel.com

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Bacula-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to