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 ------------------------------------------------------------------------------ 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
