Commit 008472f3 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi
Browse files

Fixed problem with "record not found" in BDB tables.

parent c946439d
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -8218,7 +8218,7 @@ and that provides output about what is happening.
@item
If your client programs are using threads, you need to also compile a
thread-safe version of the MySQL client library with the
@code{--with-thread-safe-client} configure options. This will create a
@code{--enable-thread-safe-client} configure options. This will create a
@code{libmysqlclient_r} library with which you should link your threaded
applications.  @xref{Threaded clients}.
@@ -11899,7 +11899,7 @@ If you are compiling with @code{gcc}, you can use the following
@example
CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --with-thread-safe-client --with-named-thread-libs=-lpthread
./configure --prefix=/usr/local/mysql --enable-thread-safe-client --with-named-thread-libs=-lpthread
@end example
On Irix 6.5.11 with native Irix C and C++ compilers ver. 7.3.1.2, the
@@ -41997,11 +41997,11 @@ To make @code{mysql_real_connect()} thread safe, you must recompile the
client library with this command:
@example
shell> ./configure --with-thread-safe-client
shell> ./configure --enable-thread-safe-client
@end example
This will create a thread-safe client library @code{libmysqlclient_r}.
@code{--with-thread-safe-client}.  This library is thread safe per
@code{--enable-thread-safe-client}.  This library is thread safe per
connection.  You can let two threads share the same connection as long
as you do the following:
@@ -46853,6 +46853,9 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.43
@itemize @bullet
@item
Fixed problem with @code{BDB} tables and @code{UNIQUE} columns defined
as @code{NULL}.
@item
Fixed problem with @code{myisampack} when using pre-space filled CHAR columns.
@item
Applied patch from Yuri Dario for OS2.
+5 −0
Original line number Diff line number Diff line
@@ -527,3 +527,8 @@ a b
id	id2	id3	dummy1
id	id2	id3	dummy1
NULL	NULL	NULL	NULL
i	p	s
00000000-e6c4ddeaa6-003b8-83458387	programs/xxxxxxxx.wmv	00000000-e6c4ddeb32-003bc-83458387
INFO_NOTE
INFO_NOTE
INFO_NOTE
+19 −0
Original line number Diff line number Diff line
@@ -748,3 +748,22 @@ SELECT t1.* FROM t1 WHERE id IN (1);
SELECT t1.* FROM t2 left outer join t1 on (t1.id=t2.id);
delete from t1 where id3 >= 0 and id3 <= 0;
drop table t1,t2;

#
# Test problems with NULL
#

CREATE TABLE t1 (i varchar(48) NOT NULL default '', p varchar(255) default NULL,s varchar(48) NOT NULL default '', PRIMARY KEY  (i), UNIQUE(p,s)) TYPE=BDB;
INSERT INTO t1 VALUES ('00000000-e6c4ddeaa6-003b8-83458387','programs/xxxxxxxx.wmv','00000000-e6c4ddeb32-003bc-83458387');
SELECT * FROM t1 WHERE p='programs/xxxxxxxx.wmv';
drop table t1;

#
# Test problem which gave error 'Can't find record in 't1''
#

CREATE TABLE t1 ( STR_DATE varchar(8) NOT NULL default '',INFO_NOTE varchar(200) default NULL,PRIMARY KEY  (STR_DATE) ) TYPE=BerkeleyDB;
select INFO_NOTE from t1 where STR_DATE = '20010610';
select INFO_NOTE from t1 where STR_DATE < '20010610';
select INFO_NOTE from t1 where STR_DATE > '20010610';
drop table t1;
+3 −5
Original line number Diff line number Diff line
@@ -365,12 +365,10 @@ berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key)
    {
      if (*new_key_ptr != *saved_key_ptr++)
	return ((int) *new_key_ptr - (int) saved_key_ptr[-1]);
      if (!*new_key_ptr++)
      {
      key_length--;
      if (!*new_key_ptr++)
	continue;
    }
    }
    if ((cmp=key_part->field->pack_cmp(new_key_ptr,saved_key_ptr,
				       key_part->length)))
      return cmp;
@@ -1399,7 +1397,7 @@ int ha_berkeley::index_read_idx(byte * buf, uint keynr, const byte * key,
  statistic_increment(ha_read_key_count,&LOCK_status);
  DBUG_ENTER("index_read_idx");
  current_row.flags=DB_DBT_REALLOC;
  active_index= -1;
  active_index= (uint) -1;
  DBUG_RETURN(read_row(key_file[keynr]->get(key_file[keynr], transaction,
				 pack_key(&last_key, keynr, key_buff, key,
					  key_len),
@@ -1504,7 +1502,7 @@ int ha_berkeley::index_first(byte * buf)
  statistic_increment(ha_read_first_count,&LOCK_status);
  bzero((char*) &row,sizeof(row));
  DBUG_RETURN(read_row(cursor->c_get(cursor, &last_key, &row, DB_FIRST),
		       (char*) buf, active_index, &row, &last_key, 0));
		       (char*) buf, active_index, &row, &last_key, 1));
}

int ha_berkeley::index_last(byte * buf)
+221 −0
Original line number Diff line number Diff line
/*  Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB
 *  This  is public domain and comes with NO WARRANTY of any kind
 *
 *  Ukrainian translation by Roman Festchook <roma@orta.zt.ua>
 *  Encoding:	KOI8-U
 *  Version:	13/09/2001 mysql-3.23.41
 */

"hashchk",
"isamchk",
"",
"",
"    '%-.64s' (: %d)",
"    '%-.64s' (: %d)",
"     '%-.64s'. (: %d)",
"     '%-.64s'.   դ",
"     '%-.64s'.    դ",
"     (   '%-.64s', : %d)",
"     (    '%-.64s', : %d)",
"   '%-.64s' (: %d)",
"     ϧ æ",
"    '%-.64s' (: %d)",
"     (: %d)",
"    (: %d)",
"  צ : '%-.64s' (: %d)",
"   : '%-.64s' (: %d)",
"    '%-.64s' (: %d)",
"     '%-.64s' (: %d)",
"  ͦ      æ '%-.64s'",
"  (%s). ,  צ  ͦ...",
"  ,    æ '%-.64s'",
"   '%-.64s' (: %d)",
"    '%-.64s' (: %d)",
"   '%-.64s'  '%-.64s' (: %d)",
"    '%-.64s' (: %d)",
"'%-.64s'    ͦ",
" ",
" '%-.64s'  դ  '%-.64s'",
"  %d צ  æ",
" æ '%-.64s'   æ Ԧ",
"    '%-.64s'",
" æ  ̦: '%-.64s'",
"    æ: '%-.64s'.   צ",
"    æ '%-.64s'; צ !",
" '%-.64s' Ԧ  ",
" 'Ԧ.      (Ҧ %d Ԧ)",
" 'Ԧ  .  ¦ ͦ    ",
" ˦  '%-.64s' (: %d)",
" '",
" 'Ԧ;  צ  mysqld  ˦ ۦ     '.  Φ,     'ulimit',   mysqld  ¦ 'Ԧ     ¦ ͦ Ц ",
"   '   ϧ ",
"צ  '",
"   : '%-.32s@%-.64s'    '%-.64s'",
"   : '%-.32s@%-.64s' ( : %s)",
"   ",
"צ ",
" '%-.64s'    ",
"צ   '%-.64s'",
" '%-.64s'  դ",
"צ  '%-.64s'",
" '%-.64s'  %-.64s  ",
"դ  ",
"צ  '%-.64s'  '%-.64s'",
"'%-.64s'    GROUP BY",
"    '%-.64s'",
" ڦ  Цަ æ    æ",
"˦ æ  Ц  ˦˦ ",
"' Ʀ '%-.100s' ",
" '  '%-.64s'",
" '  '%-.64s'",
"  '%-.64s'   %d",
"צ Ʀ  '%-.64s'",
"%s ¦ '%-.80s'  æ %d",
" ",
"Φ /Φ: '%-.64s'",
"צ     '%-.64s'",
"   ",
" ަ .   ¦ %d ަ",
"   .   ¦ %d ",
"  . ¦   %d",
"  '%-.64s'  դ  æ",
"BLOB  '%-.64s'      Φ    Ц æ",
"   '%-.64s' (max = %d).   BLOB",
"צ  æ;      ,      ",
"%s:   '!\n",
"%s:  \n",
"%s:   %d. !\n",
"%s:  \n",
"%s:   Ǧ %ld : '%-.32s'\n",
"   IP '",
" '%-.64s'  ,   Ц    CREATE INDEX. Ҧ  ",
" Ħ ̦.  æ",
"       BLOB.  'fields terminated by'",
" '%-.64s'    æ          Ӧ",
" '%-.80s'  դ",
"Ӧ: %ld  : %ld  : %ld  : %ld",
"Ӧ: %ld  ̦Ԧ: %ld",
"צ  .      ,   ڦ æ  Цդ Φ  ",
"   Ӧ æ   ALTER TABLE.    DROP TABLE",
"  DROP '%-.64s'. צ,   / դ",
"Ӧ: %ld  ̦Ԧ: %ld  : %ld",
"INSERT TABLE '%-.64s'    ̦ FROM TABLE",
"צ Ʀ Ǧ: %lu",
"   Ǧ %lu",
"  ",
"    %-.64s  SET",
"   Φ ' log- %-.64s.(1-999)\n",
" '%-.64s'  Ԧ  ,     ",
" '%-.64s'     LOCK TABLES",
" BLOB '%-.64s'      ",
"צ '   '%-.100s'",
"צ ' æ '%-.100s'",
" SELECT Ҧ   Ӧ, , ,    . צ  WHERE   SET OPTION SQL_BIG_SELECTS=1,    SELECT  צ",
"צ ",
"צ  '%-.64s'",
" ˦˦ Ҧ  '%-.64s'",
"   '%-.64s'",
"צ  '%-.64s'  %-.32s",
" '%-.64s'  צަ",
"  æ ",
" '%-.64s' դ ,   դ  æ Ӧ MySQL",
"     ",
" '%-.64s' ",
"צ  : '%-.64s'",
" . MySQL    %d   'Φ",
" æ",
" . ¦  ,   BLOB,  %d.  Ҧ  ˦ æ   BLOB",
" Ǧ :  : %ld  %ld.  'mysqld -O thread_stack=#'   ¦ ,  Ȧ",
" Φ  OUTER JOIN. צ  ON",
" '%-.64s' դ  UNIQUE  INDEX,     NOT NULL",
"   æ '%-.64s'",
"  Φæ̦ æ '%-.64s'; %-.80s",
"   Ԧ  Ħ ¦̦",
"æ '%-.64s'  դ",
"  צ Ħ ¦̦ '%-.64s' (: %d %-.64s)",
"   æ '%-.64s'  ¦̦æ'",
"æ '%-.64s'  ",
" '%-.64s'    ϧ ˦Ԧ  '.    'mysqladmin flush-hosts'",
" '%-.64s'   '    MySQL",
" դ MySQL  Φ ,     ͦ ̦",
" Φ       ڦ  mysql,   צ ͦ  ",
"   צצ Ӧ  æ ",
"Ӧ צצ: %ld  ͦ: %ld  : %ld",
"    Ǧ ( %d).      ',   æ  ϧ  -    ",
"˦ æ  Ц  ˦˦   æ %ld",
"  צ : '%-.64s'",
"   NULL",
"  '%-.64s' צ  ",
"ͦ GROUP æ (MIN(),MAX(),COUNT()...)   GROUP   ,    GROUP BY",
"     '%-.32s'   '%-.64s'",
"%-.16s   : '%-.32s@%-.64s'  æ '%-.64s'",
"%-.16s   : '%-.32s@%-.64s'   '%-.64s'  æ '%-.64s'",
" GRANT/REVOKE .  æ  , ˦   .",
" host  user  GRANT ",
" '%-.64s.%-.64s'  դ",
"     '%-.32s'   '%-.64s'  æ '%-.64s'",
"     æ Ӧ MySQL",
"    Ӧ SQL",
"  INSERT DELAYED      æ %-.64s",
"  Ǧ դ",
" ' %ld   : '%-.64s' : '%-.32s' (%-.64s)",
"  ¦ Φ max_allowed_packet",
"    Φæ ",
"  צ fcntl()",
"    ",
"   Φæ ",
"   Φæ Ԧ",
"   Φæ Ԧ",
"   Φæ Ԧ",
"   Φæ Ԧ",
"   Φ max_allowed_packet",
"  æ  Цդ BLOB/TEXT æ",
"  æ  Цդ AUTO_INCREMENT æ",
"INSERT DELAYED       '%-.64s',      LOCK TABLES",
"צ '  '%-.100s'",
" ڦ æ     '%-.64s'",
"æ  MERGE TABLE  Ҧ ",
"    æ '%-.64s',    ΦԦ",
" BLOB '%-.64s'   Φ     ",
"Ӧ  PRIMARY KEY Φ  NOT NULL;   դ NULL  ަ,  UNIQUE",
"   ¦ Φ Φ æ",
"  æ դ  ",
" Ӧ MySQL  Ц  Ц RAID",
"  ͦ         WHERE,  դ KEY ",
" '%-.64s'  դ  æ '%-.64s'",
"  צ ",
"ڦ æ  Ц צ/צ",
"       æ",
"  %d Ц  COMMIT",
"  %d Ц  ROLLBACK",
"  %d Ц  FLUSH_LOGS",
"  %d Ц  CHECKPOINT",
" ' %ld   : '%-.64s' : '%-.32s' : `%-.64s' (%-.64s)",
"  æ  Цդ ¦  æ",
"̦æ  ,    RESET MASTER",
" צ  ϧ æ '%-.64s'",
" צ : '%-.64s'",
"   צ ",
"    ",
"   FULLTEXT ,  צצ ̦ æ",
"     ,     դ æ",
"צ  ͦ '%-.64'",
" '%-.64s'   ڦ   Ҧ צ",
" '%-.64s'   ڦ  Τ (?) צ  ",
": ˦ æΦ ͦ     ",
"æ     ¦ Φ 'max_binlog_cache_size' Ԧ  Ҧ. ¦  ͦ mysqld   ',
"æ       Ц,   SLAVE STOP",
"æ   Ц, Ʀ Ц   SLAVE START",
"  Ʀ  Ц,    ̦ Ʀæ   CHANGE MASTER TO",
"  Φæ̦  æ , צ    master.info",
"   Ц Ǧ, צ Φ ",
" %-.64s   ¦ Φ 'max_user_connections'  '",
"    ڦ   SET",
" ަ  ",
" ˦˦   ͦ   æ",
"     ڦ æ READ UNCOMMITTED",
"DROP DATABASE    Ǧ  Ц   ",
"CREATE DATABASE    Ǧ  Ц   ",
"   %s",
" %-.32s@%-.64s     ަ",
"Incorrect table definition; All MERGE tables must be in the same database",