List:Commits« Previous MessageNext Message »
From:Sergei Golubchik Date:May 12 2009 4:41pm
Subject:bzr commit into mysql-6.0-runtime branch (serg:2762)
View as plain text  
#At file:///usr/home/serg/Abk/mysql/6.0-maria/ based on revid:serg@stripped

 2762 Sergei Golubchik	2009-05-12 [merge]
      merged

    removed:
      BUILD/compile-alpha-ccc
      BUILD/compile-alpha-cxx
      mysys/make-ccc
      regex/make-ccc
      storage/heap/make-ccc
      storage/maria/ma_ft_eval.c
      storage/maria/ma_ft_eval.h
      storage/maria/ma_ft_stem.c
      storage/maria/ma_ft_test1.c
      storage/maria/ma_ft_test1.h
      storage/myisam/ft_eval.c
      storage/myisam/ft_eval.h
      storage/myisam/ft_stem.c
      storage/myisam/ft_test1.c
      storage/myisam/ft_test1.h
      storage/myisam/make-ccc
      storage/myisammrg/make-ccc
      strings/make-ccc
    added:
      mysql-test/collections/mysql-6.0-runtime.push
      mysql-test/r/drop_debug.result
      mysql-test/r/log_state_bug33693.result
      mysql-test/t/drop_debug.test
      mysql-test/t/log_state_bug33693-master.opt
      mysql-test/t/log_state_bug33693.test
    modified:
      .bzr-mysql/default.conf
      BUILD/Makefile.am
      client/mysql.cc
      client/mysqltest.cc
      client/sql_string.cc
      include/lf.h
      include/maria.h
      include/my_pthread.h
      include/myisamchk.h
      mysql-test/r/log_state.result
      mysql-test/r/mysqltest.result
      mysql-test/r/parser.result
      mysql-test/suite/backup/r/backup_logs.result
      mysql-test/suite/backup/t/backup_logs.test
      mysql-test/t/log_state.test
      mysql-test/t/myisam-system.test
      mysql-test/t/mysqltest.test
      mysql-test/t/parser.test
      mysys/lf_alloc-pin.c
      mysys/lf_dynarray.c
      mysys/lf_hash.c
      mysys/my_pthread.c
      mysys/my_safehash.c
      mysys/my_safehash.h
      scripts/make_binary_distribution.sh
      scripts/make_win_bin_dist
      sql/log.cc
      sql/log_event.cc
      sql/mysql_priv.h
      sql/mysqld.cc
      sql/set_var.cc
      sql/sql_class.cc
      sql/sql_class.h
      sql/sql_db.cc
      sql/sql_show.cc
      sql/sql_string.cc
      sql/sql_table.cc
      sql/sql_yacc.yy
      sql/thr_malloc.cc
      sql/transaction.cc
      storage/falcon/IndexKey.cpp.save
      storage/maria/Makefile.am
      storage/myisam/CMakeLists.txt*
      storage/myisam/Makefile.am
      storage/myisam/ft_myisam.c
      strings/dtoa.c
=== modified file '.bzr-mysql/default.conf'
--- a/.bzr-mysql/default.conf	2009-05-07 14:10:24 +0000
+++ b/.bzr-mysql/default.conf	2009-05-12 16:41:11 +0000
@@ -1,5 +1,5 @@
 [MYSQL]
-tree_location = bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0
+tree_location = "bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0-runtime"
 post_commit_to = "commits@stripped"
 post_push_to = "commits@stripped"
-tree_name = "mysql-6.0" 
+tree_name = "mysql-6.0-runtime"

=== modified file 'BUILD/Makefile.am'
--- a/BUILD/Makefile.am	2009-01-07 10:58:33 +0000
+++ b/BUILD/Makefile.am	2009-04-06 23:03:28 +0000
@@ -24,8 +24,6 @@ EXTRA_DIST =		FINISH.sh \
 			check-cpu \
 			cleanup \
 			compile-alpha \
-			compile-alpha-ccc \
-			compile-alpha-cxx \
 			compile-alpha-debug \
 			compile-amd64-debug-max \
 			compile-amd64-debug-max-no-ndb \

=== removed file 'BUILD/compile-alpha-ccc'
--- a/BUILD/compile-alpha-ccc	2009-04-03 23:38:18 +0000
+++ b/BUILD/compile-alpha-ccc	1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
-#! /bin/sh
-
-/bin/rm -f */.deps/*.P */*.o
-make -k maintainer-clean
-/bin/rm -f */.deps/*.P */*.o
-/bin/rm -f config.cache mysql-*.tar.gz
-
-path=`dirname $0`
-. "$path/autorun.sh"
-
-CC=ccc CFLAGS="-fast -O3 -fomit-frame-pointer" CXX=g++ CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti -mcpu=ev6 -Wa,-mev6" CXXLDFLAGS='/usr/lib/compaq/libots-2.2.7/libots.so /usr/lib/compaq/cpml-5.0.0/libcpml_ev6.a' ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-thread-safe-client
-make
-rm */.deps/*
-make
-if [ $? = 0 ]
-then
-  rm */.deps/*
-  bin/mysqladmin shutdown
-  sur make install
-  if [ $? = 0 ]
-  then
-     scripts/make_binary_distribution
-  fi
-fi
-
-exit
-
-# This should give better performance by compiling many files at once, but
-# according to our benchmarks there isn't any real difference.
-
-pwd=`pwd`
-for i in */make-ccc
-do
-   cd `dirname $i`
-   make-ccc
-   cd $pwd
-done
-cd sql
-rm mysqld .deps/*.P
-make mysqld
-cd $pwd

=== removed file 'BUILD/compile-alpha-cxx'
--- a/BUILD/compile-alpha-cxx	2007-01-28 20:09:54 +0000
+++ b/BUILD/compile-alpha-cxx	1970-01-01 00:00:00 +0000
@@ -1,43 +0,0 @@
-#! /bin/sh
-
-/bin/rm -f */.deps/*.P */*.o
-make -k maintainer-clean
-/bin/rm -f */.deps/*.P */*.o
-/bin/rm -f */.deps/*.P config.cache storage/innobase/config.cache mysql-*.tar.gz
-
-path=`dirname $0`
-. "$path/autorun.sh"
-
-CC=ccc CFLAGS="-fast" CXX=cxx CXXFLAGS="-fast -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared --without-extra-tools --disable-dependency-tracking
-
-make -j2
-find . -name ".deps" | xargs rm -r 
-make
-if [ $? = 0 ]
-then
-  find . -name ".deps" | xargs rm -r 
-  bin/mysqladmin shutdown
-  sur make install
-  if [ $? = 0 ]
-  then
-     scripts/make_binary_distribution
-  fi
-  make test
-fi
-
-exit
-
-# This should give better performance by compiling many files at once, but
-# according to our benchmarks there isn't any real difference.
-
-pwd=`pwd`
-for i in */make-ccc
-do
-   cd `dirname $i`
-   make-ccc
-   cd $pwd
-done
-cd sql
-rm mysqld .deps/*.P
-make mysqld
-cd $pwd

=== modified file 'client/mysql.cc'
--- a/client/mysql.cc	2009-04-14 14:23:07 +0000
+++ b/client/mysql.cc	2009-05-11 17:58:07 +0000
@@ -55,7 +55,6 @@ static char *server_version= NULL;
 #define MAX_SERVER_ARGS               64
 
 void* sql_alloc(unsigned size);	     // Don't use mysqld alloc for these
-void sql_element_free(void *ptr);
 #include "sql_string.h"
 
 extern "C" {
@@ -4936,8 +4935,4 @@ void *sql_alloc(size_t Size)
   return my_malloc(Size,MYF(MY_WME));
 }
 
-void sql_element_free(void *ptr)
-{
-  my_free(ptr,MYF(0));
-}
 #endif /* EMBEDDED_LIBRARY */

=== modified file 'client/mysqltest.cc'
--- a/client/mysqltest.cc	2009-04-09 10:00:53 +0000
+++ b/client/mysqltest.cc	2009-05-11 17:58:07 +0000
@@ -282,6 +282,7 @@ enum enum_commands {
   Q_LIST_FILES_WRITE_FILE, Q_LIST_FILES_APPEND_FILE,
   Q_SEND_SHUTDOWN, Q_SHUTDOWN_SERVER,
   Q_RESULT_FORMAT_VERSION,
+  Q_MOVE_FILE,
 
   Q_UNKNOWN,			       /* Unknown command.   */
   Q_COMMENT,			       /* Comments, ignored. */
@@ -377,6 +378,7 @@ const char *command_names[]=
   "send_shutdown",
   "shutdown_server",
   "result_format",
+  "move_file",
 
   0
 };
@@ -1792,7 +1794,7 @@ void check_result()
           log_file.file_name(), reject_file, errno);
 
     show_diff(NULL, result_file_name, reject_file);
-    die(mess);
+    die("%s", mess);
     break;
   }
   default: /* impossible */
@@ -2943,6 +2945,42 @@ void do_copy_file(struct st_command *com
 
 /*
   SYNOPSIS
+  do_move_file
+  command	command handle
+
+  DESCRIPTION
+  move_file <from_file> <to_file>
+  Move <from_file> to <to_file>
+*/
+
+void do_move_file(struct st_command *command)
+{
+  int error;
+  static DYNAMIC_STRING ds_from_file;
+  static DYNAMIC_STRING ds_to_file;
+  const struct command_arg move_file_args[] = {
+    { "from_file", ARG_STRING, TRUE, &ds_from_file, "Filename to move from" },
+    { "to_file", ARG_STRING, TRUE, &ds_to_file, "Filename to move to" }
+  };
+  DBUG_ENTER("do_move_file");
+
+  check_command_args(command, command->first_argument,
+                     move_file_args,
+                     sizeof(move_file_args)/sizeof(struct command_arg),
+                     ' ');
+
+  DBUG_PRINT("info", ("Move %s to %s", ds_from_file.str, ds_to_file.str));
+  error= (my_rename(ds_from_file.str, ds_to_file.str,
+                    MYF(0)) != 0);
+  handle_command_error(command, error);
+  dynstr_free(&ds_from_file);
+  dynstr_free(&ds_to_file);
+  DBUG_VOID_RETURN;
+}
+
+
+/*
+  SYNOPSIS
   do_chmod_file
   command	command handle
 
@@ -7723,6 +7761,7 @@ int main(int argc, char **argv)
       case Q_CHANGE_USER: do_change_user(command); break;
       case Q_CAT_FILE: do_cat_file(command); break;
       case Q_COPY_FILE: do_copy_file(command); break;
+      case Q_MOVE_FILE: do_move_file(command); break;
       case Q_CHMOD_FILE: do_chmod_file(command); break;
       case Q_PERL: do_perl(command); break;
       case Q_RESULT_FORMAT_VERSION: do_result_format_version(command); break;

=== modified file 'client/sql_string.cc'
--- a/client/sql_string.cc	2009-03-24 14:24:44 +0000
+++ b/client/sql_string.cc	2009-04-24 10:04:14 +0000
@@ -34,7 +34,6 @@
 */
 
 extern void sql_alloc(size_t size);
-extern void sql_element_free(void *ptr);
 
 #include "sql_string.h"
 

=== modified file 'include/lf.h'
--- a/include/lf.h	2009-04-23 07:12:13 +0000
+++ b/include/lf.h	2009-04-30 21:09:04 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== modified file 'include/maria.h'
--- a/include/maria.h	2009-02-13 16:30:54 +0000
+++ b/include/maria.h	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== modified file 'include/my_pthread.h'
--- a/include/my_pthread.h	2009-03-02 21:52:37 +0000
+++ b/include/my_pthread.h	2009-05-11 17:58:07 +0000
@@ -627,7 +627,6 @@ extern my_bool my_thread_init(void);
 extern void my_thread_end(void);
 extern const char *my_thread_name(void);
 extern my_thread_id my_thread_dbug_id(void);
-extern int pthread_no_free(void *);
 extern int pthread_dummy(int);
 
 /* All thread specific variables are in the following struct */

=== modified file 'include/myisamchk.h'
--- a/include/myisamchk.h	2008-07-24 11:33:35 +0000
+++ b/include/myisamchk.h	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== added file 'mysql-test/collections/mysql-6.0-runtime.push'
--- a/mysql-test/collections/mysql-6.0-runtime.push	1970-01-01 00:00:00 +0000
+++ b/mysql-test/collections/mysql-6.0-runtime.push	2009-04-22 09:22:10 +0000
@@ -0,0 +1,8 @@
+perl mysql-test-run.pl --comment=n_mix                            --mysqld=--binlog-format=mixed                                                --suite=main,backup,backup_engines,backup_ptr,binlog,federated,rpl,maria  --experimental=collections/default.experimental --timer --force 
+perl mysql-test-run.pl --comment=ps_row            --ps-protocol  --mysqld=--binlog-format=row                                                  --suite=main,backup,backup_engines,backup_ptr,binlog,federated,rpl,maria  --experimental=collections/default.experimental --timer --force 
+perl mysql-test-run.pl --comment=embedded          --embedded                                                                                   --suite=main,backup,backup_engines,backup_ptr,binlog,federated,rpl,maria  --experimental=collections/default.experimental --timer --force 
+perl mysql-test-run.pl --comment=rpl_binlog_row                   --mysqld=--binlog-format=row                                                  --suite=rpl,binlog                                                        --experimental=collections/default.experimental --timer --force 
+perl mysql-test-run.pl --comment=funcs_1                                                                                                        --suite=funcs_1                                                           --experimental=collections/default.experimental --timer --force 
+perl mysql-test-run.pl --comment=ps_stm_threadpool --ps-protocol  --mysqld=--binlog-format=statement --mysqld=--thread-handling=pool-of-threads --suite=main,backup,backup_engines,backup_ptr,binlog,federated,rpl,maria  --experimental=collections/default.experimental --timer --force 
+perl mysql-test-run.pl --comment=falcon                                                                                                         --suite=falcon                                                            --experimental=collections/default.experimental --timer --force 
+

=== added file 'mysql-test/r/drop_debug.result'
--- a/mysql-test/r/drop_debug.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/drop_debug.result	2009-05-07 11:15:54 +0000
@@ -0,0 +1,25 @@
+
+# --
+# -- Bug#43138: DROP DATABASE failure does not clean up message list.
+# --
+
+DROP DATABASE IF EXISTS mysql_test;
+
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(a INT);
+CREATE TABLE mysql_test.t2(b INT);
+CREATE TABLE mysql_test.t3(c INT);
+
+SET SESSION DEBUG = "+d,bug43138";
+
+DROP DATABASE mysql_test;
+Warnings:
+Error	1051	Unknown table 't1'
+Error	1051	Unknown table 't2'
+Error	1051	Unknown table 't3'
+
+SET SESSION DEBUG = "-d,bug43138";
+
+# --
+# -- End of Bug#43138.
+# --

=== modified file 'mysql-test/r/log_state.result'
--- a/mysql-test/r/log_state.result	2009-01-26 16:32:29 +0000
+++ b/mysql-test/r/log_state.result	2009-03-31 16:47:35 +0000
@@ -311,6 +311,30 @@ SET @@global.general_log_file = @old_gen
 SET @@global.slow_query_log = @old_slow_query_log;
 SET @@global.slow_query_log_file = @old_slow_query_log_file;
 End of 5.1 tests
+
+# --
+# -- Bug#38124: "general_log_file" variable silently unset when
+# --             using expression
+# --
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file INTO @my_glf;
+SET GLOBAL general_log_file = 'BUG38124.LOG';
+SELECT @@general_log_file;
+@@general_log_file
+BUG38124.LOG
+SET GLOBAL general_log_file = concat('BUG38124-2.LOG');
+SELECT @@general_log_file;
+@@general_log_file
+BUG38124-2.LOG
+SET GLOBAL general_log_file = substr('BUG38124-2.LOG',3,6);
+SELECT @@general_log_file;
+@@general_log_file
+G38124
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file = @my_glf;
+@@general_log_file = @my_glf
+1
+SET GLOBAL general_log_file = @old_general_log_file;
 # Close connection con1
 SET global general_log = @old_general_log;
 SET global general_log_file = @old_general_log_file;

=== added file 'mysql-test/r/log_state_bug33693.result'
--- a/mysql-test/r/log_state_bug33693.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/log_state_bug33693.result	2009-04-01 18:00:07 +0000
@@ -0,0 +1,3 @@
+SELECT INSTR(@@general_log_file, 'MYSQLTEST_VARDIR/run');;
+INSTR(@@general_log_file, 'MYSQLTEST_VARDIR/run')
+0

=== modified file 'mysql-test/r/mysqltest.result'
--- a/mysql-test/r/mysqltest.result	2009-03-06 20:33:52 +0000
+++ b/mysql-test/r/mysqltest.result	2009-04-01 08:16:35 +0000
@@ -545,6 +545,8 @@ mysqltest: At line 1: Failed to open fil
 mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists'
 mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file'
 mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file'
+mysqltest: At line 1: Missing required argument 'from_file' to command 'move_file'
+mysqltest: At line 1: Missing required argument 'to_file' to command 'move_file'
 mysqltest: At line 1: Missing required argument 'mode' to command 'chmod'
 mysqltest: At line 1: You must write a 4 digit octal number for mode
 mysqltest: At line 1: You must write a 4 digit octal number for mode

=== modified file 'mysql-test/r/parser.result'
--- a/mysql-test/r/parser.result	2009-04-17 20:33:59 +0000
+++ b/mysql-test/r/parser.result	2009-05-11 17:58:07 +0000
@@ -623,10 +623,43 @@ UPDATE t3 SET a4={d '1789-07-14'} WHERE 
 SELECT a1, a4 FROM t2 WHERE a4 LIKE {fn UCASE('1789-07-14')};
 a1	a4
 DROP TABLE t1, t2, t3;
+#
+# End of 5.1 tests
+#
 BACKUP DATABASE *, test to 'broken.bak';
 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' test to 'broken.bak'' at line 1
 BACKUP DATABASE *, db1, db2, db3 to 'broken.bak';
 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' db1, db2, db3 to 'broken.bak'' at line 1
-#
-# End of 5.1 tests
-#
+# Should use myisam
+create logfile group ndb_lg1 add undofile 'ndb_undo1' initial_size=32M;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+create logfile group ndb_lg1 add undofile 'ndb_undo1' engine=myisam;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+create logfile group ndb_lg1 add undofile 'ndb_undo1';
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+create tablespace ndb_ts1 add datafile 'ndb_ts1.dat' use logfile group ndb_lg1 engine=myisam initial_size=32M;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+create tablespace ndb_ts1 add datafile 'ndb_ts1.dat' use logfile group ndb_lg1 engine=myisam;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+create tablespace ndb_ts1 add datafile 'ndb_ts1.dat' use logfile group ndb_lg1;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+alter logfile group ndb_lg1 add undofile 'ndb_undo1' wait;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+alter logfile group ndb_lg1 add undofile 'ndb_undo1' engine=myisam;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+alter logfile group ndb_lg1 add undofile 'ndb_undo1';
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+alter tablespace ndb_ts1 add datafile 'ndb_ts1.dat' initial_size=32M;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+alter tablespace ndb_ts1 add datafile 'ndb_ts1.dat' engine=myisam;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+alter tablespace ndb_ts1 add datafile 'ndb_ts1.dat';
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+drop logfile group ndb_lg1 engine=myisam;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+drop logfile group ndb_lg1;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+drop tablespace ndb_ts1 engine=myisam;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
+drop tablespace ndb_ts1;
+ERROR HY000: Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'

=== modified file 'mysql-test/suite/backup/r/backup_logs.result'
--- a/mysql-test/suite/backup/r/backup_logs.result	2009-02-26 22:19:09 +0000
+++ b/mysql-test/suite/backup/r/backup_logs.result	2009-04-30 16:53:50 +0000
@@ -367,9 +367,9 @@ Attempt to set the backup log paths to a
 
 SET global max_allowed_packet=1024*100;
 
-Now attempt to set the backup_progress_log_file to 512 characters.
+Now attempt to set the backup_progress_log_file to 255 characters.
 
-SET @@global.backup_progress_log_file = repeat('a',512);
+SET @@global.backup_progress_log_file = repeat('a',255);
 
 Now attempt to set the backup_progress_log_file to 513 characters.
 
@@ -382,9 +382,9 @@ SET @@global.backup_progress_log_file = 
 ERROR HY000: The path specified for backup_progress_log_file is too long.
 SET @@global.backup_progress_log_file = DEFAULT;
 
-Now attempt to set the backup_history_log_file to 512 characters.
+Now attempt to set the backup_history_log_file to 255 characters.
 
-SET @@global.backup_history_log_file = repeat('a',512);
+SET @@global.backup_history_log_file = repeat('a',255);
 
 Now attempt to set the backup_history_log_file to 513 characters.
 

=== modified file 'mysql-test/suite/backup/t/backup_logs.test'
--- a/mysql-test/suite/backup/t/backup_logs.test	2009-03-09 14:00:03 +0000
+++ b/mysql-test/suite/backup/t/backup_logs.test	2009-04-30 16:53:50 +0000
@@ -479,9 +479,9 @@ BACKUP DATABASE backup_logs to 'backup_l
 SET global max_allowed_packet=1024*100;
 
 --echo
---echo Now attempt to set the backup_progress_log_file to 512 characters.
+--echo Now attempt to set the backup_progress_log_file to 255 characters.
 --echo
-SET @@global.backup_progress_log_file = repeat('a',512);
+SET @@global.backup_progress_log_file = repeat('a',255);
 
 --echo
 --echo Now attempt to set the backup_progress_log_file to 513 characters.
@@ -497,9 +497,9 @@ SET @@global.backup_progress_log_file = 
 SET @@global.backup_progress_log_file = DEFAULT;
 
 --echo
---echo Now attempt to set the backup_history_log_file to 512 characters.
+--echo Now attempt to set the backup_history_log_file to 255 characters.
 --echo
-SET @@global.backup_history_log_file = repeat('a',512);
+SET @@global.backup_history_log_file = repeat('a',255);
 
 --echo
 --echo Now attempt to set the backup_history_log_file to 513 characters.

=== added file 'mysql-test/t/drop_debug.test'
--- a/mysql-test/t/drop_debug.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/drop_debug.test	2009-05-07 11:15:54 +0000
@@ -0,0 +1,38 @@
+# 
+# DROP-related tests which execution requires debug server.
+#
+--source include/have_debug.inc
+
+###########################################################################
+--echo
+--echo # --
+--echo # -- Bug#43138: DROP DATABASE failure does not clean up message list.
+--echo # --
+--echo
+
+--disable_warnings
+DROP DATABASE IF EXISTS mysql_test;
+--enable_warnings
+
+--echo
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(a INT);
+CREATE TABLE mysql_test.t2(b INT);
+CREATE TABLE mysql_test.t3(c INT);
+
+--echo
+SET SESSION DEBUG = "+d,bug43138";
+
+--echo
+--sorted_result
+DROP DATABASE mysql_test;
+
+--echo
+SET SESSION DEBUG = "-d,bug43138";
+
+--echo
+--echo # --
+--echo # -- End of Bug#43138.
+--echo # --
+
+###########################################################################

=== modified file 'mysql-test/t/log_state.test'
--- a/mysql-test/t/log_state.test	2009-01-26 16:32:29 +0000
+++ b/mysql-test/t/log_state.test	2009-04-01 18:00:07 +0000
@@ -1,16 +1,5 @@
 ### t/log_state.test ###
 #
-# This test suffers from server
-# Bug#38124 "general_log_file" variable silently unset when using expression
-# In short:
-#    SET GLOBAL general_log_file = @<whatever>
-#    SET GLOBAL slow_query_log = @<whatever>
-# cause that the value of these server system variables is set to default
-# instead of the assigned values. There comes no error message or warning.
-# If this bug is fixed please
-# 1. try this test with "let $fixed_bug38124 = 0;"
-# 2. remove all workarounds if 1. was successful.
-let $fixed_bug38124 = 0;
 
 --source include/not_embedded.inc
 --source include/have_csv.inc
@@ -166,16 +155,6 @@ SET @@global.general_log = @old_general_
 SET @@global.general_log_file = @old_general_log_file;
 SET @@global.slow_query_log = @old_slow_query_log;
 SET @@global.slow_query_log_file = @old_slow_query_log_file;
-if(!$fixed_bug38124)
-{
-   --disable_query_log
-   let $my_var = `SELECT @old_general_log_file`;
-   eval SET @@global.general_log_file = '$my_var';
-   let $my_var = `SELECT @old_slow_query_log_file`;
-   eval SET @@global.slow_query_log_file = '$my_var';
-   --enable_query_log
-}
-
 
 ###########################################################################
 
@@ -278,15 +257,6 @@ SET GLOBAL slow_query_log_file= NULL;
 # Reset to initial values in case a setting above was successful.
 SET GLOBAL general_log_file= @old_general_log_file;
 SET GLOBAL slow_query_log_file= @old_slow_query_log_file;
-if(!$fixed_bug38124)
-{
-   --disable_query_log
-   let $my_var = `SELECT @old_general_log_file`;
-   eval SET @@global.general_log_file = '$my_var';
-   let $my_var = `SELECT @old_slow_query_log_file`;
-   eval SET @@global.slow_query_log_file = '$my_var';
-   --enable_query_log
-}
 
 ###########################################################################
 
@@ -308,15 +278,6 @@ show variables like 'slow_query_log_file
 --echo
 SET GLOBAL general_log_file = @old_general_log_file;
 SET GLOBAL slow_query_log_file = @old_slow_query_log_file;
-if(!$fixed_bug38124)
-{
-   --disable_query_log
-   let $my_var = `SELECT @old_general_log_file`;
-   eval SET @@global.general_log_file = '$my_var';
-   let $my_var = `SELECT @old_slow_query_log_file`;
-   eval SET @@global.slow_query_log_file = '$my_var';
-   --enable_query_log
-}
 
 --echo
 --echo # -- End of Bug#32748.
@@ -352,19 +313,43 @@ SET @@global.general_log = @old_general_
 SET @@global.general_log_file = @old_general_log_file;
 SET @@global.slow_query_log = @old_slow_query_log;
 SET @@global.slow_query_log_file = @old_slow_query_log_file;
-if(!$fixed_bug38124)
-{
-   --disable_query_log
-   let $my_var = `SELECT @old_general_log_file`;
-   eval SET @@global.general_log_file = '$my_var';
-   let $my_var = `SELECT @old_slow_query_log_file`;
-   eval SET @@global.slow_query_log_file = '$my_var';
-   --enable_query_log
-}
-
 
 --echo End of 5.1 tests
 
+
+###########################################################################
+
+--echo
+--echo # --
+--echo # -- Bug#38124: "general_log_file" variable silently unset when
+--echo # --             using expression
+--echo # --
+
+# Store away the special DEFAULT value so we
+# can compare it later, then try to set the
+# general_log_file using different functions
+# and expressions.
+
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file INTO @my_glf;
+
+SET GLOBAL general_log_file = 'BUG38124.LOG';
+SELECT @@general_log_file;
+
+SET GLOBAL general_log_file = concat('BUG38124-2.LOG');
+SELECT @@general_log_file;
+
+SET GLOBAL general_log_file = substr('BUG38124-2.LOG',3,6);
+SELECT @@general_log_file;
+
+SET GLOBAL general_log_file = DEFAULT;
+SELECT @@general_log_file = @my_glf;
+
+
+## Reset to initial values
+SET GLOBAL general_log_file = @old_general_log_file;
+
+
 --enable_ps_protocol
 
 #
@@ -381,17 +366,7 @@ SET global general_log = @old_general_lo
 SET global general_log_file = @old_general_log_file;
 SET global slow_query_log = @old_slow_query_log;
 SET global slow_query_log_file = @old_slow_query_log_file;
-if(!$fixed_bug38124)
-{
-   --disable_query_log
-   let $my_var = `SELECT @old_general_log_file`;
-   eval SET @@global.general_log_file = '$my_var';
-   let $my_var = `SELECT @old_slow_query_log_file`;
-   eval SET @@global.slow_query_log_file = '$my_var';
-   --enable_query_log
-}
 
-# Remove the log files that was created in the "default location"
+# Remove the log file that was created in the "default location"
 # i.e var/run
---remove_file $MYSQLTEST_VARDIR/run/mysqld.log
 --remove_file $MYSQLTEST_VARDIR/tmp/log.master

=== added file 'mysql-test/t/log_state_bug33693-master.opt'
--- a/mysql-test/t/log_state_bug33693-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/log_state_bug33693-master.opt	2009-04-01 18:00:07 +0000
@@ -0,0 +1 @@
+--pid-file=$MYSQLTEST_VARDIR/run/mysqld.1.pid --log=

=== added file 'mysql-test/t/log_state_bug33693.test'
--- a/mysql-test/t/log_state_bug33693.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/log_state_bug33693.test	2009-04-01 18:00:07 +0000
@@ -0,0 +1,18 @@
+### t/log_state_bug33693.test
+#
+# Regression test for bug #33693
+#   "general log name and location depend on PID 
+#    file, not on predefined values"
+#
+# The server is started with a hard-coded 
+# PID file in the $MYSQLTEST_VARDIR/run
+# directory, and an unspecified general log
+# file name.
+#
+# The correct result should show the log file to 
+# rest in the database directory. Unfixed, the 
+# log file will be in the same directory as the
+# PID.
+
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval SELECT INSTR(@@general_log_file, '$MYSQLTEST_VARDIR/run');

=== modified file 'mysql-test/t/myisam-system.test'
--- a/mysql-test/t/myisam-system.test	2007-12-12 17:19:24 +0000
+++ b/mysql-test/t/myisam-system.test	2009-04-30 15:31:30 +0000
@@ -12,11 +12,11 @@ let $MYSQLD_DATADIR= `select @@datadir`;
 drop table if exists t1;
 create table t1 (a int) engine=myisam;
 --remove_file $MYSQLD_DATADIR/test/t1.MYI
---error 1051,6
+--error ER_BAD_TABLE_ERROR,6
 drop table t1;
 create table t1 (a int) engine=myisam;
 --remove_file $MYSQLD_DATADIR/test/t1.MYD
---error 1105,6,29
+--error ER_BAD_TABLE_ERROR,6,29
 drop table t1;
---error 1051
+--error ER_BAD_TABLE_ERROR
 drop table t1;

=== modified file 'mysql-test/t/mysqltest.test'
--- a/mysql-test/t/mysqltest.test	2009-03-06 20:33:52 +0000
+++ b/mysql-test/t/mysqltest.test	2009-04-01 08:16:35 +0000
@@ -1780,6 +1780,56 @@ remove_file $MYSQLTEST_VARDIR/tmp/file2.
 --error 1
 --exec echo "copy_file from_file;" | $MYSQL_TEST 2>&1
 
+
+# ----------------------------------------------------------------------------
+# test for move_file
+# ----------------------------------------------------------------------------
+
+# - Check that if source file does not exist, nothing will be created.
+
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/file1.tmp;
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/file2.tmp;
+--error 1
+move_file $MYSQLTEST_VARDIR/tmp/file1.tmp $MYSQLTEST_VARDIR/tmp/file2.tmp;
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/file1.tmp;
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/file2.tmp;
+
+# - Check that if source file exists, everything works properly.
+
+--write_file $MYSQLTEST_VARDIR/tmp/file1.tmp
+file1
+EOF
+
+move_file $MYSQLTEST_VARDIR/tmp/file1.tmp $MYSQLTEST_VARDIR/tmp/file2.tmp;
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/file1.tmp;
+file_exists $MYSQLTEST_VARDIR/tmp/file2.tmp;
+
+# - Check that if destination file exists, everything works properly.
+#   (file2.tmp exists from the previous check; file1.tmp needs to be created)
+
+--write_file $MYSQLTEST_VARDIR/tmp/file1.tmp
+file1
+EOF
+
+move_file $MYSQLTEST_VARDIR/tmp/file1.tmp $MYSQLTEST_VARDIR/tmp/file2.tmp;
+--error 1
+file_exists $MYSQLTEST_VARDIR/tmp/file1.tmp;
+file_exists $MYSQLTEST_VARDIR/tmp/file2.tmp;
+remove_file $MYSQLTEST_VARDIR/tmp/file2.tmp;
+
+# - Check usage.
+
+--error 1
+--exec echo "move_file ;" | $MYSQL_TEST 2>&1
+
+--error 1
+--exec echo "move_file from_file;" | $MYSQL_TEST 2>&1
+
 # ----------------------------------------------------------------------------
 # test for chmod
 # ----------------------------------------------------------------------------

=== modified file 'mysql-test/t/parser.test'
--- a/mysql-test/t/parser.test	2009-04-17 20:33:59 +0000
+++ b/mysql-test/t/parser.test	2009-05-11 17:58:07 +0000
@@ -754,6 +754,10 @@ UPDATE t3 SET a4={d '1789-07-14'} WHERE 
 SELECT a1, a4 FROM t2 WHERE a4 LIKE {fn UCASE('1789-07-14')};
 DROP TABLE t1, t2, t3;
 
+--echo #
+--echo # End of 5.1 tests
+--echo #
+
 #
 # Bug#31765 (BACKUP DATABASE broken syntax)
 #
@@ -764,6 +768,46 @@ BACKUP DATABASE *, test to 'broken.bak';
 --error ER_PARSE_ERROR
 BACKUP DATABASE *, db1, db2, db3 to 'broken.bak';
 
---echo #
---echo # End of 5.1 tests
---echo #
+#
+# Bug#31293 - Incorrect parser errors for create/alter/drop logfile group/tablespace
+#
+
+--echo # Should use myisam
+
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+create logfile group ndb_lg1 add undofile 'ndb_undo1' initial_size=32M; 
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+create logfile group ndb_lg1 add undofile 'ndb_undo1' engine=myisam;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+create logfile group ndb_lg1 add undofile 'ndb_undo1';
+
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+create tablespace ndb_ts1 add datafile 'ndb_ts1.dat' use logfile group ndb_lg1 engine=myisam initial_size=32M;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+create tablespace ndb_ts1 add datafile 'ndb_ts1.dat' use logfile group ndb_lg1 engine=myisam;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+create tablespace ndb_ts1 add datafile 'ndb_ts1.dat' use logfile group ndb_lg1;
+
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+alter logfile group ndb_lg1 add undofile 'ndb_undo1' wait;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+alter logfile group ndb_lg1 add undofile 'ndb_undo1' engine=myisam;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+alter logfile group ndb_lg1 add undofile 'ndb_undo1';
+
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+alter tablespace ndb_ts1 add datafile 'ndb_ts1.dat' initial_size=32M;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+alter tablespace ndb_ts1 add datafile 'ndb_ts1.dat' engine=myisam;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+alter tablespace ndb_ts1 add datafile 'ndb_ts1.dat';
+
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+drop logfile group ndb_lg1 engine=myisam;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+drop logfile group ndb_lg1;
+
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+drop tablespace ndb_ts1 engine=myisam;
+-- error ER_ILLEGAL_HA_CREATE_OPTION
+drop tablespace ndb_ts1;

=== modified file 'mysys/lf_alloc-pin.c'
--- a/mysys/lf_alloc-pin.c	2009-03-31 15:30:19 +0000
+++ b/mysys/lf_alloc-pin.c	2009-04-23 21:17:43 +0000
@@ -3,8 +3,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== modified file 'mysys/lf_dynarray.c'
--- a/mysys/lf_dynarray.c	2008-01-10 12:21:53 +0000
+++ b/mysys/lf_dynarray.c	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== modified file 'mysys/lf_hash.c'
--- a/mysys/lf_hash.c	2009-02-23 11:55:35 +0000
+++ b/mysys/lf_hash.c	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== removed file 'mysys/make-ccc'
--- a/mysys/make-ccc	2006-09-15 05:29:44 +0000
+++ b/mysys/make-ccc	1970-01-01 00:00:00 +0000
@@ -1,4 +0,0 @@
-rm -f .deps/* raid.o mf_iocache.o libmysys.a
-ccc -DDEFAULT_BASEDIR="\"/usr/local/mysql\"" -DDATADIR="\"/usr/local/mysql/var\"" -DHAVE_CONFIG_H -I./../include -I../include -I.. -DDBUG_OFF -fast -O3 -fomit-frame-pointer -c array.c checksum.c default.c errors.c getopt.c getopt1.c getvar.c hash.c list.c mf_brkhant.c mf_cache.c mf_casecnv.c mf_dirname.c mf_fn_ext.c mf_format.c mf_getdate.c mf_keycache.c mf_loadpath.c mf_pack.c mf_pack2.c mf_path.c mf_qsort.c mf_qsort2.c mf_radix.c mf_reccache.c mf_same.c mf_sort.c mf_soundex.c mf_stripp.c mf_unixpath.c mf_wcomp.c mf_wfile.c mulalloc.c my_alarm.c my_alloc.c my_append.c my_chsize.c my_clock.c my_compress.c my_copy.c my_create.c my_delete.c my_div.c my_error.c my_fopen.c my_fstream.c my_getwd.c my_init.c my_lib.c my_lockmem.c my_malloc.c my_messnc.c my_mkdir.c my_net.c my_once.c my_open.c my_pread.c my_pthread.c my_quick.c my_read.c my_realloc.c my_redel.c my_rename.c my_seek.c my_static.c my_tempnam.c my_thr_init.c my_write.c ptr_cmp.c queues.c safemalloc.c string.c thr_alarm.c thr_lock.c thr_mutex.c thr_rwlock.c tree.c typelib.c
-make raid.o mf_iocache.o my_lock.o
-ar -cr libmysys.a array.o raid.o mf_iocache.o my_lock.o

=== modified file 'mysys/my_pthread.c'
--- a/mysys/my_pthread.c	2008-12-04 21:02:09 +0000
+++ b/mysys/my_pthread.c	2009-04-06 18:36:46 +0000
@@ -494,11 +494,6 @@ int my_pthread_mutex_trylock(pthread_mut
 
 /* Some help functions */
 
-int pthread_no_free(void *not_used __attribute__((unused)))
-{
-  return 0;
-}
-
 int pthread_dummy(int ret)
 {
   return ret;

=== modified file 'mysys/my_safehash.c'
--- a/mysys/my_safehash.c	2009-01-27 02:08:48 +0000
+++ b/mysys/my_safehash.c	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== modified file 'mysys/my_safehash.h'
--- a/mysys/my_safehash.h	2007-07-02 17:45:15 +0000
+++ b/mysys/my_safehash.h	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== removed file 'regex/make-ccc'
--- a/regex/make-ccc	2000-07-31 19:29:14 +0000
+++ b/regex/make-ccc	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-ccc -DHAVE_CONFIG_H -I. -I. -I.. -I./../include -I../include    -O -DDBUG_OFF -fast -O3 -c regerror.c regcomp.c regexec.c regfree.c reginit.c
-rm libregex.a
-ar -cr libregex.a regerror.o

=== modified file 'scripts/make_binary_distribution.sh'
--- a/scripts/make_binary_distribution.sh	2009-03-11 17:17:00 +0000
+++ b/scripts/make_binary_distribution.sh	2009-04-14 21:07:28 +0000
@@ -116,10 +116,15 @@ case $PLATFORM in
 esac
 
 # Change the distribution to a long descriptive name
+# For the cluster product, concentrate on the second part
+VERSION_NAME=@VERSION@
+case $VERSION_NAME in
+  *-ndb-* )  VERSION_NAME=`echo $VERSION_NAME | sed -e 's/[.0-9]*-ndb-//'` ;;
+esac
 if [ x"$SHORT_PRODUCT_TAG" != x"" ] ; then
-  NEW_NAME=mysql-$SHORT_PRODUCT_TAG-@VERSION@-$PLATFORM$SUFFIX
+  NEW_NAME=mysql-$SHORT_PRODUCT_TAG-$VERSION_NAME-$PLATFORM$SUFFIX
 else
-  NEW_NAME=mysql@MYSQL_SERVER_SUFFIX@-@VERSION@-$PLATFORM$SUFFIX
+  NEW_NAME=mysql@MYSQL_SERVER_SUFFIX@-$VERSION_NAME-$PLATFORM$SUFFIX
 fi
 
 # ----------------------------------------------------------------------

=== modified file 'scripts/make_win_bin_dist'
--- a/scripts/make_win_bin_dist	2009-01-09 16:41:06 +0000
+++ b/scripts/make_win_bin_dist	2009-04-14 21:07:28 +0000
@@ -126,7 +126,7 @@ if [ -e $DESTDIR ] ; then
   usage
 fi
 
-trap 'echo "Clearning up and exiting..." ; rm -fr $DESTDIR; exit 1' ERR
+trap 'echo "Cleaning up and exiting..." ; rm -fr $DESTDIR; exit 1' ERR
 
 # ----------------------------------------------------------------------
 # Adjust target name if needed, release with debug info has another name

=== modified file 'sql/log.cc'
--- a/sql/log.cc	2009-04-30 14:35:36 +0000
+++ b/sql/log.cc	2009-05-11 17:58:07 +0000
@@ -119,9 +119,16 @@ sql_print_message_func sql_print_message
 };
 
 
