Commit bd98eb61 authored by unknown's avatar unknown

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


Docs/manual.texi:
  Fixed wrong reference to --with-thread-safe-client
mysql-test/r/bdb.result:
  New tests
mysql-test/t/bdb.test:
  New tests
parent c88dd9b2
...@@ -8218,7 +8218,7 @@ and that provides output about what is happening. ...@@ -8218,7 +8218,7 @@ and that provides output about what is happening.
@item @item
If your client programs are using threads, you need to also compile a If your client programs are using threads, you need to also compile a
thread-safe version of the MySQL client library with the 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 @code{libmysqlclient_r} library with which you should link your threaded
applications. @xref{Threaded clients}. applications. @xref{Threaded clients}.
...@@ -11899,7 +11899,7 @@ If you are compiling with @code{gcc}, you can use the following ...@@ -11899,7 +11899,7 @@ If you are compiling with @code{gcc}, you can use the following
@example @example
CC=gcc CXX=gcc CXXFLAGS=-O3 \ 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 @end example
On Irix 6.5.11 with native Irix C and C++ compilers ver. 7.3.1.2, the 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 ...@@ -41997,11 +41997,11 @@ To make @code{mysql_real_connect()} thread safe, you must recompile the
client library with this command: client library with this command:
@example @example
shell> ./configure --with-thread-safe-client shell> ./configure --enable-thread-safe-client
@end example @end example
This will create a thread-safe client library @code{libmysqlclient_r}. 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 connection. You can let two threads share the same connection as long
as you do the following: as you do the following:
...@@ -46853,6 +46853,9 @@ not yet 100% confident in this code. ...@@ -46853,6 +46853,9 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.43 @appendixsubsec Changes in release 3.23.43
@itemize @bullet @itemize @bullet
@item @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. Fixed problem with @code{myisampack} when using pre-space filled CHAR columns.
@item @item
Applied patch from Yuri Dario for OS2. Applied patch from Yuri Dario for OS2.
...@@ -527,3 +527,8 @@ a b ...@@ -527,3 +527,8 @@ a b
id id2 id3 dummy1 id id2 id3 dummy1
id id2 id3 dummy1 id id2 id3 dummy1
NULL NULL NULL NULL NULL NULL NULL NULL
i p s
00000000-e6c4ddeaa6-003b8-83458387 programs/xxxxxxxx.wmv 00000000-e6c4ddeb32-003bc-83458387
INFO_NOTE
INFO_NOTE
INFO_NOTE
...@@ -748,3 +748,22 @@ SELECT t1.* FROM t1 WHERE id IN (1); ...@@ -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); SELECT t1.* FROM t2 left outer join t1 on (t1.id=t2.id);
delete from t1 where id3 >= 0 and id3 <= 0; delete from t1 where id3 >= 0 and id3 <= 0;
drop table t1,t2; 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;
...@@ -365,12 +365,10 @@ berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key) ...@@ -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++) if (*new_key_ptr != *saved_key_ptr++)
return ((int) *new_key_ptr - (int) saved_key_ptr[-1]); return ((int) *new_key_ptr - (int) saved_key_ptr[-1]);
if (!*new_key_ptr++)
{
key_length--; key_length--;
if (!*new_key_ptr++)
continue; continue;
} }
}
if ((cmp=key_part->field->pack_cmp(new_key_ptr,saved_key_ptr, if ((cmp=key_part->field->pack_cmp(new_key_ptr,saved_key_ptr,
key_part->length))) key_part->length)))
return cmp; return cmp;
...@@ -1399,7 +1397,7 @@ int ha_berkeley::index_read_idx(byte * buf, uint keynr, const byte * key, ...@@ -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); statistic_increment(ha_read_key_count,&LOCK_status);
DBUG_ENTER("index_read_idx"); DBUG_ENTER("index_read_idx");
current_row.flags=DB_DBT_REALLOC; 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, DBUG_RETURN(read_row(key_file[keynr]->get(key_file[keynr], transaction,
pack_key(&last_key, keynr, key_buff, key, pack_key(&last_key, keynr, key_buff, key,
key_len), key_len),
...@@ -1504,7 +1502,7 @@ int ha_berkeley::index_first(byte * buf) ...@@ -1504,7 +1502,7 @@ int ha_berkeley::index_first(byte * buf)
statistic_increment(ha_read_first_count,&LOCK_status); statistic_increment(ha_read_first_count,&LOCK_status);
bzero((char*) &row,sizeof(row)); bzero((char*) &row,sizeof(row));
DBUG_RETURN(read_row(cursor->c_get(cursor, &last_key, &row, DB_FIRST), 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) int ha_berkeley::index_last(byte * buf)
......
/* 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",
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment