>Description: I have some tables (authentication0106 through authentication0108) for which I create a MERGE table (authentication). Some Perl script is adding records to authentication0107 as fast as it can. While it is doing this, I run the mysql client and issue the following query select count(*), max(id), max(auth_time) from authentication; Most of the time, this results in one row with sane values, e.g.: +----------+---------+----------------+ | count(*) | max(id) | max(auth_time) | +----------+---------+----------------+ | 59776 | 59776 | 982157198 | +----------+---------+----------------+ 1 row in set (0.00 sec) But sometimes I get results like these (which is wrong because all id's and auth_time's have a value): +----------+---------+----------------+ | count(*) | max(id) | max(auth_time) | +----------+---------+----------------+ | 650614 | NULL | NULL | +----------+---------+----------------+ 1 row in set (0.00 sec) Or even this (max(id) seems okay, but max(auth_time) is wrong): +----------+---------+----------------+ | count(*) | max(id) | max(auth_time) | +----------+---------+----------------+ | 680402 | 680402 | NULL | +----------+---------+----------------+ 1 row in set (0.00 sec) >How-To-Repeat: 1. Create tables in mysql client: create table authentication0106 ( id int not null, auth_time int not null, primary key(id), key auth_time(auth_time)) ; create table authentication0107 ( id int not null, auth_time int not null, primary key(id), key auth_time(auth_time)) ; create table authentication0108 ( id int not null, auth_time int not null, primary key(id), key auth_time(auth_time)) ; create table authentication ( id int not null, auth_time int not null, primary key(id), key auth_time(auth_time)) type=merge union=(authentication0106,authentication0107,authentication0108); 2. Start this Perl script: #!/usr/local/bin/perl5 -w use DBI; use DBD::mysql; use POSIX; sub main { my ($dbname) = @_; #DBI->trace(2); my $prev_yearweek = ''; my $sth_yearweek = ''; my $dbh = DBI->connect("dbi:mysql:database=$dbname:mysql_socket=/tmp/mysql-3.23.32.sock", "test", "test", {RaiseError => 1}); # # find last stored auth_time and id # my $lasttime; my $sth = $dbh->prepare("select max(id), max(auth_time) from authentication"); $sth->execute(); ($id, $lasttime) = ($sth->fetchrow_array())[0..1]; $id = $id ? $id + 1 : 1; $sth = undef; for ($i=0; $i<1000000; $i++) { my $time = time(); # # see for which week this is an authentication # my $yearweek = strftime("%g%U", localtime($time)); $yearweek = '0107'; if ($yearweek ne $prev_yearweek) { $prev_yearweek = $yearweek; $sth_yearweek = $dbh->prepare( "insert into authentication".$yearweek." set id = ?, auth_time = ?"); } $sth_yearweek->execute( $id++, $time, ); } #$dbh->commit(); $dbh->disconnect(); } my $dbname = 'test'; &main($dbname); 3. Repeatedly execute this query in the mysql client while the Perl script above is running: select count(*), max(id), max(auth_time) from authentication; It seems to be some race-condition so there's no guaranteed reproduction but it gives incorrect results once every 5 or 10 times in my case. >Fix: Unknown >Submitter-Id: <[EMAIL PROTECTED]> >Originator: Fred van Engen >Organization: XO Communications B.V. >MySQL support: none >Synopsis: NULL and 0 values when reading from MERGE table while INSERTing >Severity: serious >Priority: medium >Category: mysql >Class: sw-bug >Release: mysql-3.23.32 (Source distribution) >Environment: System: SunOS lei 5.7 Generic_106541-07 sun4u sparc SUNW,Ultra-250 Architecture: sun4 Some paths: /usr/local/bin/perl /usr/local/bin/make /usr/local/bin/gcc GCC: Reading specs from /opt/gcc/lib/gcc-lib/sparc-sun-solaris2.7/2.8.1/specs gcc version 2.8.1 Compilation info: CC='gcc' CFLAGS='' CXX='gcc' CXXFLAGS='' LDFLAGS='' LIBC: -rw-r--r-- 1 bin bin 1693556 Sep 22 1999 /lib/libc.a lrwxrwxrwx 1 root root 11 Oct 7 1999 /lib/libc.so -> ./libc.so.1 -rwxr-xr-x 1 bin bin 1115304 Sep 22 1999 /lib/libc.so.1 -rw-r--r-- 1 bin bin 1693556 Sep 22 1999 /usr/lib/libc.a lrwxrwxrwx 1 root root 11 Oct 7 1999 /usr/lib/libc.so -> ./libc.so.1 -rwxr-xr-x 1 bin bin 1115304 Sep 22 1999 /usr/lib/libc.so.1 Configure command: ./configure --prefix=/opt/mysql-3.23.32 Perl: This is perl, version 5.005_03 built for sun4-solaris !!! The above is generated by mysqlbug on the system that MySQL runs on. The !!! MySQL source was compiled on an identical system with gcc 2.95.2. --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php