+/**
+  Create the name of the default general log file
+  
+  @param[IN] buff    Location for building new string.
+  @param[IN] log_ext The extension for the file (e.g .log)
+  @returns Pointer to a new string containing the name
+*/
 char *make_default_log_name(char *buff,const char* log_ext)
 {
-  strmake(buff, pidfile_name, FN_REFLEN-5);
+  strmake(buff, default_logfile_name, FN_REFLEN-5);
   return fn_format(buff, buff, mysql_data_home, log_ext,
                    MYF(MY_UNPACK_FILENAME|MY_REPLACE_EXT));
 }

=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2009-04-30 14:35:36 +0000
+++ b/sql/log_event.cc	2009-05-07 20:48:24 +0000
@@ -7418,6 +7418,7 @@ int Rows_log_event::do_apply_event(Relay
 
     // Do event specific preparations 
     error= do_before_row_operations(rli);
+
     // row processing loop
 
     while (error == 0 && m_curr_row < m_rows_end)

=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h	2009-05-07 14:10:24 +0000
+++ b/sql/mysql_priv.h	2009-05-12 16:41:11 +0000
@@ -120,7 +120,6 @@ void *sql_calloc(size_t);
 char *sql_strdup(const char *str);
 char *sql_strmake(const char *str, size_t len);
 void *sql_memdup(const void * ptr, size_t size);
-void sql_element_free(void *ptr);
 char *sql_strmake_with_convert(const char *str, size_t arg_length,
 			       CHARSET_INFO *from_cs,
 			       size_t max_res_length,
@@ -128,12 +127,10 @@ char *sql_strmake_with_convert(const cha
 uint kill_one_thread(THD *thd, ulong id, bool only_kill_query);
 void sql_kill(THD *thd, ulong id, bool only_kill_query);
 bool net_request_file(NET* net, const char* fname);
-char* query_table_status(THD *thd,const char *db,const char *table_name);
 
 #define x_free(A)	{ my_free((uchar*) (A),MYF(MY_WME | MY_FAE | MY_ALLOW_ZERO_PTR)); }
 #define safeFree(x)	{ if(x) { my_free((uchar*) x,MYF(0)); x = NULL; } }
 #define PREV_BITS(type,A)	((type) (((type) 1 << (A)) -1))
-#define all_bits_set(A,B) ((A) & (B) != (B))
 
 /*
   Generates a warning that a feature is deprecated. After a specified version
@@ -355,7 +352,6 @@ enum open_table_mode
 #ifndef MYSQLD_NET_RETRY_COUNT
 #define MYSQLD_NET_RETRY_COUNT  10	///< Abort read after this many int.
 #endif
-#define TEMP_POOL_SIZE          128
 
 #define QUERY_ALLOC_BLOCK_SIZE		8192
 #define QUERY_ALLOC_PREALLOC_SIZE   	8192
@@ -365,11 +361,8 @@ enum open_table_mode
 #define ACL_ALLOC_BLOCK_SIZE		1024
 #define UDF_ALLOC_BLOCK_SIZE		1024
 #define TABLE_ALLOC_BLOCK_SIZE		1024
-#define BDB_LOG_ALLOC_BLOCK_SIZE	1024
 #define WARN_ALLOC_BLOCK_SIZE		2048
 #define WARN_ALLOC_PREALLOC_SIZE	1024
-#define PROFILE_ALLOC_BLOCK_SIZE  2048
-#define PROFILE_ALLOC_PREALLOC_SIZE 1024
 
 /*
   The following parameters is to decide when to use an extra cache to
@@ -622,8 +615,6 @@ enum open_table_mode
 
 */
 
-#define RAID_BLOCK_SIZE 1024
-
 #define MY_CHARSET_BIN_MB_MAXLEN 1
 
 // uncachable cause
@@ -645,10 +636,6 @@ enum open_table_mode
 
 #define BINLOG_DUMP_NON_BLOCK   1
 
-/* sql_show.cc:show_log_files() */
-#define SHOW_LOG_STATUS_FREE "FREE"
-#define SHOW_LOG_STATUS_INUSE "IN USE"
-
 struct TABLE_LIST;
 class String;
 void view_store_options(THD *thd, TABLE_LIST *table, String *buff);
@@ -1978,6 +1965,7 @@ extern MYSQL_PLUGIN_IMPORT uint reg_ext_
 #ifdef MYSQL_SERVER
 extern char glob_hostname[FN_REFLEN], mysql_home[FN_REFLEN];
 extern char pidfile_name[FN_REFLEN], system_time_zone[30], *opt_init_file;
+extern char default_logfile_name[FN_REFLEN];
 extern char log_error_file[FN_REFLEN], *opt_tc_log_file;
 extern const double log_10[309];
 extern ulonglong log_10_int[20];
@@ -2212,8 +2200,6 @@ bool wait_if_global_read_lock(THD *thd, 
                               bool is_not_commit);
 void start_waiting_global_read_lock(THD *thd);
 bool make_global_read_lock_block_commit(THD *thd);
-bool set_protect_against_global_read_lock(void);
-void unset_protect_against_global_read_lock(void);
 void broadcast_refresh(void);
 int try_transactional_lock(THD *thd, TABLE_LIST *table_list);
 int check_transactional_lock(THD *thd, TABLE_LIST *table_list);

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2009-04-30 14:35:36 +0000
+++ b/sql/mysqld.cc	2009-05-11 17:58:07 +0000
@@ -643,6 +643,7 @@ const double log_10[] = {
 time_t server_start_time, flush_status_time;
 
 char mysql_home[FN_REFLEN], pidfile_name[FN_REFLEN], system_time_zone[30];
+char default_logfile_name[FN_REFLEN];
 char *default_tz_name;
 char log_error_file[FN_REFLEN], glob_hostname[FN_REFLEN];
 char mysql_real_data_home[FN_REFLEN],
@@ -3363,10 +3364,13 @@ static int init_common_variables(const c
     strmake(glob_hostname, STRING_WITH_LEN("localhost"));
     sql_print_warning("gethostname failed, using '%s' as hostname",
                       glob_hostname);
-    strmake(pidfile_name, STRING_WITH_LEN("mysql"));
+    strmake(default_logfile_name, STRING_WITH_LEN("mysql"));
   }
   else
-  strmake(pidfile_name, glob_hostname, sizeof(pidfile_name)-5);
+    strmake(default_logfile_name, glob_hostname, 
+	    sizeof(default_logfile_name)-5);
+
+  strmake(pidfile_name, default_logfile_name, sizeof(pidfile_name)-5);
   strmov(fn_ext(pidfile_name),".pid");		// Add proper extension
 
   /*

=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc	2009-04-30 14:35:36 +0000
+++ b/sql/set_var.cc	2009-05-11 17:58:07 +0000
@@ -2639,6 +2639,13 @@ static int  sys_check_log_path(THD *thd,
   /* Get dirname of the file path. */
   (void) dirname_part(path, log_file_str, &path_length);
 
+  /* Test if the file name itself is too long */
+  if (res->length()-path_length >= FN_LEN)
+  {
+      my_error(ER_PATH_LENGTH, MYF(0), var->var->name);
+      return 1;
+  }
+
   /* Dirname is empty if file path is relative. */
   if (!path_length)
     return 0;
@@ -2676,9 +2683,20 @@ bool update_sys_var_str_path(THD *thd, s
   MYSQL_QUERY_LOG *file_log= 0;
   MYSQL_BACKUP_LOG *backup_log= 0;
   char buff[FN_REFLEN];
-  char *res= 0, *old_value=(char *)(var ? var->value->str_value.ptr() : 0);
+  char *res= 0, *old_value= 0;
   bool result= 0;
-  uint str_length= (var ? var->value->str_value.length() : 0);
+  uint str_length= 0;
+
+  if (var) 
+  {
+    String str(buff, sizeof(buff), system_charset_info), *newval;
+
+    newval= var->value->val_str(&str);
+    old_value= newval->c_ptr();
+    str_length= strlen(old_value);
+  } 
+  
+
 
   /*
     Added support for backup log types.

=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc	2009-04-07 14:22:01 +0000
+++ b/sql/sql_class.cc	2009-05-11 17:58:07 +0000
@@ -388,6 +388,32 @@ char *thd_security_context(THD *thd, cha
 }
 
 
+/**
+  Implementation of Internal_error_handler::handle_condition().
+  The reason in having this implementation is to silence technical low-level
+  warnings during DROP TABLE operation. Currently we don't want to expose
+  the following warnings during DROP TABLE:
+    - Some of table files are missed or invalid (the table is going to be
+      deleted anyway, so why bother that something was missed);
+    - A trigger associated with the table does not have DEFINER (One of the
+      MySQL specifics now is that triggers are loaded for the table being
+      dropped. So, we may have a warning that trigger does not have DEFINER
+      attribute during DROP TABLE operation).
+
+  @return TRUE if the condition is handled.
+*/
+bool Drop_table_error_handler::handle_condition(THD *thd,
+                                                uint sql_errno,
+                                                const char *sqlstate,
+                                                MYSQL_ERROR::enum_warning_level
+                                                level,
+                                                const char *msg,
+                                                MYSQL_ERROR **condition)
+{
+  return sql_errno == EE_DELETE || sql_errno == ER_TRG_NO_DEFINER;
+}
+
+
 THD::THD()
    :Statement(&main_lex, &main_mem_root, CONVENTIONAL_EXECUTION,
               /* statement id */ 0),
@@ -548,12 +574,15 @@ THD::THD()
 
 void THD::push_internal_handler(Internal_error_handler *handler)
 {
-  /*
-    TODO: The current implementation is limited to 1 handler at a time only.
-    THD and sp_rcontext need to be modified to use a common handler stack.
-  */
-  DBUG_ASSERT(m_internal_handler == NULL);
-  m_internal_handler= handler;
+  if (m_internal_handler)
+  {
+    handler->m_prev_internal_handler= m_internal_handler;
+    m_internal_handler= handler;
+  }
+  else
+  {
+    m_internal_handler= handler;
+  }
 }
 
 
@@ -563,17 +592,23 @@ bool THD::handle_condition(uint sql_errn
                            const char* msg,
                            MYSQL_ERROR ** cond_hdl)
 {
-  if (m_internal_handler)
+  if (!m_internal_handler)
   {
-    return m_internal_handler->handle_condition(this,
-                                                sql_errno,
-                                                sqlstate,
-                                                level,
-                                                msg,
-                                                cond_hdl);
+    *cond_hdl= NULL;
+    return FALSE;
+  }
+
+  for (Internal_error_handler *error_handler= m_internal_handler;
+       error_handler;
+       error_handler= m_internal_handler->m_prev_internal_handler)
+  {
+    if (error_handler-> handle_condition(this, sql_errno, sqlstate, level, msg,
+                                         cond_hdl))
+    {
+      return TRUE;
+    }
   }
 
-  *cond_hdl= NULL;
   return FALSE;
 }
 
@@ -581,7 +616,7 @@ bool THD::handle_condition(uint sql_errn
 void THD::pop_internal_handler()
 {
   DBUG_ASSERT(m_internal_handler != NULL);
-  m_internal_handler= NULL;
+  m_internal_handler= m_internal_handler->m_prev_internal_handler;
 }
 
 void THD::raise_error(uint sql_errno)

=== modified file 'sql/sql_class.h'
--- a/sql/sql_class.h	2009-04-30 14:35:36 +0000
+++ b/sql/sql_class.h	2009-05-11 17:58:07 +0000
@@ -1110,7 +1110,10 @@ show_system_thread(enum_thread_type thre
 class Internal_error_handler
 {
 protected:
-  Internal_error_handler() {}
+  Internal_error_handler() :
+    m_prev_internal_handler(NULL)
+  { }
+
   virtual ~Internal_error_handler() {}
 
 public:
@@ -1145,6 +1148,36 @@ public:
                                 const char* msg,
                                 MYSQL_ERROR ** cond_hdl) = 0;
 
+private:
+  Internal_error_handler *m_prev_internal_handler;
+  friend class THD;
+};
+
+
+/**
+  This class is an internal error handler implementation for DROP DATABASE
+  and DROP TABLE statements. The thing is that there may be warnings during
+  execution of these statements, which should not be exposed to the user.
+  This class is intended to silence such warnings.
+*/
+
+class Drop_table_error_handler : public Internal_error_handler
+{
+public:
+  Drop_table_error_handler(Internal_error_handler *err_handler)
+    :m_err_handler(err_handler)
+  { }
+
+public:
+  virtual bool handle_condition(THD *thd,
+                                uint sql_errno,
+                                const char *sqlstate,
+                                MYSQL_ERROR::enum_warning_level level,
+                                const char *msg,
+                                MYSQL_ERROR **condition);
+
+private:
+  Internal_error_handler *m_err_handler;
 };
 
 /**
@@ -2282,6 +2315,9 @@ public:
   thd_scheduler scheduler;
 
 public:
+  inline Internal_error_handler *get_internal_handler()
+  { return m_internal_handler; }
+
   /**
     Add an internal error handler to the thread execution context.
     @param handler the exception handler to add

=== modified file 'sql/sql_db.cc'
--- a/sql/sql_db.cc	2009-04-08 23:46:45 +0000
+++ b/sql/sql_db.cc	2009-05-11 17:58:07 +0000
@@ -913,6 +913,9 @@ bool mysql_rm_db(THD *thd,char *db,bool 
   }
   else
   {
+    Drop_table_error_handler err_handler(thd->get_internal_handler());
+    thd->push_internal_handler(&err_handler);
+
     error= -1;
     /*
       We temporarily disable the binary log while dropping the objects
@@ -945,6 +948,8 @@ bool mysql_rm_db(THD *thd,char *db,bool 
       error = 0;
       reenable_binlog(thd);
     }
+
+    thd->pop_internal_handler();
   }
   if (!silent && deleted>=0)
   {

=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc	2009-04-30 14:35:36 +0000
+++ b/sql/sql_show.cc	2009-05-11 17:58:07 +0000
@@ -1713,6 +1713,30 @@ public:
 template class I_List<thread_info>;
 #endif
 
+static const char *thread_state_info(THD *tmp)
+{
+#ifndef EMBEDDED_LIBRARY
+  if (tmp->net.reading_or_writing)
+  {
+    if (tmp->net.reading_or_writing == 2)
+      return "Writing to net";
+    else if (tmp->command == COM_SLEEP)
+      return NULL;
+    else
+      return "Reading from net";
+  }
+  else
+#endif
+  {
+    if (tmp->proc_info)
+      return tmp->proc_info;
+    else if (tmp->mysys_var && tmp->mysys_var->current_cond)
+      return "Waiting on cond";
+    else
+      return NULL;
+  }
+}
+
 void mysqld_list_processes(THD *thd,const char *user, bool verbose)
 {
   Item *field;
@@ -1775,19 +1799,7 @@ void mysqld_list_processes(THD *thd,cons
         if ((mysys_var= tmp->mysys_var))
           pthread_mutex_lock(&mysys_var->mutex);
         thd_info->proc_info= (char*) (tmp->killed == THD::KILL_CONNECTION? "Killed" : 0);
-#ifndef EMBEDDED_LIBRARY
-        thd_info->state_info= (char*) (tmp->net.reading_or_writing ?
-                                       (tmp->net.reading_or_writing == 2 ?
-                                        "Writing to net" :
-                                        thd_info->command == COM_SLEEP ? NullS :
-                                        "Reading from net") :
-                                       tmp->proc_info ? tmp->proc_info :
-                                       tmp->mysys_var &&
-                                       tmp->mysys_var->current_cond ?
-                                       "Waiting on cond" : NullS);
-#else
-        thd_info->state_info= (char*)"Writing to net";
-#endif
+        thd_info->state_info= thread_state_info(tmp);
         if (mysys_var)
           pthread_mutex_unlock(&mysys_var->mutex);
         pthread_mutex_unlock(&tmp->LOCK_delete);
@@ -1902,20 +1914,7 @@ int fill_schema_processlist(THD* thd, TA
       table->field[5]->store((longlong)(tmp->start_time ?
                                       now - tmp->start_time : 0), FALSE);
       /* STATE */
-#ifndef EMBEDDED_LIBRARY
-      val= (char*) (tmp->net.reading_or_writing ?
-                    (tmp->net.reading_or_writing == 2 ?
-                     "Writing to net" :
-                     tmp->command == COM_SLEEP ? NullS :
-                     "Reading from net") :
-                    tmp->proc_info ? tmp->proc_info :
-                    tmp->mysys_var &&
-                    tmp->mysys_var->current_cond ?
-                    "Waiting on cond" : NullS);
-#else
-      val= (char *) "Writing to net";
-#endif
-      if (val)
+      if ((val= thread_state_info(tmp)))
       {
         table->field[6]->store(val, strlen(val), cs);
         table->field[6]->set_notnull();

=== modified file 'sql/sql_string.cc'
--- a/sql/sql_string.cc	2009-03-24 14:24:44 +0000
+++ b/sql/sql_string.cc	2009-04-24 10:04:14 +0000
@@ -34,7 +34,6 @@
 */
 
 extern uchar* sql_alloc(unsigned size);
-extern void sql_element_free(void *ptr);
 
 #include "sql_string.h"
 

=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc	2009-04-23 17:58:56 +0000
+++ b/sql/sql_table.cc	2009-05-11 17:58:07 +0000
@@ -1498,6 +1498,8 @@ bool mysql_rm_table(THD *thd,TABLE_LIST 
                     my_bool drop_temporary)
 {
   bool error, need_start_waiting= FALSE;
+  Drop_table_error_handler err_handler(thd->get_internal_handler());
+
   DBUG_ENTER("mysql_rm_table");
 
   /* mark for close and remove all cached entries */
@@ -1509,7 +1511,9 @@ bool mysql_rm_table(THD *thd,TABLE_LIST 
       DBUG_RETURN(TRUE);
   }
 
+  thd->push_internal_handler(&err_handler);
   error= mysql_rm_table_part2(thd, tables, if_exists, drop_temporary, 0, 0);
+  thd->pop_internal_handler();
 
   if (need_start_waiting)
     start_waiting_global_read_lock(thd);
@@ -1649,9 +1653,6 @@ int mysql_rm_table_part2(THD *thd, TABLE
     }
   }
 
-  /* Don't give warnings for not found errors, as we already generate notes */
-  thd->no_warnings_for_error= 1;
-
   for (table= tables; table; table= table->next_local)
   {
     char *db=table->db;
@@ -1793,11 +1794,18 @@ int mysql_rm_table_part2(THD *thd, TABLE
         wrong_tables.append(',');
       wrong_tables.append(String(table->table_name,system_charset_info));
     }
+
+    DBUG_EXECUTE_IF("bug43138",
+                    my_printf_error(ER_BAD_TABLE_ERROR,
+                                    ER(ER_BAD_TABLE_ERROR), MYF(0),
+                                    table->table_name););
+
     DBUG_PRINT("table", ("table: %p  s: %p", table->table,
                          table->table ? table->table->s : (TABLE_SHARE *)-1));
   }
   thd->thread_specific_used|= tmp_table_deleted;
   error= 0;
+
   if (wrong_tables.length())
   {
     if (!foreign_key_error)
@@ -1890,7 +1898,6 @@ err:
   }
 
 end:
-  thd->no_warnings_for_error= 0;
   DBUG_RETURN(error);
 }
 

=== modified file 'sql/sql_yacc.yy'
--- a/sql/sql_yacc.yy	2009-04-29 03:50:14 +0000
+++ b/sql/sql_yacc.yy	2009-05-11 17:58:07 +0000
@@ -2550,11 +2550,11 @@ sp_decl:
             LEX *lex= Lex;
             sp_pcontext *spc= lex->spcont;
 
-	    if (spc->find_cond(&$2, TRUE))
-	    {
-	      my_error(ER_SP_DUP_COND, MYF(0), $2.str);
-	      MYSQL_YYABORT;
-	    }
+            if (spc->find_cond(&$2, TRUE))
+            {
+              my_error(ER_SP_DUP_COND, MYF(0), $2.str);
+              MYSQL_YYABORT;
+            }
 	    if(YYTHD->lex->spcont->push_cond(&$2, $5))
               MYSQL_YYABORT;
             $$.vars= $$.hndlrs= $$.curs= 0;
@@ -2570,7 +2570,7 @@ sp_decl:
             sp_pcontext *ctx= lex->spcont;
             sp_instr_hpush_jump *i=
               new sp_instr_hpush_jump(sp->instructions(), ctx, $2,
-	                              ctx->current_var_count());
+                                      ctx->current_var_count());
             if (i == NULL ||
 	        sp->add_instr(i) ||
                 sp->push_backpatch(i, ctx->push_label((char *)"", 0)))
@@ -3303,6 +3303,7 @@ sp_if:
                 sp->add_cont_backpatch(i) ||
                 sp->add_instr(i))
               MYSQL_YYABORT;
+
             sp->restore_lex(YYTHD);
           }
           sp_proc_stmts1
@@ -3314,6 +3315,7 @@ sp_if:
             if (i == NULL ||
                 sp->add_instr(i))
               MYSQL_YYABORT;
+
             sp->backpatch(ctx->pop_label());
             sp->push_backpatch(i, ctx->push_label((char *)"", 0));
           }
@@ -3581,7 +3583,7 @@ sp_unlabeled_control:
             if (i == NULL ||
                 lex->sphead->add_instr(i))
               MYSQL_YYABORT;
-	  }
+          }
         | WHILE_SYM 
           { Lex->sphead->reset_lex(YYTHD); }
           expr DO_SYM
@@ -3592,7 +3594,7 @@ sp_unlabeled_control:
             sp_instr_jump_if_not *i = new sp_instr_jump_if_not(ip, lex->spcont,
                                                                $3, lex);
             if (i == NULL ||
-	    /* Jumping forward */
+            /* Jumping forward */
                 sp->push_backpatch(i, lex->spcont->last_label()) ||
                 sp->new_cont_backpatch(i) ||
                 sp->add_instr(i))
@@ -3734,7 +3736,8 @@ change_ts_option:
         ;
 
 tablespace_option_list:
-        tablespace_options
+          /* empty */ 
+        | tablespace_options
         ;
 
 tablespace_options:
@@ -3755,7 +3758,8 @@ tablespace_option:
         ;
 
 alter_tablespace_option_list:
-        alter_tablespace_options
+          /* empty */
+        | alter_tablespace_options
         ;
 
 alter_tablespace_options:
@@ -3773,7 +3777,8 @@ alter_tablespace_option:
         ;
 
 logfile_group_option_list:
-        logfile_group_options
+          /* empty */ 
+        | logfile_group_options
         ;
 
 logfile_group_options:
@@ -3793,7 +3798,8 @@ logfile_group_option:
         ;
 
 alter_logfile_group_option_list:
-          alter_logfile_group_options
+          /* empty */ 
+        | alter_logfile_group_options
         ;
 
 alter_logfile_group_options:
@@ -3963,11 +3969,6 @@ opt_ts_engine:
           }
         ;
 
-opt_ts_wait:
-          /* empty */
-        | ts_wait
-        ;
-
 ts_wait:
           WAIT_SYM
           {
@@ -10161,12 +10162,12 @@ drop:
             lex->drop_if_exists= $3;
             lex->spname= $4;
           }
-        | DROP TABLESPACE tablespace_name opt_ts_engine opt_ts_wait
+        | DROP TABLESPACE tablespace_name drop_ts_options_list
           {
             LEX *lex= Lex;
             lex->alter_tablespace_info->ts_cmd_type= DROP_TABLESPACE;
           }
-        | DROP LOGFILE_SYM GROUP_SYM logfile_group_name opt_ts_engine opt_ts_wait
+        | DROP LOGFILE_SYM GROUP_SYM logfile_group_name drop_ts_options_list
           {
             LEX *lex= Lex;
             lex->alter_tablespace_info->ts_cmd_type= DROP_LOGFILE_GROUP;
@@ -10217,6 +10218,21 @@ opt_temporary:
           /* empty */ { $$= 0; }
         | TEMPORARY { $$= 1; }
         ;
+
+drop_ts_options_list:
+          /* empty */
+        | drop_ts_options
+
+drop_ts_options:
+          drop_ts_option
+        | drop_ts_options drop_ts_option
+        | drop_ts_options_list ',' drop_ts_option
+        ;
+
+drop_ts_option:
+          opt_ts_engine
+      	| ts_wait
+
 /*
 ** Insert : add new data to table
 */

=== modified file 'sql/thr_malloc.cc'
--- a/sql/thr_malloc.cc	2009-02-04 20:48:02 +0000
+++ b/sql/thr_malloc.cc	2009-04-06 18:36:46 +0000
@@ -106,10 +106,6 @@ void* sql_memdup(const void *ptr, size_t
   return pos;
 }
 
-void sql_element_free(void *ptr __attribute__((unused)))
-{} /* purecov: deadcode */
-
-
 
 char *sql_strmake_with_convert(const char *str, size_t arg_length,
 			       CHARSET_INFO *from_cs,

=== modified file 'sql/transaction.cc'
--- a/sql/transaction.cc	2009-05-04 17:14:38 +0000
+++ b/sql/transaction.cc	2009-05-12 16:41:11 +0000
@@ -100,11 +100,15 @@ bool trans_begin(THD *thd, uint flags)
 
   DBUG_ASSERT(!thd->locked_tables_mode);
 
-  thd->mdl_context.release_all_locks();
-
   if (trans_commit_implicit(thd))
     DBUG_RETURN(TRUE);
 
+  /*
+    Release transactional metadata locks only after the
+    transaction has been committed.
+  */
+  thd->mdl_context.release_all_locks();
+
   thd->options|= OPTION_BEGIN;
   thd->server_status|= SERVER_STATUS_IN_TRANS;
 

=== modified file 'storage/falcon/IndexKey.cpp.save'
--- a/storage/falcon/IndexKey.cpp.save	2007-09-20 15:44:25 +0000
+++ b/storage/falcon/IndexKey.cpp.save	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== removed file 'storage/heap/make-ccc'
--- a/storage/heap/make-ccc	2005-04-27 01:19:54 +0000
+++ b/storage/heap/make-ccc	1970-01-01 00:00:00 +0000
@@ -1,4 +0,0 @@
-ccc -I./../include -I../include -DDBUG_OFF -fast -O3 -c _check.c _rectest.c hp_block.c hp_clear.c hp_close.c hp_create.c hp_delete.c hp_extra.c hp_hash.c hp_info.c hp_open.c hp_panic.c hp_rename.c hp_rfirst.c hp_rkey.c hp_rlast.c hp_rnext.c hp_rprev.c hp_rrnd.c hp_rsame.c hp_scan.c hp_static.c hp_update.c hp_write.c
-rm libheap.a
-ar -cr libheap.a _check.o
-

=== modified file 'storage/maria/Makefile.am'
--- a/storage/maria/Makefile.am	2009-02-16 21:18:45 +0000
+++ b/storage/maria/Makefile.am	2009-04-06 18:36:46 +0000
@@ -30,7 +30,7 @@ DEFS =                  @DEFS@
 SUBDIRS =		. unittest
 
 EXTRA_DIST =		ma_test_all.sh ma_test_all.res ma_test_big.sh \
-			ma_ft_stem.c CMakeLists.txt plug.in ma_test_recovery
+			CMakeLists.txt plug.in ma_test_recovery
 pkgdata_DATA =		ma_test_all ma_test_all.res ma_test_recovery
 pkglib_LIBRARIES =	libmaria.a
 bin_PROGRAMS =		maria_chk maria_pack maria_ftdump maria_read_log \
@@ -72,8 +72,8 @@ maria_dump_log_SOURCES= ma_loghandler.c 
 maria_dump_log_CPPFLAGS= $(AM_CPPFLAGS) -DMARIA_DUMP_LOG
 noinst_PROGRAMS =	ma_test1 ma_test2 ma_test3 ma_rt_test ma_sp_test
 noinst_HEADERS =	maria_def.h ma_rt_index.h ma_rt_key.h ma_rt_mbr.h \
-			ma_sp_defs.h ma_fulltext.h ma_ftdefs.h ma_ft_test1.h \
-			ma_ft_eval.h trnman.h lockman.h tablockman.h \
+			ma_sp_defs.h ma_fulltext.h ma_ftdefs.h \
+			trnman.h lockman.h tablockman.h \
 			ma_control_file.h ha_maria.h ma_blockrec.h \
 			ma_loghandler.h ma_loghandler_lsn.h ma_pagecache.h \
 			ma_checkpoint.h ma_recovery.h ma_commit.h ma_state.h \
@@ -97,8 +97,6 @@ ma_test3_LDADD=		@CLIENT_EXTRA_LDFLAGS@ 
 			$(top_builddir)/mysys/libmysyslt.la \
 			$(top_builddir)/dbug/libdbuglt.la \
 			$(top_builddir)/strings/libmystringslt.la @ZLIB_LIBS@
-#ma_ft_test1_DEPENDENCIES=	$(LIBRARIES)
-#ma_ft_eval_DEPENDENCIES=	$(LIBRARIES)
 maria_ftdump_DEPENDENCIES=	$(LIBRARIES)
 maria_ftdump_LDADD=		@CLIENT_EXTRA_LDFLAGS@ libmaria.a \
                         $(top_builddir)/storage/myisam/libmyisam.a \

=== removed file 'storage/maria/ma_ft_eval.c'
--- a/storage/maria/ma_ft_eval.c	2008-05-29 15:44:11 +0000
+++ b/storage/maria/ma_ft_eval.c	1970-01-01 00:00:00 +0000
@@ -1,254 +0,0 @@
-/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code
-   added support for long options (my_getopt) 22.5.2002 by Jani Tolonen */
-
-#include "ma_ftdefs.h"
-#include "maria_ft_eval.h"
-#include <stdarg.h>
-#include <my_getopt.h>
-
-static void print_error(int exit_code, const char *fmt,...);
-static void get_options(int argc, char *argv[]);
-static int create_record(char *pos, FILE *file);
-static void usage();
-
-static struct my_option my_long_options[] =
-{
-  {"", 's', "", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'q', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'S', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '#', "", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'V', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '?', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'h', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-
-int main(int argc, char *argv[])
-{
-  MARIA_HA *file;
-  int i,j;
-
-  MY_INIT(argv[0]);
-  get_options(argc,argv);
-  bzero((char*)recinfo,sizeof(recinfo));
-
-  maria_init();
-  /* First define 2 columns */
-  recinfo[0].type=FIELD_SKIP_ENDSPACE;
-  recinfo[0].length=docid_length;
-  recinfo[1].type=FIELD_BLOB;
-  recinfo[1].length= 4+portable_sizeof_char_ptr;
-
-  /* Define a key over the first column */
-  keyinfo[0].seg=keyseg;
-  keyinfo[0].keysegs=1;
-  keyinfo[0].block_length= 0;                   /* Default block length */
-  keyinfo[0].seg[0].type= HA_KEYTYPE_TEXT;
-  keyinfo[0].seg[0].flag= HA_BLOB_PART;
-  keyinfo[0].seg[0].start=recinfo[0].length;
-  keyinfo[0].seg[0].length=key_length;
-  keyinfo[0].seg[0].null_bit=0;
-  keyinfo[0].seg[0].null_pos=0;
-  keyinfo[0].seg[0].bit_start=4;
-  keyinfo[0].seg[0].language=MY_CHARSET_CURRENT;
-  keyinfo[0].flag = HA_FULLTEXT;
-
-  if (!silent)
-    printf("- Creating isam-file\n");
-  if (maria_create(filename,1,keyinfo,2,recinfo,0,NULL,(MARIA_CREATE_INFO*) 0,0))
-    goto err;
-  if (!(file=maria_open(filename,2,0)))
-    goto err;
-  if (!silent)
-    printf("Initializing stopwords\n");
-  maria_ft_init_stopwords(stopwordlist);
-
-  if (!silent)
-    printf("- Writing key:s\n");
-
-  my_errno=0;
-  i=0;
-  while (create_record(record,df))
-  {
-    error=maria_write(file,record);
-    if (error)
-      printf("I= %2d  maria_write: %d  errno: %d\n",i,error,my_errno);
-    i++;
-  }
-  fclose(df);
-
-  if (maria_close(file)) goto err;
-  if (!silent)
-    printf("- Reopening file\n");
-  if (!(file=maria_open(filename,2,0))) goto err;
-  if (!silent)
-    printf("- Reading rows with key\n");
-  for (i=1;create_record(record,qf);i++)
-  {
-    FT_DOCLIST *result;
-    double w;
-    int t, err;
-
-    result=maria_ft_nlq_init_search(file,0,blob_record,(uint) strlen(blob_record),1);
-    if (!result)
-    {
-      printf("Query %d failed with errno %3d\n",i,my_errno);
-      goto err;
-    }
-    if (!silent)
-      printf("Query %d. Found: %d.\n",i,result->ndocs);
-    for (j=0;(err=maria_ft_nlq_read_next(result, read_record))==0;j++)
-    {
-      t=uint2korr(read_record);
-      w=maria_ft_nlq_get_relevance(result);
-      printf("%d %.*s %f\n",i,t,read_record+2,w);
-    }
-    if (err != HA_ERR_END_OF_FILE)
-    {
-      printf("maria_ft_read_next %d failed with errno %3d\n",j,my_errno);
-      goto err;
-    }
-    maria_ft_nlq_close_search(result);
-  }
-
-  if (maria_close(file)) goto err;
-  maria_end();
-  my_end(MY_CHECK_ERROR);
-
-  return (0);
-
- err:
-  printf("got error: %3d when using maria-database\n",my_errno);
-  return 1;			/* skip warning */
-
-}
-
-
-static my_bool
-get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
-	       char *argument)
-{
-  switch (optid) {
-  case 's':
-    if (stopwordlist && stopwordlist != maria_ft_precompiled_stopwords)
-      break;
-    {
-      FILE *f; char s[HA_FT_MAXLEN]; int i=0,n=SWL_INIT;
-
-      if (!(stopwordlist=(const char**) malloc(n*sizeof(char *))))
-	print_error(1,"malloc(%d)",n*sizeof(char *));
-      if (!(f=fopen(argument,"r")))
-	print_error(1,"fopen(%s)",argument);
-      while (!feof(f))
-      {
-	if (!(fgets(s,HA_FT_MAXLEN,f)))
-	  print_error(1,"fgets(s,%d,%s)",HA_FT_MAXLEN,argument);
-	if (!(stopwordlist[i++]=strdup(s)))
-	  print_error(1,"strdup(%s)",s);
-	if (i >= n)
-	{
-	  n+=SWL_PLUS;
-	  if (!(stopwordlist=(const char**) realloc((char*) stopwordlist,
-						    n*sizeof(char *))))
-	    print_error(1,"realloc(%d)",n*sizeof(char *));
-	}
-      }
-      fclose(f);
-      stopwordlist[i]=NULL;
-      break;
-    }
-  case 'q': silent=1; break;
-  case 'S': if (stopwordlist==maria_ft_precompiled_stopwords) stopwordlist=NULL; break;
-  case '#':
-    DBUG_PUSH (argument);
-    break;
-  case 'V':
-  case '?':
-  case 'h':
-    usage();
-    exit(1);
-  }
-  return 0;
-}
-
-
-static void get_options(int argc, char *argv[])
-{
-  int ho_error;
-
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
-    exit(ho_error);
-
-  if (!(d_file=argv[optind])) print_error(1,"No d_file");
-  if (!(df=fopen(d_file,"r")))
-    print_error(1,"fopen(%s)",d_file);
-  if (!(q_file=argv[optind+1])) print_error(1,"No q_file");
-  if (!(qf=fopen(q_file,"r")))
-    print_error(1,"fopen(%s)",q_file);
-  return;
-} /* get options */
-
-
-static int create_record(char *pos, FILE *file)
-{
-  uint tmp; char *ptr;
-
-  bzero((char *)pos,MAX_REC_LENGTH);
-
-  /* column 1 - VARCHAR */
-  if (!(fgets(pos+2,MAX_REC_LENGTH-32,file)))
-  {
-    if (feof(file))
-      return 0;
-    else
-      print_error(1,"fgets(docid) - 1");
-  }
-  tmp=(uint) strlen(pos+2)-1;
-  int2store(pos,tmp);
-  pos+=recinfo[0].length;
-
-  /* column 2 - BLOB */
-
-  if (!(fgets(blob_record,MAX_BLOB_LENGTH,file)))
-    print_error(1,"fgets(docid) - 2");
-  tmp=(uint) strlen(blob_record);
-  int4store(pos,tmp);
-  ptr=blob_record;
-  memcpy_fixed(pos+4,&ptr,sizeof(char*));
-  return 1;
-}
-
-/* VARARGS */
-
-static void print_error(int exit_code, const char *fmt,...)
-{
-  va_list args;
-
-  va_start(args,fmt);
-  fprintf(stderr,"%s: error: ",my_progname);
-  (void)(vfprintf(stderr, fmt, args));
-  (void)(fputc('\n',stderr));
-  fflush(stderr);
-  va_end(args);
-  exit(exit_code);
-}
-
-
-static void usage()
-{
-  printf("%s [options]\n", my_progname);
-  my_print_help(my_long_options);
-  my_print_variables(my_long_options);
-}

=== removed file 'storage/maria/ma_ft_eval.h'
--- a/storage/maria/ma_ft_eval.h	2007-03-02 10:20:23 +0000
+++ b/storage/maria/ma_ft_eval.h	1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
-/* Copyright (C) 2006 MySQL AB & Sergei A. Golubchik
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
-
-const char **stopwordlist=maria_ft_precompiled_stopwords;
-
-#define MAX_REC_LENGTH 128
-#define MAX_BLOB_LENGTH 60000
-char record[MAX_REC_LENGTH], read_record[MAX_REC_LENGTH+MAX_BLOB_LENGTH];
-char blob_record[MAX_BLOB_LENGTH+20*20];
-
-char *filename= (char*) "EVAL";
-
-int silent=0, error=0;
-
-uint key_length=MAX_BLOB_LENGTH,docid_length=32;
-char *d_file, *q_file;
-FILE *df,*qf;
-
-MARIA_COLUMNDEF recinfo[3];
-MARIA_KEYDEF keyinfo[2];
-HA_KEYSEG keyseg[10];
-
-#define SWL_INIT 500
-#define SWL_PLUS 50
-
-#define MAX_LINE_LENGTH 128
-char line[MAX_LINE_LENGTH];

=== removed file 'storage/maria/ma_ft_stem.c'
--- a/storage/maria/ma_ft_stem.c	2007-03-02 10:20:23 +0000
+++ b/storage/maria/ma_ft_stem.c	1970-01-01 00:00:00 +0000
@@ -1,18 +0,0 @@
-/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
-
-/* mulitingual stem */

=== removed file 'storage/maria/ma_ft_test1.c'
--- a/storage/maria/ma_ft_test1.c	2007-04-19 10:18:56 +0000
+++ b/storage/maria/ma_ft_test1.c	1970-01-01 00:00:00 +0000
@@ -1,317 +0,0 @@
-/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code
-   added support for long options (my_getopt) 22.5.2002 by Jani Tolonen */
-
-#include "ma_ftdefs.h"
-#include "maria_ft_test1.h"
-#include <my_getopt.h>
-
-static int key_field=FIELD_VARCHAR,extra_field=FIELD_SKIP_ENDSPACE;
-static uint key_length=200,extra_length=50;
-static int key_type=HA_KEYTYPE_TEXT;
-static int verbose=0,silent=0,skip_update=0,
-	   no_keys=0,no_stopwords=0,no_search=0,no_fulltext=0;
-static int create_flag=0,error=0;
-
-#define MAX_REC_LENGTH 300
-static char record[MAX_REC_LENGTH],read_record[MAX_REC_LENGTH];
-
-static int run_test(const char *filename);
-static void get_options(int argc, char *argv[]);
-static void create_record(char *, int);
-static void usage();
-
-static struct my_option my_long_options[] =
-{
-  {"", 'v', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '?', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'h', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'V', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'v', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 's', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'N', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'S', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'K', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'F', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'U', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '#', "", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
-  { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-
-int main(int argc, char *argv[])
-{
-  MY_INIT(argv[0]);
-
-  get_options(argc,argv);
-  maria_init();
-
-  exit(run_test("FT1"));
-}
-
-static MARIA_COLUMNDEF recinfo[3];
-static MARIA_KEYDEF keyinfo[2];
-static HA_KEYSEG keyseg[10];
-
-static int run_test(const char *filename)
-{
-  MARIA_HA *file;
-  int i,j;
-  my_off_t pos;
-
-  bzero((char*) recinfo,sizeof(recinfo));
-
-  /* First define 2 columns */
-  recinfo[0].type=extra_field;
-  recinfo[0].length= (extra_field == FIELD_BLOB ? 4 + portable_sizeof_char_ptr :
-	      extra_length);
-  if (extra_field == FIELD_VARCHAR)
-    recinfo[0].length+= HA_VARCHAR_PACKLENGTH(extra_length);
-  recinfo[1].type=key_field;
-  recinfo[1].length= (key_field == FIELD_BLOB ? 4+portable_sizeof_char_ptr :
-		      key_length);
-  if (key_field == FIELD_VARCHAR)
-    recinfo[1].length+= HA_VARCHAR_PACKLENGTH(key_length);
-
-  /* Define a key over the first column */
-  keyinfo[0].seg=keyseg;
-  keyinfo[0].keysegs=1;
-  keyinfo[0].block_length= 0;                   /* Default block length */
-  keyinfo[0].seg[0].type= key_type;
-  keyinfo[0].seg[0].flag= (key_field == FIELD_BLOB) ? HA_BLOB_PART:
-			  (key_field == FIELD_VARCHAR) ? HA_VAR_LENGTH_PART:0;
-  keyinfo[0].seg[0].start=recinfo[0].length;
-  keyinfo[0].seg[0].length=key_length;
-  keyinfo[0].seg[0].null_bit= 0;
-  keyinfo[0].seg[0].null_pos=0;
-  keyinfo[0].seg[0].language= default_charset_info->number;
-  keyinfo[0].flag = (no_fulltext?HA_PACK_KEY:HA_FULLTEXT);
-
-  if (!silent)
-    printf("- Creating isam-file\n");
-  if (maria_create(filename,(no_keys?0:1),keyinfo,2,recinfo,0,NULL,
-		(MARIA_CREATE_INFO*) 0, create_flag))
-    goto err;
-  if (!(file=maria_open(filename,2,0)))
-    goto err;
-
-  if (!silent)
-    printf("- %s stopwords\n",no_stopwords?"Skipping":"Initializing");
-  maria_ft_init_stopwords(no_stopwords?NULL:maria_ft_precompiled_stopwords);
-
-  if (!silent)
-    printf("- Writing key:s\n");
-
-  my_errno=0;
-  for (i=NUPD ; i<NDATAS; i++ )
-  {
-    create_record(record,i);
-    error=maria_write(file,record);
-    if (verbose || error)
-      printf("I= %2d  maria_write: %d  errno: %d, record: %s\n",
-	i,error,my_errno,data[i].f0);
-  }
-
-  if (!skip_update)
-  {
-    if (!silent)
-      printf("- Updating rows\n");
-
-    /* Read through all rows and update them */
-    pos=(ha_rows) 0;
-    i=0;
-    while ((error=maria_rrnd(file,read_record,pos)) == 0)
-    {
-      create_record(record,NUPD-i-1);
-      if (maria_update(file,read_record,record))
-      {
-	printf("Can't update row: %.*s, error: %d\n",
-	       keyinfo[0].seg[0].length,record,my_errno);
-      }
-      if(++i == NUPD) break;
-      pos=HA_OFFSET_ERROR;
-    }
-    if (i != NUPD)
-      printf("Found %d of %d rows\n", i,NUPD);
-  }
-
-  if (maria_close(file)) goto err;
-  if(no_search) return 0;
-  if (!silent)
-    printf("- Reopening file\n");
-  if (!(file=maria_open(filename,2,0))) goto err;
-  if (!silent)
-    printf("- Reading rows with key\n");
-  for (i=0 ; i < NQUERIES ; i++)
-  {
-    FT_DOCLIST *result;
-    result=maria_ft_nlq_init_search(file,0,(char*) query[i],strlen(query[i]),1);
-    if(!result)
-    {
-      printf("Query %d: `%s' failed with errno %3d\n",i,query[i],my_errno);
-      continue;
-    }
-    printf("Query %d: `%s'. Found: %d. Top five documents:\n",
-           i,query[i],result->ndocs);
-    for (j=0;j<5;j++)
-    {
-      double w; int err;
-      err= maria_ft_nlq_read_next(result, read_record);
-      if (err==HA_ERR_END_OF_FILE)
-      {
-        printf("No more matches!\n");
-        break;
-      }
-      else if (err)
-      {
-        printf("maria_ft_read_next %d failed with errno %3d\n",j,my_errno);
-        break;
-      }
-      w=maria_ft_nlq_get_relevance(result);
-      if (key_field == FIELD_VARCHAR)
-      {
-        uint l;
-        char *p;
-        p=recinfo[0].length+read_record;
-        l=uint2korr(p);
-        printf("%10.7f: %.*s\n",w,(int) l,p+2);
-      }
-      else
-        printf("%10.7f: %.*s\n",w,recinfo[1].length,
-               recinfo[0].length+read_record);
-    }
-    maria_ft_nlq_close_search(result);
-  }
-
-  if (maria_close(file)) goto err;
-  maria_end();
-  my_end(MY_CHECK_ERROR);
-
-  return (0);
-err:
-  printf("got error: %3d when using maria-database\n",my_errno);
-  return 1;			/* skip warning */
-}
-
-static char blob_key[MAX_REC_LENGTH];
-/* static char blob_record[MAX_REC_LENGTH+20*20]; */
-
-void create_record(char *pos, int n)
-{
-  bzero((char*) pos,MAX_REC_LENGTH);
-  if (recinfo[0].type == FIELD_BLOB)
-  {
-    uint tmp;
-    char *ptr;
-    strnmov(blob_key,data[n].f0,keyinfo[0].seg[0].length);
-    tmp=strlen(blob_key);
-    int4store(pos,tmp);
-    ptr=blob_key;
-    memcpy_fixed(pos+4,&ptr,sizeof(char*));
-    pos+=recinfo[0].length;
-  }
-  else if (recinfo[0].type == FIELD_VARCHAR)
-  {
-    uint tmp;
-    /* -1 is here because pack_length is stored in seg->length */
-    uint pack_length= HA_VARCHAR_PACKLENGTH(keyinfo[0].seg[0].length-1);
-    strnmov(pos+pack_length,data[n].f0,keyinfo[0].seg[0].length);
-    tmp=strlen(pos+pack_length);
-    if (pack_length == 1)
-      *pos= (char) tmp;
-    else
-      int2store(pos,tmp);
-    pos+=recinfo[0].length;
-  }
-  else
-  {
-    strnmov(pos,data[n].f0,keyinfo[0].seg[0].length);
-    pos+=recinfo[0].length;
-  }
-  if (recinfo[1].type == FIELD_BLOB)
-  {
-    uint tmp;
-    char *ptr;
-    strnmov(blob_key,data[n].f2,keyinfo[0].seg[0].length);
-    tmp=strlen(blob_key);
-    int4store(pos,tmp);
-    ptr=blob_key;
-    memcpy_fixed(pos+4,&ptr,sizeof(char*));
-    pos+=recinfo[1].length;
-  }
-  else if (recinfo[1].type == FIELD_VARCHAR)
-  {
-    uint tmp;
-    /* -1 is here because pack_length is stored in seg->length */
-    uint pack_length= HA_VARCHAR_PACKLENGTH(keyinfo[0].seg[0].length-1);
-    strnmov(pos+pack_length,data[n].f2,keyinfo[0].seg[0].length);
-    tmp=strlen(pos+1);
-    if (pack_length == 1)
-      *pos= (char) tmp;
-    else
-      int2store(pos,tmp);
-    pos+=recinfo[1].length;
-  }
-  else
-  {
-    strnmov(pos,data[n].f2,keyinfo[0].seg[0].length);
-    pos+=recinfo[1].length;
-  }
-}
-
-
-static my_bool
-get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
-	       char *argument)
-{
-  switch(optid) {
-  case 'v': verbose=1; break;
-  case 's': silent=1; break;
-  case 'F': no_fulltext=1; no_search=1;
-  case 'U': skip_update=1; break;
-  case 'K': no_keys=no_search=1; break;
-  case 'N': no_search=1; break;
-  case 'S': no_stopwords=1; break;
-  case '#':
-    DBUG_PUSH (argument);
-    break;
-  case 'V':
-  case '?':
-  case 'h':
-    usage();
-    exit(1);
-  }
-  return 0;
-}
-
-/* Read options */
-
-static void get_options(int argc,char *argv[])
-{
-  int ho_error;
-
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
-    exit(ho_error);
-  return;
-} /* get options */
-
-
-static void usage()
-{
-  printf("%s [options]\n", my_progname);
-  my_print_help(my_long_options);
-  my_print_variables(my_long_options);
-}

=== removed file 'storage/maria/ma_ft_test1.h'
--- a/storage/maria/ma_ft_test1.h	2007-03-02 10:20:23 +0000
+++ b/storage/maria/ma_ft_test1.h	1970-01-01 00:00:00 +0000
@@ -1,420 +0,0 @@
-/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
-
-#define NUPD            20
-#define NDATAS          389
-struct { const char *f0, *f2; } data[NDATAS] = {
-   {"1", "General Information about MySQL"},
-   {"1.1", "What is MySQL?"},
-   {"1.2", "About this manual"},
-   {"1.3", "History of MySQL"},
-   {"1.4", "The main features of MySQL"},
-   {"1.5", "General SQL information and tutorials"},
-   {"1.6", "Useful MySQL-related links"},
-   {"1.7", "What are stored procedures and triggers and so on?"},
-   {"2", "MySQL mailing lists and how to ask questions/give error (bug) reports"},
-   {"2.1", "Subscribing to/un-subscribing from the MySQL mailing list"},
-   {"2.2", "Asking questions or reporting bugs"},
-   {"2.3", "I think I have found a bug. What information do you need to help me?"},
-   {"2.3.1", "MySQL keeps crashing"},
-   {"2.4", "Guidelines for answering questions on the mailing list"},
-   {"3", "Licensing or When do I have/want to pay for MySQL?"},
-   {"3.1", "How much does MySQL cost?"},
-   {"3.2", "How do I get commercial support?"},
-   {"3.2.1", "Types of commercial support"},
-   {"3.2.1.1", "Basic email support"},
-   {"3.2.1.2", "Extended email support"},
-/*------------------------------- NUPD=20 -------------------------------*/
-   {"3.2.1.3", "Asking: Login support"},
-   {"3.2.1.4", "Extended login support"},
-   {"3.3", "How do I pay for licenses/support?"},
-   {"3.4", "Who do I contact when I want more information about licensing/support?"},
-   {"3.5", "What Copyright does MySQL use?"},
-   {"3.6", "When may I distribute MySQL commercially without a fee?"},
-   {"3.7", "I want to sell a product that can be configured to use MySQL"},
-   {"3.8", "I am running a commercial web server using MySQL"},
-   {"3.9", "Do I need a license to sell commercial Perl/tcl/PHP/Web+ etc applications?"},
-   {"3.10", "Possible future changes in the licensing"},
-   {"4", "Compiling and installing MySQL"},
-   {"4.1", "How do I get MySQL?"},
-   {"4.2", "Which MySQL version should I use?"},
-   {"4.3", "How/when will you release updates?"},
-   {"4.4", "What operating systems does MySQL support?"},
-   {"4.5", "Compiling MySQL from source code"},
-   {"4.5.1", "Quick installation overview"},
-   {"4.5.2", "Usual configure switches"},
-   {"4.5.3", "Applying a patch"},
-   {"4.6", "Problems compiling?"},
-   {"4.7", "General compilation notes"},
-   {"4.8", "MIT-pthreads notes (FreeBSD)"},
-   {"4.9", "Perl installation comments"},
-   {"4.10", "Special things to consider for some machine/OS combinations"},
-   {"4.10.1", "Solaris notes"},
-   {"4.10.2", "SunOS 4 notes"},
-   {"4.10.3", "Linux notes for all versions"},
-   {"4.10.3.1", "Linux-x86 notes"},
-   {"4.10.3.2", "RedHat 5.0"},
-   {"4.10.3.3", "RedHat 5.1"},
-   {"4.10.3.4", "Linux-Sparc notes"},
-   {"4.10.3.5", "Linux-Alpha notes"},
-   {"4.10.3.6", "MkLinux notes"},
-   {"4.10.4", "Alpha-DEC-Unix notes"},
-   {"4.10.5", "Alpha-DEC-OSF1 notes"},
-   {"4.10.6", "SGI-IRIX notes"},
-   {"4.10.7", "FreeBSD notes"},
-   {"4.10.7.1", "FreeBSD-3.0 notes"},
-   {"4.10.8", "BSD/OS 2.# notes"},
-   {"4.10.8.1", "BSD/OS 3.# notes"},
-   {"4.10.9", "SCO notes"},
-   {"4.10.10", "SCO Unixware 7.0 notes"},
-   {"4.10.11", "IBM-AIX notes"},
-   {"4.10.12", "HP-UX notes"},
-   {"4.11", "TcX binaries"},
-   {"4.12", "Win32 notes"},
-   {"4.13", "Installation instructions for MySQL binary releases"},
-   {"4.13.1", "How to get MySQL Perl support working"},
-   {"4.13.2", "Linux notes"},
-   {"4.13.3", "HP-UX notes"},
-   {"4.13.4", "Linking client libraries"},
-   {"4.14", "Problems running mysql_install_db"},
-   {"4.15", "Problems starting MySQL"},
-   {"4.16", "Automatic start/stop of MySQL"},
-   {"4.17", "Option files"},
-   {"5", "How standards-compatible is MySQL?"},
-   {"5.1", "What extensions has MySQL to ANSI SQL92?"},
-   {"5.2", "What functionality is missing in MySQL?"},
-   {"5.2.1", "Sub-selects"},
-   {"5.2.2", "SELECT INTO TABLE"},
-   {"5.2.3", "Transactions"},
-   {"5.2.4", "Triggers"},
-   {"5.2.5", "Foreign Keys"},
-   {"5.2.5.1", "Some reasons NOT to use FOREIGN KEYS"},
-   {"5.2.6", "Views"},
-   {"5.2.7", "-- as start of a comment"},
-   {"5.3", "What standards does MySQL follow?"},
-   {"5.4", "What functions exist only for compatibility?"},
-   {"5.5", "Limitations of BLOB and TEXT types"},
-   {"5.6", "How to cope without COMMIT-ROLLBACK"},
-   {"6", "The MySQL access privilege system"},
-   {"6.1", "What the privilege system does"},
-   {"6.2", "Connecting to the MySQL server"},
-   {"6.2.1", "Keeping your password secure"},
-   {"6.3", "Privileges provided by MySQL"},
-   {"6.4", "How the privilege system works"},
-   {"6.5", "The privilege tables"},
-   {"6.6", "Setting up the initial MySQL privileges"},
-   {"6.7", "Adding new user privileges to MySQL"},
-   {"6.8", "An example permission setup"},
-   {"6.9", "Causes of Access denied errors"},
-   {"6.10", "How to make MySQL secure against crackers"},
-   {"7", "MySQL language reference"},
-   {"7.1", "Literals: how to write strings and numbers"},
-   {"7.1.1", "Strings"},
-   {"7.1.2", "Numbers"},
-   {"7.1.3", "NULL values"},
-   {"7.1.4", "Database, table, index, column and alias names"},
-   {"7.1.4.1", "Case sensitivity in names"},
-   {"7.2", "Column types"},
-   {"7.2.1", "Column type storage requirements"},
-   {"7.2.5", "Numeric types"},
-   {"7.2.6", "Date and time types"},
-   {"7.2.6.1", "The DATE type"},
-   {"7.2.6.2", "The TIME type"},
-   {"7.2.6.3", "The DATETIME type"},
-   {"7.2.6.4", "The TIMESTAMP type"},
-   {"7.2.6.5", "The YEAR type"},
-   {"7.2.6.6", "Miscellaneous date and time properties"},
-   {"7.2.7", "String types"},
-   {"7.2.7.1", "The CHAR and VARCHAR types"},
-   {"7.2.7.2", "The BLOB and TEXT types"},
-   {"7.2.7.3", "The ENUM type"},
-   {"7.2.7.4", "The SET type"},
-   {"7.2.8", "Choosing the right type for a column"},
-   {"7.2.9", "Column indexes"},
-   {"7.2.10", "Multiple-column indexes"},
-   {"7.2.11", "Using column types from other database engines"},
-   {"7.3", "Functions for use in SELECT and WHERE clauses"},
-   {"7.3.1", "Grouping functions"},
-   {"7.3.2", "Normal arithmetic operations"},
-   {"7.3.3", "Bit functions"},
-   {"7.3.4", "Logical operations"},
-   {"7.3.5", "Comparison operators"},
-   {"7.3.6", "String comparison functions"},
-   {"7.3.7", "Control flow functions"},
-   {"7.3.8", "Mathematical functions"},
-   {"7.3.9", "String functions"},
-   {"7.3.10", "Date and time functions"},
-   {"7.3.11", "Miscellaneous functions"},
-   {"7.3.12", "Functions for use with GROUP BY clauses"},
-   {"7.4", "CREATE DATABASE syntax"},
-   {"7.5", "DROP DATABASE syntax"},
-   {"7.6", "CREATE TABLE syntax"},
-   {"7.7", "ALTER TABLE syntax"},
-   {"7.8", "OPTIMIZE TABLE syntax"},
-   {"7.9", "DROP TABLE syntax"},
-   {"7.10", "DELETE syntax"},
-   {"7.11", "SELECT syntax"},
-   {"7.12", "JOIN syntax"},
-   {"7.13", "INSERT syntax"},
-   {"7.14", "REPLACE syntax"},
-   {"7.15", "LOAD DATA INFILE syntax"},
-   {"7.16", "UPDATE syntax"},
-   {"7.17", "USE syntax"},
-   {"7.18", "SHOW syntax (Get information about tables, columns...)"},
-   {"7.19", "EXPLAIN syntax (Get information about a SELECT)"},
-   {"7.20", "DESCRIBE syntax (Get information about columns)"},
-   {"7.21", "LOCK TABLES/UNLOCK TABLES syntax"},
-   {"7.22", "SET OPTION syntax"},
-   {"7.23", "GRANT syntax (Compatibility function)"},
-   {"7.24", "CREATE INDEX syntax (Compatibility function)"},
-   {"7.25", "DROP INDEX syntax (Compatibility function)"},
-   {"7.26", "Comment syntax"},
-   {"7.27", "CREATE FUNCTION/DROP FUNCTION syntax"},
-   {"7.28", "Is MySQL picky about reserved words?"},
-   {"8", "Example SQL queries"},
-   {"8.1", "Queries from twin project"},
-   {"8.1.1", "Find all non-distributed twins"},
-   {"8.1.2", "Show a table on twin pair status"},
-   {"9", "How safe/stable is MySQL?"},
-   {"9.1", "How stable is MySQL?"},
-   {"9.2", "Why are there is so many releases of MySQL?"},
-   {"9.3", "Checking a table for errors"},
-   {"9.4", "How to repair tables"},
-   {"9.5", "Is there anything special to do when upgrading/downgrading MySQL?"},
-   {"9.5.1", "Upgrading from a 3.21 version to 3.22"},
-   {"9.5.2", "Upgrading from a 3.20 version to 3.21"},
-   {"9.5.3", "Upgrading to another architecture"},
-   {"9.6", "Year 2000 compliance"},
-   {"10", "MySQL Server functions"},
-   {"10.1", "What languages are supported by MySQL?"},
-   {"10.1.1", "Character set used for data &#38; sorting"},
-   {"10.2", "The update log"},
-   {"10.3", "How big can MySQL tables be?"},
-   {"11", "Getting maximum performance from MySQL"},
-   {"11.1", "How does one change the size of MySQL buffers?"},
-   {"11.2", "How compiling and linking affects the speed of MySQL"},
-   {"11.3", "How does MySQL use memory?"},
-   {"11.4", "How does MySQL use indexes?"},
-   {"11.5", "What optimizations are done on WHERE clauses?"},
-   {"11.6", "How does MySQL open &#38; close tables?"},
-   {"11.6.0.1", "What are the drawbacks of creating possibly thousands of tables in a database?"},
-   {"11.7", "How does MySQL lock tables?"},
-   {"11.8", "How should I arrange my table to be as fast/small as possible?"},
-   {"11.9", "What affects the speed of INSERT statements?"},
-   {"11.10", "What affects the speed DELETE statements?"},
-   {"11.11", "How do I get MySQL to run at full speed?"},
-   {"11.12", "What are the different row formats? Or, when should VARCHAR/CHAR be used?"},
-   {"11.13", "Why so many open tables?"},
-   {"12", "MySQL benchmark suite"},
-   {"13", "MySQL Utilites"},
-   {"13.1", "Overview of the different MySQL programs"},
-   {"13.2", "The MySQL table check, optimize and repair program"},
-   {"13.2.1", "isamchk memory use"},
-   {"13.2.2", "Getting low-level table information"},
-   {"13.3", "The MySQL compressed read-only table generator"},
-   {"14", "Adding new functions to MySQL"},
-   {"15", "MySQL ODBC Support"},
-   {"15.1", "Operating systems supported by MyODBC"},
-   {"15.2", "How to report problems with MyODBC"},
-   {"15.3", "Programs known to work with MyODBC"},
-   {"15.4", "How to fill in the various fields in the ODBC administrator program"},
-   {"15.5", "How to get the value of an AUTO_INCREMENT column in ODBC"},
-   {"16", "Problems and common errors"},
-   {"16.1", "Some common errors when using MySQL"},
-   {"16.1.1", "MySQL server has gone away error"},
-   {"16.1.2", "Can't connect to local MySQL server error"},
-   {"16.1.3", "Out of memory error"},
-   {"16.1.4", "Packet too large error"},
-   {"16.1.5", "The table is full error"},
-   {"16.1.6", "Commands out of sync error in client"},
-   {"16.1.7", "Removing user error"},
-   {"16.2", "How MySQL handles a full disk"},
-   {"16.3", "How to run SQL commands from a text file"},
-   {"16.4", "Where MySQL stores temporary files"},
-   {"16.5", "Access denied error"},
-   {"16.6", "How to run MySQL as a normal user"},
-   {"16.7", "Problems with file permissions"},
-   {"16.8", "File not found"},
-   {"16.9", "Problems using DATE columns"},
-   {"16.10", "Case sensitivity in searches"},
-   {"16.11", "Problems with NULL values"},
-   {"17", "Solving some common problems with MySQL"},
-   {"17.1", "Database replication"},
-   {"17.2", "Database backups"},
-   {"18", "MySQL client tools and API's"},
-   {"18.1", "MySQL C API"},
-   {"18.2", "C API datatypes"},
-   {"18.3", "C API function overview"},
-   {"18.4", "C API function descriptions"},
-   {"18.4.1", "mysql_affected_rows()"},
-   {"18.4.2", "mysql_close()"},
-   {"18.4.3", "mysql_connect()"},
-   {"18.4.4", "mysql_create_db()"},
-   {"18.4.5", "mysql_data_seek()"},
-   {"18.4.6", "mysql_debug()"},
-   {"18.4.7", "mysql_drop_db()"},
-   {"18.4.8", "mysql_dump_debug_info()"},
-   {"18.4.9", "mysql_eof()"},
-   {"18.4.10", "mysql_errno()"},
-   {"18.4.11", "mysql_error()"},
-   {"18.4.12", "mysql_escape_string()"},
-   {"18.4.13", "mysql_fetch_field()"},
-   {"18.4.14", "mysql_fetch_fields()"},
-   {"18.4.15", "mysql_fetch_field_direct()"},
-   {"18.4.16", "mysql_fetch_lengths()"},
-   {"18.4.17", "mysql_fetch_row()"},
-   {"18.4.18", "mysql_field_seek()"},
-   {"18.4.19", "mysql_field_tell()"},
-   {"18.4.20", "mysql_free_result()"},
-   {"18.4.21", "mysql_get_client_info()"},
-   {"18.4.22", "mysql_get_host_info()"},
-   {"18.4.23", "mysql_get_proto_info()"},
-   {"18.4.24", "mysql_get_server_info()"},
-   {"18.4.25", "mysql_info()"},
-   {"18.4.26", "mysql_init()"},
-   {"18.4.27", "mysql_insert_id()"},
-   {"18.4.28", "mysql_kill()"},
-   {"18.4.29", "mysql_list_dbs()"},
-   {"18.4.30", "mysql_list_fields()"},
-   {"18.4.31", "mysql_list_processes()"},
-   {"18.4.32", "mysql_list_tables()"},
-   {"18.4.33", "mysql_num_fields()"},
-   {"18.4.34", "mysql_num_rows()"},
-   {"18.4.35", "mysql_query()"},
-   {"18.4.36", "mysql_real_connect()"},
-   {"18.4.37", "mysql_real_query()"},
-   {"18.4.38", "mysql_reload()"},
-   {"18.4.39", "mysql_row_tell()"},
-   {"18.4.40", "mysql_select_db()"},
-   {"18.4.41", "mysql_shutdown()"},
-   {"18.4.42", "mysql_stat()"},
-   {"18.4.43", "mysql_store_result()"},
-   {"18.4.44", "mysql_thread_id()"},
-   {"18.4.45", "mysql_use_result()"},
-   {"18.4.46", "Why is it that after mysql_query() returns success, mysql_store_result() sometimes returns NULL?"},
-   {"18.4.47", "What results can I get from a query?"},
-   {"18.4.48", "How can I get the unique ID for the last inserted row?"},
-   {"18.4.49", "Problems linking with the C API"},
-   {"18.4.50", "How to make a thread-safe client"},
-   {"18.5", "MySQL Perl API's"},
-   {"18.5.1", "DBI with DBD::mysql"},
-   {"18.5.1.1", "The DBI interface"},
-   {"18.5.1.2", "More DBI/DBD information"},
-   {"18.6", "MySQL Java connectivity (JDBC)"},
-   {"18.7", "MySQL PHP API's"},
-   {"18.8", "MySQL C++ API's"},
-   {"18.9", "MySQL Python API's"},
-   {"18.10", "MySQL TCL API's"},
-   {"19", "How MySQL compares to other databases"},
-   {"19.1", "How MySQL compares to mSQL"},
-   {"19.1.1", "How to convert mSQL tools for MySQL"},
-   {"19.1.2", "How mSQL and MySQL client/server communications protocols differ"},
-   {"19.1.3", "How mSQL 2.0 SQL syntax differs from MySQL"},
-   {"19.2", "How MySQL compares to PostgreSQL"},
-   {"A", "Some users of MySQL"},
-   {"B", "Contributed programs"},
-   {"C", "Contributors to MySQL"},
-   {"D", "MySQL change history"},
-   {"19.3", "Changes in release 3.22.x (Alpha version)"},
-   {"19.3.1", "Changes in release 3.22.7"},
-   {"19.3.2", "Changes in release 3.22.6"},
-   {"19.3.3", "Changes in release 3.22.5"},
-   {"19.3.4", "Changes in release 3.22.4"},
-   {"19.3.5", "Changes in release 3.22.3"},
-   {"19.3.6", "Changes in release 3.22.2"},
-   {"19.3.7", "Changes in release 3.22.1"},
-   {"19.3.8", "Changes in release 3.22.0"},
-   {"19.4", "Changes in release 3.21.x"},
-   {"19.4.1", "Changes in release 3.21.33"},
-   {"19.4.2", "Changes in release 3.21.32"},
-   {"19.4.3", "Changes in release 3.21.31"},
-   {"19.4.4", "Changes in release 3.21.30"},
-   {"19.4.5", "Changes in release 3.21.29"},
-   {"19.4.6", "Changes in release 3.21.28"},
-   {"19.4.7", "Changes in release 3.21.27"},
-   {"19.4.8", "Changes in release 3.21.26"},
-   {"19.4.9", "Changes in release 3.21.25"},
-   {"19.4.10", "Changes in release 3.21.24"},
-   {"19.4.11", "Changes in release 3.21.23"},
-   {"19.4.12", "Changes in release 3.21.22"},
-   {"19.4.13", "Changes in release 3.21.21a"},
-   {"19.4.14", "Changes in release 3.21.21"},
-   {"19.4.15", "Changes in release 3.21.20"},
-   {"19.4.16", "Changes in release 3.21.19"},
-   {"19.4.17", "Changes in release 3.21.18"},
-   {"19.4.18", "Changes in release 3.21.17"},
-   {"19.4.19", "Changes in release 3.21.16"},
-   {"19.4.20", "Changes in release 3.21.15"},
-   {"19.4.21", "Changes in release 3.21.14b"},
-   {"19.4.22", "Changes in release 3.21.14a"},
-   {"19.4.23", "Changes in release 3.21.13"},
-   {"19.4.24", "Changes in release 3.21.12"},
-   {"19.4.25", "Changes in release 3.21.11"},
-   {"19.4.26", "Changes in release 3.21.10"},
-   {"19.4.27", "Changes in release 3.21.9"},
-   {"19.4.28", "Changes in release 3.21.8"},
-   {"19.4.29", "Changes in release 3.21.7"},
-   {"19.4.30", "Changes in release 3.21.6"},
-   {"19.4.31", "Changes in release 3.21.5"},
-   {"19.4.32", "Changes in release 3.21.4"},
-   {"19.4.33", "Changes in release 3.21.3"},
-   {"19.4.34", "Changes in release 3.21.2"},
-   {"19.4.35", "Changes in release 3.21.0"},
-   {"19.5", "Changes in release 3.20.x"},
-   {"19.5.1", "Changes in release 3.20.18"},
-   {"19.5.2", "Changes in release 3.20.17"},
-   {"19.5.3", "Changes in release 3.20.16"},
-   {"19.5.4", "Changes in release 3.20.15"},
-   {"19.5.5", "Changes in release 3.20.14"},
-   {"19.5.6", "Changes in release 3.20.13"},
-   {"19.5.7", "Changes in release 3.20.11"},
-   {"19.5.8", "Changes in release 3.20.10"},
-   {"19.5.9", "Changes in release 3.20.9"},
-   {"19.5.10", "Changes in release 3.20.8"},
-   {"19.5.11", "Changes in release 3.20.7"},
-   {"19.5.12", "Changes in release 3.20.6"},
-   {"19.5.13", "Changes in release 3.20.3"},
-   {"19.5.14", "Changes in release 3.20.0"},
-   {"19.6", "Changes in release 3.19.x"},
-   {"19.6.1", "Changes in release 3.19.5"},
-   {"19.6.2", "Changes in release 3.19.4"},
-   {"19.6.3", "Changes in release 3.19.3"},
-   {"E", "Known errors and design deficiencies in MySQL"},
-   {"F", "List of things we want to add to MySQL in the future (The TODO)"},
-   {"19.7", "Things that must done in the real near future"},
-   {"19.8", "Things that have to be done sometime"},
-   {"19.9", "Some things we don't have any plans to do"},
-   {"G", "Comments on porting to other systems"},
-   {"19.10", "Debugging MySQL"},
-   {"19.11", "Comments about RTS threads"},
-   {"19.12", "What is the difference between different thread packages?"},
-   {"H", "Description of MySQL regular expression syntax"},
-   {"I", "What is Unireg?"},
-   {"J", "The MySQL server license"},
-   {"K", "The MySQL license for Microsoft operating systems"},
-   {"*", "SQL command, type and function index"},
-   {"*", "Concept Index"}
-};
-
-#define NQUERIES 5
-const char *query[NQUERIES]={
-   "mysql information and manual",
-   "upgrading from previous version",
-   "column indexes",
-   "against about after more right the with/without", /* stopwords test */
-   "mysql license and copyright"
-};

=== modified file 'storage/myisam/CMakeLists.txt' (properties changed: +x to -x)
--- a/storage/myisam/CMakeLists.txt	2009-04-30 14:35:36 +0000
+++ b/storage/myisam/CMakeLists.txt	2009-05-11 17:58:07 +0000
@@ -15,9 +15,8 @@
 INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
 INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
 
-SET(MYISAM_SOURCES  ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c ft_stem.c
-                                ha_myisam.cc
-				ft_myisam.c 
+SET(MYISAM_SOURCES  ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c
+                                ha_myisam.cc ft_myisam.c
 				ft_stopwords.c ft_update.c mi_cache.c mi_changed.c mi_check.c
 				mi_checksum.c mi_close.c mi_create.c mi_dbug.c mi_delete.c 
 				mi_delete_all.c mi_delete_table.c mi_dynrec.c mi_extra.c mi_info.c
@@ -26,7 +25,7 @@ SET(MYISAM_SOURCES  ft_boolean_search.c 
 				mi_rfirst.c mi_rlast.c mi_rnext.c mi_rnext_same.c mi_rprev.c mi_rrnd.c
 				mi_rsame.c mi_rsamepos.c mi_scan.c mi_search.c mi_static.c mi_statrec.c
 				mi_unique.c mi_update.c mi_write.c rt_index.c rt_key.c rt_mbr.c
-				rt_split.c sort.c sp_key.c ft_eval.h mi_extrafunc.h myisamdef.h
+				rt_split.c sort.c sp_key.c mi_extrafunc.h myisamdef.h
 				rt_index.h mi_rkey.c mi_examine_log.c myisam_backup_engine.cc)
 
 MYSQL_STORAGE_ENGINE(MYISAM)

=== modified file 'storage/myisam/Makefile.am'
--- a/storage/myisam/Makefile.am	2009-01-07 10:58:33 +0000
+++ b/storage/myisam/Makefile.am	2009-04-06 18:36:46 +0000
@@ -26,7 +26,7 @@ LDADD =
 
 DEFS =                  @DEFS@
 
-EXTRA_DIST =		mi_test_all.sh mi_test_all.res ft_stem.c CMakeLists.txt plug.in
+EXTRA_DIST =		mi_test_all.sh mi_test_all.res CMakeLists.txt plug.in
 pkgdata_DATA =		mi_test_all mi_test_all.res
 
 pkglib_LIBRARIES =	libmyisam.a
@@ -46,10 +46,9 @@ myisampack_LDADD=		@CLIENT_EXTRA_LDFLAGS
 			$(top_builddir)/mysys/libmysyslt.la \
 			$(top_builddir)/dbug/libdbuglt.la \
 			$(top_builddir)/strings/libmystringslt.la @ZLIB_LIBS@
-noinst_PROGRAMS =	mi_test1 mi_test2 mi_test3 rt_test sp_test #ft_test1 ft_eval
+noinst_PROGRAMS =	mi_test1 mi_test2 mi_test3 rt_test sp_test
 noinst_HEADERS =	myisamdef.h rt_index.h rt_key.h rt_mbr.h sp_defs.h \
-			fulltext.h ftdefs.h ft_test1.h ft_eval.h \
-			ha_myisam.h mi_extrafunc.h
+			fulltext.h ftdefs.h ha_myisam.h mi_extrafunc.h
 mi_test1_DEPENDENCIES=	$(LIBRARIES)
 mi_test1_LDADD=		@CLIENT_EXTRA_LDFLAGS@ libmyisam.a \
 			$(top_builddir)/mysys/libmysyslt.la \
@@ -65,8 +64,6 @@ mi_test3_LDADD=		@CLIENT_EXTRA_LDFLAGS@ 
 			$(top_builddir)/mysys/libmysyslt.la \
 			$(top_builddir)/dbug/libdbuglt.la \
 			$(top_builddir)/strings/libmystringslt.la @ZLIB_LIBS@
-#ft_test1_DEPENDENCIES=	$(LIBRARIES)
-#ft_eval_DEPENDENCIES=	$(LIBRARIES)
 myisam_ftdump_DEPENDENCIES=	$(LIBRARIES)
 myisam_ftdump_LDADD =			@CLIENT_EXTRA_LDFLAGS@ libmyisam.a \
 			$(top_builddir)/mysys/libmysyslt.la \

=== removed file 'storage/myisam/ft_eval.c'
--- a/storage/myisam/ft_eval.c	2008-05-29 15:44:11 +0000
+++ b/storage/myisam/ft_eval.c	1970-01-01 00:00:00 +0000
@@ -1,252 +0,0 @@
-/* Copyright (C) 2000-2002 MySQL AB
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code
-   added support for long options (my_getopt) 22.5.2002 by Jani Tolonen */
-
-#include "ftdefs.h"
-#include "ft_eval.h"
-#include <stdarg.h>
-#include <my_getopt.h>
-
-static void print_error(int exit_code, const char *fmt,...);
-static void get_options(int argc, char *argv[]);
-static int create_record(char *pos, FILE *file);
-static void usage();
-
-static struct my_option my_long_options[] =
-{
-  {"", 's', "", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'q', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'S', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '#', "", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'V', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '?', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'h', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-
-int main(int argc, char *argv[])
-{
-  MI_INFO *file;
-  int i,j;
-
-  MY_INIT(argv[0]);
-  get_options(argc,argv);
-  bzero((char*)recinfo,sizeof(recinfo));
-
-  /* First define 2 columns */
-  recinfo[0].type=FIELD_SKIP_ENDSPACE;
-  recinfo[0].length=docid_length;
-  recinfo[1].type=FIELD_BLOB;
-  recinfo[1].length= 4+portable_sizeof_char_ptr;
-
-  /* Define a key over the first column */
-  keyinfo[0].seg=keyseg;
-  keyinfo[0].keysegs=1;
-  keyinfo[0].block_length= 0;                   /* Default block length */
-  keyinfo[0].seg[0].type= HA_KEYTYPE_TEXT;
-  keyinfo[0].seg[0].flag= HA_BLOB_PART;
-  keyinfo[0].seg[0].start=recinfo[0].length;
-  keyinfo[0].seg[0].length=key_length;
-  keyinfo[0].seg[0].null_bit=0;
-  keyinfo[0].seg[0].null_pos=0;
-  keyinfo[0].seg[0].bit_start=4;
-  keyinfo[0].seg[0].language=MY_CHARSET_CURRENT;
-  keyinfo[0].flag = HA_FULLTEXT;
-
-  if (!silent)
-    printf("- Creating isam-file\n");
-  if (mi_create(filename,1,keyinfo,2,recinfo,0,NULL,(MI_CREATE_INFO*) 0,0))
-    goto err;
-  if (!(file=mi_open(filename,2,0)))
-    goto err;
-  if (!silent)
-    printf("Initializing stopwords\n");
-  ft_init_stopwords(stopwordlist);
-
-  if (!silent)
-    printf("- Writing key:s\n");
-
-  my_errno=0;
-  i=0;
-  while (create_record(record,df))
-  {
-    error=mi_write(file,record);
-    if (error)
-      printf("I= %2d  mi_write: %d  errno: %d\n",i,error,my_errno);
-    i++;
-  }
-  fclose(df);
-
-  if (mi_close(file)) goto err;
-  if (!silent)
-    printf("- Reopening file\n");
-  if (!(file=mi_open(filename,2,0))) goto err;
-  if (!silent)
-    printf("- Reading rows with key\n");
-  for (i=1;create_record(record,qf);i++)
-  {
-    FT_DOCLIST *result;
-    double w;
-    int t, err;
-
-    result=ft_nlq_init_search(file,0,blob_record,(uint) strlen(blob_record),1);
-    if (!result)
-    {
-      printf("Query %d failed with errno %3d\n",i,my_errno);
-      goto err;
-    }
-    if (!silent)
-      printf("Query %d. Found: %d.\n",i,result->ndocs);
-    for (j=0;(err=ft_nlq_read_next(result, read_record))==0;j++)
-    {
-      t=uint2korr(read_record);
-      w=ft_nlq_get_relevance(result);
-      printf("%d %.*s %f\n",i,t,read_record+2,w);
-    }
-    if (err != HA_ERR_END_OF_FILE)
-    {
-      printf("ft_read_next %d failed with errno %3d\n",j,my_errno);
-      goto err;
-    }
-    ft_nlq_close_search(result);
-  }
-
-  if (mi_close(file)) goto err;
-  my_end(MY_CHECK_ERROR);
-
-  return (0);
-
- err:
-  printf("got error: %3d when using myisam-database\n",my_errno);
-  return 1;			/* skip warning */
-
-}
-
-
-static my_bool
-get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
-	       char *argument)
-{
-  switch (optid) {
-  case 's':
-    if (stopwordlist && stopwordlist != ft_precompiled_stopwords)
-      break;
-    {
-      FILE *f; char s[HA_FT_MAXLEN]; int i=0,n=SWL_INIT;
-
-      if (!(stopwordlist=(const char**) malloc(n*sizeof(char *))))
-	print_error(1,"malloc(%d)",n*sizeof(char *));
-      if (!(f=fopen(argument,"r")))
-	print_error(1,"fopen(%s)",argument);
-      while (!feof(f))
-      {
-	if (!(fgets(s,HA_FT_MAXLEN,f)))
-	  print_error(1,"fgets(s,%d,%s)",HA_FT_MAXLEN,argument);
-	if (!(stopwordlist[i++]=strdup(s)))
-	  print_error(1,"strdup(%s)",s);
-	if (i >= n)
-	{
-	  n+=SWL_PLUS;
-	  if (!(stopwordlist=(const char**) realloc((char*) stopwordlist,
-						    n*sizeof(char *))))
-	    print_error(1,"realloc(%d)",n*sizeof(char *));
-	}
-      }
-      fclose(f);
-      stopwordlist[i]=NULL;
-      break;
-    }
-  case 'q': silent=1; break;
-  case 'S': if (stopwordlist==ft_precompiled_stopwords) stopwordlist=NULL; break;
-  case '#':
-    DBUG_PUSH (argument);
-    break;
-  case 'V':
-  case '?':
-  case 'h':
-    usage();
-    exit(1);
-  }
-  return 0;
-}
-
-
-static void get_options(int argc, char *argv[])
-{
-  int ho_error;
-
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
-    exit(ho_error);
-
-  if (!(d_file=argv[optind])) print_error(1,"No d_file");
-  if (!(df=fopen(d_file,"r")))
-    print_error(1,"fopen(%s)",d_file);
-  if (!(q_file=argv[optind+1])) print_error(1,"No q_file");
-  if (!(qf=fopen(q_file,"r")))
-    print_error(1,"fopen(%s)",q_file);
-  return;
-} /* get options */
-
-
-static int create_record(char *pos, FILE *file)
-{
-  uint tmp; char *ptr;
-
-  bzero((char *)pos,MAX_REC_LENGTH);
-
-  /* column 1 - VARCHAR */
-  if (!(fgets(pos+2,MAX_REC_LENGTH-32,file)))
-  {
-    if (feof(file))
-      return 0;
-    else
-      print_error(1,"fgets(docid) - 1");
-  }
-  tmp=(uint) strlen(pos+2)-1;
-  int2store(pos,tmp);
-  pos+=recinfo[0].length;
-
-  /* column 2 - BLOB */
-
-  if (!(fgets(blob_record,MAX_BLOB_LENGTH,file)))
-    print_error(1,"fgets(docid) - 2");
-  tmp=(uint) strlen(blob_record);
-  int4store(pos,tmp);
-  ptr=blob_record;
-  memcpy_fixed(pos+4,&ptr,sizeof(char*));
-  return 1;
-}
-
-/* VARARGS */
-
-static void print_error(int exit_code, const char *fmt,...)
-{
-  va_list args;
-
-  va_start(args,fmt);
-  fprintf(stderr,"%s: error: ",my_progname);
-  (void) vfprintf(stderr, fmt, args);
-  (void) fputc('\n',stderr);
-  fflush(stderr);
-  va_end(args);
-  exit(exit_code);
-}
-
-
-static void usage()
-{
-  printf("%s [options]\n", my_progname);
-  my_print_help(my_long_options);
-  my_print_variables(my_long_options);
-}

=== removed file 'storage/myisam/ft_eval.h'
--- a/storage/myisam/ft_eval.h	2006-12-23 19:20:40 +0000
+++ b/storage/myisam/ft_eval.h	1970-01-01 00:00:00 +0000
@@ -1,41 +0,0 @@
-/* Copyright (C) 2000 MySQL AB & Sergei A. Golubchik
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
-
-const char **stopwordlist=ft_precompiled_stopwords;
-
-#define MAX_REC_LENGTH 128
-#define MAX_BLOB_LENGTH 60000
-char record[MAX_REC_LENGTH], read_record[MAX_REC_LENGTH+MAX_BLOB_LENGTH];
-char blob_record[MAX_BLOB_LENGTH+20*20];
-
-char *filename= (char*) "EVAL";
-
-int silent=0, error=0;
-
-uint key_length=MAX_BLOB_LENGTH,docid_length=32;
-char *d_file, *q_file;
-FILE *df,*qf;
-
-MI_COLUMNDEF recinfo[3];
-MI_KEYDEF keyinfo[2];
-HA_KEYSEG keyseg[10];
-
-#define SWL_INIT 500
-#define SWL_PLUS 50
-
-#define MAX_LINE_LENGTH 128
-char line[MAX_LINE_LENGTH];

=== modified file 'storage/myisam/ft_myisam.c'
--- a/storage/myisam/ft_myisam.c	2007-07-02 17:45:15 +0000
+++ b/storage/myisam/ft_myisam.c	2009-04-23 21:17:43 +0000
@@ -2,8 +2,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; version 2 of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== removed file 'storage/myisam/ft_stem.c'
--- a/storage/myisam/ft_stem.c	2006-12-31 00:32:21 +0000
+++ b/storage/myisam/ft_stem.c	1970-01-01 00:00:00 +0000
@@ -1,18 +0,0 @@
-/* Copyright (C) 2000 MySQL AB
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
-
-/* mulitingual stem */

=== removed file 'storage/myisam/ft_test1.c'
--- a/storage/myisam/ft_test1.c	2008-04-28 16:24:05 +0000
+++ b/storage/myisam/ft_test1.c	1970-01-01 00:00:00 +0000
@@ -1,315 +0,0 @@
-/* Copyright (C) 2000-2002, 2004 MySQL AB
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code
-   added support for long options (my_getopt) 22.5.2002 by Jani Tolonen */
-
-#include "ftdefs.h"
-#include "ft_test1.h"
-#include <my_getopt.h>
-
-static int key_field=FIELD_VARCHAR,extra_field=FIELD_SKIP_ENDSPACE;
-static uint key_length=200,extra_length=50;
-static int key_type=HA_KEYTYPE_TEXT;
-static int verbose=0,silent=0,skip_update=0,
-	   no_keys=0,no_stopwords=0,no_search=0,no_fulltext=0;
-static int create_flag=0,error=0;
-
-#define MAX_REC_LENGTH 300
-static char record[MAX_REC_LENGTH],read_record[MAX_REC_LENGTH];
-
-static int run_test(const char *filename);
-static void get_options(int argc, char *argv[]);
-static void create_record(char *, int);
-static void usage();
-
-static struct my_option my_long_options[] =
-{
-  {"", 'v', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '?', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'h', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'V', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'v', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 's', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'N', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'S', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'K', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'F', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", 'U', "", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-  {"", '#', "", 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
-  { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
-};
-
-int main(int argc, char *argv[])
-{
-  MY_INIT(argv[0]);
-
-  get_options(argc,argv);
-
-  exit(run_test("FT1"));
-}
-
-static MI_COLUMNDEF recinfo[3];
-static MI_KEYDEF keyinfo[2];
-static HA_KEYSEG keyseg[10];
-
-static int run_test(const char *filename)
-{
-  MI_INFO *file;
-  int i,j;
-  my_off_t pos;
-
-  bzero((char*) recinfo,sizeof(recinfo));
-
-  /* First define 2 columns */
-  recinfo[0].type=extra_field;
-  recinfo[0].length= (extra_field == FIELD_BLOB ? 4 + portable_sizeof_char_ptr :
-	      extra_length);
-  if (extra_field == FIELD_VARCHAR)
-    recinfo[0].length+= HA_VARCHAR_PACKLENGTH(extra_length);
-  recinfo[1].type=key_field;
-  recinfo[1].length= (key_field == FIELD_BLOB ? 4+portable_sizeof_char_ptr :
-		      key_length);
-  if (key_field == FIELD_VARCHAR)
-    recinfo[1].length+= HA_VARCHAR_PACKLENGTH(key_length);
-
-  /* Define a key over the first column */
-  keyinfo[0].seg=keyseg;
-  keyinfo[0].keysegs=1;
-  keyinfo[0].block_length= 0;                   /* Default block length */
-  keyinfo[0].seg[0].type= key_type;
-  keyinfo[0].seg[0].flag= (key_field == FIELD_BLOB) ? HA_BLOB_PART:
-			  (key_field == FIELD_VARCHAR) ? HA_VAR_LENGTH_PART:0;
-  keyinfo[0].seg[0].start=recinfo[0].length;
-  keyinfo[0].seg[0].length=key_length;
-  keyinfo[0].seg[0].null_bit= 0;
-  keyinfo[0].seg[0].null_pos=0;
-  keyinfo[0].seg[0].language= default_charset_info->number;
-  keyinfo[0].flag = (no_fulltext?HA_PACK_KEY:HA_FULLTEXT);
-
-  if (!silent)
-    printf("- Creating isam-file\n");
-  if (mi_create(filename,(no_keys?0:1),keyinfo,2,recinfo,0,NULL,
-		(MI_CREATE_INFO*) 0, create_flag))
-    goto err;
-  if (!(file=mi_open(filename,2,0)))
-    goto err;
-
-  if (!silent)
-    printf("- %s stopwords\n",no_stopwords?"Skipping":"Initializing");
-  ft_init_stopwords(no_stopwords?NULL:ft_precompiled_stopwords);
-
-  if (!silent)
-    printf("- Writing key:s\n");
-
-  my_errno=0;
-  for (i=NUPD ; i<NDATAS; i++ )
-  {
-    create_record(record,i);
-    error=mi_write(file,record);
-    if (verbose || error)
-      printf("I= %2d  mi_write: %d  errno: %d, record: %s\n",
-	i,error,my_errno,data[i].f0);
-  }
-
-  if (!skip_update)
-  {
-    if (!silent)
-      printf("- Updating rows\n");
-
-    /* Read through all rows and update them */
-    pos=(ha_rows) 0;
-    i=0;
-    while ((error=mi_rrnd(file,read_record,pos)) == 0)
-    {
-      create_record(record,NUPD-i-1);
-      if (mi_update(file,read_record,record))
-      {
-	printf("Can't update row: %.*s, error: %d\n",
-	       keyinfo[0].seg[0].length,record,my_errno);
-      }
-      if(++i == NUPD) break;
-      pos=HA_OFFSET_ERROR;
-    }
-    if (i != NUPD)
-      printf("Found %d of %d rows\n", i,NUPD);
-  }
-
-  if (mi_close(file)) goto err;
-  if(no_search) return 0;
-  if (!silent)
-    printf("- Reopening file\n");
-  if (!(file=mi_open(filename,2,0))) goto err;
-  if (!silent)
-    printf("- Reading rows with key\n");
-  for (i=0 ; i < NQUERIES ; i++)
-  {
-    FT_DOCLIST *result;
-    result=ft_nlq_init_search(file,0,(char*) query[i],strlen(query[i]),1);
-    if(!result)
-    {
-      printf("Query %d: `%s' failed with errno %3d\n",i,query[i],my_errno);
-      continue;
-    }
-    printf("Query %d: `%s'. Found: %d. Top five documents:\n",
-           i,query[i],result->ndocs);
-    for (j=0;j<5;j++)
-    {
-      double w; int err;
-      err= ft_nlq_read_next(result, read_record);
-      if (err==HA_ERR_END_OF_FILE)
-      {
-        printf("No more matches!\n");
-        break;
-      }
-      else if (err)
-      {
-        printf("ft_read_next %d failed with errno %3d\n",j,my_errno);
-        break;
-      }
-      w=ft_nlq_get_relevance(result);
-      if (key_field == FIELD_VARCHAR)
-      {
-        uint l;
-        char *p;
-        p=recinfo[0].length+read_record;
-        l=uint2korr(p);
-        printf("%10.7f: %.*s\n",w,(int) l,p+2);
-      }
-      else
-        printf("%10.7f: %.*s\n",w,recinfo[1].length,
-               recinfo[0].length+read_record);
-    }
-    ft_nlq_close_search(result);
-  }
-
-  if (mi_close(file)) goto err;
-  my_end(MY_CHECK_ERROR);
-
-  return (0);
-err:
-  printf("got error: %3d when using myisam-database\n",my_errno);
-  return 1;			/* skip warning */
-}
-
-static char blob_key[MAX_REC_LENGTH];
-/* static char blob_record[MAX_REC_LENGTH+20*20]; */
-
-void create_record(char *pos, int n)
-{
-  bzero((char*) pos,MAX_REC_LENGTH);
-  if (recinfo[0].type == FIELD_BLOB)
-  {
-    uint tmp;
-    char *ptr;
-    strnmov(blob_key,data[n].f0,keyinfo[0].seg[0].length);
-    tmp=strlen(blob_key);
-    int4store(pos,tmp);
-    ptr=blob_key;
-    memcpy_fixed(pos+4,&ptr,sizeof(char*));
-    pos+=recinfo[0].length;
-  }
-  else if (recinfo[0].type == FIELD_VARCHAR)
-  {
-    uint tmp;
-    /* -1 is here because pack_length is stored in seg->length */
-    uint pack_length= HA_VARCHAR_PACKLENGTH(keyinfo[0].seg[0].length-1);
-    strnmov(pos+pack_length,data[n].f0,keyinfo[0].seg[0].length);
-    tmp=strlen(pos+pack_length);
-    if (pack_length == 1)
-      *pos= (char) tmp;
-    else
-      int2store(pos,tmp);
-    pos+=recinfo[0].length;
-  }
-  else
-  {
-    strnmov(pos,data[n].f0,keyinfo[0].seg[0].length);
-    pos+=recinfo[0].length;
-  }
-  if (recinfo[1].type == FIELD_BLOB)
-  {
-    uint tmp;
-    char *ptr;
-    strnmov(blob_key,data[n].f2,keyinfo[0].seg[0].length);
-    tmp=strlen(blob_key);
-    int4store(pos,tmp);
-    ptr=blob_key;
-    memcpy_fixed(pos+4,&ptr,sizeof(char*));
-    pos+=recinfo[1].length;
-  }
-  else if (recinfo[1].type == FIELD_VARCHAR)
-  {
-    uint tmp;
-    /* -1 is here because pack_length is stored in seg->length */
-    uint pack_length= HA_VARCHAR_PACKLENGTH(keyinfo[0].seg[0].length-1);
-    strnmov(pos+pack_length,data[n].f2,keyinfo[0].seg[0].length);
-    tmp=strlen(pos+1);
-    if (pack_length == 1)
-      *pos= (char) tmp;
-    else
-      int2store(pos,tmp);
-    pos+=recinfo[1].length;
-  }
-  else
-  {
-    strnmov(pos,data[n].f2,keyinfo[0].seg[0].length);
-    pos+=recinfo[1].length;
-  }
-}
-
-
-static my_bool
-get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
-	       char *argument)
-{
-  switch(optid) {
-  case 'v': verbose=1; break;
-  case 's': silent=1; break;
-  case 'F': no_fulltext=1; no_search=1;
-  case 'U': skip_update=1; break;
-  case 'K': no_keys=no_search=1; break;
-  case 'N': no_search=1; break;
-  case 'S': no_stopwords=1; break;
-  case '#':
-    DBUG_PUSH (argument);
-    break;
-  case 'V':
-  case '?':
-  case 'h':
-    usage();
-    exit(1);
-  }
-  return 0;
-}
-
-/* Read options */
-
-static void get_options(int argc,char *argv[])
-{
-  int ho_error;
-
-  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
-    exit(ho_error);
-  return;
-} /* get options */
-
-
-static void usage()
-{
-  printf("%s [options]\n", my_progname);
-  my_print_help(my_long_options);
-  my_print_variables(my_long_options);
-}

=== removed file 'storage/myisam/ft_test1.h'
--- a/storage/myisam/ft_test1.h	2006-12-31 00:32:21 +0000
+++ b/storage/myisam/ft_test1.h	1970-01-01 00:00:00 +0000
@@ -1,420 +0,0 @@
-/* Copyright (C) 2000-2001 MySQL AB
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; version 2 of the License.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
-
-/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
-
-#define NUPD            20
-#define NDATAS          389
-struct { const char *f0, *f2; } data[NDATAS] = {
-   {"1", "General Information about MySQL"},
-   {"1.1", "What is MySQL?"},
-   {"1.2", "About this manual"},
-   {"1.3", "History of MySQL"},
-   {"1.4", "The main features of MySQL"},
-   {"1.5", "General SQL information and tutorials"},
-   {"1.6", "Useful MySQL-related links"},
-   {"1.7", "What are stored procedures and triggers and so on?"},
-   {"2", "MySQL mailing lists and how to ask questions/give error (bug) reports"},
-   {"2.1", "Subscribing to/un-subscribing from the MySQL mailing list"},
-   {"2.2", "Asking questions or reporting bugs"},
-   {"2.3", "I think I have found a bug. What information do you need to help me?"},
-   {"2.3.1", "MySQL keeps crashing"},
-   {"2.4", "Guidelines for answering questions on the mailing list"},
-   {"3", "Licensing or When do I have/want to pay for MySQL?"},
-   {"3.1", "How much does MySQL cost?"},
-   {"3.2", "How do I get commercial support?"},
-   {"3.2.1", "Types of commercial support"},
-   {"3.2.1.1", "Basic email support"},
-   {"3.2.1.2", "Extended email support"},
-/*------------------------------- NUPD=20 -------------------------------*/
-   {"3.2.1.3", "Asking: Login support"},
-   {"3.2.1.4", "Extended login support"},
-   {"3.3", "How do I pay for licenses/support?"},
-   {"3.4", "Who do I contact when I want more information about licensing/support?"},
-   {"3.5", "What Copyright does MySQL use?"},
-   {"3.6", "When may I distribute MySQL commercially without a fee?"},
-   {"3.7", "I want to sell a product that can be configured to use MySQL"},
-   {"3.8", "I am running a commercial web server using MySQL"},
-   {"3.9", "Do I need a license to sell commercial Perl/tcl/PHP/Web+ etc applications?"},
-   {"3.10", "Possible future changes in the licensing"},
-   {"4", "Compiling and installing MySQL"},
-   {"4.1", "How do I get MySQL?"},
-   {"4.2", "Which MySQL version should I use?"},
-   {"4.3", "How/when will you release updates?"},
-   {"4.4", "What operating systems does MySQL support?"},
-   {"4.5", "Compiling MySQL from source code"},
-   {"4.5.1", "Quick installation overview"},
-   {"4.5.2", "Usual configure switches"},
-   {"4.5.3", "Applying a patch"},
-   {"4.6", "Problems compiling?"},
-   {"4.7", "General compilation notes"},
-   {"4.8", "MIT-pthreads notes (FreeBSD)"},
-   {"4.9", "Perl installation comments"},
-   {"4.10", "Special things to consider for some machine/OS combinations"},
-   {"4.10.1", "Solaris notes"},
-   {"4.10.2", "SunOS 4 notes"},
-   {"4.10.3", "Linux notes for all versions"},
-   {"4.10.3.1", "Linux-x86 notes"},
-   {"4.10.3.2", "RedHat 5.0"},
-   {"4.10.3.3", "RedHat 5.1"},
-   {"4.10.3.4", "Linux-Sparc notes"},
-   {"4.10.3.5", "Linux-Alpha notes"},
-   {"4.10.3.6", "MkLinux notes"},
-   {"4.10.4", "Alpha-DEC-Unix notes"},
-   {"4.10.5", "Alpha-DEC-OSF1 notes"},
-   {"4.10.6", "SGI-IRIX notes"},
-   {"4.10.7", "FreeBSD notes"},
-   {"4.10.7.1", "FreeBSD-3.0 notes"},
-   {"4.10.8", "BSD/OS 2.# notes"},
-   {"4.10.8.1", "BSD/OS 3.# notes"},
-   {"4.10.9", "SCO notes"},
-   {"4.10.10", "SCO Unixware 7.0 notes"},
-   {"4.10.11", "IBM-AIX notes"},
-   {"4.10.12", "HP-UX notes"},
-   {"4.11", "TcX binaries"},
-   {"4.12", "Win32 notes"},
-   {"4.13", "Installation instructions for MySQL binary releases"},
-   {"4.13.1", "How to get MySQL Perl support working"},
-   {"4.13.2", "Linux notes"},
-   {"4.13.3", "HP-UX notes"},
-   {"4.13.4", "Linking client libraries"},
-   {"4.14", "Problems running mysql_install_db"},
-   {"4.15", "Problems starting MySQL"},
-   {"4.16", "Automatic start/stop of MySQL"},
-   {"4.17", "Option files"},
-   {"5", "How standards-compatible is MySQL?"},
-   {"5.1", "What extensions has MySQL to ANSI SQL92?"},
-   {"5.2", "What functionality is missing in MySQL?"},
-   {"5.2.1", "Sub-selects"},
-   {"5.2.2", "SELECT INTO TABLE"},
-   {"5.2.3", "Transactions"},
-   {"5.2.4", "Triggers"},
-   {"5.2.5", "Foreign Keys"},
-   {"5.2.5.1", "Some reasons NOT to use FOREIGN KEYS"},
-   {"5.2.6", "Views"},
-   {"5.2.7", "-- as start of a comment"},
-   {"5.3", "What standards does MySQL follow?"},
-   {"5.4", "What functions exist only for compatibility?"},
-   {"5.5", "Limitations of BLOB and TEXT types"},
-   {"5.6", "How to cope without COMMIT-ROLLBACK"},
-   {"6", "The MySQL access privilege system"},
-   {"6.1", "What the privilege system does"},
-   {"6.2", "Connecting to the MySQL server"},
-   {"6.2.1", "Keeping your password secure"},
-   {"6.3", "Privileges provided by MySQL"},
-   {"6.4", "How the privilege system works"},
-   {"6.5", "The privilege tables"},
-   {"6.6", "Setting up the initial MySQL privileges"},
-   {"6.7", "Adding new user privileges to MySQL"},
-   {"6.8", "An example permission setup"},
-   {"6.9", "Causes of Access denied errors"},
-   {"6.10", "How to make MySQL secure against crackers"},
-   {"7", "MySQL language reference"},
-   {"7.1", "Literals: how to write strings and numbers"},
-   {"7.1.1", "Strings"},
-   {"7.1.2", "Numbers"},
-   {"7.1.3", "NULL values"},
-   {"7.1.4", "Database, table, index, column and alias names"},
-   {"7.1.4.1", "Case sensitivity in names"},
-   {"7.2", "Column types"},
-   {"7.2.1", "Column type storage requirements"},
-   {"7.2.5", "Numeric types"},
-   {"7.2.6", "Date and time types"},
-   {"7.2.6.1", "The DATE type"},
-   {"7.2.6.2", "The TIME type"},
-   {"7.2.6.3", "The DATETIME type"},
-   {"7.2.6.4", "The TIMESTAMP type"},
-   {"7.2.6.5", "The YEAR type"},
-   {"7.2.6.6", "Miscellaneous date and time properties"},
-   {"7.2.7", "String types"},
-   {"7.2.7.1", "The CHAR and VARCHAR types"},
-   {"7.2.7.2", "The BLOB and TEXT types"},
-   {"7.2.7.3", "The ENUM type"},
-   {"7.2.7.4", "The SET type"},
-   {"7.2.8", "Choosing the right type for a column"},
-   {"7.2.9", "Column indexes"},
-   {"7.2.10", "Multiple-column indexes"},
-   {"7.2.11", "Using column types from other database engines"},
-   {"7.3", "Functions for use in SELECT and WHERE clauses"},
-   {"7.3.1", "Grouping functions"},
-   {"7.3.2", "Normal arithmetic operations"},
-   {"7.3.3", "Bit functions"},
-   {"7.3.4", "Logical operations"},
-   {"7.3.5", "Comparison operators"},
-   {"7.3.6", "String comparison functions"},
-   {"7.3.7", "Control flow functions"},
-   {"7.3.8", "Mathematical functions"},
-   {"7.3.9", "String functions"},
-   {"7.3.10", "Date and time functions"},
-   {"7.3.11", "Miscellaneous functions"},
-   {"7.3.12", "Functions for use with GROUP BY clauses"},
-   {"7.4", "CREATE DATABASE syntax"},
-   {"7.5", "DROP DATABASE syntax"},
-   {"7.6", "CREATE TABLE syntax"},
-   {"7.7", "ALTER TABLE syntax"},
-   {"7.8", "OPTIMIZE TABLE syntax"},
-   {"7.9", "DROP TABLE syntax"},
-   {"7.10", "DELETE syntax"},
-   {"7.11", "SELECT syntax"},
-   {"7.12", "JOIN syntax"},
-   {"7.13", "INSERT syntax"},
-   {"7.14", "REPLACE syntax"},
-   {"7.15", "LOAD DATA INFILE syntax"},
-   {"7.16", "UPDATE syntax"},
-   {"7.17", "USE syntax"},
-   {"7.18", "SHOW syntax (Get information about tables, columns...)"},
-   {"7.19", "EXPLAIN syntax (Get information about a SELECT)"},
-   {"7.20", "DESCRIBE syntax (Get information about columns)"},
-   {"7.21", "LOCK TABLES/UNLOCK TABLES syntax"},
-   {"7.22", "SET OPTION syntax"},
-   {"7.23", "GRANT syntax (Compatibility function)"},
-   {"7.24", "CREATE INDEX syntax (Compatibility function)"},
-   {"7.25", "DROP INDEX syntax (Compatibility function)"},
-   {"7.26", "Comment syntax"},
-   {"7.27", "CREATE FUNCTION/DROP FUNCTION syntax"},
-   {"7.28", "Is MySQL picky about reserved words?"},
-   {"8", "Example SQL queries"},
-   {"8.1", "Queries from twin project"},
-   {"8.1.1", "Find all non-distributed twins"},
-   {"8.1.2", "Show a table on twin pair status"},
-   {"9", "How safe/stable is MySQL?"},
-   {"9.1", "How stable is MySQL?"},
-   {"9.2", "Why are there is so many releases of MySQL?"},
-   {"9.3", "Checking a table for errors"},
-   {"9.4", "How to repair tables"},
-   {"9.5", "Is there anything special to do when upgrading/downgrading MySQL?"},
-   {"9.5.1", "Upgrading from a 3.21 version to 3.22"},
-   {"9.5.2", "Upgrading from a 3.20 version to 3.21"},
-   {"9.5.3", "Upgrading to another architecture"},
-   {"9.6", "Year 2000 compliance"},
-   {"10", "MySQL Server functions"},
-   {"10.1", "What languages are supported by MySQL?"},
-   {"10.1.1", "Character set used for data &#38; sorting"},
-   {"10.2", "The update log"},
-   {"10.3", "How big can MySQL tables be?"},
-   {"11", "Getting maximum performance from MySQL"},
-   {"11.1", "How does one change the size of MySQL buffers?"},
-   {"11.2", "How compiling and linking affects the speed of MySQL"},
-   {"11.3", "How does MySQL use memory?"},
-   {"11.4", "How does MySQL use indexes?"},
-   {"11.5", "What optimizations are done on WHERE clauses?"},
-   {"11.6", "How does MySQL open &#38; close tables?"},
-   {"11.6.0.1", "What are the drawbacks of creating possibly thousands of tables in a database?"},
-   {"11.7", "How does MySQL lock tables?"},
-   {"11.8", "How should I arrange my table to be as fast/small as possible?"},
-   {"11.9", "What affects the speed of INSERT statements?"},
-   {"11.10", "What affects the speed DELETE statements?"},
-   {"11.11", "How do I get MySQL to run at full speed?"},
-   {"11.12", "What are the different row formats? Or, when should VARCHAR/CHAR be used?"},
-   {"11.13", "Why so many open tables?"},
-   {"12", "MySQL benchmark suite"},
-   {"13", "MySQL Utilites"},
-   {"13.1", "Overview of the different MySQL programs"},
-   {"13.2", "The MySQL table check, optimize and repair program"},
-   {"13.2.1", "isamchk memory use"},
-   {"13.2.2", "Getting low-level table information"},
-   {"13.3", "The MySQL compressed read-only table generator"},
-   {"14", "Adding new functions to MySQL"},
-   {"15", "MySQL ODBC Support"},
-   {"15.1", "Operating systems supported by MyODBC"},
-   {"15.2", "How to report problems with MyODBC"},
-   {"15.3", "Programs known to work with MyODBC"},
-   {"15.4", "How to fill in the various fields in the ODBC administrator program"},
-   {"15.5", "How to get the value of an AUTO_INCREMENT column in ODBC"},
-   {"16", "Problems and common errors"},
-   {"16.1", "Some common errors when using MySQL"},
-   {"16.1.1", "MySQL server has gone away error"},
-   {"16.1.2", "Can't connect to local MySQL server error"},
-   {"16.1.3", "Out of memory error"},
-   {"16.1.4", "Packet too large error"},
-   {"16.1.5", "The table is full error"},
-   {"16.1.6", "Commands out of sync error in client"},
-   {"16.1.7", "Removing user error"},
-   {"16.2", "How MySQL handles a full disk"},
-   {"16.3", "How to run SQL commands from a text file"},
-   {"16.4", "Where MySQL stores temporary files"},
-   {"16.5", "Access denied error"},
-   {"16.6", "How to run MySQL as a normal user"},
-   {"16.7", "Problems with file permissions"},
-   {"16.8", "File not found"},
-   {"16.9", "Problems using DATE columns"},
-   {"16.10", "Case sensitivity in searches"},
-   {"16.11", "Problems with NULL values"},
-   {"17", "Solving some common problems with MySQL"},
-   {"17.1", "Database replication"},
-   {"17.2", "Database backups"},
-   {"18", "MySQL client tools and API's"},
-   {"18.1", "MySQL C API"},
-   {"18.2", "C API datatypes"},
-   {"18.3", "C API function overview"},
-   {"18.4", "C API function descriptions"},
-   {"18.4.1", "mysql_affected_rows()"},
-   {"18.4.2", "mysql_close()"},
-   {"18.4.3", "mysql_connect()"},
-   {"18.4.4", "mysql_create_db()"},
-   {"18.4.5", "mysql_data_seek()"},
-   {"18.4.6", "mysql_debug()"},
-   {"18.4.7", "mysql_drop_db()"},
-   {"18.4.8", "mysql_dump_debug_info()"},
-   {"18.4.9", "mysql_eof()"},
-   {"18.4.10", "mysql_errno()"},
-   {"18.4.11", "mysql_error()"},
-   {"18.4.12", "mysql_escape_string()"},
-   {"18.4.13", "mysql_fetch_field()"},
-   {"18.4.14", "mysql_fetch_fields()"},
-   {"18.4.15", "mysql_fetch_field_direct()"},
-   {"18.4.16", "mysql_fetch_lengths()"},
-   {"18.4.17", "mysql_fetch_row()"},
-   {"18.4.18", "mysql_field_seek()"},
-   {"18.4.19", "mysql_field_tell()"},
-   {"18.4.20", "mysql_free_result()"},
-   {"18.4.21", "mysql_get_client_info()"},
-   {"18.4.22", "mysql_get_host_info()"},
-   {"18.4.23", "mysql_get_proto_info()"},
-   {"18.4.24", "mysql_get_server_info()"},
-   {"18.4.25", "mysql_info()"},
-   {"18.4.26", "mysql_init()"},
-   {"18.4.27", "mysql_insert_id()"},
-   {"18.4.28", "mysql_kill()"},
-   {"18.4.29", "mysql_list_dbs()"},
-   {"18.4.30", "mysql_list_fields()"},
-   {"18.4.31", "mysql_list_processes()"},
-   {"18.4.32", "mysql_list_tables()"},
-   {"18.4.33", "mysql_num_fields()"},
-   {"18.4.34", "mysql_num_rows()"},
-   {"18.4.35", "mysql_query()"},
-   {"18.4.36", "mysql_real_connect()"},
-   {"18.4.37", "mysql_real_query()"},
-   {"18.4.38", "mysql_reload()"},
-   {"18.4.39", "mysql_row_tell()"},
-   {"18.4.40", "mysql_select_db()"},
-   {"18.4.41", "mysql_shutdown()"},
-   {"18.4.42", "mysql_stat()"},
-   {"18.4.43", "mysql_store_result()"},
-   {"18.4.44", "mysql_thread_id()"},
-   {"18.4.45", "mysql_use_result()"},
-   {"18.4.46", "Why is it that after mysql_query() returns success, mysql_store_result() sometimes returns NULL?"},
-   {"18.4.47", "What results can I get from a query?"},
-   {"18.4.48", "How can I get the unique ID for the last inserted row?"},
-   {"18.4.49", "Problems linking with the C API"},
-   {"18.4.50", "How to make a thread-safe client"},
-   {"18.5", "MySQL Perl API's"},
-   {"18.5.1", "DBI with DBD::mysql"},
-   {"18.5.1.1", "The DBI interface"},
-   {"18.5.1.2", "More DBI/DBD information"},
-   {"18.6", "MySQL Java connectivity (JDBC)"},
-   {"18.7", "MySQL PHP API's"},
-   {"18.8", "MySQL C++ API's"},
-   {"18.9", "MySQL Python API's"},
-   {"18.10", "MySQL TCL API's"},
-   {"19", "How MySQL compares to other databases"},
-   {"19.1", "How MySQL compares to mSQL"},
-   {"19.1.1", "How to convert mSQL tools for MySQL"},
-   {"19.1.2", "How mSQL and MySQL client/server communications protocols differ"},
-   {"19.1.3", "How mSQL 2.0 SQL syntax differs from MySQL"},
-   {"19.2", "How MySQL compares to PostgreSQL"},
-   {"A", "Some users of MySQL"},
-   {"B", "Contributed programs"},
-   {"C", "Contributors to MySQL"},
-   {"D", "MySQL change history"},
-   {"19.3", "Changes in release 3.22.x (Alpha version)"},
-   {"19.3.1", "Changes in release 3.22.7"},
-   {"19.3.2", "Changes in release 3.22.6"},
-   {"19.3.3", "Changes in release 3.22.5"},
-   {"19.3.4", "Changes in release 3.22.4"},
-   {"19.3.5", "Changes in release 3.22.3"},
-   {"19.3.6", "Changes in release 3.22.2"},
-   {"19.3.7", "Changes in release 3.22.1"},
-   {"19.3.8", "Changes in release 3.22.0"},
-   {"19.4", "Changes in release 3.21.x"},
-   {"19.4.1", "Changes in release 3.21.33"},
-   {"19.4.2", "Changes in release 3.21.32"},
-   {"19.4.3", "Changes in release 3.21.31"},
-   {"19.4.4", "Changes in release 3.21.30"},
-   {"19.4.5", "Changes in release 3.21.29"},
-   {"19.4.6", "Changes in release 3.21.28"},
-   {"19.4.7", "Changes in release 3.21.27"},
-   {"19.4.8", "Changes in release 3.21.26"},
-   {"19.4.9", "Changes in release 3.21.25"},
-   {"19.4.10", "Changes in release 3.21.24"},
-   {"19.4.11", "Changes in release 3.21.23"},
-   {"19.4.12", "Changes in release 3.21.22"},
-   {"19.4.13", "Changes in release 3.21.21a"},
-   {"19.4.14", "Changes in release 3.21.21"},
-   {"19.4.15", "Changes in release 3.21.20"},
-   {"19.4.16", "Changes in release 3.21.19"},
-   {"19.4.17", "Changes in release 3.21.18"},
-   {"19.4.18", "Changes in release 3.21.17"},
-   {"19.4.19", "Changes in release 3.21.16"},
-   {"19.4.20", "Changes in release 3.21.15"},
-   {"19.4.21", "Changes in release 3.21.14b"},
-   {"19.4.22", "Changes in release 3.21.14a"},
-   {"19.4.23", "Changes in release 3.21.13"},
-   {"19.4.24", "Changes in release 3.21.12"},
-   {"19.4.25", "Changes in release 3.21.11"},
-   {"19.4.26", "Changes in release 3.21.10"},
-   {"19.4.27", "Changes in release 3.21.9"},
-   {"19.4.28", "Changes in release 3.21.8"},
-   {"19.4.29", "Changes in release 3.21.7"},
-   {"19.4.30", "Changes in release 3.21.6"},
-   {"19.4.31", "Changes in release 3.21.5"},
-   {"19.4.32", "Changes in release 3.21.4"},
-   {"19.4.33", "Changes in release 3.21.3"},
-   {"19.4.34", "Changes in release 3.21.2"},
-   {"19.4.35", "Changes in release 3.21.0"},
-   {"19.5", "Changes in release 3.20.x"},
-   {"19.5.1", "Changes in release 3.20.18"},
-   {"19.5.2", "Changes in release 3.20.17"},
-   {"19.5.3", "Changes in release 3.20.16"},
-   {"19.5.4", "Changes in release 3.20.15"},
-   {"19.5.5", "Changes in release 3.20.14"},
-   {"19.5.6", "Changes in release 3.20.13"},
-   {"19.5.7", "Changes in release 3.20.11"},
-   {"19.5.8", "Changes in release 3.20.10"},
-   {"19.5.9", "Changes in release 3.20.9"},
-   {"19.5.10", "Changes in release 3.20.8"},
-   {"19.5.11", "Changes in release 3.20.7"},
-   {"19.5.12", "Changes in release 3.20.6"},
-   {"19.5.13", "Changes in release 3.20.3"},
-   {"19.5.14", "Changes in release 3.20.0"},
-   {"19.6", "Changes in release 3.19.x"},
-   {"19.6.1", "Changes in release 3.19.5"},
-   {"19.6.2", "Changes in release 3.19.4"},
-   {"19.6.3", "Changes in release 3.19.3"},
-   {"E", "Known errors and design deficiencies in MySQL"},
-   {"F", "List of things we want to add to MySQL in the future (The TODO)"},
-   {"19.7", "Things that must done in the real near future"},
-   {"19.8", "Things that have to be done sometime"},
-   {"19.9", "Some things we don't have any plans to do"},
-   {"G", "Comments on porting to other systems"},
-   {"19.10", "Debugging MySQL"},
-   {"19.11", "Comments about RTS threads"},
-   {"19.12", "What is the difference between different thread packages?"},
-   {"H", "Description of MySQL regular expression syntax"},
-   {"I", "What is Unireg?"},
-   {"J", "The MySQL server license"},
-   {"K", "The MySQL license for Microsoft operating systems"},
-   {"*", "SQL command, type and function index"},
-   {"*", "Concept Index"}
-};
-
-#define NQUERIES 5
-const char *query[NQUERIES]={
-   "mysql information and manual",
-   "upgrading from previous version",
-   "column indexes",
-   "against about after more right the with/without", /* stopwords test */
-   "mysql license and copyright"
-};

=== removed file 'storage/myisam/make-ccc'
--- a/storage/myisam/make-ccc	2005-04-27 01:19:54 +0000
+++ b/storage/myisam/make-ccc	1970-01-01 00:00:00 +0000
@@ -1,5 +0,0 @@
-rm -f .deps/*.P
-ccc -DMAP_TO_USE_RAID -I./../include -I../include -DDBUG_OFF -fast -O3 -c mi_cache.c mi_changed.c mi_checksum.c mi_close.c mi_create.c mi_dbug.c mi_delete.c mi_delete_all.c mi_delete_table.c mi_dynrec.c mi_extra.c mi_info.c mi_key.c mi_locking.c mi_log.c mi_open.c mi_packrec.c mi_page.c mi_panic.c mi_range.c mi_rename.c mi_rfirst.c mi_rkey.c mi_rlast.c mi_rnext.c mi_rnext_same.c mi_rprev.c mi_rrnd.c mi_rsame.c mi_rsamepos.c mi_scan.c mi_search.c mi_static.c mi_statrec.c mi_unique.c mi_update.c mi_write.c ft_update.c ft_search.o ft_stem.o ft_stopwords.c ft_parser.c
-make sort.o mi_check.o
-rm libmyisam.a
-ar -cr libmyisam.a mi_cache.o sort.o mi_check.o

=== removed file 'storage/myisammrg/make-ccc'
--- a/storage/myisammrg/make-ccc	2005-04-27 01:19:54 +0000
+++ b/storage/myisammrg/make-ccc	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-ccc -I./../include -I../include -DDBUG_OFF -fast -O3 -c myrg_close.c myrg_create.c myrg_delete.c myrg_extra.c myrg_info.c myrg_locking.c myrg_open.c myrg_panic.c myrg_rrnd.c myrg_rsame.c myrg_static.c myrg_update.c
-rm libmyisammrg.a
-ar -cr libmyisammrg.a myrg_close.o

=== modified file 'strings/dtoa.c'
--- a/strings/dtoa.c	2008-07-08 16:01:41 +0000
+++ b/strings/dtoa.c	2009-04-23 21:17:43 +0000
@@ -1,8 +1,9 @@
 /* Copyright (C) 2007 MySQL AB
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License as published by the Free Software Foundation; version 2
+   of the License.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of

=== removed file 'strings/make-ccc'
--- a/strings/make-ccc	2000-07-31 19:29:14 +0000
+++ b/strings/make-ccc	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-ccc -DHAVE_CONFIG_H -I. -I. -I.. -I./../include -I../include -O -DDBUG_OFF -fast -O3 -fomit-frame-pointer -c atof.c bchange.c bcmp.c bfill.c bmove.c bmove512.c bmove_upp.c ct_init.c ctype-latin1.c int2str.c is_prefix.c llstr.c longlong2str.c r_strinstr.c str2int.c strappend.c strcend.c strcont.c strend.c strfill.c strinstr.c strmake.c strmov.c strnmov.c strstr.c strtol.c strtoll.c strtoul.c strtoull.c strxmov.c strxnmov.c
-rm libmystrings.a
-ar -cr libmystrings.a atof.o


Attachment: [text/bzr-bundle] bzr/serg@mysql.com-20090512164111-jz224w5781lhe7wd.bundle
Thread
bzr commit into mysql-6.0-runtime branch (serg:2762) Sergei Golubchik12 May