From 0f1cf03905ef97cef38cf585df5cc9b9cb7967fd Mon Sep 17 00:00:00 2001 From: "vva@eagle.mysql.r18.ru" <> Date: Mon, 1 Sep 2003 11:15:53 -0400 Subject: [PATCH 01/81] fixed bug #1073 (Replication LOAD DATA INFILE mysqlbinlog doesn't cleanup tmp files) --- client/mysqlbinlog.cc | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index ac1c9db30e6..0590490e1c4 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -21,6 +21,7 @@ #include #include "log_event.h" #include "include/my_sys.h" +#include "unistd.h" #define BIN_LOG_HEADER_SIZE 4 #define PROBE_HEADER_LEN (EVENT_LEN_OFFSET+4) @@ -81,9 +82,9 @@ class Load_log_processor bname--; uint blen= ce->fname_len - (bname-ce->fname); - uint full_len= target_dir_name_len + blen; + uint full_len= target_dir_name_len + blen + 9 + 9 + 1; char *tmp; - if (!(tmp= my_malloc(full_len + 9 + 1,MYF(MY_WME))) || + if (!(tmp= my_malloc(full_len,MYF(MY_WME))) || set_dynamic(&file_names,(gptr)&ce,ce->file_id)) { die("Could not construct local filename %s%s",target_dir_name,bname); @@ -96,6 +97,21 @@ class Load_log_processor memcpy(ptr,bname,blen); ptr+= blen; sprintf(ptr,"-%08x",ce->file_id); + ptr+= 9; + + uint version= 0; + for (;;) + { + sprintf(ptr,"-%08x",version); + if (access(tmp,F_OK)) + break; + version++; + if (version>UINT_MAX) + { + die("Could not construct local filename %s%s",target_dir_name,bname); + return 0; + } + } ce->set_fname_outside_temp_buf(tmp,full_len); From ebfa41086dc91a953c83ea993d3e4f69f9904d7d Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Thu, 11 Sep 2003 13:36:08 +0200 Subject: [PATCH 02/81] - backported compatibility fix for extra/resolveip.c from 4.0 to be able to compile on HP-UX 10.20 (which does not have in_add_t). --- extra/resolveip.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/extra/resolveip.c b/extra/resolveip.c index 764844bf622..133f6ddeb07 100644 --- a/extra/resolveip.c +++ b/extra/resolveip.c @@ -36,6 +36,10 @@ extern int h_errno; #endif +#ifndef HAVE_IN_ADDR_T +#define in_addr_t u_long +#endif + static int silent=0; From 59663fc661891a375f59a87d17ed9545175975be Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Thu, 11 Sep 2003 23:17:28 +0200 Subject: [PATCH 03/81] * Fix for BUG#1248: "LOAD DATA FROM MASTER drops the slave's db unexpectedly". Now LOAD DATA FROM MASTER does not drop the database, instead it only tries to create it, and drops/creates table-by-table. * replicate_wild_ignore_table='db1.%' is now considered as "ignore the 'db1' database as a whole", as it already works for CREATE DATABASE and DROP DATABASE. --- mysql-test/r/rpl000009.result | 48 ++++++++++++++++++++++++++++++ mysql-test/t/rpl000009.test | 56 +++++++++++++++++++++++++++++++++-- sql/repl_failsafe.cc | 14 +++++---- sql/slave.cc | 45 ++++++++++++++++++++-------- sql/slave.h | 4 +-- sql/sql_parse.cc | 7 +++-- 6 files changed, 150 insertions(+), 24 deletions(-) diff --git a/mysql-test/r/rpl000009.result b/mysql-test/r/rpl000009.result index 002f6843953..4a8057467f2 100644 --- a/mysql-test/r/rpl000009.result +++ b/mysql-test/r/rpl000009.result @@ -49,21 +49,48 @@ show databases; Database mysql test +create database foo; +create table foo.t1(n int, s char(20)); +insert into foo.t1 values (1, 'original foo.t1'); +create table foo.t3(n int, s char(20)); +insert into foo.t3 values (1, 'original foo.t3'); +create database foo2; +create table foo2.t1(n int, s char(20)); +insert into foo2.t1 values (1, 'original foo2.t1'); +create database bar; +create table bar.t1(n int, s char(20)); +insert into bar.t1 values (1, 'original bar.t1'); +create table bar.t3(n int, s char(20)); +insert into bar.t3 values (1, 'original bar.t3'); load data from master; show databases; Database bar foo +foo2 mysql test use foo; show tables; Tables_in_foo +t1 +t3 +select * from t1; +n s +1 original foo.t1 +use foo2; +show tables; +Tables_in_foo2 +t1 +select * from t1; +n s +1 original foo2.t1 use bar; show tables; Tables_in_bar t1 t2 +t3 select * from bar.t1; n s 1 one bar @@ -74,6 +101,9 @@ n s 11 eleven bar 12 twelve bar 13 thirteen bar +select * from bar.t3; +n s +1 original bar.t3 insert into bar.t1 values (4, 'four bar'); select * from bar.t1; n s @@ -81,5 +111,23 @@ n s 2 two bar 3 three bar 4 four bar +insert into bar.t1 values(10, 'should be there'); +flush tables; +load data from master; +Error on delete of './bar/t1.MYI' (Errcode: 13) +select * from bar.t1; +n s +1 one bar +2 two bar +3 three bar +4 four bar +10 should be there +load table bar.t1 from master; +Table 't1' already exists +drop table bar.t1; +load table bar.t1 from master; +start slave; drop database bar; drop database foo; +drop database foo; +drop database foo2; diff --git a/mysql-test/t/rpl000009.test b/mysql-test/t/rpl000009.test index 5f55355271a..975cfbf9a65 100644 --- a/mysql-test/t/rpl000009.test +++ b/mysql-test/t/rpl000009.test @@ -60,16 +60,45 @@ sync_with_master; # This should show that the slave is empty at this point show databases; +# Create foo and foo2 on slave; we expect that LOAD DATA FROM MASTER will +# neither touch database foo nor foo2. +create database foo; +create table foo.t1(n int, s char(20)); +insert into foo.t1 values (1, 'original foo.t1'); +create table foo.t3(n int, s char(20)); +insert into foo.t3 values (1, 'original foo.t3'); +create database foo2; +create table foo2.t1(n int, s char(20)); +insert into foo2.t1 values (1, 'original foo2.t1'); +# Create bar, and bar.t1, to check that it gets replaced, +# and bar.t3 to check that it is not touched (there is no bar.t3 on master) +create database bar; +create table bar.t1(n int, s char(20)); +insert into bar.t1 values (1, 'original bar.t1'); +create table bar.t3(n int, s char(20)); +insert into bar.t3 values (1, 'original bar.t3'); + load data from master; # Now let's check if we have the right tables and the right data in them show databases; use foo; -show tables; +# LOAD DATA FROM MASTER uses only replicate_*_db rules to decide which databases +# have to be copied. So it thinks "foo" has to be copied. Before 4.0.16 it would +# first drop "foo", then create "foo". This "drop" is a bug; in that case t3 +# would disappear. +# So here the effect of this bug (BUG#1248) would be to leave an empty "foo" on +# the slave. +show tables; # should be t1 & t3 +select * from t1; # should be slave's original +use foo2; +show tables; # should be t1 +select * from t1; # should be slave's original use bar; -show tables; +show tables; # should contain master's copied t1&t2, slave's original t3 select * from bar.t1; select * from bar.t2; +select * from bar.t3; # Now let's see if replication works connection master; @@ -79,6 +108,26 @@ connection slave; sync_with_master; select * from bar.t1; +# Check that LOAD DATA FROM MASTER reports the error if it can't drop a +# table to be overwritten. +insert into bar.t1 values(10, 'should be there'); +flush tables; +system chmod 500 var/slave-data/bar/; +--error 6 +load data from master; # should fail (errno 13) +system chmod 700 var/slave-data/bar/; +select * from bar.t1; # should contain the row (10, ...) + + +# Check that LOAD TABLE FROM MASTER fails if the table exists on slave +--error 1050 +load table bar.t1 from master; +drop table bar.t1; +load table bar.t1 from master; + +# as LOAD DATA FROM MASTER failed it did not restart slave threads +start slave; + # Now time for cleanup connection master; drop database bar; @@ -86,4 +135,5 @@ drop database foo; save_master_pos; connection slave; sync_with_master; - +drop database foo; +drop database foo2; diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc index dc3f3c87dde..8deb23e8586 100644 --- a/sql/repl_failsafe.cc +++ b/sql/repl_failsafe.cc @@ -717,7 +717,8 @@ static int fetch_db_tables(THD *thd, MYSQL *mysql, const char *db, if (!tables_ok(thd, &table)) continue; } - if ((error= fetch_master_table(thd, db, table_name, mi, mysql))) + /* download master's table and overwrite slave's table */ + if ((error= fetch_master_table(thd, db, table_name, mi, mysql, 1))) return error; } return 0; @@ -819,8 +820,11 @@ int load_master_data(THD* thd) char* db = row[0]; /* - Do not replicate databases excluded by rules - also skip mysql database - in most cases the user will + Do not replicate databases excluded by rules. We also test + replicate_wild_*_table rules (replicate_wild_ignore_table='db1.%' will + be considered as "ignore the 'db1' database as a whole, as it already + works for CREATE DATABASE and DROP DATABASE). + Also skip 'mysql' database - in most cases the user will mess up and not exclude mysql database with the rules when he actually means to - in this case, he is up for a surprise if his priv tables get dropped and downloaded from master @@ -830,14 +834,14 @@ int load_master_data(THD* thd) */ if (!db_ok(db, replicate_do_db, replicate_ignore_db) || + !db_ok_with_wild_table(db) || !strcmp(db,"mysql")) { *cur_table_res = 0; continue; } - if (mysql_rm_db(thd, db, 1,1) || - mysql_create_db(thd, db, 0, 1)) + if (mysql_create_db(thd, db, HA_LEX_CREATE_IF_NOT_EXISTS, 1)) { send_error(&thd->net, 0, 0); cleanup_mysql_results(db_res, cur_table_res - 1, table_res); diff --git a/sql/slave.cc b/sql/slave.cc index 1bc8dfc5b78..10d451a88bc 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -72,7 +72,7 @@ static int safe_sleep(THD* thd, int sec, CHECK_KILLED_FUNC thread_killed, void* thread_killed_arg); static int request_table_dump(MYSQL* mysql, const char* db, const char* table); static int create_table_from_dump(THD* thd, NET* net, const char* db, - const char* table_name); + const char* table_name, bool overwrite); static int check_master_version(MYSQL* mysql, MASTER_INFO* mi); @@ -1033,12 +1033,22 @@ static int check_master_version(MYSQL* mysql, MASTER_INFO* mi) return 0; } +/* + Used by fetch_master_table (used by LOAD TABLE tblname FROM MASTER and LOAD + DATA FROM MASTER). Drops the table (if 'overwrite' is true) and recreates it + from the dump. Honours replication inclusion/exclusion rules. + + RETURN VALUES + 0 success + 1 error +*/ static int create_table_from_dump(THD* thd, NET* net, const char* db, - const char* table_name) + const char* table_name, bool overwrite) { ulong packet_len = my_net_read(net); // read create table statement char *query; + char* save_db; Vio* save_vio; HA_CHECK_OPT check_opt; TABLE_LIST tables; @@ -1078,13 +1088,24 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db, thd->current_tablenr = 0; thd->query_error = 0; thd->net.no_send_ok = 1; + + bzero((char*) &tables,sizeof(tables)); + tables.db = (char*)db; + tables.alias= tables.real_name= (char*)table_name; + /* Drop the table if 'overwrite' is true */ + if (overwrite && mysql_rm_table(thd,&tables,1)) /* drop if exists */ + { + send_error(&thd->net); + sql_print_error("create_table_from_dump: failed to drop the table"); + goto err; + } - /* we do not want to log create table statement */ + /* Create the table. We do not want to log the "create table" statement */ save_options = thd->options; thd->options &= ~(ulong) (OPTION_BIN_LOG); thd->proc_info = "Creating table from master dump"; // save old db in case we are creating in a different database - char* save_db = thd->db; + save_db = thd->db; thd->db = (char*)db; mysql_parse(thd, thd->query, packet_len); // run create table thd->db = save_db; // leave things the way the were before @@ -1093,11 +1114,8 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db, if (thd->query_error) goto err; // mysql_parse took care of the error send - bzero((char*) &tables,sizeof(tables)); - tables.db = (char*)db; - tables.alias= tables.real_name= (char*)table_name; - tables.lock_type = TL_WRITE; thd->proc_info = "Opening master dump table"; + tables.lock_type = TL_WRITE; if (!open_ltable(thd, &tables, TL_WRITE)) { send_error(&thd->net,0,0); // Send error from open_ltable @@ -1107,10 +1125,11 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db, file = tables.table->file; thd->proc_info = "Reading master dump table data"; + /* Copy the data file */ if (file->net_read_dump(net)) { net_printf(&thd->net, ER_MASTER_NET_READ); - sql_print_error("create_table_from_dump::failed in\ + sql_print_error("create_table_from_dump: failed in\ handler::net_read_dump()"); goto err; } @@ -1125,6 +1144,7 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db, */ save_vio = thd->net.vio; thd->net.vio = 0; + /* Rebuild the index file from the copied data file (with REPAIR) */ error=file->repair(thd,&check_opt) != 0; thd->net.vio = save_vio; if (error) @@ -1137,7 +1157,7 @@ err: } int fetch_master_table(THD *thd, const char *db_name, const char *table_name, - MASTER_INFO *mi, MYSQL *mysql) + MASTER_INFO *mi, MYSQL *mysql, bool overwrite) { int error= 1; const char *errmsg=0; @@ -1169,9 +1189,10 @@ int fetch_master_table(THD *thd, const char *db_name, const char *table_name, errmsg= "Failed on table dump request"; goto err; } + if (create_table_from_dump(thd, &mysql->net, db_name, - table_name)) - goto err; // create_table_from_dump will have sent the error already + table_name, overwrite)) + goto err; // create_table_from_dump will have send_error already error = 0; err: diff --git a/sql/slave.h b/sql/slave.h index 67bf009763b..f61891acc91 100644 --- a/sql/slave.h +++ b/sql/slave.h @@ -384,9 +384,9 @@ int start_slave_thread(pthread_handler h_func, pthread_mutex_t* start_lock, int mysql_table_dump(THD* thd, const char* db, const char* tbl_name, int fd = -1); -/* retrieve non-exitent table from master */ +/* retrieve table from master and copy to slave*/ int fetch_master_table(THD* thd, const char* db_name, const char* table_name, - MASTER_INFO* mi, MYSQL* mysql); + MASTER_INFO* mi, MYSQL* mysql, bool overwrite); int show_master_info(THD* thd, MASTER_INFO* mi); int show_binlog_info(THD* thd); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 4d010ac9a4b..0c4e3cad763 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1568,9 +1568,12 @@ mysql_execute_command(void) goto error; } LOCK_ACTIVE_MI; - // fetch_master_table will send the error to the client on failure + /* + fetch_master_table will send the error to the client on failure. + Give error if the table already exists. + */ if (!fetch_master_table(thd, tables->db, tables->real_name, - active_mi, 0)) + active_mi, 0, 0)) { send_ok(&thd->net); } From be05042baeac11b0854dd554302919ba9bf2b8c4 Mon Sep 17 00:00:00 2001 From: "heikki@hundin.mysql.fi" <> Date: Fri, 12 Sep 2003 00:31:43 +0300 Subject: [PATCH 04/81] row0sel.c: Fix bug: if a primary key contains more than one column, then MySQL seems to do fetch next even for a unique search condition: this in turn caused unnecessary locking which did not agree what the InnoDB manual promised --- innobase/row/row0sel.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/innobase/row/row0sel.c b/innobase/row/row0sel.c index a263de74e3e..6172b36dc7e 100644 --- a/innobase/row/row0sel.c +++ b/innobase/row/row0sel.c @@ -2810,21 +2810,6 @@ row_search_for_mysql( mode = pcur->search_mode; } - if ((direction == ROW_SEL_NEXT || direction == ROW_SEL_PREV) - && pcur->old_stored != BTR_PCUR_OLD_STORED) { - - /* MySQL sometimes seems to do fetch next or fetch prev even - if the search condition is unique; this can, for example, - happen with the HANDLER commands; we do not always store the - pcur position in this case, so we cannot restore cursor - position, and must return immediately */ - - /* printf("%s record not found 1\n", index->name); */ - - trx->op_info = (char *) ""; - return(DB_RECORD_NOT_FOUND); - } - mtr_start(&mtr); /* In a search where at most one record in the index may match, we @@ -2841,6 +2826,16 @@ row_search_for_mysql( && dtuple_get_n_fields(search_tuple) == dict_index_get_n_unique(index)) { unique_search = TRUE; + + /* Even if the condition is unique, MySQL seems to try to + retrieve also a second row if a primary key contains more than + 1 column. Return immediately if this is not a HANDLER + command. */ + + if (direction != 0 && !prebuilt->used_in_HANDLER) { + + return(DB_RECORD_NOT_FOUND); + } } /*-------------------------------------------------------------*/ @@ -2852,8 +2847,9 @@ row_search_for_mysql( cannot use the adaptive hash index in a search in the case the row may be long and there may be externally stored fields */ - if (unique_search + if (unique_search && index->type & DICT_CLUSTERED + && direction == 0 && !prebuilt->templ_contains_blob && !prebuilt->used_in_HANDLER && (prebuilt->mysql_row_len < UNIV_PAGE_SIZE / 8)) { From 3b7140aed0896aac33871f0945fbb65b874eb731 Mon Sep 17 00:00:00 2001 From: "heikki@hundin.mysql.fi" <> Date: Fri, 12 Sep 2003 01:35:32 +0300 Subject: [PATCH 05/81] row0sel.c: Fix buglets in previous push --- innobase/row/row0sel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/innobase/row/row0sel.c b/innobase/row/row0sel.c index 6172b36dc7e..482f82b02ba 100644 --- a/innobase/row/row0sel.c +++ b/innobase/row/row0sel.c @@ -2810,8 +2810,6 @@ row_search_for_mysql( mode = pcur->search_mode; } - mtr_start(&mtr); - /* In a search where at most one record in the index may match, we can use a LOCK_REC_NOT_GAP type record lock when locking a non-delete- marked matching record. @@ -2834,10 +2832,13 @@ row_search_for_mysql( if (direction != 0 && !prebuilt->used_in_HANDLER) { + trx->op_info = (char*)""; return(DB_RECORD_NOT_FOUND); } } + mtr_start(&mtr); + /*-------------------------------------------------------------*/ /* PHASE 2: Try fast adaptive hash index search if possible */ From edfbc3d3e826187fbbb1dbd2d3750995b25d088e Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Fri, 12 Sep 2003 12:42:34 +0200 Subject: [PATCH 06/81] Portability fixes: - removed "-traditional-cpp" from the darwin6 compile flags, as it broke compilation with gcc-3.3 on Mac OS X and does not seem to be required in general. - make sure to link libmysqld/examples/mysqltest.c with a C++ compiler, as the embedded server library (libmysqld.a) includes C++ code. This broke compilation with non-gcc compilers. --- configure.in | 2 +- libmysqld/examples/Makefile.am | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index fb573f0030f..8ec42366ed9 100644 --- a/configure.in +++ b/configure.in @@ -1017,7 +1017,7 @@ case $SYSTEM_TYPE in *darwin6*) if test "$ac_cv_prog_gcc" = "yes" then - FLAGS="-traditional-cpp -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH -DFN_NO_CASE_SENCE" + FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH -DFN_NO_CASE_SENCE" CFLAGS="$CFLAGS $FLAGS" CXXFLAGS="$CXXFLAGS $FLAGS" MAX_C_OPTIMIZE="-O" diff --git a/libmysqld/examples/Makefile.am b/libmysqld/examples/Makefile.am index f741ddf0191..61f54b88b2e 100644 --- a/libmysqld/examples/Makefile.am +++ b/libmysqld/examples/Makefile.am @@ -13,6 +13,8 @@ INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include -I$(srcdir) \ LIBS = @LIBS@ @WRAPLIBS@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysqld.a @innodb_system_libs@ @LIBDL@ $(CXXLDFLAGS) +mysqltest_LINK = $(CXXLINK) + mysqltest_SOURCES = mysqltest.c mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \ From 9578d0b0eaab70cf03a05e2fa390a8a136b37f90 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Fri, 12 Sep 2003 15:48:05 +0200 Subject: [PATCH 07/81] - fixed yet another C++-style comment in a .c file that made the IBM C compiler barf --- libmysqld/libmysqld.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmysqld/libmysqld.c b/libmysqld/libmysqld.c index 70ac4ce46c5..2e8cd2a4861 100644 --- a/libmysqld/libmysqld.c +++ b/libmysqld/libmysqld.c @@ -88,7 +88,7 @@ net_safe_read(MYSQL *mysql) { NET *net= &mysql->net; uint len=0; - //init_sigpipe_variables + /* init_sigpipe_variables */ /* Don't give sigpipe errors if the client doesn't want them */ set_sigpipe(mysql); if (net->vio != 0) From d1cd9bd498823322794d0e652c51db73c27d04e4 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Fri, 12 Sep 2003 15:48:48 +0200 Subject: [PATCH 08/81] Fix for BUG#1258 (Trying to use the mysqlbinlog with -h and -u option gives segmentation fault). Fix is just initializing "host" (and "user") with 0, not a string. --- client/mysqlbinlog.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index a454d6a859f..ac43130b8bc 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -49,10 +49,10 @@ static bool force_opt= 0; static const char* database; static bool short_form = 0; static ulonglong offset = 0; -static const char* host = "localhost"; +static const char* host = 0; static int port = MYSQL_PORT; static const char* sock= MYSQL_UNIX_ADDR; -static const char* user = "test"; +static const char* user = 0; static const char* pass = ""; static ulonglong position = 0; static bool use_remote = 0; From 40a88045cb4e60028f9e548deeb89b1d412adf3c Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Fri, 12 Sep 2003 17:26:48 +0200 Subject: [PATCH 09/81] Quick backport of the following bugfix from MySQL 4.0.14. DO NOT COPY THIS CODE TO 4.0. The bugfix is better in 4.0, but here in 3.23 we don't want to add a new error code so we just use ER_EMPTY_QUERY. Bug was: "If a query was ignored on the slave (because of @code{replicate-ignore-table} and other similar rules), the slave still checked if the query got the same error code (0, no error) as on the master. So if the master had an error on the query (for example, ``Duplicate entry'' in a multiple-row insert), then the slave stopped and warned that the error codes didn't match. (Bug #797)" --- sql/slave.cc | 3 ++- sql/sql_parse.cc | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/sql/slave.cc b/sql/slave.cc index 50cb224d83d..a51db52cc7f 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -923,7 +923,8 @@ point. If you are sure that your master is ok, run this query manually on the\ inline int ignored_error_code(int err_code) { - return use_slave_mask && bitmap_is_set(&slave_error_mask, err_code); + return ((err_code == ER_EMPTY_QUERY) || + (use_slave_mask && bitmap_is_set(&slave_error_mask, err_code))); } static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 805063cb6dc..81233c038a1 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1085,7 +1085,19 @@ mysql_execute_command(void) // rules have been given and the table list says the query should not be // replicated if(table_rules_on && tables && !tables_ok(thd,tables)) + { + /* + We consider the query as empty and warn the slave thread which will + consider ER_EMPTY_QUERY as an ignorable error. Note that this has a + drawback: if the event is corrupted it could contain an empty query; + then the slave thread will silently ignore it instead of warning. But + such corruption is unlikely enough. + In MySQL 4.0 we do it more properly using a new error code + (ER_SLAVE_IGNORED_TABLE). + */ + my_error(ER_EMPTY_QUERY, MYF(0)); DBUG_VOID_RETURN; + } // this is a workaround to deal with the shortcoming // in 3.23.44-3.23.46 masters // in RELEASE_LOCK() logging. We re-write SELECT RELEASE_LOCK() as From 4871a35e8a66c584e4cf87461929eb6c643026aa Mon Sep 17 00:00:00 2001 From: "dlenev@mysql.com" <> Date: Fri, 12 Sep 2003 20:41:12 +0400 Subject: [PATCH 10/81] Regenerated expired CA certificate and signed dependant certificates --- SSL/cacert.pem | 22 +++++++++++----------- SSL/client-cert.pem | 40 ++++++++++++++++++++-------------------- SSL/server-cert.pem | 40 ++++++++++++++++++++-------------------- 3 files changed, 51 insertions(+), 51 deletions(-) diff --git a/SSL/cacert.pem b/SSL/cacert.pem index b939a037c30..a63dae57767 100644 --- a/SSL/cacert.pem +++ b/SSL/cacert.pem @@ -2,20 +2,20 @@ MIIDcTCCAtqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBiDELMAkGA1UEBhMCU0Ux EDAOBgNVBAcTB1VwcHNhbGExETAPBgNVBAoTCE15U1FMIEFCMSEwHwYDVQQDExhB YnN0cmFjdCBNeVNRTCBEZXZlbG9wZXIxMTAvBgkqhkiG9w0BCQEWImFic3RyYWN0 -Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wHhcNMDMwODA3MTEyMTQwWhcNMDMw -OTA2MTEyMTQwWjCBiDELMAkGA1UEBhMCU0UxEDAOBgNVBAcTB1VwcHNhbGExETAP +Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wHhcNMDMwOTEyMTYxNDE2WhcNMTMw +OTA5MTYxNDE2WjCBiDELMAkGA1UEBhMCU0UxEDAOBgNVBAcTB1VwcHNhbGExETAP BgNVBAoTCE15U1FMIEFCMSEwHwYDVQQDExhBYnN0cmFjdCBNeVNRTCBEZXZlbG9w ZXIxMTAvBgkqhkiG9w0BCQEWImFic3RyYWN0Lm15c3FsLmRldmVsb3BlckBteXNx -bC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALgbnH12rP8XEJsRuy69 -9n412tEOucpQyxkpNiDgLRvlYEGIJutK2LAqPHoPg7Em2+WJ+vrFh/BVx4hOUHmk -tJ94qTHLLCCj07cjzcoADjzPT9254VqSuQy/JvDNamKEOEdXU8l4/bc26VKVZ99x -iqXbHLiIWNa+UUwyRDSkERepAgMBAAGjgegwgeUwHQYDVR0OBBYEFJVKQT7xXBK0 -ez6fOwwjZpA9f07YMIG1BgNVHSMEga0wgaqAFJVKQT7xXBK0ez6fOwwjZpA9f07Y +bC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKrT7zp5tp5djXp+TEQs +5ZEds1XUglp/EQUQ1FMMb1Xe6gqJsQ62O+jsUe0nrUjXBrUCUy49k6mcnmQtZREj +l1pWKmzx1fgcYpxTwxaY7IKB2jik5IWprhVPmSQ+AWss43oolXMZWR+csKehqm3j ++YNZc9NsR4ydE71l0VEtJEQvAgMBAAGjgegwgeUwHQYDVR0OBBYEFIiYZdnz8osD +HWZgYSP6rXNt02iSMIG1BgNVHSMEga0wgaqAFIiYZdnz8osDHWZgYSP6rXNt02iS oYGOpIGLMIGIMQswCQYDVQQGEwJTRTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UE ChMITXlTUUwgQUIxITAfBgNVBAMTGEFic3RyYWN0IE15U1FMIERldmVsb3BlcjEx MC8GCSqGSIb3DQEJARYiYWJzdHJhY3QubXlzcWwuZGV2ZWxvcGVyQG15c3FsLmNv -bYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAJFucCIj0wREcF9P -vOaKVbvcaBwgit6oXOf7ZOPcIUQxQJOnXLVkWIdMP2mP/zHAUsCmXT2k8aXWRegB -6kh/PjV/vSYFbGtE/vh/12x/nSIUU+Y9B1EwvoeskuOwu34Ih514Y1z1bPMNt18N -4LGzMEBeklJ3gxBPlRXER9BSUpRH +bYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAGIL22MCIU/0sKDp +pZIhoabvNVDTfuhtene+WBCrzCzGXPZjB4+b/KAJJNvOR4zi43Kk7euu+PENs9M7 +nKpInMdhvT1RcCnUHJ3jBCvDDzXab2msqn3rxhwetWWbfE0OeEn/PoQcwiZCe7x5 +h+Zz+oUbvsEe4DjtDVgG4UH9nSSS -----END CERTIFICATE----- diff --git a/SSL/client-cert.pem b/SSL/client-cert.pem index 54b173baae2..4c81162c911 100644 --- a/SSL/client-cert.pem +++ b/SSL/client-cert.pem @@ -1,12 +1,12 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: 2 (0x2) + Serial Number: 1 (0x1) Signature Algorithm: md5WithRSAEncryption Issuer: C=SE, L=Uppsala, O=MySQL AB, CN=Abstract MySQL Developer/Email=abstract.mysql.developer@mysql.com Validity - Not Before: Aug 7 11:41:56 2003 GMT - Not After : Aug 4 11:41:56 2013 GMT + Not Before: Sep 12 16:21:19 2003 GMT + Not After : Sep 9 16:21:19 2013 GMT Subject: C=SE, L=Uppsala, O=MySQL AB, CN=MySQL Client/Email=abstract.mysql.developer@mysql.com Subject Public Key Info: Public Key Algorithm: rsaEncryption @@ -30,25 +30,25 @@ Certificate: X509v3 Subject Key Identifier: 80:81:A9:22:EB:AB:D6:CA:7E:3F:8D:BB:D1:AC:2A:F4:87:9D:13:29 X509v3 Authority Key Identifier: - keyid:95:4A:41:3E:F1:5C:12:B4:7B:3E:9F:3B:0C:23:66:90:3D:7F:4E:D8 + keyid:88:98:65:D9:F3:F2:8B:03:1D:66:60:61:23:FA:AD:73:6D:D3:68:92 DirName:/C=SE/L=Uppsala/O=MySQL AB/CN=Abstract MySQL Developer/Email=abstract.mysql.developer@mysql.com serial:00 Signature Algorithm: md5WithRSAEncryption - 6d:8a:af:34:07:ac:95:72:a4:78:fe:f8:b8:30:9a:e0:d9:74: - 82:34:5c:fd:11:15:dd:63:fd:65:20:04:7e:b5:8f:2e:26:ef: - ab:b9:10:5f:9b:40:65:76:ab:ed:bd:bf:d5:bc:89:7f:19:d8: - a7:b5:9e:24:bd:c7:ac:8e:16:35:83:c8:ce:8d:85:7c:b4:36: - 28:dd:3a:97:e5:b2:dd:8f:88:4d:5b:50:bd:97:28:61:8e:e7: - 05:5c:c2:bb:46:a1:ac:7e:ee:ac:7d:72:d5:a7:07:4e:1d:68: - 4e:80:e2:35:7d:db:24:73:be:bc:0d:ca:f4:ae:4e:21:52:3b: - ae:81 + 86:17:1c:f3:9f:10:1b:75:47:03:ca:54:ea:ef:f7:15:54:8d: + 8f:58:c9:64:7d:de:2e:bf:ea:a6:5d:72:56:c9:81:be:bb:1c: + 78:a5:91:d6:f8:77:df:9d:d2:cb:94:d9:06:61:4f:05:21:22: + 2a:ea:9e:c3:8b:4d:fe:94:c7:98:61:cd:7e:88:19:c9:92:01: + 1f:10:5b:c6:16:95:99:9b:32:01:3a:89:df:fa:0a:89:ac:fa: + b5:40:55:7a:ca:0a:bd:5d:8b:06:d8:7e:e1:44:8c:70:c8:63: + c7:77:6a:37:3d:a4:ac:57:dc:00:c1:c1:f3:72:17:5b:50:95: + ee:b7 -----BEGIN CERTIFICATE----- -MIIDkTCCAvqgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBiDELMAkGA1UEBhMCU0Ux +MIIDkTCCAvqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiDELMAkGA1UEBhMCU0Ux EDAOBgNVBAcTB1VwcHNhbGExETAPBgNVBAoTCE15U1FMIEFCMSEwHwYDVQQDExhB YnN0cmFjdCBNeVNRTCBEZXZlbG9wZXIxMTAvBgkqhkiG9w0BCQEWImFic3RyYWN0 -Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wHhcNMDMwODA3MTE0MTU2WhcNMTMw -ODA0MTE0MTU2WjB8MQswCQYDVQQGEwJTRTEQMA4GA1UEBxMHVXBwc2FsYTERMA8G +Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wHhcNMDMwOTEyMTYyMTE5WhcNMTMw +OTA5MTYyMTE5WjB8MQswCQYDVQQGEwJTRTEQMA4GA1UEBxMHVXBwc2FsYTERMA8G A1UEChMITXlTUUwgQUIxFTATBgNVBAMTDE15U1FMIENsaWVudDExMC8GCSqGSIb3 DQEJARYiYWJzdHJhY3QubXlzcWwuZGV2ZWxvcGVyQG15c3FsLmNvbTCBnzANBgkq hkiG9w0BAQEFAAOBjQAwgYkCgYEAxAMK7uOxEvzutBn04WAd4CjDli3fgmnNdHxU @@ -56,12 +56,12 @@ WNCus1k/DBkcmRCmEsnPOmQFQ46/0mU2gJELZbAnJjjJI9g2okrw98AvaDhwAScp /7LFUuFr8cjXw1zu8DdsKpuWGgWe6zOiOVp3ZmIndR8vbzja5Z94r8prIj9XK7ym j0fRmW8CAwEAAaOCARQwggEQMAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9w ZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSAgaki66vWyn4/ -jbvRrCr0h50TKTCBtQYDVR0jBIGtMIGqgBSVSkE+8VwStHs+nzsMI2aQPX9O2KGB +jbvRrCr0h50TKTCBtQYDVR0jBIGtMIGqgBSImGXZ8/KLAx1mYGEj+q1zbdNokqGB jqSBizCBiDELMAkGA1UEBhMCU0UxEDAOBgNVBAcTB1VwcHNhbGExETAPBgNVBAoT CE15U1FMIEFCMSEwHwYDVQQDExhBYnN0cmFjdCBNeVNRTCBEZXZlbG9wZXIxMTAv BgkqhkiG9w0BCQEWImFic3RyYWN0Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb22C -AQAwDQYJKoZIhvcNAQEEBQADgYEAbYqvNAeslXKkeP74uDCa4Nl0gjRc/REV3WP9 -ZSAEfrWPLibvq7kQX5tAZXar7b2/1byJfxnYp7WeJL3HrI4WNYPIzo2FfLQ2KN06 -l+Wy3Y+ITVtQvZcoYY7nBVzCu0ahrH7urH1y1acHTh1oToDiNX3bJHO+vA3K9K5O -IVI7roE= +AQAwDQYJKoZIhvcNAQEEBQADgYEAhhcc858QG3VHA8pU6u/3FVSNj1jJZH3eLr/q +pl1yVsmBvrsceKWR1vh3353Sy5TZBmFPBSEiKuqew4tN/pTHmGHNfogZyZIBHxBb +xhaVmZsyATqJ3/oKiaz6tUBVesoKvV2LBth+4USMcMhjx3dqNz2krFfcAMHB83IX +W1CV7rc= -----END CERTIFICATE----- diff --git a/SSL/server-cert.pem b/SSL/server-cert.pem index 9ce296482db..debf7026e3c 100644 --- a/SSL/server-cert.pem +++ b/SSL/server-cert.pem @@ -1,12 +1,12 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: 1 (0x1) + Serial Number: 2 (0x2) Signature Algorithm: md5WithRSAEncryption Issuer: C=SE, L=Uppsala, O=MySQL AB, CN=Abstract MySQL Developer/Email=abstract.mysql.developer@mysql.com Validity - Not Before: Aug 7 11:39:27 2003 GMT - Not After : Aug 4 11:39:27 2013 GMT + Not Before: Sep 12 16:22:06 2003 GMT + Not After : Sep 9 16:22:06 2013 GMT Subject: C=SE, L=Uppsala, O=MySQL AB, CN=MySQL Server/Email=abstract.mysql.developer@mysql.com Subject Public Key Info: Public Key Algorithm: rsaEncryption @@ -30,25 +30,25 @@ Certificate: X509v3 Subject Key Identifier: 6E:E4:9B:6A:C5:EA:E4:E6:C7:EF:D7:1E:C8:63:45:60:2B:1B:D4:D4 X509v3 Authority Key Identifier: - keyid:95:4A:41:3E:F1:5C:12:B4:7B:3E:9F:3B:0C:23:66:90:3D:7F:4E:D8 + keyid:88:98:65:D9:F3:F2:8B:03:1D:66:60:61:23:FA:AD:73:6D:D3:68:92 DirName:/C=SE/L=Uppsala/O=MySQL AB/CN=Abstract MySQL Developer/Email=abstract.mysql.developer@mysql.com serial:00 Signature Algorithm: md5WithRSAEncryption - 7c:b6:9c:fc:ea:9e:e6:88:32:f5:24:81:9b:89:c0:13:fa:75: - 18:51:af:77:ae:b8:4e:12:5f:48:ab:0c:e6:c5:a4:87:93:6e: - 98:97:f5:f3:d3:0b:e0:fc:5e:34:3e:f2:93:58:73:97:b6:a7: - 66:96:81:cd:73:48:f3:75:24:64:61:13:78:3e:ed:df:7c:4d: - fa:2e:3a:64:99:12:24:9e:a2:51:5c:23:85:0b:0c:bb:f5:8e: - 89:80:27:ba:7c:d2:68:90:ff:1f:68:2e:1b:fd:06:bc:c8:41: - d7:b2:be:9c:94:5c:6d:1e:96:3b:75:bc:12:f0:44:bd:36:00: - 84:cd + 31:77:69:b9:bd:ab:29:f3:fc:5a:09:16:6f:5d:42:ea:ba:01: + 55:69:e3:75:cf:b8:d1:b7:b9:bf:da:63:85:8c:48:92:06:60: + 76:97:e0:00:78:4b:ad:da:ab:6a:90:6d:8b:03:a8:b1:e9:09: + 78:e1:29:98:56:12:60:6b:42:fe:e8:a7:c4:f8:d6:15:07:e8: + 2b:c2:d8:8a:e5:1b:2e:51:08:9b:56:e3:b3:7a:4c:3e:e5:be: + 4a:4d:f8:65:7b:a8:21:e0:ca:fe:8b:ab:d7:ec:f2:2d:f7:d0: + bf:d7:c5:23:1c:08:d8:aa:57:c7:f3:5f:ba:33:3f:78:d1:f4: + 8e:5e -----BEGIN CERTIFICATE----- -MIIDkTCCAvqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiDELMAkGA1UEBhMCU0Ux +MIIDkTCCAvqgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBiDELMAkGA1UEBhMCU0Ux EDAOBgNVBAcTB1VwcHNhbGExETAPBgNVBAoTCE15U1FMIEFCMSEwHwYDVQQDExhB YnN0cmFjdCBNeVNRTCBEZXZlbG9wZXIxMTAvBgkqhkiG9w0BCQEWImFic3RyYWN0 -Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wHhcNMDMwODA3MTEzOTI3WhcNMTMw -ODA0MTEzOTI3WjB8MQswCQYDVQQGEwJTRTEQMA4GA1UEBxMHVXBwc2FsYTERMA8G +Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb20wHhcNMDMwOTEyMTYyMjA2WhcNMTMw +OTA5MTYyMjA2WjB8MQswCQYDVQQGEwJTRTEQMA4GA1UEBxMHVXBwc2FsYTERMA8G A1UEChMITXlTUUwgQUIxFTATBgNVBAMTDE15U1FMIFNlcnZlcjExMC8GCSqGSIb3 DQEJARYiYWJzdHJhY3QubXlzcWwuZGV2ZWxvcGVyQG15c3FsLmNvbTCBnzANBgkq hkiG9w0BAQEFAAOBjQAwgYkCgYEA6YZ6VYSITL6k+JJzMBJJC3qFhzk0OQ19C40Y @@ -56,12 +56,12 @@ wheVE1LSP1UQV8g/WvWy+ovQZ0nMqoL8n84AtHPzNtI608KwDhTD1LIhdKHwMYFg h5hzXBDBsRpN8fOwmD/w15ebK/3VIXmyL+tkFcmbnfyeLdT4BFvqqXVLQsM9Dk0q qLjKmY0CAwEAAaOCARQwggEQMAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9w ZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRu5Jtqxerk5sfv -1x7IY0VgKxvU1DCBtQYDVR0jBIGtMIGqgBSVSkE+8VwStHs+nzsMI2aQPX9O2KGB +1x7IY0VgKxvU1DCBtQYDVR0jBIGtMIGqgBSImGXZ8/KLAx1mYGEj+q1zbdNokqGB jqSBizCBiDELMAkGA1UEBhMCU0UxEDAOBgNVBAcTB1VwcHNhbGExETAPBgNVBAoT CE15U1FMIEFCMSEwHwYDVQQDExhBYnN0cmFjdCBNeVNRTCBEZXZlbG9wZXIxMTAv BgkqhkiG9w0BCQEWImFic3RyYWN0Lm15c3FsLmRldmVsb3BlckBteXNxbC5jb22C -AQAwDQYJKoZIhvcNAQEEBQADgYEAfLac/Oqe5ogy9SSBm4nAE/p1GFGvd664ThJf -SKsM5sWkh5NumJf189ML4PxeND7yk1hzl7anZpaBzXNI83UkZGETeD7t33xN+i46 -ZJkSJJ6iUVwjhQsMu/WOiYAnunzSaJD/H2guG/0GvMhB17K+nJRcbR6WO3W8EvBE -vTYAhM0= +AQAwDQYJKoZIhvcNAQEEBQADgYEAMXdpub2rKfP8WgkWb11C6roBVWnjdc+40be5 +v9pjhYxIkgZgdpfgAHhLrdqrapBtiwOosekJeOEpmFYSYGtC/uinxPjWFQfoK8LY +iuUbLlEIm1bjs3pMPuW+Sk34ZXuoIeDK/our1+zyLffQv9fFIxwI2KpXx/NfujM/ +eNH0jl4= -----END CERTIFICATE----- From 1c11077d60ed0d94bcc79968a96b58511c88cad7 Mon Sep 17 00:00:00 2001 From: "dlenev@mysql.com" <> Date: Fri, 12 Sep 2003 22:33:43 +0400 Subject: [PATCH 11/81] Replaced deprecated since OpenSSL 0.9.7 des_ calls and types with their newer DES_ versions. Provided macros for backward compatibility. --- include/my_global.h | 10 ++++++++++ sql/des_key_file.cc | 8 ++++---- sql/item_strfunc.cc | 34 +++++++++++++++++----------------- sql/mysql_priv.h | 4 ++-- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/include/my_global.h b/include/my_global.h index 9d08977a7cd..59e0c43f18d 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -1105,4 +1105,14 @@ typedef union { #define statistic_add(V,C,L) (V)+=(C) #endif +#ifdef HAVE_OPENSSL +#include +#if OPENSSL_VERSION_NUMBER < 0x0090700f +#define DES_cblock des_cblock +#define DES_key_schedule des_key_schedule +#define DES_set_key_unchecked(k,ks) des_set_key_unchecked((k),*(ks)) +#define DES_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e) des_ede3_cbc_encrypt((i),(o),(l),*(k1),*(k2),*(k3),(iv),(e)) +#endif +#endif + #endif /* my_global_h */ diff --git a/sql/des_key_file.cc b/sql/des_key_file.cc index 891cf18ee53..619691d183e 100644 --- a/sql/des_key_file.cc +++ b/sql/des_key_file.cc @@ -76,16 +76,16 @@ load_des_key_file(const char *file_name) if (start != end) { - des_cblock ivec; + DES_cblock ivec; bzero((char*) &ivec,sizeof(ivec)); // We make good 24-byte (168 bit) key from given plaintext key with MD5 EVP_BytesToKey(EVP_des_ede3_cbc(),EVP_md5(),NULL, (uchar *) start, (int) (end-start),1, (uchar *) &keyblock, ivec); - des_set_key_unchecked(&keyblock.key1,des_keyschedule[(int)offset].ks1); - des_set_key_unchecked(&keyblock.key2,des_keyschedule[(int)offset].ks2); - des_set_key_unchecked(&keyblock.key3,des_keyschedule[(int)offset].ks3); + DES_set_key_unchecked(&keyblock.key1,&(des_keyschedule[(int)offset].ks1)); + DES_set_key_unchecked(&keyblock.key2,&(des_keyschedule[(int)offset].ks2)); + DES_set_key_unchecked(&keyblock.key3,&(des_keyschedule[(int)offset].ks3)); if (des_default_key == 15) des_default_key= (uint) offset; // use first as def. } diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 8cc3d24f7d9..fe9c8b9e099 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -330,7 +330,7 @@ void Item_func_concat::fix_length_and_dec() String *Item_func_des_encrypt::val_str(String *str) { #ifdef HAVE_OPENSSL - des_cblock ivec; + DES_cblock ivec; struct st_des_keyblock keyblock; struct st_des_keyschedule keyschedule; const char *append_str="********"; @@ -370,9 +370,9 @@ String *Item_func_des_encrypt::val_str(String *str) EVP_BytesToKey(EVP_des_ede3_cbc(),EVP_md5(),NULL, (uchar*) keystr->ptr(), (int) keystr->length(), 1, (uchar*) &keyblock,ivec); - des_set_key_unchecked(&keyblock.key1,keyschedule.ks1); - des_set_key_unchecked(&keyblock.key2,keyschedule.ks2); - des_set_key_unchecked(&keyblock.key3,keyschedule.ks3); + DES_set_key_unchecked(&keyblock.key1,&keyschedule.ks1); + DES_set_key_unchecked(&keyblock.key2,&keyschedule.ks2); + DES_set_key_unchecked(&keyblock.key3,&keyschedule.ks3); } /* @@ -393,12 +393,12 @@ String *Item_func_des_encrypt::val_str(String *str) tmp_value[0]=(char) (128 | key_number); // Real encryption bzero((char*) &ivec,sizeof(ivec)); - des_ede3_cbc_encrypt((const uchar*) (res->ptr()), + DES_ede3_cbc_encrypt((const uchar*) (res->ptr()), (uchar*) (tmp_value.ptr()+1), res_length, - keyschedule.ks1, - keyschedule.ks2, - keyschedule.ks3, + &keyschedule.ks1, + &keyschedule.ks2, + &keyschedule.ks3, &ivec, TRUE); return &tmp_value; @@ -412,8 +412,8 @@ error: String *Item_func_des_decrypt::val_str(String *str) { #ifdef HAVE_OPENSSL - des_key_schedule ks1, ks2, ks3; - des_cblock ivec; + DES_key_schedule ks1, ks2, ks3; + DES_cblock ivec; struct st_des_keyblock keyblock; struct st_des_keyschedule keyschedule; String *res= args[0]->val_str(str); @@ -447,20 +447,20 @@ String *Item_func_des_decrypt::val_str(String *str) (uchar*) keystr->ptr(),(int) keystr->length(), 1,(uchar*) &keyblock,ivec); // Here we set all 64-bit keys (56 effective) one by one - des_set_key_unchecked(&keyblock.key1,keyschedule.ks1); - des_set_key_unchecked(&keyblock.key2,keyschedule.ks2); - des_set_key_unchecked(&keyblock.key3,keyschedule.ks3); + DES_set_key_unchecked(&keyblock.key1,&keyschedule.ks1); + DES_set_key_unchecked(&keyblock.key2,&keyschedule.ks2); + DES_set_key_unchecked(&keyblock.key3,&keyschedule.ks3); } if (tmp_value.alloc(length-1)) goto error; bzero((char*) &ivec,sizeof(ivec)); - des_ede3_cbc_encrypt((const uchar*) res->ptr()+1, + DES_ede3_cbc_encrypt((const uchar*) res->ptr()+1, (uchar*) (tmp_value.ptr()), length-1, - keyschedule.ks1, - keyschedule.ks2, - keyschedule.ks3, + &keyschedule.ks1, + &keyschedule.ks2, + &keyschedule.ks3, &ivec, FALSE); /* Restore old length of key */ if ((tail=(uint) (uchar) tmp_value[length-2]) > 8) diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 22c92a5473b..8024c755a63 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -474,11 +474,11 @@ Field *find_field_in_table(THD *thd,TABLE *table,const char *name,uint length, #include struct st_des_keyblock { - des_cblock key1, key2, key3; + DES_cblock key1, key2, key3; }; struct st_des_keyschedule { - des_key_schedule ks1, ks2, ks3; + DES_key_schedule ks1, ks2, ks3; }; extern char *des_key_file; extern struct st_des_keyschedule des_keyschedule[10]; From cc6e3a2ec979c97beac45402a2236f3413be8365 Mon Sep 17 00:00:00 2001 From: "greg@mysql.com" <> Date: Fri, 12 Sep 2003 19:58:22 -0400 Subject: [PATCH 12/81] New Windows source package automation for 3.23 --- BitKeeper/etc/logging_ok | 1 + .../Component Definitions/.fgl | 0 .../Component Definitions/Default.cdf | 0 .../Component Definitions/Default.fgl | 0 .../File Groups/Clients and Tools.fgl | 0 .../File Groups/Default.fdf | 0 .../File Groups/Default.fgl | 0 .../File Groups/Development.fgl | 0 .../File Groups/Documentation.fgl | 0 .../File Groups/Grant Tables.fgl | 0 .../File Groups/Servers.fgl | 0 .../MySQL 3.23.com.ipr | 0 .../Registry Entries/Default.rge | 0 .../Script Files/Setup.dbg | Bin .../Script Files/Setup.ino | Bin .../Script Files/Setup.ins | Bin .../Script Files/Setup.obs | Bin .../Script Files/Setup.rul | 0 .../OS Independent/infolist.txt | 4 +- .../OS Independent/SETUP.BMP | Bin .../Shell Objects/Default.shl | 0 .../String Tables/0009-English/value.shl | 12 +- .../String Tables/Default.shl | 0 .../Text Substitutions/Build.tsb | 0 .../Text Substitutions/Setup.tsb | 0 .../OS Independent/infolist.txt | 4 +- .../String Tables/0009-English/value.shl | 12 +- VC++Files/libmysql/libmysql.def | 94 +++ VC++Files/libmysqltest/mytest.c | 169 ++++ VC++Files/mysqlshutdown/mysql.ico | Bin 0 -> 318 bytes VC++Files/mysqlshutdown/mysqlshutdown.c | 198 +++++ VC++Files/mysqlshutdown/mysqlshutdown.rc | 2 + VC++Files/mysqlwatch/mysqlwatch.c | 745 ++++++++++++++++++ VC++Files/thr_test/thr_test.c | 250 ++++++ scripts/Makefile.am | 6 +- scripts/make_win_src_distribution.sh | 487 ++++++++++++ 36 files changed, 1966 insertions(+), 18 deletions(-) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Component Definitions/.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Component Definitions/Default.cdf (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Component Definitions/Default.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/File Groups/Clients and Tools.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/File Groups/Default.fdf (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/File Groups/Default.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/File Groups/Development.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/File Groups/Documentation.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/File Groups/Grant Tables.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/File Groups/Servers.fgl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/MySQL 3.23.com.ipr (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Registry Entries/Default.rge (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Script Files/Setup.dbg (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Script Files/Setup.ino (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Script Files/Setup.ins (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Script Files/Setup.obs (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Script Files/Setup.rul (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt (91%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Shell Objects/Default.shl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/String Tables/0009-English/value.shl (58%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/String Tables/Default.shl (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Text Substitutions/Build.tsb (100%) rename VC++Files/InstallShield/{3.23.XXcom => 3.23.XX-com}/Text Substitutions/Setup.tsb (100%) create mode 100755 VC++Files/libmysql/libmysql.def create mode 100644 VC++Files/libmysqltest/mytest.c create mode 100644 VC++Files/mysqlshutdown/mysql.ico create mode 100644 VC++Files/mysqlshutdown/mysqlshutdown.c create mode 100644 VC++Files/mysqlshutdown/mysqlshutdown.rc create mode 100644 VC++Files/mysqlwatch/mysqlwatch.c create mode 100644 VC++Files/thr_test/thr_test.c create mode 100755 scripts/make_win_src_distribution.sh diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index bbf42ffcb6d..8238e85a5be 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -6,6 +6,7 @@ bar@bar.udmsearch.izhnet.ru bell@sanja.is.com.ua bk@admin.bk greg@gcw.ath.cx +greg@mysql.com guilhem@mysql.com heikki@donna.mysql.fi heikki@hundin.mysql.fi diff --git a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/.fgl b/VC++Files/InstallShield/3.23.XX-com/Component Definitions/.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Component Definitions/.fgl rename to VC++Files/InstallShield/3.23.XX-com/Component Definitions/.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.cdf b/VC++Files/InstallShield/3.23.XX-com/Component Definitions/Default.cdf similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.cdf rename to VC++Files/InstallShield/3.23.XX-com/Component Definitions/Default.cdf diff --git a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.fgl b/VC++Files/InstallShield/3.23.XX-com/Component Definitions/Default.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.fgl rename to VC++Files/InstallShield/3.23.XX-com/Component Definitions/Default.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Clients and Tools.fgl b/VC++Files/InstallShield/3.23.XX-com/File Groups/Clients and Tools.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/File Groups/Clients and Tools.fgl rename to VC++Files/InstallShield/3.23.XX-com/File Groups/Clients and Tools.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf b/VC++Files/InstallShield/3.23.XX-com/File Groups/Default.fdf similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf rename to VC++Files/InstallShield/3.23.XX-com/File Groups/Default.fdf diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fgl b/VC++Files/InstallShield/3.23.XX-com/File Groups/Default.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fgl rename to VC++Files/InstallShield/3.23.XX-com/File Groups/Default.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl b/VC++Files/InstallShield/3.23.XX-com/File Groups/Development.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl rename to VC++Files/InstallShield/3.23.XX-com/File Groups/Development.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Documentation.fgl b/VC++Files/InstallShield/3.23.XX-com/File Groups/Documentation.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/File Groups/Documentation.fgl rename to VC++Files/InstallShield/3.23.XX-com/File Groups/Documentation.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Grant Tables.fgl b/VC++Files/InstallShield/3.23.XX-com/File Groups/Grant Tables.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/File Groups/Grant Tables.fgl rename to VC++Files/InstallShield/3.23.XX-com/File Groups/Grant Tables.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl b/VC++Files/InstallShield/3.23.XX-com/File Groups/Servers.fgl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl rename to VC++Files/InstallShield/3.23.XX-com/File Groups/Servers.fgl diff --git a/VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr b/VC++Files/InstallShield/3.23.XX-com/MySQL 3.23.com.ipr similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr rename to VC++Files/InstallShield/3.23.XX-com/MySQL 3.23.com.ipr diff --git a/VC++Files/InstallShield/3.23.XXcom/Registry Entries/Default.rge b/VC++Files/InstallShield/3.23.XX-com/Registry Entries/Default.rge similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Registry Entries/Default.rge rename to VC++Files/InstallShield/3.23.XX-com/Registry Entries/Default.rge diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg b/VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.dbg similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg rename to VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.dbg diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino b/VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.ino similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino rename to VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.ino diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins b/VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.ins similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins rename to VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.ins diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs b/VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.obs similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs rename to VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.obs diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul b/VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.rul similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul rename to VC++Files/InstallShield/3.23.XX-com/Script Files/Setup.rul diff --git a/VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt b/VC++Files/InstallShield/3.23.XX-com/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt similarity index 91% rename from VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt rename to VC++Files/InstallShield/3.23.XX-com/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt index 2f561d29d81..b0a0a1eeb92 100644 --- a/VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt +++ b/VC++Files/InstallShield/3.23.XX-com/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt @@ -1,4 +1,4 @@ -This is a release of MySQL 3.23.56 for Win32. +This is a release of MySQL @VERSION@ for Win32. NOTE: If you install MySQL in a folder other than C:\MYSQL or you intend to start MySQL on NT/Win2000 @@ -21,4 +21,4 @@ MySQL manual and the MySQL mailing list archive (http://www.mysql.com/documentation/index.html) On behalf of the MySQL AB gang, -Michael Widenius \ No newline at end of file +Michael Widenius diff --git a/VC++Files/InstallShield/3.23.XXcom/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP b/VC++Files/InstallShield/3.23.XX-com/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP rename to VC++Files/InstallShield/3.23.XX-com/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP diff --git a/VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl b/VC++Files/InstallShield/3.23.XX-com/Shell Objects/Default.shl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl rename to VC++Files/InstallShield/3.23.XX-com/Shell Objects/Default.shl diff --git a/VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl b/VC++Files/InstallShield/3.23.XX-com/String Tables/0009-English/value.shl similarity index 58% rename from VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl rename to VC++Files/InstallShield/3.23.XX-com/String Tables/0009-English/value.shl index dd998365667..f0a78602cc0 100644 --- a/VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl +++ b/VC++Files/InstallShield/3.23.XX-com/String Tables/0009-English/value.shl @@ -1,20 +1,20 @@ [Data] -TITLE_MAIN=MySQL Commercial Servers and Clients 3.23.56 +TITLE_MAIN=MySQL Commercial Servers and Clients @VERSION@ ERROR_COMPONENT=Component: COMPANY_NAME=MySQL AB COMPANY_NAME16=Company ERROR_FILEGROUP=File Group: ERROR_MOVEDATA=An error occurred during the move data process: %d -PRODUCT_VERSION=3.23.56 -UNINST_KEY=MySQL Commercial Servers and Clients 3.23.56 -TITLE_CAPTIONBAR=MySQL Commercial Servers and Clients 3.23.56 Setup +PRODUCT_VERSION=@VERSION@ +UNINST_KEY=MySQL Commercial Servers and Clients @VERSION@ +TITLE_CAPTIONBAR=MySQL Commercial Servers and Clients @VERSION@ Setup PRODUCT_NAME16=Product ERROR_FILE=File: ERROR_VGARESOLUTION=This program requires VGA or better resolution. PRODUCT_KEY=yourapp.Exe -UNINST_DISPLAY_NAME=MySQL Commercial Servers and Clients 3.23.56 +UNINST_DISPLAY_NAME=MySQL Commercial Servers and Clients @VERSION@ ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product. -PRODUCT_NAME=MySQL Commercial Servers and Clients 3.23.56 +PRODUCT_NAME=MySQL Commercial Servers and Clients @VERSION@ [General] Language=0009 diff --git a/VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl b/VC++Files/InstallShield/3.23.XX-com/String Tables/Default.shl similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl rename to VC++Files/InstallShield/3.23.XX-com/String Tables/Default.shl diff --git a/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Build.tsb b/VC++Files/InstallShield/3.23.XX-com/Text Substitutions/Build.tsb similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Build.tsb rename to VC++Files/InstallShield/3.23.XX-com/Text Substitutions/Build.tsb diff --git a/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Setup.tsb b/VC++Files/InstallShield/3.23.XX-com/Text Substitutions/Setup.tsb similarity index 100% rename from VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Setup.tsb rename to VC++Files/InstallShield/3.23.XX-com/Text Substitutions/Setup.tsb diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt b/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt index 2f561d29d81..b0a0a1eeb92 100644 --- a/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt +++ b/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt @@ -1,4 +1,4 @@ -This is a release of MySQL 3.23.56 for Win32. +This is a release of MySQL @VERSION@ for Win32. NOTE: If you install MySQL in a folder other than C:\MYSQL or you intend to start MySQL on NT/Win2000 @@ -21,4 +21,4 @@ MySQL manual and the MySQL mailing list archive (http://www.mysql.com/documentation/index.html) On behalf of the MySQL AB gang, -Michael Widenius \ No newline at end of file +Michael Widenius diff --git a/VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl b/VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl index 687c58b7b21..abbf6bce813 100644 --- a/VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl +++ b/VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl @@ -1,19 +1,19 @@ [Data] -TITLE_MAIN=MySQL Servers and Clients 3.23.56 +TITLE_MAIN=MySQL Servers and Clients @VERSION@ COMPANY_NAME=MySQL AB ERROR_COMPONENT=Component: COMPANY_NAME16=Company -PRODUCT_VERSION=3.23.56 +PRODUCT_VERSION=@VERSION@ ERROR_MOVEDATA=An error occurred during the move data process: %d ERROR_FILEGROUP=File Group: -UNINST_KEY=MySQL Servers and Clients 3.23.56 -TITLE_CAPTIONBAR=MySQL Servers and Clients 3.23.56 Setup +UNINST_KEY=MySQL Servers and Clients @VERSION@ +TITLE_CAPTIONBAR=MySQL Servers and Clients @VERSION@ Setup PRODUCT_NAME16=Product ERROR_VGARESOLUTION=This program requires VGA or better resolution. ERROR_FILE=File: -UNINST_DISPLAY_NAME=MySQL Servers and Clients 3.23.56 +UNINST_DISPLAY_NAME=MySQL Servers and Clients @VERSION@ PRODUCT_KEY=yourapp.Exe -PRODUCT_NAME=MySQL Servers and Clients 3.23.56 +PRODUCT_NAME=MySQL Servers and Clients @VERSION@ ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product. [General] diff --git a/VC++Files/libmysql/libmysql.def b/VC++Files/libmysql/libmysql.def new file mode 100755 index 00000000000..726a53864f3 --- /dev/null +++ b/VC++Files/libmysql/libmysql.def @@ -0,0 +1,94 @@ +LIBRARY LIBMYSQL +DESCRIPTION 'MySQL 3.23 Client Library' +VERSION 2.5 +EXPORTS + mysql_affected_rows + mysql_close + mysql_connect + mysql_create_db + mysql_data_seek + mysql_debug + mysql_drop_db + mysql_dump_debug_info + mysql_eof + mysql_errno + mysql_error + mysql_escape_string + mysql_fetch_field + mysql_fetch_field_direct + mysql_fetch_fields + mysql_fetch_lengths + mysql_fetch_row + mysql_field_count + mysql_field_seek + mysql_field_tell + mysql_free_result + mysql_get_client_info + mysql_get_host_info + mysql_get_proto_info + mysql_get_server_info + mysql_info + mysql_init + mysql_insert_id + mysql_kill + mysql_list_dbs + mysql_list_fields + mysql_list_processes + mysql_list_tables + mysql_num_fields + mysql_num_rows + mysql_odbc_escape_string + mysql_options + mysql_ping + mysql_query + mysql_real_connect + mysql_real_query + mysql_refresh + mysql_row_seek + mysql_row_tell + mysql_select_db + mysql_shutdown + mysql_stat + mysql_store_result + mysql_thread_id + mysql_use_result + bmove_upp + delete_dynamic + _dig_vec + init_dynamic_array + insert_dynamic + int2str + is_prefix + list_add + list_delete + max_allowed_packet + my_casecmp + my_init + my_end + my_strdup + my_malloc + my_memdup + my_no_flags_free + my_realloc + my_thread_end + my_thread_init + net_buffer_length + set_dynamic + strcend + strdup_root + strfill + strinstr + strmake + strmov + strxmov + myodbc_remove_escape + mysql_thread_safe + mysql_character_set_name + mysql_change_user + mysql_send_query + mysql_read_query_result + mysql_real_escape_string + load_defaults + free_defaults + + diff --git a/VC++Files/libmysqltest/mytest.c b/VC++Files/libmysqltest/mytest.c new file mode 100644 index 00000000000..8b4029f5e1e --- /dev/null +++ b/VC++Files/libmysqltest/mytest.c @@ -0,0 +1,169 @@ +/*C4*/ +/****************************************************************/ +/* Author: Jethro Wright, III TS : 3/ 4/1998 9:15 */ +/* Date: 02/18/1998 */ +/* mytest.c : do some testing of the libmySQL.DLL.... */ +/* */ +/* History: */ +/* 02/18/1998 jw3 also sprach zarathustra.... */ +/****************************************************************/ + + +#include +#include +#include + +#include + +#define DEFALT_SQL_STMT "SELECT * FROM db" +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#endif + + +/******************************************************** +** +** main :- +** +********************************************************/ + +int +main( int argc, char * argv[] ) +{ + + char szSQL[ 200 ], aszFlds[ 25 ][ 25 ], * pszT, szDB[ 50 ] ; + int i, j, k, l, x ; + MYSQL * myData ; + MYSQL_RES * res ; + MYSQL_FIELD * fd ; + MYSQL_ROW row ; + + //....just curious.... + printf( "sizeof( MYSQL ) == %d\n", sizeof( MYSQL ) ) ; + if ( argc == 2 ) + { + strcpy( szDB, argv[ 1 ] ) ; + strcpy( szSQL, DEFALT_SQL_STMT ) ; + if (!strcmp(szDB,"--debug")) + { + strcpy( szDB, "mysql" ) ; + printf("Some mysql struct information (size and offset):\n"); + printf("net:\t%3d %3d\n",sizeof(myData->net),offsetof(MYSQL,net)); + printf("host:\t%3d %3d\n",sizeof(myData->host),offsetof(MYSQL,host)); + printf("port:\t%3d %3d\n",sizeof(myData->port),offsetof(MYSQL,port)); + printf("protocol_version:\t%3d %3d\n",sizeof(myData->protocol_version), + offsetof(MYSQL,protocol_version)); + printf("thread_id:\t%3d %3d\n",sizeof(myData->thread_id), + offsetof(MYSQL,thread_id)); + printf("affected_rows:\t%3d %3d\n",sizeof(myData->affected_rows), + offsetof(MYSQL,affected_rows)); + printf("packet_length:\t%3d %3d\n",sizeof(myData->packet_length), + offsetof(MYSQL,packet_length)); + printf("status:\t%3d %3d\n",sizeof(myData->status), + offsetof(MYSQL,status)); + printf("fields:\t%3d %3d\n",sizeof(myData->fields), + offsetof(MYSQL,fields)); + printf("field_alloc:\t%3d %3d\n",sizeof(myData->field_alloc), + offsetof(MYSQL,field_alloc)); + printf("free_me:\t%3d %3d\n",sizeof(myData->free_me), + offsetof(MYSQL,free_me)); + printf("options:\t%3d %3d\n",sizeof(myData->options), + offsetof(MYSQL,options)); + puts(""); + } + } + else if ( argc > 2 ) { + strcpy( szDB, argv[ 1 ] ) ; + strcpy( szSQL, argv[ 2 ] ) ; + } + else { + strcpy( szDB, "mysql" ) ; + strcpy( szSQL, DEFALT_SQL_STMT ) ; + } + //.... + + if ( (myData = mysql_init((MYSQL*) 0)) && + mysql_real_connect( myData, NULL, NULL, NULL, NULL, MYSQL_PORT, + NULL, 0 ) ) + { + if ( mysql_select_db( myData, szDB ) < 0 ) { + printf( "Can't select the %s database !\n", szDB ) ; + mysql_close( myData ) ; + return 2 ; + } + } + else { + printf( "Can't connect to the mysql server on port %d !\n", + MYSQL_PORT ) ; + mysql_close( myData ) ; + return 1 ; + } + //.... + if ( ! mysql_query( myData, szSQL ) ) { + res = mysql_store_result( myData ) ; + i = (int) mysql_num_rows( res ) ; l = 1 ; + printf( "Query: %s\nNumber of records found: %ld\n", szSQL, i ) ; + //....we can get the field-specific characteristics here.... + for ( x = 0 ; fd = mysql_fetch_field( res ) ; x++ ) + strcpy( aszFlds[ x ], fd->name ) ; + //.... + while ( row = mysql_fetch_row( res ) ) { + j = mysql_num_fields( res ) ; + printf( "Record #%ld:-\n", l++ ) ; + for ( k = 0 ; k < j ; k++ ) + printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ], + (((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ; + puts( "==============================\n" ) ; + } + mysql_free_result( res ) ; + } + else printf( "Couldn't execute %s on the server !\n", szSQL ) ; + //.... + puts( "==== Diagnostic info ====" ) ; + pszT = mysql_get_client_info() ; + printf( "Client info: %s\n", pszT ) ; + //.... + pszT = mysql_get_host_info( myData ) ; + printf( "Host info: %s\n", pszT ) ; + //.... + pszT = mysql_get_server_info( myData ) ; + printf( "Server info: %s\n", pszT ) ; + //.... + res = mysql_list_processes( myData ) ; l = 1 ; + if (res) + { + for ( x = 0 ; fd = mysql_fetch_field( res ) ; x++ ) + strcpy( aszFlds[ x ], fd->name ) ; + while ( row = mysql_fetch_row( res ) ) { + j = mysql_num_fields( res ) ; + printf( "Process #%ld:-\n", l++ ) ; + for ( k = 0 ; k < j ; k++ ) + printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ], + (((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ; + puts( "==============================\n" ) ; + } + } + else + { + printf("Got error %s when retreiving processlist\n",mysql_error(myData)); + } + //.... + res = mysql_list_tables( myData, "%" ) ; l = 1 ; + for ( x = 0 ; fd = mysql_fetch_field( res ) ; x++ ) + strcpy( aszFlds[ x ], fd->name ) ; + while ( row = mysql_fetch_row( res ) ) { + j = mysql_num_fields( res ) ; + printf( "Table #%ld:-\n", l++ ) ; + for ( k = 0 ; k < j ; k++ ) + printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ], + (((row[k]==NULL)||(!strlen(row[k])))?"NULL":row[k])) ; + puts( "==============================\n" ) ; + } + //.... + pszT = mysql_stat( myData ) ; + puts( pszT ) ; + //.... + mysql_close( myData ) ; + return 0 ; + +} diff --git a/VC++Files/mysqlshutdown/mysql.ico b/VC++Files/mysqlshutdown/mysql.ico new file mode 100644 index 0000000000000000000000000000000000000000..1fe0b7115bbe95b1108cd2ef025f539cad262181 GIT binary patch literal 318 zcmZvUD-Hrd5JcZ5m~pGnNG`<*&;-dE{Mfn8Bxu&55QK0D6ltnvMWz)B3Y@jseC!89!*R!Xf^>Or(1!kHj<%hW7GDWsB>AX214Q+0Zs``j1a z(@j@PPTpHIC8_LJ_1=$lliIOY^&;L8mot10@Dd)vQ+0fVtLJb(3VXP9%sZG*+7-U9 Cr%L_+ literal 0 HcmV?d00001 diff --git a/VC++Files/mysqlshutdown/mysqlshutdown.c b/VC++Files/mysqlshutdown/mysqlshutdown.c new file mode 100644 index 00000000000..ccaf4a00eda --- /dev/null +++ b/VC++Files/mysqlshutdown/mysqlshutdown.c @@ -0,0 +1,198 @@ +/**************************************************************************** + MySqlShutdown - shutdown MySQL on system shutdown (Win95/98) + ---------------------------------------------------------------------------- + Revision History : + Version Author Date Description + 001.00 Irena 21-12-99 +*****************************************************************************/ +#include + +//----------------------------------------------------------------------- +// Local data +//----------------------------------------------------------------------- +static char szAppName[] = "MySqlShutdown"; +static HINSTANCE hInstance; + +#define MYWM_NOTIFYICON (WM_APP+100) + +//----------------------------------------------------------------------- +// Exported functions +//----------------------------------------------------------------------- +LRESULT CALLBACK MainWindowProc (HWND, UINT, WPARAM, LPARAM); + +//----------------------------------------------------------------------- +// Local functions +//----------------------------------------------------------------------- +static BOOL InitAppClass (HINSTANCE hInstance); + +BOOL TrayMessageAdd(HWND hWnd, DWORD dwMessage) +{ + BOOL res; + HICON hIcon =LoadIcon (hInstance, "MySql"); + char *szTip="MySql Shutdown"; + NOTIFYICONDATA tnd; + + tnd.cbSize = sizeof(NOTIFYICONDATA); + tnd.hWnd = hWnd; + tnd.uID = 101; + + tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; + tnd.uCallbackMessage = MYWM_NOTIFYICON; + tnd.hIcon = hIcon; + strcpy(tnd.szTip, szTip); + res = Shell_NotifyIcon(dwMessage, &tnd); + + if (hIcon) DestroyIcon(hIcon); + + return res; +} + +//----------------------------------------------------------------------- +// Name: WinMain +// Purpose: Main application entry point +//----------------------------------------------------------------------- + +int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) +{ HWND hWnd; + MSG Msg; + + hInstance=hInst; + // Register application class if needed + if (InitAppClass (hInstance) == FALSE) return (0); + + + hWnd = CreateWindow (szAppName, "MySql", + WS_OVERLAPPEDWINDOW|WS_MINIMIZE, + 0, 0, + GetSystemMetrics(SM_CXSCREEN)/4, + GetSystemMetrics(SM_CYSCREEN)/4, + 0, 0, hInstance, NULL); + + if(!hWnd) + { + return (0); + } + ShowWindow (hWnd, SW_HIDE); + UpdateWindow (hWnd); + while (GetMessage (&Msg, 0, 0, 0)) + { TranslateMessage (&Msg); + DispatchMessage (&Msg); + } + return ((int) (Msg.wParam)); +} + +//----------------------------------------------------------------------- +// Name: InitAppClass +// Purpose: Register the main application window class +//----------------------------------------------------------------------- +static BOOL InitAppClass (HINSTANCE hInstance) +{ + WNDCLASS cls; + + if (GetClassInfo (hInstance, szAppName, &cls) == 0) + { + cls.style = CS_HREDRAW | CS_VREDRAW ;; + cls.lpfnWndProc = (WNDPROC) MainWindowProc; + cls.cbClsExtra = 0; + cls.cbWndExtra = sizeof(HWND); + cls.hInstance = hInstance; + cls.hIcon = LoadIcon (hInstance, "MySql"); + cls.hCursor = LoadCursor (NULL, IDC_ARROW); + cls.hbrBackground = GetStockObject (WHITE_BRUSH) ; + cls.lpszMenuName = 0; //szAppName; + cls.lpszClassName = szAppName; + return RegisterClass (&cls); + } + return (TRUE); +} +//----------------------------------------------------------------------- +// Name: MainWindowProc +// Purpose: Window procedure for main application window. +//----------------------------------------------------------------------- +LRESULT CALLBACK MainWindowProc (HWND hWnd, UINT Msg,WPARAM wParam, LPARAM lParam) +{ + static RECT rect ; + HDC hdc ; + PAINTSTRUCT ps ; + static BOOL bShutdown=FALSE; + + switch (Msg) + { + case WM_CREATE: + TrayMessageAdd(hWnd, NIM_ADD); + return TRUE; +/*************** + case WM_SYSCOMMAND: + if(wParam==SC_CLOSE) + { HANDLE hEventShutdown; + + bShutdown=TRUE; + InvalidateRect(hWnd,NULL,TRUE); + ShowWindow (hWnd, SW_NORMAL); + UpdateWindow(hWnd); + hEventShutdown=OpenEvent(EVENT_MODIFY_STATE, 0, "MySqlShutdown"); + if(hEventShutdown) + { + SetEvent(hEventShutdown); + CloseHandle(hEventShutdown); + Sleep(1000); + MessageBox(hWnd,"Shutdown", "MySql", MB_OK); + } + TrayMessageAdd(hWnd, NIM_DELETE); + } + break; +**************/ + case WM_DESTROY: + TrayMessageAdd(hWnd, NIM_DELETE); + PostQuitMessage (0); + return 0; + case WM_SIZE: + GetClientRect (hWnd, &rect) ; + return 0 ; + + case WM_PAINT: + hdc = BeginPaint (hWnd, &ps) ; + if(bShutdown) + DrawText (hdc, "MySql shutdown in progress...", + -1, &rect, DT_WORDBREAK) ; + EndPaint (hWnd, &ps) ; + return 0 ; + case WM_QUERYENDSESSION: //Shutdown MySql + { HANDLE hEventShutdown; + + bShutdown=TRUE; + InvalidateRect(hWnd,NULL,TRUE); + ShowWindow (hWnd, SW_NORMAL); + UpdateWindow(hWnd); + hEventShutdown=OpenEvent(EVENT_MODIFY_STATE, 0, "MySqlShutdown"); + if(hEventShutdown) + { + SetEvent(hEventShutdown); + CloseHandle(hEventShutdown); + Sleep(1000); + MessageBox(hWnd,"Shutdown", "MySql", MB_OK); + } + } + return 1; + + case MYWM_NOTIFYICON: + switch (lParam) + { + case WM_LBUTTONDOWN: + case WM_RBUTTONDOWN: + ShowWindow(hWnd, SW_SHOWNORMAL); + SetForegroundWindow(hWnd); // make us come to the front + break; + default: + break; + } + break; + + } + return DefWindowProc (hWnd, Msg, wParam, lParam); +} + + +// ----------------------- The end ------------------------------------------ + + diff --git a/VC++Files/mysqlshutdown/mysqlshutdown.rc b/VC++Files/mysqlshutdown/mysqlshutdown.rc new file mode 100644 index 00000000000..6837f863a81 --- /dev/null +++ b/VC++Files/mysqlshutdown/mysqlshutdown.rc @@ -0,0 +1,2 @@ +MySql ICON DISCARDABLE "MYSQL.ICO" + diff --git a/VC++Files/mysqlwatch/mysqlwatch.c b/VC++Files/mysqlwatch/mysqlwatch.c new file mode 100644 index 00000000000..2a1f62b4394 --- /dev/null +++ b/VC++Files/mysqlwatch/mysqlwatch.c @@ -0,0 +1,745 @@ +/**************************************************************************** + MySqlWatch - WinNT service program MySQL + - Re-start MySql server in case of failure +*****************************************************************************/ +#include +#include +#include +#include +#include + + +// name of the executable +#define SZAPPNAME "mysqlwatch" +// internal name of the service +#define SZSERVICENAME "MySqlWatch" +// displayed name of the service +#define SZSERVICEDISPLAYNAME "MySqlWatch" +// list of service dependencies - "dep1\0dep2\0\0" +#define SZDEPENDENCIES "" + + + +VOID ServiceStart(DWORD dwArgc, LPTSTR *lpszArgv); +VOID ServiceStop(void); +BOOL ReportStatusToSCMgr(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint); +void AddToMessageLog(LPTSTR lpszMsg); + +// internal variables +SERVICE_STATUS ssStatus; // current status of the service +SERVICE_STATUS_HANDLE sshStatusHandle; +DWORD dwErr = 0; +BOOL bDebug = FALSE; +TCHAR szErr[256]; + +// internal function prototypes +void WINAPI service_ctrl(DWORD dwCtrlCode); +void WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv); +void CmdInstallService(void); +void CmdRemoveService(void); +void CmdDebugService(int argc, char **argv); +BOOL WINAPI ControlHandler ( DWORD dwCtrlType ); +LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize ); + +// +// FUNCTION: main +// +// PURPOSE: entrypoint for service +// +// PARAMETERS: +// argc - number of command line arguments +// argv - array of command line arguments +// +// RETURN VALUE: +// none +// +// COMMENTS: +// main() either performs the command line task, or +// call StartServiceCtrlDispatcher to register the +// main service thread. When the this call returns, +// the service has stopped, so exit. +// +void main(int argc, char **argv) +{ + SERVICE_TABLE_ENTRY dispatchTable[] = + { + { TEXT(SZSERVICENAME), (LPSERVICE_MAIN_FUNCTION)service_main }, + { NULL, NULL } + }; + + if ( (argc > 1) && + ((*argv[1] == '-') || (*argv[1] == '/')) ) + { + if ( stricmp( "install", argv[1]+1 ) == 0 ) + { + CmdInstallService(); + } + else if ( stricmp( "remove", argv[1]+1 ) == 0 ) + { + CmdRemoveService(); + } + else if ( stricmp( "debug", argv[1]+1 ) == 0 ) + { + bDebug = TRUE; + CmdDebugService(argc, argv); + } + else + { + goto dispatch; + } + exit(0); + } + + // if it doesn't match any of the above parameters + // the service control manager may be starting the service + // so we must call StartServiceCtrlDispatcher + dispatch: + // this is just to be friendly + printf( "%s -install to install the service\n", SZAPPNAME ); + printf( "%s -remove to remove the service\n", SZAPPNAME ); + printf( "%s -debug to run as a console app for debugging\n", SZAPPNAME ); + printf( "\nStartServiceCtrlDispatcher being called.\n" ); + printf( "This may take several seconds. Please wait.\n" ); + + if (!StartServiceCtrlDispatcher(dispatchTable)) + AddToMessageLog(TEXT("StartServiceCtrlDispatcher failed.")); +} + + + +// +// FUNCTION: service_main +// +// PURPOSE: To perform actual initialization of the service +// +// PARAMETERS: +// dwArgc - number of command line arguments +// lpszArgv - array of command line arguments +// +// RETURN VALUE: +// none +// +// COMMENTS: +// This routine performs the service initialization and then calls +// the user defined ServiceStart() routine to perform majority +// of the work. +// +void WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv) +{ + + // register our service control handler: + // + sshStatusHandle = RegisterServiceCtrlHandler( TEXT(SZSERVICENAME), service_ctrl); + + if (!sshStatusHandle) + goto cleanup; + + // SERVICE_STATUS members that don't change in example + // + ssStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; + ssStatus.dwServiceSpecificExitCode = 0; + + + // report the status to the service control manager. + // + if (!ReportStatusToSCMgr( + SERVICE_START_PENDING, // service state + NO_ERROR, // exit code + 3000)) // wait hint + goto cleanup; + + + ServiceStart( dwArgc, lpszArgv ); + +cleanup: + + // try to report the stopped status to the service control manager. + // + if (sshStatusHandle) + ReportStatusToSCMgr( + SERVICE_STOPPED, + dwErr, + 0); + + return; +} + + + +// +// FUNCTION: service_ctrl +// +// PURPOSE: This function is called by the SCM whenever +// ControlService() is called on this service. +// +// PARAMETERS: +// dwCtrlCode - type of control requested +// +// RETURN VALUE: +// none +// +// COMMENTS: +// +void WINAPI service_ctrl(DWORD dwCtrlCode) +{ + // Handle the requested control code. + // + switch(dwCtrlCode) + { + // Stop the service. + // + case SERVICE_CONTROL_STOP: + ssStatus.dwCurrentState = SERVICE_STOP_PENDING; + ServiceStop(); + break; + + // Update the service status. + // + case SERVICE_CONTROL_INTERROGATE: + break; + + // invalid control code + // + default: + break; + + } + + ReportStatusToSCMgr(ssStatus.dwCurrentState, NO_ERROR, 0); + +} + + + +// +// FUNCTION: ReportStatusToSCMgr() +// +// PURPOSE: Sets the current status of the service and +// reports it to the Service Control Manager +// +// PARAMETERS: +// dwCurrentState - the state of the service +// dwWin32ExitCode - error code to report +// dwWaitHint - worst case estimate to next checkpoint +// +// RETURN VALUE: +// TRUE - success +// FALSE - failure +// +// COMMENTS: +// +BOOL ReportStatusToSCMgr(DWORD dwCurrentState, + DWORD dwWin32ExitCode, + DWORD dwWaitHint) +{ + static DWORD dwCheckPoint = 1; + BOOL fResult = TRUE; + + + if ( !bDebug ) // when debugging we don't report to the SCM + { + if (dwCurrentState == SERVICE_START_PENDING) + ssStatus.dwControlsAccepted = 0; + else + ssStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; + + ssStatus.dwCurrentState = dwCurrentState; + ssStatus.dwWin32ExitCode = dwWin32ExitCode; + ssStatus.dwWaitHint = dwWaitHint; + + if ( ( dwCurrentState == SERVICE_RUNNING ) || + ( dwCurrentState == SERVICE_STOPPED ) ) + ssStatus.dwCheckPoint = 0; + else + ssStatus.dwCheckPoint = dwCheckPoint++; + + + // Report the status of the service to the service control manager. + // + if (!(fResult = SetServiceStatus( sshStatusHandle, &ssStatus))) { + AddToMessageLog(TEXT("SetServiceStatus")); + } + } + return fResult; +} + + + +// +// FUNCTION: AddToMessageLog(LPTSTR lpszMsg) +// +// PURPOSE: Allows any thread to log an error message +// +// PARAMETERS: +// lpszMsg - text for message +// +// RETURN VALUE: +// none +// +// COMMENTS: +// +void AddToMessageLog(LPTSTR lpszMsg) +{ + TCHAR szMsg[256]; + HANDLE hEventSource; + LPTSTR lpszStrings[2]; + + + if ( !bDebug ) + { + dwErr = GetLastError(); + + // Use event logging to log the error. + // + hEventSource = RegisterEventSource(NULL, TEXT(SZSERVICENAME)); + + _stprintf(szMsg, TEXT("%s error: %d"), TEXT(SZSERVICENAME), dwErr); + lpszStrings[0] = szMsg; + lpszStrings[1] = lpszMsg; + + if (hEventSource != NULL) { + ReportEvent(hEventSource, // handle of event source + EVENTLOG_ERROR_TYPE, // event type + 0, // event category + 0, // event ID + NULL, // current user's SID + 2, // strings in lpszStrings + 0, // no bytes of raw data + lpszStrings, // array of error strings + NULL); // no raw data + + DeregisterEventSource(hEventSource); + } + } +} + + + + +/////////////////////////////////////////////////////////////////// +// +// The following code handles service installation and removal +// + + +// +// FUNCTION: CmdInstallService() +// +// PURPOSE: Installs the service +// +// PARAMETERS: +// none +// +// RETURN VALUE: +// none +// +// COMMENTS: +// +void CmdInstallService() +{ + SC_HANDLE schService; + SC_HANDLE schSCManager; + + TCHAR szPath[512]; + + if ( GetModuleFileName( NULL, szPath, 512 ) == 0 ) + { + _tprintf(TEXT("Unable to install %s - %s\n"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256)); + return; + } + + schSCManager = OpenSCManager( + NULL, // machine (NULL == local) + NULL, // database (NULL == default) + SC_MANAGER_ALL_ACCESS // access required + ); + if ( schSCManager ) + { + schService = CreateService( + schSCManager, // SCManager database + TEXT(SZSERVICENAME), // name of service + TEXT(SZSERVICEDISPLAYNAME), // name to display + SERVICE_ALL_ACCESS, // desired access + SERVICE_WIN32_OWN_PROCESS, // service type + SERVICE_DEMAND_START, // start type + SERVICE_ERROR_NORMAL, // error control type + szPath, // service's binary + NULL, // no load ordering group + NULL, // no tag identifier + TEXT(SZDEPENDENCIES), // dependencies + NULL, // LocalSystem account + NULL); // no password + + if ( schService ) + { + _tprintf(TEXT("%s installed.\n"), TEXT(SZSERVICEDISPLAYNAME) ); + CloseServiceHandle(schService); + } + else + { + _tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256)); + } + + CloseServiceHandle(schSCManager); + } + else + _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256)); +} + + + +// +// FUNCTION: CmdRemoveService() +// +// PURPOSE: Stops and removes the service +// +// PARAMETERS: +// none +// +// RETURN VALUE: +// none +// +// COMMENTS: +// +void CmdRemoveService() +{ + SC_HANDLE schService; + SC_HANDLE schSCManager; + + schSCManager = OpenSCManager( + NULL, // machine (NULL == local) + NULL, // database (NULL == default) + SC_MANAGER_ALL_ACCESS // access required + ); + if ( schSCManager ) + { + schService = OpenService(schSCManager, TEXT(SZSERVICENAME), SERVICE_ALL_ACCESS); + + if (schService) + { + // try to stop the service + if ( ControlService( schService, SERVICE_CONTROL_STOP, &ssStatus ) ) + { + _tprintf(TEXT("Stopping %s."), TEXT(SZSERVICEDISPLAYNAME)); + Sleep( 1000 ); + + while( QueryServiceStatus( schService, &ssStatus ) ) + { + if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING ) + { + _tprintf(TEXT(".")); + Sleep( 1000 ); + } + else + break; + } + + if ( ssStatus.dwCurrentState == SERVICE_STOPPED ) + _tprintf(TEXT("\n%s stopped.\n"), TEXT(SZSERVICEDISPLAYNAME) ); + else + _tprintf(TEXT("\n%s failed to stop.\n"), TEXT(SZSERVICEDISPLAYNAME) ); + + } + + // now remove the service + if( DeleteService(schService) ) + _tprintf(TEXT("%s removed.\n"), TEXT(SZSERVICEDISPLAYNAME) ); + else + _tprintf(TEXT("DeleteService failed - %s\n"), GetLastErrorText(szErr,256)); + + + CloseServiceHandle(schService); + } + else + _tprintf(TEXT("OpenService failed - %s\n"), GetLastErrorText(szErr,256)); + + CloseServiceHandle(schSCManager); + } + else + _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256)); +} + + + + + +// +// FUNCTION: CmdRestartService() +// +// PURPOSE: Stops and removes the service +// +// PARAMETERS: +// none +// +// RETURN VALUE: +// none +// +// COMMENTS: +// +void CmdRestartService(char *szServiceName) +{ + SC_HANDLE schService; + SC_HANDLE schSCManager; + + schSCManager = OpenSCManager( + NULL, // machine (NULL == local) + NULL, // database (NULL == default) + SC_MANAGER_ALL_ACCESS // access required + ); + if ( schSCManager ) + { + schService = OpenService(schSCManager, TEXT(szServiceName), SERVICE_ALL_ACCESS); + if (schService) + { + if(! ControlService( schService, SERVICE_CONTROL_INTERROGATE, &ssStatus ) ) + //if(QueryServiceStatus( schService, &ssStatus )==0) + { + if(GetLastError()==ERROR_SERVICE_NOT_ACTIVE) + { + + //AddToMessageLog(TEXT("Start service...")); + StartService( schService, 0,NULL); + } + else + { ; + //AddToMessageLog(TEXT("QueryService...")); + //AddToMessageLog(TEXT(GetLastErrorText(szErr,256))); + } + } + CloseServiceHandle(schService); + } + else + { _tprintf(TEXT("OpenService failed - %s\n"), GetLastErrorText(szErr,256)); + AddToMessageLog(TEXT("OpenService...")); + AddToMessageLog(TEXT(GetLastErrorText(szErr,256))); + + } + CloseServiceHandle(schSCManager); + } + else + { _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256)); + AddToMessageLog(TEXT("OpenSCMManager..")); + + } +} + + + + +/////////////////////////////////////////////////////////////////// +// +// The following code is for running the service as a console app +// + + +// +// FUNCTION: CmdDebugService(int argc, char ** argv) +// +// PURPOSE: Runs the service as a console application +// +// PARAMETERS: +// argc - number of command line arguments +// argv - array of command line arguments +// +// RETURN VALUE: +// none +// +// COMMENTS: +// +void CmdDebugService(int argc, char ** argv) +{ + DWORD dwArgc; + LPTSTR *lpszArgv; + +#ifdef UNICODE + lpszArgv = CommandLineToArgvW(GetCommandLineW(), &(dwArgc) ); +#else + dwArgc = (DWORD) argc; + lpszArgv = argv; +#endif + + _tprintf(TEXT("Debugging %s.\n"), TEXT(SZSERVICEDISPLAYNAME)); + + SetConsoleCtrlHandler( ControlHandler, TRUE ); + + ServiceStart( dwArgc, lpszArgv ); +} + + +// +// FUNCTION: ControlHandler ( DWORD dwCtrlType ) +// +// PURPOSE: Handled console control events +// +// PARAMETERS: +// dwCtrlType - type of control event +// +// RETURN VALUE: +// True - handled +// False - unhandled +// +// COMMENTS: +// +BOOL WINAPI ControlHandler ( DWORD dwCtrlType ) +{ + switch( dwCtrlType ) + { + case CTRL_BREAK_EVENT: // use Ctrl+C or Ctrl+Break to simulate + case CTRL_C_EVENT: // SERVICE_CONTROL_STOP in debug mode + _tprintf(TEXT("Stopping %s.\n"), TEXT(SZSERVICEDISPLAYNAME)); + ServiceStop(); + return TRUE; + break; + + } + return FALSE; +} + +// +// FUNCTION: GetLastErrorText +// +// PURPOSE: copies error message text to string +// +// PARAMETERS: +// lpszBuf - destination buffer +// dwSize - size of buffer +// +// RETURN VALUE: +// destination buffer +// +// COMMENTS: +// +LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize ) +{ + DWORD dwRet; + LPTSTR lpszTemp = NULL; + + dwRet = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY, + NULL, + GetLastError(), + LANG_NEUTRAL, + (LPTSTR)&lpszTemp, + 0, + NULL ); + + // supplied buffer is not long enough + if ( !dwRet || ( (long)dwSize < (long)dwRet+14 ) ) + lpszBuf[0] = TEXT('\0'); + else + { + lpszTemp[lstrlen(lpszTemp)-2] = TEXT('\0'); //remove cr and newline character + _stprintf( lpszBuf, TEXT("%s (0x%x)"), lpszTemp, GetLastError() ); + } + + if ( lpszTemp ) + LocalFree((HLOCAL) lpszTemp ); + + return lpszBuf; +} + +//------------------------------------------------- +// this event is signalled when the +// service should end +//------------------------------------------------- +HANDLE hServerStopEvent = NULL; + + +//------------------------------------------------- +// FUNCTION: ServiceStart +// +// PURPOSE: Actual code of the service +// that does the work. +//------------------------------------------------- +void ServiceStart (DWORD dwArgc, LPTSTR *lpszArgv) +{ + DWORD dwWait,dwTimeout=1000*60*1; + + if (!ReportStatusToSCMgr( + SERVICE_START_PENDING, // service state + NO_ERROR, // exit code + 3000)) // wait hint + goto cleanup; + + // create the event object. The control handler function signals + // this event when it receives the "stop" control code. + // + hServerStopEvent = CreateEvent( + NULL, // no security attributes + TRUE, // manual reset event + FALSE, // not-signalled + NULL); // no name + + if ( hServerStopEvent == NULL) goto cleanup; + + + // report the status to the service control manager. + // + if (!ReportStatusToSCMgr( + SERVICE_START_PENDING, // service state + NO_ERROR, // exit code + 3000)) // wait hint + goto cleanup; + + + + // report the status to the service control manager. + // + if (!ReportStatusToSCMgr( + SERVICE_START_PENDING, // service state + NO_ERROR, // exit code + 3000)) // wait hint + goto cleanup; + + + + // report the status to the service control manager. + // + if (!ReportStatusToSCMgr( + SERVICE_RUNNING, // service state + NO_ERROR, // exit code + 0)) // wait hint + goto cleanup; + + // + // End of initialization + // Service is now running, perform work until shutdown + // + + while ( 1 ) + { + + dwWait = WaitForSingleObject( hServerStopEvent, dwTimeout); + if(dwWait==WAIT_FAILED) + { + AddToMessageLog(TEXT("Error in WaitForSingleObject")); + break; + } + else if(dwWait==WAIT_TIMEOUT) + { + CmdRestartService("MySql"); + } + else + { break; //shutdown + } + + } + + cleanup: + + if (hServerStopEvent) + CloseHandle(hServerStopEvent); + +} + + +//------------------------------------------------- +// FUNCTION: ServiceStop +// +// PURPOSE: Stops the service +//------------------------------------------------- +void ServiceStop() +{ + if ( hServerStopEvent ) + SetEvent(hServerStopEvent); +} +//-the end ---------------------------------------- diff --git a/VC++Files/thr_test/thr_test.c b/VC++Files/thr_test/thr_test.c new file mode 100644 index 00000000000..3427eed8441 --- /dev/null +++ b/VC++Files/thr_test/thr_test.c @@ -0,0 +1,250 @@ +/* Testing of thread creation to find memory allocation bug +** This is coded to use as few extern functions as possible! +** +** The program must be compiled to be multithreaded ! +** +** The problem is that when this program is run it will allocate more and more +** memory, so there is a memory leak in the thread handling. The problem is how +** to avoid is ! +** +** It looks like the bug is that the std library doesn't free thread +** specific variables if one uses a thread variable. +** If one compiles this program with -DREMOVE_BUG +** there is no memory leaks anymore! +** +** This program is tested with Microsofts VC++ 5.0, but BC5.2 is also +** reported to have this bug. +*/ + +#include +#include +#include + +#define TEST_COUNT 100000 + +/***************************************************************************** +** The following is to emulate the posix thread interface +*****************************************************************************/ + +typedef HANDLE pthread_t; +typedef struct thread_attr { + DWORD dwStackSize ; + DWORD dwCreatingFlag ; + int priority ; +} pthread_attr_t ; +typedef struct { int dummy; } pthread_condattr_t; +typedef struct { + unsigned int msg; + pthread_t thread; + DWORD thread_id; +} pthread_cond_t; +typedef CRITICAL_SECTION pthread_mutex_t; + +#define pthread_mutex_init(A,B) InitializeCriticalSection(A) +#define pthread_mutex_lock(A) (EnterCriticalSection(A),0) +#define pthread_mutex_unlock(A) LeaveCriticalSection(A) +#define pthread_mutex_destroy(A) DeleteCriticalSection(A) +#define pthread_handler_decl(A,B) unsigned __cdecl A(void *B) +typedef unsigned (__cdecl *pthread_handler)(void *); +#define pthread_self() GetCurrentThread() + +static unsigned int thread_count; +static pthread_cond_t COND_thread_count; +static pthread_mutex_t LOCK_thread_count; + +pthread_mutex_t THR_LOCK_malloc,THR_LOCK_open,THR_LOCK_keycache, + THR_LOCK_lock,THR_LOCK_isam; +/* +** We have tried to use '_beginthreadex' instead of '_beginthread' here +** but in this case the program leaks about 512 characters for each +** created thread ! +*/ + +int pthread_create(pthread_t *thread_id, pthread_attr_t *attr, + pthread_handler func, void *param) +{ + HANDLE hThread; + + hThread=(HANDLE)_beginthread(func, + attr->dwStackSize ? attr->dwStackSize : + 65535,param); + if ((long) hThread == -1L) + { + return(errno ? errno : -1); + } + *thread_id=hThread; + return(0); +} + +void pthread_exit(unsigned A) +{ + _endthread(); +} + +/* +** The following simple implementation of conds works as long as +** only one thread uses pthread_cond_wait at a time. +** This is coded very carefully to work with thr_lock. +*/ + +static unsigned int WIN32_WAIT_SIGNAL= 30000; /* Start message to use */ + +int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr) +{ + cond->msg=WIN32_WAIT_SIGNAL++; + cond->thread=(pthread_t) pthread_self(); /* For global conds */ +//IRENA + cond->thread_id=GetCurrentThreadId(); + return 0; +} + + +int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) +{ + MSG msg ; + unsigned int msgCode=cond->msg; + + cond->thread=(pthread_t) pthread_self(); +//IRENA +//??? cond->thread_id=GetCurrentThreadId(); + //VOID(ReleaseMutex(*mutex)); + + LeaveCriticalSection(mutex); + do + { + WaitMessage() ; + if (!PeekMessage(&msg, NULL, 1, 65534,PM_REMOVE)) + { + return errno=GetLastError() ; + } + } while (msg.message != msgCode) ; + EnterCriticalSection(mutex); + return 0 ; +} + + +int pthread_cond_signal(pthread_cond_t *cond) +{ + + if (!PostThreadMessage(cond->thread_id, cond->msg, 0,0)) + { + return errno=GetLastError() ; + } + return 0 ; +} + +int pthread_attr_init(pthread_attr_t *connect_att) +{ + connect_att->dwStackSize = 0; + connect_att->dwCreatingFlag = 0; + connect_att->priority = 0; + return 0; +} + +int pthread_attr_setstacksize(pthread_attr_t *connect_att,DWORD stack) +{ + connect_att->dwStackSize=stack; + return 0; +} + +int pthread_attr_setprio(pthread_attr_t *connect_att,int priority) +{ + connect_att->priority=priority; + return 0; +} + +int pthread_attr_destroy(pthread_attr_t *connect_att) +{ + return 0; +} + +/* from my_pthread.c */ + +#ifndef REMOVE_BUG + +__declspec(thread) int THR_KEY_my_errno; + +int _my_errno(void) +{ + return THR_KEY_my_errno; +} +#endif + +/***************************************************************************** +** The test program +*****************************************************************************/ + +pthread_handler_decl(test_thread,arg) +{ + pthread_mutex_lock(&LOCK_thread_count); + thread_count--; + pthread_cond_signal(&COND_thread_count); /* Tell main we are ready */ + pthread_mutex_unlock(&LOCK_thread_count); + pthread_exit(0); + return 0; +} + +int main(int argc,char **argv) +{ + pthread_t tid; + pthread_attr_t thr_attr; + int i,error; + + if ((error=pthread_cond_init(&COND_thread_count,NULL))) + { + fprintf(stderr,"Got error: %d from pthread_cond_init (errno: %d)", + error,errno); + exit(1); + } + pthread_mutex_init(&LOCK_thread_count,NULL); + if ((error=pthread_attr_init(&thr_attr))) + { + fprintf(stderr,"Got error: %d from pthread_attr_init (errno: %d)", + error,errno); + exit(1); + } + if ((error=pthread_attr_setstacksize(&thr_attr,65536L))) + { + fprintf(stderr,"Got error: %d from pthread_attr_setstacksize (errno: %d)", + error,errno); + exit(1); + } + + printf("Init ok. Creating %d threads\n",TEST_COUNT); + for (i=1 ; i <= TEST_COUNT ; i++) + { + int *param= &i; + if ((i % 100) == 0) + { + printf("%8d",i); + fflush(stdout); + } + if ((error=pthread_mutex_lock(&LOCK_thread_count))) + { + fprintf(stderr,"\nGot error: %d from pthread_mutex_lock (errno: %d)", + error,errno); + exit(1); + } + if ((error=pthread_create(&tid,&thr_attr,test_thread,(void*) param))) + { + fprintf(stderr,"\nGot error: %d from pthread_create (errno: %d)\n", + error,errno); + pthread_mutex_unlock(&LOCK_thread_count); + exit(1); + } + thread_count++; + pthread_mutex_unlock(&LOCK_thread_count); + + if ((error=pthread_mutex_lock(&LOCK_thread_count))) + fprintf(stderr,"\nGot error: %d from pthread_mutex_lock\n",error); + while (thread_count) + { + if ((error=pthread_cond_wait(&COND_thread_count,&LOCK_thread_count))) + fprintf(stderr,"\nGot error: %d from pthread_cond_wait\n",error); + } + pthread_mutex_unlock(&LOCK_thread_count); + } + pthread_attr_destroy(&thr_attr); + printf("\nend\n"); + return 0; +} diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 18957b6422d..0f492e040af 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -28,7 +28,8 @@ bin_SCRIPTS = @server_scripts@ \ mysql_find_rows \ mysqlhotcopy \ mysqldumpslow \ - mysqld_multi + mysqld_multi \ + make_win_src_distribution EXTRA_SCRIPTS = make_binary_distribution.sh \ msql2mysql.sh \ @@ -66,7 +67,8 @@ CLEANFILES = @server_scripts@ \ mysql_find_rows \ mysqlhotcopy \ mysqldumpslow \ - mysqld_multi + mysqld_multi \ + make_win_src_distribution SUPERCLEANFILES = mysqlbug diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh new file mode 100755 index 00000000000..50518f96adf --- /dev/null +++ b/scripts/make_win_src_distribution.sh @@ -0,0 +1,487 @@ +#!/bin/sh + +# +# Script to create a Windows src package +# + +version=@VERSION@ +export version +SOURCE=`pwd` +CP="cp -p" + +DEBUG=0 +SILENT=0 +SUFFIX="" +DIRNAME="" +OUTTAR="0" +OUTZIP="0" + +# +# This script must run from MySQL top directory +# + +if [ ! -f scripts/make_win_src_distribution ]; then + echo "ERROR : You must run this script from the MySQL top-level directory" + exit 1 +fi + +# +# Check for source compilation/configuration +# + +if [ ! -f sql/sql_yacc.cc ]; then + echo "ERROR : Sorry, you must run this script after the complete build," + echo " hope you know what you are trying to do !!" + exit 1 +fi + +# +# Debug print of the status +# + +print_debug() +{ + for statement + do + if [ "$DEBUG" = "1" ] ; then + echo $statement + fi + done +} + +# +# Usage of the script +# + +show_usage() +{ + echo "MySQL utility script to create a Windows src package, and it takes" + echo "the following arguments:" + echo "" + echo " --debug Debug, without creating the package" + echo " --tmp Specify the temporary location" + echo " --suffix Suffix name for the package" + echo " --dirname Directory name to copy files (intermediate)" + echo " --silent Do not list verbosely files processed" + echo " --tar Create tar.gz package" + echo " --zip Create zip package" + echo " --help Show this help message" + + exit 0 +} + +# +# Parse the input arguments +# + +parse_arguments() { + for arg do + case "$arg" in + --add-tar) ADDTAR=1 ;; + --debug) DEBUG=1;; + --tmp=*) TMP=`echo "$arg" | sed -e "s;--tmp=;;"` ;; + --suffix=*) SUFFIX=`echo "$arg" | sed -e "s;--suffix=;;"` ;; + --dirname=*) DIRNAME=`echo "$arg" | sed -e "s;--dirname=;;"` ;; + --silent) SILENT=1 ;; + --tar) OUTTAR=1 ;; + --zip) OUTZIP=1 ;; + --help) show_usage ;; + *) + echo "Unknown argument '$arg'" + exit 1 + ;; + esac + done +} + +parse_arguments "$@" + +# +# Assign the tmp directory if it was set from the environment variables +# + +for i in $TMP $TMPDIR $TEMPDIR $TEMP /tmp +do + if [ "$i" ]; then + print_debug "Setting TMP to '$i'" + TMP=$i + break + fi +done + + +# +# Convert argument file from unix to DOS text +# + +unix_to_dos() +{ + for arg do + print_debug "Replacing LF -> CRLF from '$arg'" + + cat $arg | awk '{sub(/$/,"\r");print}' > $arg.tmp + rm -f $arg + mv $arg.tmp $arg + done +} + + +# +# Create a tmp dest directory to copy files +# + +BASE=$TMP/my_win_dist$SUFFIX + +if [ -d $BASE ] ; then + print_debug "Destination directory '$BASE' already exists, deleting it" + rm -r -f $BASE +fi + +$CP -r $SOURCE/VC++Files $BASE +( +find $BASE \( -name "*.dsp" -o -name "*.dsw" \) -and -not -path \*SCCS\* -print +)|( + while read v + do + unix_to_dos $v + done +) + +# +# Process version tags in InstallShield files +# + +vreplace() +{ + for arg do + unix_to_dos $arg + cat $arg | sed -e 's!@''VERSION''@!3.23.58!' > $arg.tmp + rm -f $arg + mv $arg.tmp $arg + done +} + +for d in 3.23.XX-gpl 3.23.XX-com +do + cd $BASE/InstallShield/$d/String\ Tables/0009-English + vreplace value.shl + cd ../../Setup\ Files/Compressed\ Files/Language\ Independent/OS\ Independent + vreplace infolist.txt +done + + +# +# Move all error message files to root directory +# + +$CP -r $SOURCE/sql/share $BASE/ +rm -r -f "$BASE/share/Makefile" +rm -r -f "$BASE/share/Makefile.in" +rm -r -f "$BASE/share/Makefile.am" + +# +# Clean up if we did this from a bk tree +# + +if [ -d $BASE/SCCS ] +then + find $BASE/ -type d -name SCCS -printf " \"%p\"" | xargs rm -r -f +fi + +mkdir $BASE/Docs $BASE/extra $BASE/include + + +# +# Copy directory files +# + +copy_dir_files() +{ + for arg do + print_debug "Copying files from directory '$arg'" + cd $SOURCE/$arg + if [ ! -d $BASE/$arg ]; then + print_debug "Creating directory '$arg'" + mkdir $BASE/$arg + fi + for i in *.c *.cpp *.h *.ih *.i *.ic *.asm *.def \ + README INSTALL* LICENSE *.yy + do + if [ -f $i ] + then + $CP $SOURCE/$arg/$i $BASE/$arg/$i + fi + done + for i in *.cc + do + if [ -f $i ] + then + i=`echo $i | sed 's/.cc$//g'` + $CP $SOURCE/$arg/$i.cc $BASE/$arg/$i.cpp + fi + done + done +} + +# +# Copy directory contents recursively +# + +copy_dir_dirs() { + + for arg do + + cd $SOURCE + ( + find $arg -type d \ + -and -not -path \*SCCS\* \ + -and -not -path \*.deps\* \ + -and -not -path \*autom4te.cache -print + )|( + while read v + do + copy_dir_files $v + done + ) + + done +} + +# +# Input directories to be copied +# + +for i in client dbug div extra heap include isam \ + libmysql libmysqld merge myisam \ + myisammrg mysys readline regex sql strings \ + tools vio zlib +do + copy_dir_files $i +done + +# +# Input directories to be copied recursively +# + +for i in bdb innobase +do + copy_dir_dirs $i +done + +# +# Directories to be copied complete +# + +for i in mysql-test repl-tests support-files +do + $CP -R $SOURCE/$i $BASE/$i +done + +# +# Create dummy innobase configure header +# + +if [ -f $BASE/innobase/ib_config.h ]; then + rm -f $BASE/innobase/ib_config.h +fi +touch $BASE/innobase/ib_config.h + + +# +# Copy miscellaneous files +# + +cd $SOURCE +for i in COPYING COPYING.LIB ChangeLog README \ + INSTALL-SOURCE INSTALL-WIN \ + INSTALL-WIN-SOURCE \ + Docs/manual_toc.html Docs/manual.html \ + Docs/manual.txt Docs/mysqld_error.txt \ + Docs/INSTALL-BINARY + +do + print_debug "Copying file '$i'" + if [ -f $i ] + then + $CP $i $BASE/$i + fi +done + +# +# Raw dirs from source tree +# + +for i in Docs/Flags scripts sql-bench SSL \ + tests +do + print_debug "Copying directory '$i'" + if [ -d $i ] + then + $CP -R $i $BASE/$i + fi +done + +# +# Fix some windows files +# + +./extra/replace std:: "" -- $BASE/sql/sql_yacc.cpp + +unix_to_dos $BASE/README +mv $BASE/README $BASE/README.txt + +# +# Initialize the initial data directory +# + +if [ -f scripts/mysql_install_db ]; then + print_debug "Initializing the 'data' directory" + mkdir $BASE/data + scripts/mysql_install_db --no-defaults --datadir=$BASE/data +fi + +# +# Specify the distribution package name and copy it +# + +if test -z $DIRNAME +then + NEW_DIR_NAME=mysql@MYSQL_SERVER_SUFFIX@-$version$SUFFIX +else + NEW_DIR_NAME=$DIRNAME +fi +NEW_NAME=$NEW_DIR_NAME-win-src + +BASE2=$TMP/$NEW_DIR_NAME +rm -r -f $BASE2 +mv $BASE $BASE2 +BASE=$BASE2 + +# +# If debugging, don't create a zip/tar/gz +# + +if [ "$DEBUG" = "1" ] ; then + echo "Please check the distribution files from $BASE" + echo "Exiting (without creating the package).." + exit +fi + +# +# This is needed to prefere gnu tar instead of tar because tar can't +# always handle long filenames +# + +PATH_DIRS=`echo $PATH | sed -e 's/^:/. /' -e 's/:$/ ./' -e 's/::/ . /g' -e 's/:/ /g' ` +which_1 () +{ + for cmd + do + for d in $PATH_DIRS + do + for file in $d/$cmd + do + if test -x $file -a ! -d $file + then + echo $file + exit 0 + fi + done + done + done + exit 1 +} + +# +# Create the result zip/tar file +# + +if [ "$OUTTAR" = "0" ]; then + if [ "$OUTZIP" = "0" ]; then + OUTZIP=1 + fi +fi + +set_tarzip_options() +{ + for arg + do + if [ "$arg" = "tar" ]; then + ZIPFILE1=gnutar + ZIPFILE2=gtar + OPT=cvf + EXT=".tar" + NEED_COMPRESS=1 + if [ "$SILENT" = "1" ] ; then + OPT=cf + fi + else + ZIPFILE1=zip + ZIPFILE2="" + OPT="-r" + EXT=".zip" + NEED_COMPRESS=0 + if [ "$SILENT" = "1" ] ; then + OPT="$OPT -q" + fi + fi + done +} + + +# +# Create the archive +# +create_archive() +{ + + print_debug "Using $tar to create archive" + + cd $TMP + + rm -f $SOURCE/$NEW_NAME$EXT + $tar $OPT $SOURCE/$NEW_NAME$EXT $NEW_DIR_NAME + cd $SOURCE + + if [ "$NEED_COMPRESS" = "1" ] + then + print_debug "Compressing archive" + gzip -9 $NEW_NAME$EXT + EXT="$EXT.gz" + fi + + if [ "$SILENT" = "0" ] ; then + echo "$NEW_NAME$EXT created successfully !!" + fi +} + +if [ "$OUTTAR" = "1" ]; then + set_tarzip_options 'tar' + + tar=`which_1 $ZIPFILE1 $ZIPFILE2` + if test "$?" = "1" -o "$tar" = "" + then + print_debug "Search failed for '$ZIPFILE1', '$ZIPFILE2', using default 'tar'" + tar=tar + set_tarzip_options 'tar' + fi + + create_archive +fi + +if [ "$OUTZIP" = "1" ]; then + set_tarzip_options 'zip' + + tar=`which_1 $ZIPFILE1 $ZIPFILE2` + if test "$?" = "1" -o "$tar" = "" + then + echo "Search failed for '$ZIPFILE1', '$ZIPFILE2', cannot create zip!" + fi + + create_archive +fi + +print_debug "Removing temporary directory" +rm -r -f $BASE + +# End of script From 6da669ef95f82d8d50bc527ffac9181699155e94 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Mon, 15 Sep 2003 14:44:53 +0200 Subject: [PATCH 13/81] - Bumped up version number from 3.23.58 to 3.23.59 in configure.in - Tagged ChangeSet 1.1413 as "mysql-3.23.58" --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 471e97ce9cf..8ed84e8058a 100644 --- a/configure.in +++ b/configure.in @@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! -AM_INIT_AUTOMAKE(mysql, 3.23.58) +AM_INIT_AUTOMAKE(mysql, 3.23.59) AM_CONFIG_HEADER(config.h) PROTOCOL_VERSION=10 From ab576328f0cf8d6d38c2cc6d0fee5de50a4c99a3 Mon Sep 17 00:00:00 2001 From: "kostja@oak.local" <> Date: Mon, 15 Sep 2003 22:21:39 +0400 Subject: [PATCH 14/81] Fixed bug in the optimiser for FULL TABLE SCAN case: to estimate correctly cost of full table scan we should take into account rows read and skipped on each iteration. --- mysql-test/r/distinct.result | 6 ++--- mysql-test/r/join_outer.result | 2 +- mysql-test/r/select_safe.result | 2 +- sql/sql_select.cc | 46 ++++++++++++++++----------------- 4 files changed, 27 insertions(+), 29 deletions(-) diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index 1dbccb65748..da0c6a5eb72 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -173,9 +173,9 @@ INSERT INTO t2 values (1),(2),(3); INSERT INTO t3 VALUES (1,'1'),(2,'2'),(1,'1'),(2,'2'); explain SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a; table type possible_keys key key_len ref rows Extra -t3 index a a 5 NULL 6 Using index; Using temporary -t2 index a a 4 NULL 5 Using index; Distinct -t1 eq_ref PRIMARY PRIMARY 4 t2.a 1 Using where; Distinct +t2 index a a 4 NULL 5 Using index; Using temporary +t1 eq_ref PRIMARY PRIMARY 4 t2.a 1 +t3 index a a 5 NULL 5 Using where; Using index SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a; a 1 diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result index 8f3f82201c3..debec01fbdc 100644 --- a/mysql-test/r/join_outer.result +++ b/mysql-test/r/join_outer.result @@ -615,7 +615,7 @@ INSERT INTO t2 VALUES (1,1); explain SELECT * from t1 left join t2 on t1.id=t2.id where t2.id IS NULL; table type possible_keys key key_len ref rows Extra t1 ALL NULL NULL NULL NULL 2 -t2 index id id 8 NULL 1 Using where; Using index; Not exists +t2 ref id id 4 t1.id 1 Using where; Using index; Not exists SELECT * from t1 left join t2 on t1.id=t2.id where t2.id IS NULL; id name id idx 2 no NULL NULL diff --git a/mysql-test/r/select_safe.result b/mysql-test/r/select_safe.result index c4e5984d360..1ee1368d029 100644 --- a/mysql-test/r/select_safe.result +++ b/mysql-test/r/select_safe.result @@ -70,7 +70,7 @@ insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(nu explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; table type possible_keys key key_len ref rows Extra t1 ALL b NULL NULL NULL 21 -t2 ALL b NULL NULL NULL 16 Using where +t2 ref b b 21 t1.b 6 Using where set MAX_SEEKS_FOR_KEY=1; explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; table type possible_keys key key_len ref rows Extra diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 6f6d21f1f8b..3738382928f 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2133,33 +2133,31 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, s->table->used_keys && best_key) && !(s->table->force_index && best_key)) { // Check full join - ha_rows rnd_records= s->found_records; - if (s->on_expr) - { - tmp=rows2double(rnd_records); // Can't use read cache - } - else - { - tmp=(double) s->read_time; - /* Calculate time to read previous rows through cache */ - tmp*=(1.0+floor((double) cache_record_length(join,idx)* - record_count / - (double) thd->variables.join_buff_size)); - } - - /* - If there is a restriction on the table, assume that 25% of the - rows can be skipped on next part. - This is to force tables that this table depends on before this - table - */ - if (found_constrain) - rnd_records-= rnd_records/4; - + /* + Estimate cost of reading table. Note, that we don't read a table + on each iteration as in most cases join buffer is in use. + */ + tmp= (double) s->read_time; + /* + In case of full scan we check every row in the table: + here we take into account rows read and skipped, as well as rows + passed to next select + */ + if (best == DBL_MAX || - (tmp + record_count/(double) TIME_FOR_COMPARE*rnd_records < + (tmp + record_count/(double) TIME_FOR_COMPARE*s->records < best + record_count/(double) TIME_FOR_COMPARE*records)) { + /* + If there is a restriction on the table, assume that 25% of the + rows can be skipped on next part. + This is to force tables that this table depends on before this + table + */ + ha_rows rnd_records= s->found_records; + if (found_constrain) + rnd_records-= rnd_records/4; + /* If the table has a range (s->quick is set) make_join_select() will ensure that this will be used From 564dad6c53a01ce28413cd7c2a997713bcf6ff46 Mon Sep 17 00:00:00 2001 From: "greg@mysql.com" <> Date: Mon, 15 Sep 2003 17:39:50 -0400 Subject: [PATCH 15/81] Remove 3.23 InstallShield files, improve make_win_src_distribution, add extra myTest.dsp to be copied into distributions as a fix for BUG#999 --- .bzrignore | 1 + .../3.23.XX-gpl/Component Definitions/.fgl | 37 - .../Component Definitions/Default.cdf | 192 ------ .../Component Definitions/Default.fgl | 42 -- .../File Groups/Clients and Tools.fgl | 35 - .../3.23.XX-gpl/File Groups/Default.fdf | 82 --- .../3.23.XX-gpl/File Groups/Default.fgl | 4 - .../3.23.XX-gpl/File Groups/Development.fgl | 191 ------ .../3.23.XX-gpl/File Groups/Documentation.fgl | 99 --- .../3.23.XX-gpl/File Groups/Grant Tables.fgl | 36 - .../3.23.XX-gpl/File Groups/Servers.fgl | 184 ----- .../3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr | 51 -- .../3.23.XX-gpl/Registry Entries/Default.rge | 4 - .../3.23.XX-gpl/Script Files/Setup.dbg | Bin 28458 -> 0 bytes .../3.23.XX-gpl/Script Files/Setup.ino | Bin 58611 -> 0 bytes .../3.23.XX-gpl/Script Files/Setup.ins | Bin 57122 -> 0 bytes .../3.23.XX-gpl/Script Files/Setup.obs | Bin 65611 -> 0 bytes .../3.23.XX-gpl/Script Files/Setup.rul | 641 ------------------ .../OS Independent/infolist.txt | 24 - .../OS Independent/SETUP.BMP | Bin 15694 -> 0 bytes .../3.23.XX-gpl/Shell Objects/Default.shl | 12 - .../String Tables/0009-English/value.shl | 23 - .../3.23.XX-gpl/String Tables/Default.shl | 74 -- .../3.23.XX-gpl/Text Substitutions/Build.tsb | 56 -- .../3.23.XX-gpl/Text Substitutions/Setup.tsb | 76 --- .../3.23.XXcom/Component Definitions/.fgl | 37 - .../Component Definitions/Default.cdf | 192 ------ .../Component Definitions/Default.fgl | 42 -- .../File Groups/Clients and Tools.fgl | 35 - .../3.23.XXcom/File Groups/Default.fdf | 82 --- .../3.23.XXcom/File Groups/Default.fgl | 4 - .../3.23.XXcom/File Groups/Development.fgl | 190 ------ .../3.23.XXcom/File Groups/Documentation.fgl | 98 --- .../3.23.XXcom/File Groups/Grant Tables.fgl | 36 - .../3.23.XXcom/File Groups/Servers.fgl | 183 ----- .../3.23.XXcom/MySQL 3.23.com.ipr | 51 -- .../3.23.XXcom/Registry Entries/Default.rge | 4 - .../3.23.XXcom/Script Files/Setup.dbg | Bin 28458 -> 0 bytes .../3.23.XXcom/Script Files/Setup.ino | Bin 58611 -> 0 bytes .../3.23.XXcom/Script Files/Setup.ins | Bin 57122 -> 0 bytes .../3.23.XXcom/Script Files/Setup.obs | Bin 65611 -> 0 bytes .../3.23.XXcom/Script Files/Setup.rul | 641 ------------------ .../OS Independent/infolist.txt | 24 - .../OS Independent/SETUP.BMP | Bin 15694 -> 0 bytes .../3.23.XXcom/Shell Objects/Default.shl | 12 - .../String Tables/0009-English/value.shl | 23 - .../3.23.XXcom/String Tables/Default.shl | 74 -- .../3.23.XXcom/Text Substitutions/Build.tsb | 56 -- .../3.23.XXcom/Text Substitutions/Setup.tsb | 76 --- .../OS Independent/infolist.txt | 4 +- .../String Tables/0009-English/value.shl | 14 +- .../OS Independent/infolist.txt | 4 +- .../String Tables/0009-English/value.shl | 14 +- .../OS Independent/infolist.txt | 4 +- .../String Tables/0009-English/value.shl | 14 +- VC++Files/libmysqltest/myTest-package.dsp | 92 +++ scripts/make_win_src_distribution.sh | 61 +- 57 files changed, 151 insertions(+), 3780 deletions(-) delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.cdf delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/File Groups/Clients and Tools.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fdf delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/File Groups/Development.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/File Groups/Documentation.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/File Groups/Grant Tables.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/File Groups/Servers.fgl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Registry Entries/Default.rge delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.dbg delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ino delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ins delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.obs delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.rul delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Shell Objects/Default.shl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/String Tables/Default.shl delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Build.tsb delete mode 100644 VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Setup.tsb delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Component Definitions/.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.cdf delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/File Groups/Clients and Tools.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf delete mode 100644 VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/File Groups/Documentation.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/File Groups/Grant Tables.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Registry Entries/Default.rge delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Build.tsb delete mode 100644 VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Setup.tsb create mode 100644 VC++Files/libmysqltest/myTest-package.dsp diff --git a/.bzrignore b/.bzrignore index 1e4c8ae88af..7bdc90fd76a 100644 --- a/.bzrignore +++ b/.bzrignore @@ -538,3 +538,4 @@ Docs/internals_toc.html scripts/make_win_src_distribution libmysql/vio_priv.h libmysql_r/vio_priv.h +hardcopy.0 diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/.fgl b/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/.fgl deleted file mode 100644 index 81e474f9be8..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/.fgl +++ /dev/null @@ -1,37 +0,0 @@ -[General] -Type=FILELIST -Version=1.00.000 - -[topdir] -subdir0= -subdir1= -subdir2= -subdir3=USERDEFINED - -[] -DISPLAYTEXT=Windows Operating System -TYPE=TEXTSUBFIXED -subdir0=\ - -[\] -DISPLAYTEXT=Windows System Folder -TYPE=TEXTSUBFIXED - -[] -DISPLAYTEXT=Program Files Folder -TYPE=TEXTSUBFIXED -subdir0=\ - -[\] -DISPLAYTEXT=Common Files Folder -TYPE=TEXTSUBFIXED - -[] -DISPLAYTEXT=General Application Destination -TYPE=TEXTSUBFIXED - -[USERDEFINED] -DISPLAYTEXT=Script-defined Folders -TYPE=USERSTART - - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.cdf b/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.cdf deleted file mode 100644 index 48d37800cd1..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.cdf +++ /dev/null @@ -1,192 +0,0 @@ -[Development] -required0=Servers -SELECTED=Yes -FILENEED=STANDARD -required1=Grant Tables -HTTPLOCATION= -STATUS=Examples, Libraries, Includes and Script files -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=Examples, Libraries, Includes and Script files -DISPLAYTEXT=Examples, Libraries, Includes and Script files -IMAGE= -DEFSELECTION=Yes -filegroup0=Development -COMMENT= -INCLUDEINBUILD=Yes -INSTALLATION=ALWAYSOVERWRITE -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[Grant Tables] -required0=Servers -SELECTED=Yes -FILENEED=CRITICAL -HTTPLOCATION= -STATUS=The Grant Tables and Core Files -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The Grant Tables and Core Files -DISPLAYTEXT=The Grant Tables and Core Files -IMAGE= -DEFSELECTION=Yes -filegroup0=Grant Tables -requiredby0=Development -COMMENT= -INCLUDEINBUILD=Yes -requiredby1=Clients and Tools -INSTALLATION=NEVEROVERWRITE -requiredby2=Documentation -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[Components] -component0=Development -component1=Grant Tables -component2=Servers -component3=Clients and Tools -component4=Documentation - -[TopComponents] -component0=Servers -component1=Clients and Tools -component2=Documentation -component3=Development -component4=Grant Tables - -[SetupType] -setuptype0=Compact -setuptype1=Typical -setuptype2=Custom - -[Clients and Tools] -required0=Servers -SELECTED=Yes -FILENEED=HIGHLYRECOMMENDED -required1=Grant Tables -HTTPLOCATION= -STATUS=The MySQL clients and Maintenance Tools -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The MySQL clients and Maintenance Tools -DISPLAYTEXT=The MySQL clients and Maintenance Tools -IMAGE= -DEFSELECTION=Yes -filegroup0=Clients and Tools -COMMENT= -INCLUDEINBUILD=Yes -INSTALLATION=NEWERDATE -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[Servers] -SELECTED=Yes -FILENEED=CRITICAL -HTTPLOCATION= -STATUS=The MySQL Servers -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The MySQL Servers -DISPLAYTEXT=The MySQL Servers -IMAGE= -DEFSELECTION=Yes -filegroup0=Servers -requiredby0=Development -COMMENT= -INCLUDEINBUILD=Yes -requiredby1=Grant Tables -INSTALLATION=ALWAYSOVERWRITE -requiredby2=Clients and Tools -requiredby3=Documentation -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[SetupTypeItem-Compact] -Comment= -item0=Grant Tables -item1=Servers -item2=Clients and Tools -item3=Documentation -Descrip= -DisplayText= - -[SetupTypeItem-Custom] -Comment= -item0=Development -item1=Grant Tables -item2=Servers -item3=Clients and Tools -Descrip= -item4=Documentation -DisplayText= - -[Info] -Type=CompDef -Version=1.00.000 -Name= - -[SetupTypeItem-Typical] -Comment= -item0=Development -item1=Grant Tables -item2=Servers -item3=Clients and Tools -Descrip= -item4=Documentation -DisplayText= - -[Documentation] -required0=Servers -SELECTED=Yes -FILENEED=HIGHLYRECOMMENDED -required1=Grant Tables -HTTPLOCATION= -STATUS=The MySQL Documentation with different formats -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The MySQL Documentation with different formats -DISPLAYTEXT=The MySQL Documentation with different formats -IMAGE= -DEFSELECTION=Yes -filegroup0=Documentation -COMMENT= -INCLUDEINBUILD=Yes -INSTALLATION=ALWAYSOVERWRITE -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.fgl b/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.fgl deleted file mode 100644 index 4e20dcea4ab..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.fgl +++ /dev/null @@ -1,42 +0,0 @@ -[\] -DISPLAYTEXT=Common Files Folder -TYPE=TEXTSUBFIXED -fulldirectory= - -[\] -DISPLAYTEXT=Windows System Folder -TYPE=TEXTSUBFIXED -fulldirectory= - -[USERDEFINED] -DISPLAYTEXT=Script-defined Folders -TYPE=USERSTART -fulldirectory= - -[] -DISPLAYTEXT=Program Files Folder -SubDir0=\ -TYPE=TEXTSUBFIXED -fulldirectory= - -[] -DISPLAYTEXT=General Application Destination -TYPE=TEXTSUBFIXED -fulldirectory= - -[] -DISPLAYTEXT=Windows Operating System -SubDir0=\ -TYPE=TEXTSUBFIXED -fulldirectory= - -[TopDir] -SubDir0= -SubDir1= -SubDir2= -SubDir3=USERDEFINED - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Clients and Tools.fgl b/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Clients and Tools.fgl deleted file mode 100644 index 7f30ff9f64b..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Clients and Tools.fgl +++ /dev/null @@ -1,35 +0,0 @@ -[bin] -file15=C:\mysql\bin\pack_isam.exe -file16=C:\mysql\bin\perror.exe -file0=C:\mysql\bin\isamchk.exe -file17=C:\mysql\bin\replace.exe -file1=C:\mysql\bin\myisamchk.exe -file18=C:\mysql\bin\winmysqladmin.cnt -file2=C:\mysql\bin\myisamlog.exe -file19=C:\mysql\bin\winmysqladmin.exe -file3=C:\mysql\bin\myisampack.exe -file4=C:\mysql\bin\mysql.exe -file5=C:\mysql\bin\mysqladmin.exe -file6=C:\mysql\bin\mysqlbinlog.exe -file7=C:\mysql\bin\mysqlc.exe -file8=C:\mysql\bin\mysqlcheck.exe -file9=C:\mysql\bin\mysqldump.exe -file20=C:\mysql\bin\WINMYSQLADMIN.HLP -file21=C:\mysql\bin\cygwinb19.dll -file10=C:\mysql\bin\mysqlimport.exe -fulldirectory= -file22=C:\mysql\bin\libmySQL.dll -file11=C:\mysql\bin\MySqlManager.exe -file23=C:\mysql\bin\my_print_defaults.exe -file12=C:\mysql\bin\mysqlshow.exe -file24=C:\mysql\bin\comp-err.exe -file13=C:\mysql\bin\mysqlshutdown.exe -file14=C:\mysql\bin\mysqlwatch.exe - -[TopDir] -SubDir0=bin - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fdf b/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fdf deleted file mode 100644 index 8096a4b74bf..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fdf +++ /dev/null @@ -1,82 +0,0 @@ -[FileGroups] -group0=Development -group1=Grant Tables -group2=Servers -group3=Clients and Tools -group4=Documentation - -[Development] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Grant Tables] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Clients and Tools] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM=0000000000000000 -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Servers] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Info] -Type=FileGrp -Version=1.00.000 -Name= - -[Documentation] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fgl b/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fgl deleted file mode 100644 index 94344a6ff69..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fgl +++ /dev/null @@ -1,4 +0,0 @@ -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Development.fgl b/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Development.fgl deleted file mode 100644 index e7b8cc7cd0f..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Development.fgl +++ /dev/null @@ -1,191 +0,0 @@ -[bench\Data\Wisconsin] -file0=C:\mysql\bench\Data\Wisconsin\onek.data -file1=C:\mysql\bench\Data\Wisconsin\tenk.data -fulldirectory= - -[lib\debug] -file0=C:\mysql\lib\debug\libmySQL.dll -file1=C:\mysql\lib\debug\libmySQL.lib -file2=C:\mysql\lib\debug\mysqlclient.lib -file3=C:\mysql\lib\debug\zlib.lib -fulldirectory= - -[bench\output] -fulldirectory= - -[examples\libmysqltest] -file0=C:\mysql\examples\libmysqltest\myTest.c -file1=C:\mysql\examples\libmysqltest\myTest.dsp -file2=C:\mysql\examples\libmysqltest\myTest.dsw -file3=C:\mysql\examples\libmysqltest\myTest.exe -file4=C:\mysql\examples\libmysqltest\myTest.mak -file5=C:\mysql\examples\libmysqltest\myTest.ncb -file6=C:\mysql\examples\libmysqltest\myTest.opt -file7=C:\mysql\examples\libmysqltest\readme -fulldirectory= - -[include] -file0=C:\mysql\include\raid.h -file1=C:\mysql\include\errmsg.h -file2=C:\mysql\include\Libmysql.def -file3=C:\mysql\include\m_ctype.h -file4=C:\mysql\include\m_string.h -file5=C:\mysql\include\my_list.h -file6=C:\mysql\include\my_pthread.h -file7=C:\mysql\include\my_sys.h -file8=C:\mysql\include\mysql.h -file9=C:\mysql\include\mysql_com.h -file10=C:\mysql\include\mysql_version.h -fulldirectory= -file11=C:\mysql\include\mysqld_error.h -file12=C:\mysql\include\dbug.h -file13=C:\mysql\include\my_global.h -file14=C:\mysql\include\config-win.h - -[examples] -SubDir0=examples\libmysqltest -SubDir1=examples\tests -fulldirectory= - -[lib\opt] -file0=C:\mysql\lib\opt\libmySQL.dll -file1=C:\mysql\lib\opt\libmySQL.lib -file2=C:\mysql\lib\opt\mysqlclient.lib -file3=C:\mysql\lib\opt\zlib.lib -fulldirectory= - -[bench\Data] -SubDir0=bench\Data\ATIS -SubDir1=bench\Data\Wisconsin -fulldirectory= - -[bench\limits] -file15=C:\mysql\bench\limits\pg.comment -file16=C:\mysql\bench\limits\solid.cfg -file0=C:\mysql\bench\limits\access.cfg -file17=C:\mysql\bench\limits\solid-nt4.cfg -file1=C:\mysql\bench\limits\access.comment -file18=C:\mysql\bench\limits\sybase.cfg -file2=C:\mysql\bench\limits\Adabas.cfg -file3=C:\mysql\bench\limits\Adabas.comment -file4=C:\mysql\bench\limits\Db2.cfg -file5=C:\mysql\bench\limits\empress.cfg -file6=C:\mysql\bench\limits\empress.comment -file7=C:\mysql\bench\limits\Informix.cfg -file8=C:\mysql\bench\limits\Informix.comment -file9=C:\mysql\bench\limits\msql.cfg -file10=C:\mysql\bench\limits\ms-sql.cfg -fulldirectory= -file11=C:\mysql\bench\limits\Ms-sql65.cfg -file12=C:\mysql\bench\limits\mysql.cfg -file13=C:\mysql\bench\limits\oracle.cfg -file14=C:\mysql\bench\limits\pg.cfg - -[TopDir] -SubDir0=bench -SubDir1=examples -SubDir2=include -SubDir3=lib -SubDir4=scripts - -[bench] -file15=C:\mysql\bench\test-create -file16=C:\mysql\bench\test-insert -file0=C:\mysql\bench\uname.bat -file17=C:\mysql\bench\test-select -file1=C:\mysql\bench\compare-results -file18=C:\mysql\bench\test-wisconsin -file2=C:\mysql\bench\copy-db -file19=C:\mysql\bench\bench-init.pl -file3=C:\mysql\bench\crash-me -file4=C:\mysql\bench\example.bat -file5=C:\mysql\bench\print-limit-table -file6=C:\mysql\bench\pwd.bat -file7=C:\mysql\bench\Readme -SubDir0=bench\Data -file8=C:\mysql\bench\run.bat -SubDir1=bench\limits -file9=C:\mysql\bench\run-all-tests -SubDir2=bench\output -file10=C:\mysql\bench\server-cfg -fulldirectory= -file11=C:\mysql\bench\test-alter-table -file12=C:\mysql\bench\test-ATIS -file13=C:\mysql\bench\test-big-tables -file14=C:\mysql\bench\test-connect - -[examples\tests] -file15=C:\mysql\examples\tests\lock_test.res -file16=C:\mysql\examples\tests\mail_to_db.pl -file0=C:\mysql\examples\tests\unique_users.tst -file17=C:\mysql\examples\tests\table_types.pl -file1=C:\mysql\examples\tests\auto_increment.tst -file18=C:\mysql\examples\tests\test_delayed_insert.pl -file2=C:\mysql\examples\tests\big_record.pl -file19=C:\mysql\examples\tests\udf_test -file3=C:\mysql\examples\tests\big_record.res -file4=C:\mysql\examples\tests\czech-sorting -file5=C:\mysql\examples\tests\deadlock-script.pl -file6=C:\mysql\examples\tests\export.pl -file7=C:\mysql\examples\tests\fork_test.pl -file8=C:\mysql\examples\tests\fork2_test.pl -file9=C:\mysql\examples\tests\fork3_test.pl -file20=C:\mysql\examples\tests\udf_test.res -file21=C:\mysql\examples\tests\auto_increment.res -file10=C:\mysql\examples\tests\function.res -fulldirectory= -file11=C:\mysql\examples\tests\function.tst -file12=C:\mysql\examples\tests\grant.pl -file13=C:\mysql\examples\tests\grant.res -file14=C:\mysql\examples\tests\lock_test.pl - -[bench\Data\ATIS] -file26=C:\mysql\bench\Data\ATIS\stop1.txt -file15=C:\mysql\bench\Data\ATIS\flight_class.txt -file27=C:\mysql\bench\Data\ATIS\time_interval.txt -file16=C:\mysql\bench\Data\ATIS\flight_day.txt -file0=C:\mysql\bench\Data\ATIS\transport.txt -file28=C:\mysql\bench\Data\ATIS\time_zone.txt -file17=C:\mysql\bench\Data\ATIS\flight_fare.txt -file1=C:\mysql\bench\Data\ATIS\airline.txt -file29=C:\mysql\bench\Data\ATIS\aircraft.txt -file18=C:\mysql\bench\Data\ATIS\food_service.txt -file2=C:\mysql\bench\Data\ATIS\airport.txt -file19=C:\mysql\bench\Data\ATIS\ground_service.txt -file3=C:\mysql\bench\Data\ATIS\airport_service.txt -file4=C:\mysql\bench\Data\ATIS\city.txt -file5=C:\mysql\bench\Data\ATIS\class_of_service.txt -file6=C:\mysql\bench\Data\ATIS\code_description.txt -file7=C:\mysql\bench\Data\ATIS\compound_class.txt -file8=C:\mysql\bench\Data\ATIS\connect_leg.txt -file9=C:\mysql\bench\Data\ATIS\date_day.txt -file20=C:\mysql\bench\Data\ATIS\month_name.txt -file21=C:\mysql\bench\Data\ATIS\restrict_carrier.txt -file10=C:\mysql\bench\Data\ATIS\day_name.txt -fulldirectory= -file22=C:\mysql\bench\Data\ATIS\restrict_class.txt -file11=C:\mysql\bench\Data\ATIS\dual_carrier.txt -file23=C:\mysql\bench\Data\ATIS\restriction.txt -file12=C:\mysql\bench\Data\ATIS\fare.txt -file24=C:\mysql\bench\Data\ATIS\state.txt -file13=C:\mysql\bench\Data\ATIS\fconnection.txt -file25=C:\mysql\bench\Data\ATIS\stop.txt -file14=C:\mysql\bench\Data\ATIS\flight.txt - -[General] -Type=FILELIST -Version=1.00.000 - -[scripts] -file0=C:\mysql\scripts\mysql_find_rows.pl -file1=C:\mysql\scripts\mysql_setpermission.pl -file2=C:\mysql\scripts\mysqlhotcopy.pl -file3=C:\mysql\scripts\Readme -fulldirectory= - -[lib] -file0=C:\mysql\lib\Readme -SubDir0=lib\debug -SubDir1=lib\opt -fulldirectory= - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Documentation.fgl b/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Documentation.fgl deleted file mode 100644 index 80fe777cf0f..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Documentation.fgl +++ /dev/null @@ -1,99 +0,0 @@ -[Docs\Flags] -file59=C:\mysql\Docs\Flags\romania.gif -file48=C:\mysql\Docs\Flags\kroatia.eps -file37=C:\mysql\Docs\Flags\iceland.gif -file26=C:\mysql\Docs\Flags\france.eps -file15=C:\mysql\Docs\Flags\china.gif -file49=C:\mysql\Docs\Flags\kroatia.gif -file38=C:\mysql\Docs\Flags\ireland.eps -file27=C:\mysql\Docs\Flags\france.gif -file16=C:\mysql\Docs\Flags\croatia.eps -file0=C:\mysql\Docs\Flags\usa.gif -file39=C:\mysql\Docs\Flags\ireland.gif -file28=C:\mysql\Docs\Flags\germany.eps -file17=C:\mysql\Docs\Flags\croatia.gif -file1=C:\mysql\Docs\Flags\argentina.gif -file29=C:\mysql\Docs\Flags\germany.gif -file18=C:\mysql\Docs\Flags\czech-republic.eps -file2=C:\mysql\Docs\Flags\australia.eps -file19=C:\mysql\Docs\Flags\czech-republic.gif -file3=C:\mysql\Docs\Flags\australia.gif -file80=C:\mysql\Docs\Flags\usa.eps -file4=C:\mysql\Docs\Flags\austria.eps -file81=C:\mysql\Docs\Flags\argentina.eps -file70=C:\mysql\Docs\Flags\spain.eps -file5=C:\mysql\Docs\Flags\austria.gif -file71=C:\mysql\Docs\Flags\spain.gif -file60=C:\mysql\Docs\Flags\russia.eps -file6=C:\mysql\Docs\Flags\brazil.eps -file72=C:\mysql\Docs\Flags\sweden.eps -file61=C:\mysql\Docs\Flags\russia.gif -file50=C:\mysql\Docs\Flags\latvia.eps -file7=C:\mysql\Docs\Flags\brazil.gif -file73=C:\mysql\Docs\Flags\sweden.gif -file62=C:\mysql\Docs\Flags\singapore.eps -file51=C:\mysql\Docs\Flags\latvia.gif -file40=C:\mysql\Docs\Flags\island.eps -file8=C:\mysql\Docs\Flags\bulgaria.eps -file74=C:\mysql\Docs\Flags\switzerland.eps -file63=C:\mysql\Docs\Flags\singapore.gif -file52=C:\mysql\Docs\Flags\netherlands.eps -file41=C:\mysql\Docs\Flags\island.gif -file30=C:\mysql\Docs\Flags\great-britain.eps -file9=C:\mysql\Docs\Flags\bulgaria.gif -file75=C:\mysql\Docs\Flags\switzerland.gif -file64=C:\mysql\Docs\Flags\south-africa.eps -file53=C:\mysql\Docs\Flags\netherlands.gif -file42=C:\mysql\Docs\Flags\israel.eps -file31=C:\mysql\Docs\Flags\great-britain.gif -file20=C:\mysql\Docs\Flags\denmark.eps -file76=C:\mysql\Docs\Flags\taiwan.eps -file65=C:\mysql\Docs\Flags\south-africa.gif -file54=C:\mysql\Docs\Flags\poland.eps -file43=C:\mysql\Docs\Flags\israel.gif -file32=C:\mysql\Docs\Flags\greece.eps -file21=C:\mysql\Docs\Flags\denmark.gif -file10=C:\mysql\Docs\Flags\canada.eps -fulldirectory= -file77=C:\mysql\Docs\Flags\taiwan.gif -file66=C:\mysql\Docs\Flags\south-africa1.eps -file55=C:\mysql\Docs\Flags\poland.gif -file44=C:\mysql\Docs\Flags\italy.eps -file33=C:\mysql\Docs\Flags\greece.gif -file22=C:\mysql\Docs\Flags\estonia.eps -file11=C:\mysql\Docs\Flags\canada.gif -file78=C:\mysql\Docs\Flags\ukraine.eps -file67=C:\mysql\Docs\Flags\south-africa1.gif -file56=C:\mysql\Docs\Flags\portugal.eps -file45=C:\mysql\Docs\Flags\italy.gif -file34=C:\mysql\Docs\Flags\hungary.eps -file23=C:\mysql\Docs\Flags\estonia.gif -file12=C:\mysql\Docs\Flags\chile.eps -file79=C:\mysql\Docs\Flags\ukraine.gif -file68=C:\mysql\Docs\Flags\south-korea.eps -file57=C:\mysql\Docs\Flags\portugal.gif -file46=C:\mysql\Docs\Flags\japan.eps -file35=C:\mysql\Docs\Flags\hungary.gif -file24=C:\mysql\Docs\Flags\finland.eps -file13=C:\mysql\Docs\Flags\chile.gif -file69=C:\mysql\Docs\Flags\south-korea.gif -file58=C:\mysql\Docs\Flags\romania.eps -file47=C:\mysql\Docs\Flags\japan.gif -file36=C:\mysql\Docs\Flags\iceland.eps -file25=C:\mysql\Docs\Flags\finland.gif -file14=C:\mysql\Docs\Flags\china.eps - -[Docs] -file0=C:\mysql\Docs\manual_toc.html -file1=C:\mysql\Docs\manual.html -file2=C:\mysql\Docs\manual.txt -SubDir0=Docs\Flags -fulldirectory= - -[TopDir] -SubDir0=Docs - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Grant Tables.fgl b/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Grant Tables.fgl deleted file mode 100644 index 178065a7003..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Grant Tables.fgl +++ /dev/null @@ -1,36 +0,0 @@ -[data\test] -fulldirectory= - -[data\mysql] -file15=C:\mysql\data\mysql\func.frm -file16=C:\mysql\data\mysql\func.MYD -file0=C:\mysql\data\mysql\columns_priv.frm -file17=C:\mysql\data\mysql\func.MYI -file1=C:\mysql\data\mysql\columns_priv.MYD -file2=C:\mysql\data\mysql\columns_priv.MYI -file3=C:\mysql\data\mysql\db.frm -file4=C:\mysql\data\mysql\db.MYD -file5=C:\mysql\data\mysql\db.MYI -file6=C:\mysql\data\mysql\host.frm -file7=C:\mysql\data\mysql\host.MYD -file8=C:\mysql\data\mysql\host.MYI -file9=C:\mysql\data\mysql\tables_priv.frm -file10=C:\mysql\data\mysql\tables_priv.MYD -fulldirectory= -file11=C:\mysql\data\mysql\tables_priv.MYI -file12=C:\mysql\data\mysql\user.frm -file13=C:\mysql\data\mysql\user.MYD -file14=C:\mysql\data\mysql\user.MYI - -[TopDir] -SubDir0=data - -[data] -SubDir0=data\mysql -SubDir1=data\test -fulldirectory= - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Servers.fgl b/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Servers.fgl deleted file mode 100644 index b23e2f90595..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/File Groups/Servers.fgl +++ /dev/null @@ -1,184 +0,0 @@ -[share\polish] -file0=C:\mysql\share\polish\errmsg.sys -file1=C:\mysql\share\polish\errmsg.txt -fulldirectory= - -[share\dutch] -file0=C:\mysql\share\dutch\errmsg.sys -file1=C:\mysql\share\dutch\errmsg.txt -fulldirectory= - -[share\spanish] -file0=C:\mysql\share\spanish\errmsg.sys -file1=C:\mysql\share\spanish\errmsg.txt -fulldirectory= - -[share\english] -file0=C:\mysql\share\english\errmsg.sys -file1=C:\mysql\share\english\errmsg.txt -fulldirectory= - -[bin] -file0=C:\mysql\bin\mysqld-opt.exe -file1=C:\mysql\bin\mysqld-max.exe -file2=C:\mysql\bin\mysqld-max-nt.exe -file3=C:\mysql\bin\mysqld-nt.exe -file4=C:\mysql\bin\mysqld.exe -fulldirectory= - -[share\korean] -file0=C:\mysql\share\korean\errmsg.sys -file1=C:\mysql\share\korean\errmsg.txt -fulldirectory= - -[share\charsets] -file15=C:\mysql\share\charsets\latin1.conf -file16=C:\mysql\share\charsets\latin2.conf -file0=C:\mysql\share\charsets\win1251ukr.conf -file17=C:\mysql\share\charsets\latin5.conf -file1=C:\mysql\share\charsets\cp1257.conf -file18=C:\mysql\share\charsets\Readme -file2=C:\mysql\share\charsets\croat.conf -file19=C:\mysql\share\charsets\swe7.conf -file3=C:\mysql\share\charsets\danish.conf -file4=C:\mysql\share\charsets\dec8.conf -file5=C:\mysql\share\charsets\dos.conf -file6=C:\mysql\share\charsets\estonia.conf -file7=C:\mysql\share\charsets\german1.conf -file8=C:\mysql\share\charsets\greek.conf -file9=C:\mysql\share\charsets\hebrew.conf -file20=C:\mysql\share\charsets\usa7.conf -file21=C:\mysql\share\charsets\win1250.conf -file10=C:\mysql\share\charsets\hp8.conf -fulldirectory= -file22=C:\mysql\share\charsets\win1251.conf -file11=C:\mysql\share\charsets\hungarian.conf -file23=C:\mysql\share\charsets\cp1251.conf -file12=C:\mysql\share\charsets\Index -file13=C:\mysql\share\charsets\koi8_ru.conf -file14=C:\mysql\share\charsets\koi8_ukr.conf - -[share\ukrainian] -file0=C:\mysql\share\ukrainian\errmsg.sys -file1=C:\mysql\share\ukrainian\errmsg.txt -fulldirectory= - -[share\hungarian] -file0=C:\mysql\share\hungarian\errmsg.sys -file1=C:\mysql\share\hungarian\errmsg.txt -fulldirectory= - -[share\german] -file0=C:\mysql\share\german\errmsg.sys -file1=C:\mysql\share\german\errmsg.txt -fulldirectory= - -[share\portuguese] -file0=C:\mysql\share\portuguese\errmsg.sys -file1=C:\mysql\share\portuguese\errmsg.txt -fulldirectory= - -[share\estonian] -file0=C:\mysql\share\estonian\errmsg.sys -file1=C:\mysql\share\estonian\errmsg.txt -fulldirectory= - -[share\romanian] -file0=C:\mysql\share\romanian\errmsg.sys -file1=C:\mysql\share\romanian\errmsg.txt -fulldirectory= - -[share\french] -file0=C:\mysql\share\french\errmsg.sys -file1=C:\mysql\share\french\errmsg.txt -fulldirectory= - -[share\swedish] -file0=C:\mysql\share\swedish\errmsg.sys -file1=C:\mysql\share\swedish\errmsg.txt -fulldirectory= - -[share\slovak] -file0=C:\mysql\share\slovak\errmsg.sys -file1=C:\mysql\share\slovak\errmsg.txt -fulldirectory= - -[share\greek] -file0=C:\mysql\share\greek\errmsg.sys -file1=C:\mysql\share\greek\errmsg.txt -fulldirectory= - -[TopDir] -file0=C:\mysql\mysqlbug.txt -file1=C:\mysql\my-small.cnf -file2=C:\mysql\my-large.cnf -file3=C:\mysql\my-medium.cnf -file4=C:\mysql\my-huge.cnf -SubDir0=bin -SubDir1=share - -[share] -SubDir8=share\hungarian -SubDir9=share\charsets -SubDir20=share\spanish -SubDir21=share\swedish -SubDir10=share\italian -SubDir22=share\ukrainian -SubDir11=share\japanese -SubDir12=share\korean -SubDir13=share\norwegian -SubDir14=share\norwegian-ny -SubDir15=share\polish -SubDir16=share\portuguese -SubDir0=share\czech -SubDir17=share\romanian -SubDir1=share\danish -SubDir18=share\russian -SubDir2=share\dutch -SubDir19=share\slovak -SubDir3=share\english -fulldirectory= -SubDir4=share\estonian -SubDir5=share\french -SubDir6=share\german -SubDir7=share\greek - -[share\norwegian-ny] -file0=C:\mysql\share\norwegian-ny\errmsg.sys -file1=C:\mysql\share\norwegian-ny\errmsg.txt -fulldirectory= - -[share\danish] -file0=C:\mysql\share\danish\errmsg.sys -file1=C:\mysql\share\danish\errmsg.txt -fulldirectory= - -[share\czech] -file0=C:\mysql\share\czech\errmsg.sys -file1=C:\mysql\share\czech\errmsg.txt -fulldirectory= - -[General] -Type=FILELIST -Version=1.00.000 - -[share\russian] -file0=C:\mysql\share\russian\errmsg.sys -file1=C:\mysql\share\russian\errmsg.txt -fulldirectory= - -[share\norwegian] -file0=C:\mysql\share\norwegian\errmsg.sys -file1=C:\mysql\share\norwegian\errmsg.txt -fulldirectory= - -[share\japanese] -file0=C:\mysql\share\japanese\errmsg.sys -file1=C:\mysql\share\japanese\errmsg.txt -fulldirectory= - -[share\italian] -file0=C:\mysql\share\italian\errmsg.sys -file1=C:\mysql\share\italian\errmsg.txt -fulldirectory= - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr b/VC++Files/InstallShield/3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr deleted file mode 100644 index de15790e744..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr +++ /dev/null @@ -1,51 +0,0 @@ -[Language] -LanguageSupport0=0009 - -[OperatingSystem] -OSSupport=0000000000010010 - -[Data] -CurrentMedia= -CurrentComponentDef=Default.cdf -ProductName=MySQL Servers and Clients -set_mifserial= -DevEnvironment=Microsoft Visual C++ 6 -AppExe= -set_dlldebug=No -EmailAddresss= -Instructions=Instructions.txt -set_testmode=No -set_mif=No -SummaryText= -Department= -HomeURL= -Author= -Type=Database Application -InstallRoot=C:\MySQL-Install\3.23.XX-gpl -Version=1.00.000 -InstallationGUID=40744a4d-efed-4cff-84a9-9e6389550f5c -set_level=Level 3 -CurrentFileGroupDef=Default.fdf -Notes=Notes.txt -set_maxerr=50 -set_args= -set_miffile=Status.mif -set_dllcmdline= -Copyright= -set_warnaserr=No -CurrentPlatform= -Category= -set_preproc= -CurrentLanguage=English -CompanyName=MySQL -Description=Description.txt -set_maxwarn=50 -set_crc=Yes -set_compileb4build=No - -[MediaInfo] - -[General] -Type=INSTALLMAIN -Version=1.10.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Registry Entries/Default.rge b/VC++Files/InstallShield/3.23.XX-gpl/Registry Entries/Default.rge deleted file mode 100644 index 537dfd82e48..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Registry Entries/Default.rge +++ /dev/null @@ -1,4 +0,0 @@ -[General] -Type=REGISTRYDATA -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.dbg b/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.dbg deleted file mode 100644 index 0c6d4e6b70812d069322e88155868913fc543e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28458 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 diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ino b/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ino deleted file mode 100644 index 204d8ea0f364524a444de8aa4c839fbdfb40413c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58611 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 z 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 diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ins b/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ins deleted file mode 100644 index 759009b5c8462f5f1b617fb9f202c2e638ce4bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57122 zcmc(o2b^6;b^q_%UA2{L*_Lf=W5e3UxZx(6G0jiX+7_zpN;U?Acq^^t1zG#hu5kep zrxP%iC0U)&0;GpDO6WQD>YY>5tsOf?Z&*FNcGb}6Ozs>Sx@hagLsvcF30GdmKaW4H|Gc8;JJ$a?oevd7qm%qOvnY!B#puY&RjWrD z#e(o@bWL9|SZr#JTtB>N)#}kT{l%j4+sFX@Z(6;c{`2UspGMcrrw1QLZyu$60mSjk z=$eJa3B~Zp$cB;YR<9ji-&{Ams9@yluiFs657K>f^Tv%EMi4f#7^W-Nty;T!{qPc) zt{%N{cw}_-hV>_inm05@hF6`)r_JjTwrOcGj}9ZlqbJd{dUW&X@W{!8&4@tiY=oIY16vl^_!P@FKyer@l=%BII`jTk>)zlYxJ~Yaj|m4x^)}Y z>(|qfv~GCS>gGd=rIDL;A3dX3hGxTS*KXOc;%UPxH*E>>AB9c@T-G*6H*G=3&1*L` ziiI+^8=Gr45BFh~8)Oh$e3)14n%I7uw#_fbCa0$-Z#S~h)z5^7^yw?M z-eo`UejeZApZIAW4FmSSw1xlU)p$jI=2ud>&`b1*bp0jQv^D3JUJ<%*wVT7dTD~DH zAS)>Yhd#ASj8ZrbWB zEbQVQtx)Y*$1B$~)iR8*Zgjn`1o}Ff{EGXA=-S=CIu{KcV|Tx3*LcPGiiKmV&!q4b znsjy+)Y>luoX=1rqshO8u|=KJ5rr8*0Dq!35|crT*wU{p^6z~9kFCO0KFj}t#C|1= zvYw0dl`D~pk2j7x9lPWK?;9n?@wmjmGe`_NIe%$QuZYI+Y8Y#`KB2#Jjs1h<^lE-Z z#!wxh&$(QQ{by@Ut>8A2)+i%#65sO?McV{4NV)XB5_FNiY5$zBNDKc*xxq{8G!jYD zORk0gB2D0s+JPc~Iqom6U$uHkF*?3ueCzavvFGt`pH96@e?y&%4yP2?k56wJziWE< zuIcfe(;Fuzc1{myH{mF=BL7MEfkHCyl45vgYi!5(O%pq}P2L$8_Gu5vHlYU`SMF#{ zO|5U;KHjgqgop4Fy+W^fB6row;EdipsLeaJubv*iJuuJ77RvSOCb!-(C4&@miO3VA zHE6VUa_9Dxu%^pMX^Aj2Ne&e*H%;!^mU4-sUs$Z3TD^60=fu{iczPvhP`$Dgns6mp zZd>dS4K`S;n|z@ebiSHP#$5fsK}*ncQ8B`twx-5ctqeMb35}Lr$dm^YML})@t^`$N z#sjfTv-74_yKVB$&?j8aCwH(|JK5ScI=yRR=XMX}=qe&`ez9hFWc~2kr7|b$Cb!+O zWBi8J&TTu!1D;nVZRL&$yskPUairqCrtrqesRcc46MQ62#o~g_)9c2krdr#_gD=Y< zR?yiv1@8_S3|G6pPyQc-aUmAZfxzsi>JqTO|9N}>tx_2;-W{#C=Ag_fbu7{ ziz3eb&r`^ScQ9#W>F`+7A`mE#UIS!FD%e(?)SA=4%vhVId=bBypHI zw-xP+MAXqvn1>^s6-PTw$yPdp@EU~Ikxrb4MUim4XkR=t;o^G2TZ{H3GZQY!2nVCY z?M3_2nF&wG2p2=RNPMd@rt^!jbBoseV&xrEtZKM^SjOHI57SXzs1y(#?u4%DpuIa` zqZ2d1;`-{Vw-xQj&aCm$F2ereipE=mB5#Awi8^WX3SV%C$UddfDvH(;Sz&H$uD^MU zEQ?2ubYe3r%T=3MNNV$8YhEhrQ*E{t@yH>&0-V{EHN!WL9PC`z7(3D#JKPyN)EPV2 zSyqf3?X(7q%{wR9W4L@`>W(0W7F|Sd5uziV;l|k6(i2j(W0zMoqJ^>8$v*JF?BuY- z-x64k4sY7L5uTS6!mW?t%Uq(!P%+kDgc-V|SaFd!`zg-q`bJZPj13imX+EwaoeLW9 z$DW#&}^fbL?m)7@s}kU-goaP{0$@L=}@CGOD#piGh zpFz_{_{_)x$7L)rB2Fqct=_bDc+1M>#!c)Ut!R!g(t*a%K!H1Sv@4K#w8N|ev=};0 zmCUwG*FfnUe98T0etAjgjz}cOSV`tP?{&CGuUrf>dp0v`&|l81crLy*QM4Z~lYb6f z`h$;dXf#E=F4qpi8ya_V84m^{MNQ)kn}@^ZlE4PfJG*GHHFeD`x8FVWf*rWhkWy7I z$Q}}H{RL1F{6#m-9IK9YQ1q;#{l|S{M>|NB@F~Y3c3rH-%QQPjMKvY21)l6Y>g26! zu3iry4HWQdp26iNFlv2jCOGz_Bf~-j@&(HW!vw!g=XH_F7etcqlNiM)7X~x%>7wxI zv64~21G3AZ&I-eY=BJr&40k?;I}|W7=)25(^v3JiogCe;cC)w~0qE!_S$u&=!r*)? zT1E2{{2+BPz98hVrEM_-LLT8l0vXM2NwFh54)ow5r~;2iW;__AiQZU}!J6@Dg5)QI z(#nC$LVkghmnw?E6xs6Y!E(Z0d=2-xkPrQWU9gQKlMD^nh0Zo5>tlMvK^A5cBrI__ z@|WWz9yY&de@DCm=z)h8KS}5XV3#-#vn=Kyb&wASCFf31rSF&^6HebX{pxb&DHs4x zsU1k1xyVK_gv~9iqDrInamBAI=4A`%q zyuIDpI$f*66;%$GcXLQev{d+&PKsTq`pUs#E*p%DBcHCKxZ38aRTL7uHhQ(Mm~KEE z6I;bfSro!Cmv>9Eabd8>z@$niwuJ7{-E=l3MyG+0$P*Jn_n0bOtZ5^hqo71Y?ou-U zUGt{S>m_iwo*1>RI7WlVp@G?_1Zji#YQ&vhv|l8cPQ-!zEqB<&QA6D2#jZ>z);`#g zl$Fly)yO_r&W-!1AuCf_TNKewy`pQ=hZXJriz>xhmuUrZVlX9xS|kz1SjBu*cj3Dh zUIh6$Mf+366U%@EP5PI?nT$0g?vTd>6tU(tjL2$770fL2XI=^RM+NNBVo`{AtO7Vj zA2is1B0S6jp=V^mH+ajpKP&DXEyk9H@qk%Kev;24S4Y(8H(o~7`%pwFhXut4isny% zL-;64K=ov(Y=BTbt>6n+H6Pej(}b%}m#a-#J&JQ~X=n~;SuO~`-LEjEJ@_ZIouX|4 ziKW(+#UNI`q-d{|x){dS$v9Nz+hrE`vQL1RD{BfY!S}uL9fek)?%psTTwN(wSM1|E zZ1Hy{aG)69HX#_K6q&OnwBb5)pw1}9f%ml;@72P)`R!n>{UV+~Zql<)^t!(5s^q+V zg6AvtYfXVV>bs>XW%wa#rHjH67Z>dtm6FIhvuM7P!8GNLtjG!`Tu_=-To;yMIjo6T zw5KINi(GC>y^}0}kvELIG{%J{0*s7FlWs^c@(l$vy(rcNQEDh@huaO#ZBtl*VVX5u ztM(UHq5tZ+_LtjL^nY5`UvxG8eWCcN)&ArxLCU@X(=;p&rU8QwDLz&k)$7Veu^c@$ zILbyDHH`<%B?C_x8jV0&^i%cQJ@TE|;OCyakXpx}Xo4)Q;7%+)TQna{8;%1z^)p(Q zmn{zpLt3sbTQoFikz^F8VsLCggat>aNf#Ho1|Quta`oeu1Ema!fYQ1}6~)%;T`jI| zl&koyOl9b-(HA?502@Q-%+^BMIpe%B>%2lZTWHj9etNYt^Ah4HbavyS^GLNb^Yvh& z^8qns)OobpnR(oobUv7N-c;?({7PrrG!Vy=WE^lmt{I-Q zNPsW+j826*66ud7^+KJ0br9S0VqW)$WCiXr?q{K$%`e}c$v4ju0)qV6t9l%iW&c%* zhkeBb8)2+&bcM9=MLoIT2*bsVfKCr~6v~wYoNsnH^oFyH@XBI@*|t=HxmoS=T^-=e zhVX}pM9NtW;m_X(JCLv%*U6y)f|#IZQH^MS2Aui?3uKfwwqRrBDE37vvqSYD+TkTt zb8?+=1}7ow*OtmIcM9ijn=DF$^N2Nd$b+6`qE!S7;3H**?6$Q7FX0X5uPlhW0to zB18I*HV`OBc$PKT0BOnEvS@zqa&P;bwyu)DV%<$kXe;m@2bOL>Ds)R zLDS4i>tJVp*@FM!6@w?0`6BtFO4`mU#txOsJ&>I9m%X@g$PwPN^#i9=a>s z(S2x5VDv6wbVN2V&Mn$c72de6>OpG8i?*ZI;>z$uH_W-!hxcHqAwlvpQ_93Itcb_p zB7WS(6JL}P3f(&Ra`w|2WSjTL+4cpS;i{;s#A5;Yf-{H=K3Os~MRZ>>nP$u&irngq ztHgAOM$}p%A-+2J$o83uZD--R@EIsxAy&R${t1|yuaQNYy4_RpaARs@@7TFj&)Hpg!PJG<47Sc>!@R|9?4jw&p{={dThrr1+a_8&CbwTcSUS%|#k$t> z$A_lw;H2L4ZR0~*^f21xtJba^nwT1z*g3R?196wHY_7O`pfO~7kF9yd@UC5xyKpt8 z$_qW;FqGOZqMFv+*izF3y5ElO2K`=uO+ql=No4p5$xbJsm4VxJLR99K85R0IA?dp4 z>VIN28Wy&BP| zUu=aZa+BwRsmm_du?ik4 zF7kzOmMtivhP1|2DXM`#41X6^G|0V2426Dl2put-g540k>H0$N8m>n$04Hd$^Jasbl9Fhpx_HIO* zVFJB<5zTbL%p?S(hb`QJGKY%qbuX%u?a4!8CeSpRLAujI0*K2n8f4j`NgV@Vi5H=c z&CW@>(6~3O(l04)iDzSPSvRqD*W?r@Wp4?m5vFe8M*S`h3*5-PcuveRyqCaufe1^) zi~G+e{>44SUpABYq4k^UHPF}`Em)z-ArdAk1`JDeCbbWZ@Y*I`AVC}&`=t@blE!2^ zVbBJXS`KslyzBc?EA<$$j#G`A6?sYLkp`)=wUpx`+u0Ev-!;B%!<{?FcM)j#H(stW z(u>c}xlnP%z>8Z?&TH59*3OB0^!T!{JTfcGL^W|drk>&78~iS;gk$L~0r&C-L5r71 zi-vi|qG`4A3$CTw5jy@XC?05F`}^dd=0j;vAYc|k%UNa1>5i*^%amx8VGwNoi!inz z2}EZIk#uVD0fUqn{x><{FI5TUzFku~RS7?o6aI3Q@N^-RPF2G9b0JanSE__(3!!u} z!eq-r{U)nae-&zr#V}CWp=k1ddRrAc%Hn5<7T955487pr)VmbwP|S}ad6*x$j2V9& z?)W)hq_f_eh&yF;Ru|@HgjneY(Mz4EWU5;t@=ty}2_C&Q@iKZ;cPj*upn92eO{glj zjl*`VXDmq(V{$uKLb$;f{RiW#_Ee&}@X~yQsuao$MY`d-h`bMx=0v?khEoI!O2m~q zM(TAbl!3(qoz_Xk=(ZSlo2SNi4c~Ps*kVEhNv_B0WKJ1oBrC=lw1z za-F(I&i$zsMs&kATv$|0-J?71JMRwHxO;u56Rs`f+UWQ$3b1hLpj?vFC00YapheJ) zZPGOSA8_#u6pKFr4Ry7I+0_5lNSF(Sqp`4z@(?pavd4MoBn9j1YKb|ApR&}|5=>}H z75GgjzR#8=>KRg?&NrR0o|4#V>7bJ&fvNgsf%%~KV{8`|?ad;f`2i+jOiZ%Kc1Gi{ z@Xb;)80#s6Fn#HjeERlhGM-qp?~$T!HeTPRz}$9B|D*TK2El9|#3C z%q}b1uh+#SvP|KTgB>b@*YRB|0t7{~+l`#V&hS;Ho33kv^jN)|{3G>=L*AL47aK3O z5T86&`E~>9sI#11{t@pSs~<#^=V4XNL7mb1%$rFRbUg$X8}i+o)@Cia&(VnSc# zEEPUA()nb#YLizb77T*;)m38K(9Maf0cQdJ8YgD%9#OO>^sGS-T*YmKu1hn`D#@^H zUHjUM`2|ILhd3r!%D_s8MC`+h_A1+=g^AuM87kV>S(EM$=b`yJXY9Jz>R>NcSuD%s z1F}p$AR&5w(SC}!W*68$$G|>;WdgSehaz060yB}ET&+Mek)2%3Qbp4bw|OTGW>Vc#JsUly2>Wk9tfcqE`Yk z%00u#cq1oNMWwt)ng&cHV^fD@&q|*`21+ z3y}9NCnme=UZ|FOX?Dj%N@CglPn-nbi4LavW%=z*-jA_`?2h!GX?FjkOvW6t`y$Ei zXyMtNFP7co&aOrgDwo@+gyprk$7~7xk6jsJfrQR2hBBcOChykOvP1`Y79XMMoqUPe zJet|E`JXvAvYF0ITu&qzZQ1-!y))U&#^>35?!qmVzs32@F8s~jIS9{Fd2it{6~>W^ zY4FLnIzP_~d}3JA!^~DCwmkZ_DzW9!IT8Q)oQPu*j%r&He!COnJV_F+K{!Y)1?PIj z6dYMw3Vuh%I;3Dd8jDRzFG6TY!McH%r(nNDo2TG+I%7AmrQkon)`Q7THT=6$aD?5T zG6i>K*`vMBqzM!eUg4hEG3MC!Fx>7OJJ=(~{*;LoPkyh#0G-UjU(=ioXG-Sk>2CH?%BAF@un<}x8z-DG*sq!HH+bS{5-NX@AquK_m zA9Z4;C4tr6K>!Cs*Id1bu2F)a>&G$)=>kV{v{+?y}l zpLND=B(w4-;i^b;Shi9$lXcZ`F|=bHm+YGpS}QW7nQ=i+LOcOGHK(4xYJ6&XV{7_0 z^Z{$WKyb3vPpUd>OYzEv{(t!hQq0jM)bho(n8UjMcsBIE;F7|+eja=CfMQczn>ACq zbe{o{zUXW!h@?dUX4644{2UHbMEa8RICez(wiAO$dSs?Vq`0Pxna--7uQ~~cKyv&@ zAJ0VV9#C%>`HB-U&`<t+w}Xf%bT(0_@VbJ z!Geh^H~kbWdX+*=IRQ1>F58b>LN{FW5xX%G;~t8I^G}=(%W_fL-A4)II%2CRI#uGX zFc#tnBvG=3apC69!#H02uH5AYH4I#%MhkQ*IGg-lMp_JJ)u5l?B=l$ z{sA_dTP<-~uRyKY+No}I$Z7L%TuQdi@IfIW_KP86If7X!BIcpG9l7p~ z*wcGOY+2n{#KO076MlZiw>Dx$C$xiB?^g4(a%6dd^QcBF8~TixKYnC6?(s`2@=kT) z7_nup*BuVz#q?;o{zNBghhfUq2M43CML-C-SOMq|vYq@vXO#x^2V(`G>yUV( zyPJHmlZS}aL*;UR@7ofHBYGEIYX|Z?y>hhS1m}(Q zIrMn6<7cuJ)ZQq~!~~aBhAevG!SIxCDM`=aAgH$_4q@wN&1*${*=?8Jzg3X~pe#Y( zzTz9Y_L5zFl%sVSpA@4QL!2|3WSW;|qv4{oqd49mpL!4*Mx9h8HjK)N6{8Z#hEXRw zagI?n5$Lr>&RT&gVQoNlO2#?>m7c|6ST>>rsB{AXCe{1L`lL`k_sg8I+sJ@wA@-UZ zP@Ucjs7hFn?Uk_TsekZ7p4e&>O*wN1YEk{G&Ge;Y*G=x&Hg4N3U+RTg5AkuNs1-_~ zht#4L_uu1V8Keb`4VmrW!?A_%toZQhF3FE21s&DF;_63Uk*DLyOBtr60*q%kLsU0l zWMdj8M7S`brGT>z{Ej|c&6v!PR@fKrWOF4sctNm zh&v^AgM+YmgtOpoA1q|RuwXFZM8W~t7}vvTfu4nMI#okXe@)SZr`^rL0K$ps)-=WF zHptO+lsR9UuTrLs;);@M3Doh@HC$4hXqJ~a=)e&8yH}nnL#sw{$((vUbxys`n^UhR z&8gQ@=G5!O-Mz56q2y1v!V^17iz|k%8MjKSP_ai` zSnj;QEdv=0EO#zF$uYs;M%W~@W*)Z;8* zqA8W+PA&2kGteWPz0#(d+j|l6&VMwk#8N7{mCf?EJB^9=U|8mHzU}|MO@F+%!<1mBS!LgwA8MT@9I5!n9 zbxA+Xrs8GJ1~U_l<$0hopUPmFvff(*mphN@Lc`*^Or$WODMja}I&n;-Y4tY<`@3jKaTaJA;nLI)8?kKu6Wfz2;`Z;3tqI zeBEWbM&%WJAE z<%m;M)84Wplkw~NAjN)p0TbCs7oEA`79Q7); z2#@|t!^nf;Evir88Rx@zuFH5nnU`MZ+Y8u!)0NhPih>kgu#&6^nv>cwjP4l9>mIZo zzmdzD7n2FF3Ez+j=p9LD$nuPQ}s#dM8SrHILoU&;xR3zD(eKENiI63_Q)ofSG$gefX4 zr9MKXQSY27!jRxx4O!7QCo0W?_eQfEgNsyCrpkn8@^Hxmq6R6BOZI*q^60p+@GY{slpIbk8QE=8|cO*h-*DRoKe^0I7y zNK>YRVc0EDlA-RlgY5d6T(0QsNwQXC2VdeG3S-RiEYv3e<(ncJYcu9r^FfvYp6UHI z>-!20cfuxpc$eRRJb+Ibj3S~rnIKbuOb}l9En^5Tgow{O%VuPlbZjhNSYU6>3rJYZfP4F-w*0hljo3*w(F$yPX zqs}21xh0OAw*Xc`fS{8WA{O34sF~Rsv@S zy4RH0A#hHu4IDODLTL>|^(-21&-iu)PKz2xbV56Hs%9W_hMmr%8annWvNCjF5-V;@ zA$a+7P8>r=AvP@JYv@(-2-b;}DFrG6Z=5 zScgDfbCs$?xPu{NH@(#hGyJ>DRSo#3Z(6gkehKuk2#H=~_;-)fVInRX{^6fue(+C- zW7!;u&E;R@#Eh$gf7Q5#*6=Uq9Si5k+wkwj8Sj99+*l_M?v+h6(JH||^+>e}iUj=A zrkYCaCC-=;n=WRkNx04p|4!|Ne^q82O2=n&Zt&e%YlYz^K0uhdCFKK%U-* zS4at(MldlRzv4V{PfM(rFxPYDXcD;?WWLn7fO#rXt3X(WYJ+bSfY+i@UT^5&vUvMd zXT@3*BE?fZaPez6k-qvC6yt)JLacU<-FURVm`sZ!qLs(kJ%3N@lg?K`pr+A(=&OmG zzSqi4N)kD*+~3n#{y>L!im9W&Ld?(g8${-cS9IQ~Cj-jgeA&`pb-8@Eyza7kDgMUG z<@d`~Uhc)l(EXhiyF2maU^;qibWzc6i+D%~4O!AG|*y4bHR@Pa+O zS|@+Kww?51_d?zP!>RENZFz^?l%MtbY6wC!uaq7yXTmK(VT!V55BGM?sx3YAtp&I< z%$W4bsfpMkcF50}yv!wqdpnEth4GU+c~zG#Aekk6M@A|x4{rklMmZ-Ft)Ytbsl#BQehohhU7H_T|Bep1oCR}H2+fVv*VY;hL|W-Ar?AEjK6ezuV&C{j z4zX(eXfHC6`tiDn9pn5~NLxC8J>)M^cqM=RCL^WTg*-c(5cUZlTARQ2Ntz*KV8((m z&0nPQ*kbvMKK$Jy8w{^=Ng;m?7CXc5OeNJerT++=!`_-EFv(?F&BCFQz+UgXusqDm z9j)?ij*OVOgI42P70K$)H#mMnzvtpPBw+)Hha~<`MFzDa-L1$)?ccA`iJ+P2 zwg?Zb(^vGXXe9VTeW3FX_Gt`-^hmWp33DwZd3x-g?>D*pkRCa-CXelC zsq_wX(WmGVf07Ahyno_!oJcS`;k>a;$%UPw9hE$%}x;n$($yFG@~V^gP#a`Yeq(#N;?b)a`}X7 zi`}clmJZ)mCAM^!6IVe%pc=`4?!e5RqiDXcg4Bwuy4#`lVnqk?9 zl4PhWOPHw3COgBrS&|&xMCW%nW7oxu{6_4gM>Fg_;&pj2=8}->x=?>ii-sPFFxxf` ziLm;Zj+A9=og}Gm)sF4M{0^I|(3bs^Z-mrGC0f8ji;c@MlmcmDKzQP;e3Yn&&pyXhg~(;XKJ0Yymbb1&!Y5@XE`-cGWO-#oIZvYME?*QRjI+2e&> zWxlwQA{>ViW0o+4TaLmY+&6n6+~51quuO??x>dLQo(=o{)k$W= zzE65T#ul)TTkvzmzJIPKFR@Q|ePY3{*2$3fQ}yH@7w8nQ(YF<%jzZ@_DdYKaIiWG8 zPZFsmavUWa&Jjod#btNn=;x8q14sYe>A+D{p*N2Hn|B6BZ6s6-7UgwfWO(@4e>&yt zV*bNB2Qk6~2T#QGfa^~?rFxZy2A>=mMaL?!!S!dV#9eSL#695pvrdfX^?+-^nL4-@ zzCGaja~a<*xDF;q;xWVZ=bf<|$SnMi=%ZUR`{hp6{@Puc2!5g9tiUz)cDRn$0#M=W z$+fPxU}aDq-ZVeh1?7_ON;v27qY9iqngIdl-|7YDU-F@2xf0HGy}108S~%Z(d~p6n zmz0C{RS9V4R}9X1q&B{fHrnsefriX7H=zHr3ul-q&||Uy^kO26)f?#l+j$&2(Er4V z0eU^MJR8t|(@ACo`mcIF#uk8{eS*0H{nzTr=L+=yTTfmBz2*tsL8~pXzg|!NcakRr zO!b}hj7IZ>KF!G&%@ca^mM?OWpTn0F-)hx7X|N8QW77DBE7F}bevFJBN#om22b!x2 zy_3ebyfbKS!*VpQ6Jtr^yG}W~nD2P!AV!l$c{;gHj98Jd_`XxlF6MjQIfxM^BXZ(e zml7hTnqFuUF+Xt1kOrjPp_ipZ9kJ!6|Em&rD7!10V*%0*v!m*IAypsa*ax1T^7e%g5()fAsg z`X}(MhehdJ*~jT~=4o0Czl7!N+O$Y6(s#DOj3u}3+K6MK3;SQO#rAPjyKoDm;gUk~ ztKQV1rX(qqJ2~Yocz9IqVDvkyN|MuO)-lkE1rlXY_PBpB;2aVg>C-5HmAFH>j{_5$ zbW=uJG4QEQOp4Q6)8#GkxZfN%BWxdMv6Fz`N}{Jv!UPh6%D)l#FYwL`@A9I3TA$pN zm#u378rrTX+Gq8}ZEM)EeMS$wC?3Stk!S0ah0ZjDzVVIv*b0uczr)#g zB72hGIF2Xi{Uv_dmV%&(p0bB`yy<4VPjud#n%^%EzO1z;0-Iugj^Ge)G8ZIVcG^*U zuSn>9=imhASaK3!0Ik~ot`KhQTES7R#9WMH_D}k< z4Z}20G92!#(dgD&I&e~R3XRFZ+_XjqHa*U%UT45*f;ii+Co;MHsWSEUsCnhXFq-~G z%s7ZjC%uKwwTgg;y8ytPlQLnS1S8T>l#&%D?_fpLVpQ>Rim$urt|U@trm)ZF$$#!CV9T?#0A zapPW3R&eyOQsX=lr5^|p2!xbN|8TGByxJOvmAL-OP?+JCX^penTNs7htD+BocMD`* z;F5aOIPAI~?1XFSbJimqKMcRPO3D#r+UX4#S8AUNT?B(cX7^nzF$kuCR;wS?FT0C% zk@KilKX#m@tbQP-DRu5^oH*Xa(xqtmSOp~5Oi8Tzx!g&T1-|N+)hL&GKgL$x#VSv4 z#M@B%dWpT|Z7AJefS|k$MLpI18p>{Qk8*LLB;xTj*+bXl6VBGbNzc}CgG#f!q6(M* zGr}M>%Vo|CRg!Gk({(YDWlbyK1&KKq=kcY#AVU>kI<>?M(SAhIHlEMvIA zO#lfEJ$~*^+$0B!M>|j6ob=G5DbHDA+{d6sd>N8D9gZSuAh2|l0YN;*R)5`QNQ=T` zELIdg&gH@q=2jFMb0gNGFd-IK#kC&q#K-IACP0hBM1U2CS7!o3aY)S&pHY!HN{T~& zAO&rbXH;|oa&tey8K;)i9h{5ds{0Fe5@WYG3>>?TCB~c)HW^X`C;1Q?p}nhe1R&$J zu1$pO;gPp!CPdYZ?mP#b{%zX0%TgH!;1BLgIH!yr3?9-iJlw-(?@rDe`B42Ew7gP)%9 zO)*&An@Ccf&`!5z@MeCZh43q2K#9Q%sjD@%*s67Wq-$7UfR^;`USMWD4yZ>|zs;OE3~A26ELrtz6h zoCkibvqEh6pEHkpfswgI{d69~sj^@$7Ka!S8&~l$3ildx5t&W9*gd z5_e0{Mb6zfxA6}i3>R9&n#~XK4@kl^@K>L}cy=8>TR4oWmLSQjzng0h?H$L ze{~G50&l7R!Xx&&8LCOsH`jDc8g^(xQi&#pN+M|t&22X;EEhp2L@g)kZ^&~IgnfT;?FCcpVacY^Yvlj|<5dpf9Wt&P&iGu^ULq5BbsA=)A3nPly>kjk?oMK&>qR4ZiEPT^L20PZ|1F9|isO zi86`4x9P*f!OF7e5*tfAV`JWQrQ?X3k{DONlOpNBAG>joy zNPNDlqVxGk0+I@7d8iz&)IG_4U^0D$O(c3NfN zTKr^g)8sbkJd)(rS8Qphl_fM}2H|1*Ic2Vc7ftCr-Q&E-bqaD?{g=5865L-&EZ0pt zNs{YS-7MGb@_v{wJgC^a)80r^U^>lU%oiDVKnk_!Fw7Da4$T5^(0b z@q<{K#sP_yn1VZ;4K{NG@JOg5w*2gqju&LSEA*MYg=6z1tZF-xB*76tpp~zG|cL)@PV@ z1y9(i=-Q1agGcgE{ceOfMc9ovrF&Q2PE~(DgfvK9saIcu`i7;cR$*V|VYMO6hJ^0L z!wk<&_u{cwY+>Y*u<65JeJ9h4T~hB2iMl;^7*z1$=bRNvr+865F)0IPKA_cvs(NI2 z@$=3j!3#ZcU|F;T2#9G)0b;ik0}y`8umlK5utW+Fzv3hbK&XBhK>VWjV{AYDhD5i7 zUvdcnAZFZV*Md84v%{_;fhBBOyjq)KBy@;C{LDgbW4-+-47uQiv6}6Ji7I z`<(dre8Jc&geU9`!e5cGFE=Gvn&__`46cFTWN8u&oGeY$w7DVgcg9_|x|iXmzp;Im zo#=CB*pHaoj&phoUk+GXnZ`k)W!>mLd>5}V(KALZlKPKktC99FP%DY6m}fbl#5~MY zDPE5_F_@?6Q1>YX^Yr(cKoVinilY5a!qQzy@~Vd5^s0ub%U__u8xeh|)R1T3Im90KobsyH9xo{St{`W)q9hj55qXJ2+V!lH( zP!{Q#lHfd*(&sl^H^xyGWTEsqr?&Ko50o)@>dUnBVeGMmVO8$MywWB0E`5&lIEIkC zM52744EdFk=v6L)!PJ&SVh~KD6PM=}^Ribvk19Nn^(Ev|c&HQtf8@lmB${o_^adwM zN+Q)SD~Vp`{TN$!Nt7K!*jFAy&~-ipm=;0B^$g^bA69P^~}h48j{- z5ePZFP?_QY|5)bu;SPL>RzeH*6JsbZD$aE+hr$b5Duhg z5cK(`a0Y=l>r=6D;%C2{L4aFKM4}lc{VnH~=^4Jr0feywa>Ssg(uO~E3Y&=Ea}ju^ zKB*HUhgnR^HJ$z*8(#TB@pqhOR<8Xn3diFG$_*b7H4tbk+eF{$V%^HN-*?`S!Juos zErX58h3o1W7WRMO#K+~Lq!!^GQ%mG-spStd?jf~MvT=k!7v4gdq?Th?c)!URcbV!n zaIKslnCUK3tlFyQ2aa@lpC5?VW?r!m=u5{NvZtwkNJwW&t_wS!bz5^u&BtO^Uj4Xs zV(a+Msc{BLR{Jp^PE=6XRY<7NaHe(@QZZF9EUC~4K{rnc!OLXk#OY?vr1^h5`7i8w+oCv6z<;l;x9%$9p$Qpvp^bmIEl3rP%1E6v~QBuVa7 z{j%KqPVdLqx^u5SuAsLdgBh7yEsLDM)kxJ-}C z4DjEdF)P;+5%5KgD&Xs^B01S|?)a5ZC_AkI znd3{11(R);6<61He@wS_O|P76-;E}q@=to9@`qh###f?pI1ccLT2v-EmT%0nJ0{qt z0y%%3@x?eL;M-_4m_{(x1CNwENVjOYSe|BOZN0)yZW$6wm zi)JM;$oYFGnGte6>itT{Ara)aNK~ROzv)w+10c>szu7S3V=f_J2KA<_t>Q0mh#qZY z{dm@$JBf%9T)?`q0Ow|$;Z-Qn=^?jKYkPnK@|1BS|1H+$$e-j&1ea((0TE3830DKY zT$FY`F*EWBwspjY5C2dlHhjp5BR)jQh7bSf#8}%GF>&4_KIF_IK161Q5C4=g3-~}K z!h0_D)m}1&1Rv~X?+UGI0zPO{4L*F*8M{@?ta8qIZZAE5L@#_OgHrGz{BAWrH6#dO zPe*XeQeK5{-Nep`soO@z$0jH3P-rIvq@50G70m-MA~lTY@lH~Q+3+t6)}EnYuy$0qC{7eY`c#U;|M1=^422uF7u3QKH^<`R8w6jv)q!5I z1*=LKm+1BHE-7qv3>GV}KsZCyl>Q7CP}A{NCoVT(HF$#+QrP_;CrMye z)yzt@&v`$F*nMX@tMt0bKVMItS9+?ju9gu|-q^OoFga>>OZb9I2&k=3m?ow zwT_BMK=4;^alJv6FcYtb*?&7TzI};r1_g<>8EerWuZXO_44-~eUdNJkPW3R*6I~*K zjy5B(7hfuO2?0jLHnyJf`VNHgQI;5+=puvoh7Te{khBNawNDnFyUQuys!nEz^%xYQ z3;e#C@q<>3C370+ZB)JKzgDG}nJbE=g#ipAzD^fYDkv%)aGA0ii!j*Z7JPiMaTk)c zSQ_l_)Z>swpa{x=Tt=4z=KuNtKqk>X*j2C)f0AFR5;3U)Z!#`R0X;Q0Pml@Kbc`Y6 zgj!+nP3IB>OFM#vq>3np&);$q%$Sq|hDWg+0K3E|j9FE_l>^_-n1ym6yy-?ch z3iZRhVvOS9D#ZmhcUV-X?aRydjr)-lMD)Trz(n=1or}mcyC6DW|#4?Y^mn>kUG>Qm&=4q~1;5S5ICh^?3!-wE_w=UD^HVcXBr8kt^Ozf8u(80Eli5IH##D zIJVuV#zl#OU`>@4-{{n>?7XTpNgixrAZ>mwEzOlxX%>xER)iXbb*3edyhiEPVS(!a zV-DZx8`>l~ne>HRw84<_%^ddhxpr7Y2a_K(Y{fXm64oTgqlji){t}={d7ARTSSKymJD~P zOG5w`O%wySPi73R+NeqTW)|Aiy1}o&9v!R|4JTxr;UfI3Xn@|Pw>SNX89lNCy&jH{ z0comA24t!7q>PLKS*jEgO_d3WrOK0?1Y0Jl(n3C_O0x;BS|{I9tsd ztfoq}0g{tcsUDL1#WH7%-Axyp;0}|mw^Aza>8MGSF&*@*M#6;@(OZ;IN9`_4Xb*@k U?Y7{S!vK%H{K_l&d*#Ca2lRel4gdfE diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.obs b/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.obs deleted file mode 100644 index 5fcfcb62c4e70338ce55aab3c89149f351d7f4c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65611 zcmdsg34k3%wRUySa+3)pKnM~R8TNfgb|gbGgptW4%p`0t5QbzDMv_dJnXrinf=`hk z*;jocA}*jPCI~3Jr=oytt_bcv1w}znwg)Kp|GrbFmcHG0G81_Izkdi{PFHuGsycP* zoKs8pJ!$fb4_hzOLR2yJj5#R`yRare;lQ zOoFS!wlb#e`-jQJRlhLiLHz#^{=fBC#$5NbF+a!u{BwBSa5M7byKY8$tKV#~nfdGS z_rGXfIBuLVX}#IXY-=WM^TJgo`OWIfepj0gOUt5Cz9LV<_sh!W?$S(%pJhe*O5RO&a(X1m7Va{mh0A) zOO%v!RS^E#vIrkHBxBc5GnVm(CC=W|jB_?6<8Z4|6|LG8Dpk9)sjoNV7xwk{%oDX+ zLm7y2iQ4U%)R;Qt!{0S!mq9gjpht5Oa}7UlsP%snIcv;;=&7$!?J4Mv}!%Bc>YRcu|Myk|k zYHN(^ynRgFUeQ2UTb`JxF{y3za?7@KZFzUd6HM_0P%>~df_BXt?V2~CrDIBKlb5$V z%g({G1szw1O1eMfxVi1Zevl#$w1XlTMtg^U*{5PM4+ou4189b3@vcZ}7OpN~Rkxv@ zR)}?j`8R`sEcuzuX%W(_4p{>uw%}o~6Va_Lqe!9FcxpANz41g{ZX|(iMz*dDsfrj2 z7P5`$OX^rjid2*bb#Rg#sl7UB@~O=enx-~EuXbaTR#C(1Q`6Ako*bo5QpG2?HMdQz zT^T)^xu{P}W8i{f!v${TIG)(j+B~s+GW2P%9M@Fg*r0VJ$3ZZ|a6mi5h}*(UZJFBI zJY#&*l&KhtCp5M5KE_U|2AV?}BW7J$bY*X=1Wx2gPQ*CWM> zYJgPenW({TAlD`d)h-NAm&NN1RWHi0W>6Wl4ksgTFpqm@>qDp29o?=mlfhf6S}>Nt z34gRAYeC8YIRS(d5ATP<_OW`sgQ*{8#veU>-X(n(%=Ido6x=M?H0a_E-cW4jO`;gs zb>$6aJ6bg|q&&Q%BenqHRJ=j^e^OIR8*L@*JpL(di$_YZ z8~(WhJqb_aVF(T7N;!IYwoHoL;s zXe2@@#f3=~krl~VnU6qJ2~I1ka^i>(P9*A9+rfl}qeeFC6rWWJL5tPrgIcZC!6TXK zMAfCO6+4})E+ooA5*x#^_!?_b!PvDELodVFbpnmPWVa8x-bfy^`J6aqd)nuhTiswB+ic^SAB z{6k|?E4Up{lJ#vaz$=-lmn`U>**P}~3DHVhMCj8swk;S8`$KkONZ22B#_=hLEC*!6 znhF~`V{mLrm?q9!&^fbzu+=%h@e%#@)yc%Ig%uH@Atd$!kj~Nu))n@_k@V}*2hdv@ z21vkahI9i3TWeJu@v@s#u!6B1L%G^gFNJ(w%DOnOcAB^7I<%s4Dd3{KuA_pF$&3tk zhpOT&AYH$>T+%Hv4#LF2J(H0+N4ChvMW!;X2o(xrL7r0YgYY^#o)JYkrN^Bxo(dJ6 zb=Oh-7m!ldRpmO^#{vylWi=X>2#;FMFn6S-hpL8#au=~0hvYk5?c5vzhRxa7jPVh^ z!)+S>Sw83B!wGNz5bXtK{+>JUSn3qZ{qZ?RnPWJ9}DHEhtV$7Bz?|9y zaHUcu(Q#KCN`lmE_s7L;Fndcb=*U=8`UaX)8jI(GceYNY_X^x`#>@q{^^x&r-R=NOGxU zEU7DF4s58T!c3}8tCBBag7g=tC53U|5+BY;pNusBjov673YN~Ah-OME7l2*raoqsT5LewQa_O%VPr|9V`}@6haZA~PsXE0TvGR4SQ*M6wO?h0Txw}a*U1TuCjKndx?mMxP5EHd7yn>^WcMk;Ty*Hb$S8|i zj}jZ;EZTClJmeN6z0?_TQI3Pqd@k>47y#+Z+6hub3&z5sAPs-TWNgPvl!U*_%aT=U z$0u|t#RUR`tgzSy)-R1}xUB5@!E!fJ3v}cvYY2)YE{|ZiLB{N1;rkCb2)jsP;{z0e z|7fNgY)9^bE^y&YgPG9XcYb3BV(%^|6c`@XEm$9jfeA8Qf}SFJ8D{#s<}Kh<=}Gn% zv>eZ{2I63FsdHNy-9-*&ne7hERl8B%Gy|bCmzO&dIOY`y$3}C_RpK%_|5ve1B#I&h zi$;KgYQgl#;)2yX))cAUE<<7vS**VGL8ZU|;uQwSW@|yK4+e{f`N+X0tEv>FoB$gz!x^k(M*gRi=QxVoBmQoQ5JQAV`jYJ|XJF-H{sYYi&h`(_tghlg{9(+XQ5PShrstQ+`Cw>#Y}`nQ*v)OmhaW8cDF zJa}GL@u)Y;oLeNy+#-kv^OO+T%B{;Zyh z`lgRx*xTDRzyH*(-agm`Zyrmw(5NCDFK?|P`wvu+#Kz7i_-P%@?b4Mp z(q%~lJ)hzkXkCfBA1#p9eS(7iC-_`4Ff{v%EKht+ICT89aY&lIku@5VZ6t$HjG)emqY;i$fa%P)3)(u{1J##$0aRywQB`U_L&U z$@joU^KHX?d@PgiJ4hY4o;xrfACr6)>pjwAMdA1=-%id4ZB!TU?L(Gf_Q-zN%uXeq z1{rLKxFP8^O->g2`El zV18dyi|t)Z6HwL7%vrQ3+wsg0j@~Vt+bwQ-^AzKiaF#U5_w<+8=# zIuZTn>n4ol1dQv>_-@ti++dEO^TEt%gE^X%{Ij~;U{{n-K6kQ^F7roRa#PIBQgKP! zjd`R@hgBM4p=5rE)*;p#hn8c0DHW7mlc@TlgSemRU0L&kFJs)l!R#+{XcVLML}?Ob zaIsXQ43y*K?f2cN#E|!YMBM}>4T|C7qb(7g1rxNgEQ?p6*#p(UE}Og7xElCf!?#)k zmGnS0V0f690sAC251T9l?c9NCzz)ExM3-ay6vU*2#L*$n0dD19o?+DpV0hLs~`+C_#mH;>0G{ zrVXaiC&26uU~J=>=;Y)DRB(iy^RFz+oS!A{ic+#Z;B4;$vUXYm19!8)QfKbxZFS~$ z#=k%l&`KA}fn>B%@^K;sTb7BTy5Q|_+pUMHbYy_WOYIV;%K)>JG^&c!AZW&FU!>d^ z2|>V)ae)i}@Ys`BwF=`Sd@F2c*iy40mM?1$U139}Rn~q7BRtTfaUIti*&>iCdeunK zew)nk5>^actiT%RruZaC*RA)CtcVpvNf0Ugb_kJzSl7DEt3(P=a$WotDjz9e?1|;3 zf>(7d&f(X?;b$U+H3LQpYhd-g7OfjvFyI%FDT^@RoQZ~6mtLhNhTbU-26Pc48w?=P ztA#M&?z#&GbP-vC#cVL(Vu-gG450M?JHfzk8w{ZQI2gdCx~Oin93(V! z?~g4U>;3nWIUvV}jZ$RraPKR)Jty5l*RP!-5t>s2=cx-_e`qA#USaWEX3Q5~==V3J z_{i@U7EdD*{H1F>MHK6F>^g)-!}yE{FzdA)i$a%+o8INdEI1DGwHOkMtk-t6s2rTZ zYZn?mWMht86SF?sF)#GlP+3`Y^oCh|wl03c2J&c0BiA*gm_hh#m6ZDIzoLQ-73=h| z&vw?>x#dcWDQ?5v+?dbKIpuZUL!tq6%Grb0WUemxk09TEm)ua{lHWF89MqksiH6`{ z?b<3eSQ~y2RMENDF>tTrd*;vX?wx06EC(3efs4g#zmBZ#Wi#>8 zkfy!f)3H8MH&Ih(;)desV5CuPXa${?V~|^`qs^`Gbbi{a2L(_AXIj0dll6L?%wkad z7a|4;&M>#d<$v;$b547CFE3Zy7%NO=rC}9*R|Oq!YQmcO45_sYXEMJ$kPwIgPcwY!c*b-O#z zh(K;{e&aH-=GT=`XnxT((4^IG=aflnq8;}NYB+48=69rV7B*)=GsCplg6d-GmClgJ zdcHR#ZCw{l=&p1{CSH)b%k_tqsc! zL7f}5Y)X;-AlcSNYbGYH*gkF4O2#aPYM(|0j~xxP*fPc3hhUjxc)@j428Quq8{%S) z)|zd`VOY#@qkr(0DQwKK*L3yZPG^PWLi1Tt`4U564qp+h+iHe$Qt=t&PLdD|7Hl5W6NMo$vvz^6Twnkx`CNdP@4n9<0jLEu0F&ai^8Y`H<_Mek&Q|m3&zl~$qB1fm3oOBd^pE98;>}?g)=45#)5d{ zZCj{%6&2K((g5+unCdg7+*(sM9?{|ZfQv^kLb#~cabC|wEqHgg6{nv>J_tzu;KneH z$L7Ki8N(57T4mnoX7|-7E*k-^YQo8;Bu#kmeMfK%f|~EQ4Ww zzl|PrvJ$(O4tC+F*BJ?T?CuZm`A z0QlL0GG*QXmbmp-9z2CCxk-Usm8(IhlIv0y6fBCi6gQbJ&CzLnYRhPoh;W>E&T=<+CBIoqm}pvw3N*_;c`&cc>e zPP;@Q2QZv4V;UcguquGld3uZrw`3!AWqCEk34xTBV06oSKuW_{%7T^FQf8-O%3;ee zzQ&;;&Xf<{9?S8-G<2YhG?|%N1&P|u`ozOu-uMZ1bCWY|g)pM}Zd)vX|pk zq5X0^Lr=xYNj|5&=(cR%krDDAP3;3|_o*NXRzZ|V+}(OJnU+KTMi6+OGb9B-v8 zud0gafc?eaCFP8WL}%1yMO_s>EC3S~Yt|}k+~LCl@Szv*!vY+}=uelnfN6+am^K^- z74cfII23)=6R*+Y^}$j2^49Ri=#RX3gnM|mYm_;#@#w~V8jo+>rSaItcQ;-ppY}n} z#v?YKAI`~kbX|yJ_pfiC`GTz(JZPnKLTzvER8yEjx@<9 z+G&0bFzdC4eBc_cNxk;4$|cCyAXH^4e)?7IS8RVqb<0DZS(GWjn%X3;tP) zsnqqnAhRZhdb^vRp3SR%9RA14E{q8Vd2kj&#EQ7?weW;hSn+W)qpaNw`{dqk#zk}4 zDSs}3c3QNO9v+d@^%{Rs_&Hsc-VklZld&$#lc*JA53vVuL;hn_-msR8EN|^H{W$-7p;Ld27d-V~%1P zt)H~!P6Dtllp`k4nmanH()|DlKkyv>X5USbeo?;qp+sqcdSf2L+W6x2wtfQm))ude zjy~(x8}@>O65-<%4|f8*9|^DhBnN8S5pd-^3HpxTMsW_&9y1!7_auA{rUe7b^=rjx z>5|E=o`@G0k)zn+wJjFw3_(TR-GoqVe)2OR6Ag-&9ytZU3it(u~WH(>zd9|U{a z`EWkN!cq^K0eujM1X)B=8kY5L2As$#D>+N$`xkuZGX*SV-0`L^9)fT2OqYE9;-NpJ z#omW5AD$eQK#t+$z_0H8#%cup6fALRPQnYUm6-~^ji29|A?}3ySVqKlN#ihz}n0N(z zOCsKq93H#^?2_wd=96v~$@sGs$SDdT%M}$yRtEd3^0Y*@HE<%qZE&oUk2loXZ$QWi z6)_CrPbw-SR>7KgE+ofq{OEU0PD90^%;Cgm;U= z_fvE)?lAPW2o5`4JV?d8xTg7+Opvd*h;*?T_a`^6MI=@njjVu$u`i&(3}T^RbUqqk z6Bvzzm!(0fKLy`ne@edIpUP$&ngf?2HAAitA-WGdWv%K8fA~FKE{4fw$4AS>VC816 zydx?>%Zdnd5tg5vCZSjDcXM=VfoxDdF&N&PN>{D0>$j?aqDF2j4j0gd+)-p{Op!NR zVLyT=QC@ysDXKx%cCWB9LiLy~@={MF%Ey7PE-7MBDZJp4igg3rnI*@aCPXKG5%;W9 zV%OR?CLz`QzE5@+v(bM@6z)bX9ysIg^2p+8o3))PEPf?vPSPs{) zscmPO^7V@ms8&3X@KLq}b2~4Y+JkR2_ql=eXE%^wRf`7_U3EN=wyrXe;LAfW4{}I> zso&LReWY%v&!z>Y2<0KBcqoCDi|=_yhEg1u#zuK>NHYXR&M5n#Bjws_DsBTtR#%y1)JFTpXjpDCA%lI1{SFY~`Fn8Ks?W6V$ZhHF&wPlY~+Q*0m z#T+`4W7W-tX&>`L9^9ElhFHu!vX2q>tbNp=9cl!pxiq)%u1YFmk%&+e1`!czP4bc3 z0Ed3Iu5KSQb|}9uPVtuPw`M->f(@KM;rS>A8Qub_aDJTnV1`gQ^8<9K-UN-ab! zWno(jm2gsQBq+q4*$1=NTSO3BEF@x9dE z!^O4s-g+}h8YfI_F=ENqn>I=gRf>f#l7qI>)`gjY3u?B&SFHWVp}q<2mY@dm;x~%$ z=D_3y{ES#%d{*x{H*V36TvWrlqe?ESvD;qTRf%dOHWr-+D`*B64#Yl78szTM$aSM9 zScc0_QuNHn_vvIyAN>bu6umZp(uysJJq)O87kJ895Xw$0h&C^KvgI$%9w3L>15m{a zs=062iu)m3wKD#^48<&cw<%n8xX93n<~?AQTSb(Q8t9jCbqI-BV6dhuE6AoJx#X=0 zS)+~dHd!!X$WTpm5-huB|;mHSA3;k_jshe!Cq_pq;ZbC`KxrvniMeWdh5(` zFLy~bimaXbwNk=%5m8vO0w0tM zfmzcSODXtdeOytdOW< zbDhj~NO@w}5<$}z?_oLJ>iZUbi*(j6j{dbG<$2&AE zK=vV@zSM?llo@>k!5{CqK9Mgy=3gM$&Ig;tCcNs|j@%K=`1e)p2{oCl?+>*RzlJRu zccAse?zvr)dS>~#`U}ph!R-`#wWZ#x*)6#3t9Ug?PuCN{3V}@4tHIg3H1E~$9R4ne z<{C@=M{^p?{0=$b12-&@0k*I(ULv>Vm({?d*sZbVep$_LQ?bRO=E$dmUMgbEOI9tH zhDe+@bel>?d*ooiAZMTWVNA4d5f|2UdMc4$v>JeH5DJG_a4@nOpu0ff0K3$+$SSjq znQf{O_7pZuGOZB&ksLL2A+J|3vpi5j2|5!3K( zci|FE>1vI9gMTp#mPkd;upuB_%%7e);Dn}=BR1FjO(tcd<`0!9Hh)XYa>hg(6V8~> z`sDM@MryEuAukIHc_Y&jl{=?OUY=11d8y^$%h_GH%GEFXB?q-W@TdqV5Jincmb^zD zpcBNSVwae|e<+sG&PiQR=`@XcAWfH`ZmB&TqGFSA5#kvXh8v=vJhKxE%sCAxozpZ@?0rsr5hzBH;urO^t$w9xE>IdkNgXVu+xVAhk;-oTTJv4_o* zc2SY^YeKpRiMpvL)dX3<$(*RoDU(V{#r->!vda{!P;z(&)A=IjB&+xfciV5o zv99P!sHa;$0LkT?%_~0QM+vz^h1d5HMzdE0a7{A!3 zh69qe9a~iKsbKInext60cO9gnqLOx(Dsrfs`WZSlSDG$U8ZkGZFj*19K^ca=ek(^L zH%Bjk?V`w`R=(IE@~UvC95TpOaqdIvTI5i}XME&z0~T_jb@tbNG+G!$*2kb`@N#;( z5;j!cAy{pvjq!%O%%EVBp#0-d&%C`KpfIubveJ;Zh>;*zbg+o}u~@Bx%y?aoIlnsK z7vokt=Mve&s4&{PxVJ?wFri|)(2xb`N_!Zw$lAkj`rO;Ym_=j{BNml97wn;&>co0% z7_X=tAJ0`TGKLZ7tTCjnz!+kl3PsF+LE~+EW0gOpw{c^*g`ZF420G`D{%+0|=FW=e zzn!M1#2?3y7VC$zpw6|Z^*cl)2xXsE|2^x6K^H#J=>&F&wT$TS z%nI5NEhB&KiB3jDAz}f;U_9P_%NT#4Q+J04V;O0mhi(~h1YuJxBeJSxRHGV>xru}Z zu*b;yeHzu(7zpxW781m$uCfyaT*@aU^_4P}f~+8kjm1jL+hSv*AU84#g*H~}FnAjq znlzw6FZ>4QrWB?E%Llko%l?%Nx-~)n3I;t|Ct6{nTb>gM(XF$KE_`+N>0oQ0-~nTU z?(TZ)mASidb3ZH>`jUbEfW!STWMcC1rdfr_Kh&B07l&Z-WrA9_RTYzuiNpV%$%k53 zHTkd)`Fn?2al;S26?Xu^S$9A&{WILbXlvIcP}a5C!MFp|aueJERw_2t9U$wbx&vfY zcc7j`miJsF3)joW$S{bbQCTWO)*sN5ta3m9fCTX*E3GHNr5Hv%=8Q|u6mbAp_Iy;H z!LeW_{I)n2hPUA(S#A%a(6RXS_9&-oRfT!f%6MDG ze_$1*4PskHzK6i2sFHP!m2%=7MJDLMj#tP@H)UYs@F=ET++T5mMxrp_9bq6xG<8$P zzgvk%m?K1JZH;P<`Iuw}&v)syXQa3KVyVto(I1tY-120xe73x|ipJ=QJL(Yh1_3s^Ty}F} z#fvzySp3*xf>93s>tIZzs#0kw2|A5>^Dz+;%}uSj0gIP-ULJ*@cvomBs(+Fthiw8U z&g`<7RvI_`vRKR_S{93XgjI-J6PCpa3?5kX`CRRyb+L$bc3n(23B>YXt3cY%-pT$< zkZ9fp)5t?zQp_MW3AB;w?D;y5u8R%uGeJ9eCsJ&@oCC@^k=#CeexhVQEF-(^&%3^a zVuJKPl8X8N8hch+773-L5SHT z`@(HztV0L|V_im{ibgn$4#Gi%jq#Wr>%4+yxv{>+o=wM-V9(!4XqFR!8ct%6tIT9* zt;{|wt4U}zqLnq}lQEuYk#yS%4C9>3Y;PddjY{7elr>mLZ{a@Vz_O$%p|_T0OO_2` zDOn7SDm6LjPwcw(R6M8$f(Ix@jvTFY=M_*H*0aD`iP(#*)f?z%Z>{73SC=B$+INvd zJNa$^j=^exSHXXy+(gk(U+69s&Av8fQmU@5NgN8fx=pyP5v%cc807$@eW9yq)`g-< zSd4xJF`GPz6AyYi1xHJZ1FFSv*Y>3pyD7Izm4Hf?5~ZWT3Ii(}P+cF=*pm`a;W_-h zJ~Fv+o?>5i8ygt%Qdgl%#lZ>){$LlibZVY2Hc?0}r2hd>1hTS2ZrIQ9daj0WUMx)k1o`N~yu~K{>Y;E|)ik^;-gnb_>5ytCc zTLP>>)elx{>0&Hlja9O8Bob8#KgPSXEC(XBdQv5vYuCLo`@JD28Q1aOc6AYtx7eRT z;*S{P)R#NI#NQ@H@VUY4A?KH1t|8|o*5aaN?mGh%ue6M#4|1-ku@hMJA5xYM##>W* z;IpE2i9PVC?Tc18M%YP5Bx7F_ZI?v)OSu>r2HysAD5r>sfSvNde(0D4b$z5fRV|5p z?rVGgV6J{vhb<4^?^30Nv{|88m1?bNL|dyrBgU8ttPyF{zHCIQI)q|;M5;O?ETV`s zVo_;pHg!-)5frnY^ookeMy4Eh*s+x;0R~I*QCu3C#%~u%WU2|$DOEclmZ@q)^aGau z_=+3^r2>Z)66a`K2%0zd?oP3raCdW|Ywm5O;`I+6snGS0=g`T{r`q3|P@g&pzpX4S zggbo=o10+VR=HP4!J^nzvf_DH$p%Z~kuNmeMR!^CUG9$*#ja8(pOLEsD%_3KcY>~N(zzw`E$DsB*s83UGxXJFyo zy8>G?Mc!x-x2RJ?=Y;%w0y(eEutYsd)bCl3qWvD;myn)`JW4!?al&~yk$atIj71V@Zro#Ka{aI{IqxhXcgbX(D&d@ScsPc=lhoiUUzN)OE@_MF{wb_Px^}T1VeU{6I_i3Zj5$t@^DMGPA+YeF zW6XkfMW>6AbSrx`7=jYj0oTZ^RnP@Z2nPzQ?+>w8^}9v!9#0%L z4q`zwZYb?cMpg`(<&8m6X>ddBDE-m{0I}W>2>xbYp^00lraAg?zyaQV-`U%jjmMMW zl_Qfzi=Z=6J@;KAUDXxen_Uo;33BuSJ6KOAcQni@mk48-|3c&1@}-#5zv4X?2VS zdCd~$HA>;n+hM54YQBC51JAK!6+U#~Xo>tXthsI#5aF_^VE5Yqi|3SnGC|^kS%& zzU2e?K%i^OBFl=xWt|U&W2#KSh-lfV8b_!*lqzaWp~}iNX7vN8AD*KD2%)mpPcrIw zux49oCu*ZBz*0MX4m{%8%lag8gR@&~t*9!sz%D>?UTsoZS9Ox#LlwkHBGelOCwW45 z|GdrxQV`}yZ#d_O$`?CF#u#>vB&WCQ8ml-*^kL>`ZV*bbb0lBy9Q_N`tdG=9f)-IX zP|mlpnL#iWQ<&7uz!sWxAACd5Z(aR}yd^jyG22l*WP)-QaZaNa5KrMg7BI_m9Xn=+Hk}->DfhA&5*}cI_Rwypm@>!{6%$B1~y<@~S>m4;_ z7IlRh_>r!QDtZha*|Q%{A4JToHBrM5{cw|iyEa};aighf9Gn?VjDxeEueCN+*F&C1 zZQXjvR{1>!f870l+;E3^&kc96M&YY*HjIB~mEjHpwAwCb$_|57NA|TFv(RyIb>u4E zAJ5@$_S;}p4{C`17wsN^MX^1}e3s6?Kg$M-njoLnP3mEXaaQ4qKTM~y;K+P{0TMY1 zf}NM68v0>6on?s=ih^xqgG?lwHy<1akV?gph}5-cfU}Knc}Zjd?t@qoLB9t%LgTYy zpdCSb!oaPnj1Yw%!fLIDx>*pN3yfs@9aJGWSJvfSa%RJN|FFs;Vi08orT#tir#3`X zXA`SOK5KCFsJt@5iPVvgL%a^4X9tBTBfBtCv~s?qpRp9J0Iw=n^#qwkhy02N6-|#eZ0CYK><*63`+??*<)b*Vb;zjT z@6I|F>Q}bUDxxjjTh%B%vW{Sti-K807hI`>#q87uSNa1*$mWcyw~peF^eD4t3lS2= zbBK^K-(+3^>GEcA1J zVN$yX*|RTR4{&s3>yMW-?lJ8)2BEk`b(ke3CsTTO$RmPuSS z2GYml0psXmWM=wyTT!3wH)Xj%2LN9?4)}fFl`l9s`GNVVj(goztqc zwiPvYm&$x&4NyB3#e$I#eNhq%s=CSxSYc>Iv7o9()rGjB?U02t7s?mnWQC;Y>{K@E zmYmqLQQ_M>;U9uR7dRzX#X_fqd6~=wBwrL1zHKvqzAst0TUNA97J|aOopu3XQMkCa zdbpTdI4JsPKmA~>JrB!oKZ%1I%QfUXam5%j;X)$*=rZC4D1md9{H|$h_sp*Oeg0?G z{sDg=BMDsY*n&0_835~dWF zEQQnU{G97(+=-`zuA(q9bQGmdfHMO~<7g~h3dqa^q6Z{Xlgoth=rWz@GGUP8?=t&K zjACXg7CuCjXp{d!h1f1HLNrIr>~t^;7GI4O_@ThU`+==4zv9_qx6bbH%dg(8vm3<# zAYbTEXBx9^y?D7K@7BR8=ho%xDB0zbO1F+|ZW#Ls0ox2k+T`Vu+}Ba0nFFu1==&tu z!zW=H0t#UR>Q(SLlmWPhh1$wrWs=hs+t3GM9;0(@VdS*d^#;p~b>pwta>CI(c|8<) zQzIKb`OVQtupBZm3+eg-KOm-(@u*HtA{I;?Gz;lJujHF@0AAK$a!5)l!mJ#P-dqRX~?-ELJZ zIvj51<&+_rCVy;#^^v-XpeqMMr2-VqIMiiCGY+tFmKKt+dQ7c@jakHvAf2bmkfdt~ zisxRbc#Eb9c09Wgq$SGAfIBUrCN=-LC6Pq2^%DCcuUdwmMRDWJH)R(Gd+JJB%2OfV0-aiH|kNjSAdkx)h{-UD#)>hhtG_ zJ#f=okC;W)dN>x9$`h=ISAeis9ka_?567<1dZ0(4M)_~h`Q2`3Jv3nu){i`+WX341hx`0Et&+j19(j4H546|~Y}xV)8z*+p@9sOVz3beb9)Iw*?1m~1 zH6f?zgl8(P1c5*R23f`~4n4c5fSn>~IJoT6m`#4h8qeWx_H7i=3_Y(s(q_doxv-Ob z<=usN`+D~(MhZF~Ub%tx%IXVs$koiHF;J7hFjF&`!G-r^8q5ihhdqy0Vh%JLBW-e` zKb7u80H)Mx(XKEK7W)%$a-(F2h(w4h$~`blU?nmLs|2VFcyZW>#EW?0fi#@W()?0D zw9n?hQwxU0fn(+^9lvkyyBzscW+IgzhXdheH%)l4Isldm_^vdur_*L5(`)J*3hNNI184c0e(kTn}YYGq{>@3#7}IKqbI zE&Kr7#lmA9gK_f)a}?)Bm~h~LmArq4VqbnrLJN2;)J)Zr4iS5%uHaCO|-4pEH2oqTG1Gd5BmwU606 z()73#|Akj6g+GmflT3Pej!F~WN^&~I!6pq5zoc)J=pb~8%x8o~&<@i7La=X>bg;7q zi`5!rKVPey!9gs5=i#M3Bp#IfDB}&0G(h;ONzu{g=IZv8!tT|*#u~p4k+XR)p)gbf z*({@^Jj8}En^ zF-gKVGOQMApe%ZfGp@N-5yn95ybUx=&8`PkVx2F}60IUJ~CYrE;lQR*#BfTk+K=vys zJ`xBY`f!8TM*@MSR8GveN zqn#p@;Ix)JMcHYYP_*#JO7>MGgjOk4de?|u*1M7&juDAH zhT-vgpY^UHhYhCDd)Gm{Nuf1~ysPdQWj+m)^RCWsxSgSb5XRk#%|0Wsbw2K~cdXgx zo!~mv;Z`mi@|6kdAI$R*|0|atK(|x=?$3UZ6Lg{8bhMA3(9)i8LM&tlzh=^4rZ%-t zY@Rxy1(!A0dvcfUNiFi6*3!m2b;u(m9;(MfpgYd!;GGgUxGUToh7aX8x3^DjKe45? zxvgnZb21!n5Vy3QIN2vOAV1c26NVY&?OUJa1=JsSu1P>=pZk^EFK4U_2$H`MC zPf4~iTezeSv}x+3=C*0c=X%eg0k&MB9*7(VjCQWX$*V~}L zNzD^lnv!=Qj@ME&M@Ok$J809>9p3VX@Ub| zXy&O+t<##*6jC~gt(ie+YHdwxka9xP)bS_zlv+exlO|7SPU|3)*2xo3YHFL%+ML$o zm+3m1TTxQ;gc+?(Z4;+8O>BOzynj$K3wnFz^mfjp?#K%X2p=)@$w{=xrhN{VF3qNV z%RPlBYwK*<4>8^2Q||irK9@^*8BFc;YKSr-jYVYp@b>e-Ky8PpyRgw~= zovlyR*14z7*Qe_6$EAG$dTVOywWMntXJ6M(K}VG{>Qh@|YjBT$&eiGr(Q}lLeeP)} zvCGZ+hCAi>d0*OYscV^&#kyR|`&^2b*D<-2xljUIuC2#peIm%>E6^fW#_hTM4`_bZ z15ZM8$gdW^^ynn_dWxuky&(V9);QTrfQ4|+oEXu^<3Z*o4_m9Fyl%bQQ{50zjelY; zG^eJnrlwxyKAk)$#afp#O>`^dSRgq}ZH@NmsiKdz-mX@ys8vbtUtl@1ZCb{?NI{u( zp|5TN50~P4b_@m{(`-w&6Zxj!ci+`~v6N$F z7@k2-s=m#Tp5%R(V^%KZRq5OCL@zD6=D!q;4(+~z6_fsQWt~pFhx9puY|E!}{2;|% zeHi_iU<-cYgcf|~O@35s^11Krn%U21N_C~W1TV?q=2m86SO3(mi~E}|?#GWwPU-2M zk4I$Q1=-Z$F?>M^#&|Q+JiqhYxm~Aq&!5$Ek!6zBB{l9YxQw6M+1J$S{oePVAYvun+Ap3BGeiHk&im)}Xa# z{v4kvf4kkc6itBOD{`OK(>u%O))o#kEqyIBd**k~)M`fQuGLa~O&^8lZMu~V7|LxG zNrRcxbD)iZ(mO@ zYk($bR(u)al0K-*lukIruKupxzLxp3dn^xXtFr=({_Qy6XR$4{H8{Dk$m5VUbz4vI z?3_*8&Qsfa>Ybk2*;BiCYA;Xi?Wuh{wXdh%<*6e`QARWRX7QJL(H(5Y+^*UEAmnFz z@o$~!?VfWUQ`~R$+8iA%XEwv?k;Tl5?LU`nQ)f0uZ<#F#V+dmbX(M4*!afAXe~_xBHR6mc z9ZA@duqVJAPU<+qIKo82dkE(MOb@B|ky=UW22%W9c={x%VQlMG0MkV3WI(cn)J>$m zMd~pC30E$W07&>bkF*VHl&&W{Mc9(t z{<{Ivg9!5omjjXy5pE>hLAVQG9tWg1V#PcC5@8#}{^==%b%eVJ2vJRX6z63NNqq>A ze3jHsnD#%UMsS^O3LrTHke)}XhtNy-G}FFD>d&O!Bz4G0P$vSCOG$m0)J>$GC$$6K zuS!lQEGK*qkp7a?Ur4D!(I@^2=_=1JW}IiwPSDza=~mNZufY z&-|OD5s)5DI1OO#CiM{E7lh{sjToBgIKo`Qb%fgh=0QO6LtdVaHK}wy;cCKK!j}o( zB-G=;UAhC|5W-1>_Y-a=JVy8*!p`piyob<7c#Uul#(jDLVM~nrbQi+;ge@@m(`yKC z5DtL_NSg^?pe=X`ki5vtNjm_(O}G!HA$^@NZzsUkjesY126XNM_&s6wT>-6x)r98= zlXe5ETL9@d39k_j-W||Q_$1+oJ@Ck%0cpA?U^L+x!fJrI9gu9`<-Mf7L)aOHC^?pJ zCLp~AU_MRin}kF62FwGP50m;F;k&$ij_@ksO{O)`bTtE#4nR7Gm)DW{8L3hGf|?F6 zOGy2S)ad;HPZEyYA20=wo<*vY)O=F66Yc;ccQNf-q#h(ZO{hNrusa}qA7K%|{3qeN zgh!b6dqR33V1L3_3Eu*kUjUL{^YV|Ro+q4q5MVYST?sH>CiN&`+`)iL0cJU=4TK-@ z@^wP(A%GEp^mtO^0m&)6?BeCMq<%uG;ZRUh0p=RQ^@jnTCDgtPH?{Z}#V~+sr1u!Q7l4f4Ek(x&83V>Nl>Q2Hw zN8)lSVJ4v$kS-xS$je6n$&dr=0m4;)*5e8OsgIdeSV4#J~=^yj30P3l=v2TcGR21t$oq~l0UB+TUH zJ%on==4qxq!^^*sdX3a>&A9PyKsuf9C}G%%NZSRFjw3YzkhJr1HZPBx2v|Y*A|Sn+ z)V-u0A~otHz-U0S4Itf#)E=a+BrFD)FEH(kyu5?dJ*55!Flh_^ZzL=wJP0t40Fs~c z@_Akke-EgA2ox>rWMdj_$VMNJ3PA0WAzm-q1U52Us@3$Q!D98c;j!efNt zXCrM_K-xsA8IYX9%Pztfn06njmq=|p19$fYm`eyhA?$Sy(vAU`<)l6fNdHFIw-afT z0m-?f76Z~xkopvG9RcPDKyoxM z$CG*wsf7S@J*is=J9Yu40?g@vWEL+k=H+Iy0q-Sz5RhI^Y8j~;Nd2DhM?mstroBY! z4N|Ag0n7%ND*(w=yj( zKP5E27ilL0()SWp^K!rQ0UssY2uN=u^;J^;MXGi#U>G170Z6wdwLPhYgsTZ(1(-)j zy+YW29^g2_H30KPQg4z<=OgbHfOI#)WrXVpUnKmHa6}KDI|h)p5q?kDe*xfFfH@VA zoWaX;Np%yx!^@WeX4D0sCJ{bO7}E=AC47*ujPMxYH-zo_kmE2yGa%^zq;q(A9jVWd zdQj5(K`mJbc!4nNLfjn#Fk?yWLFxj+LO^mc)2<}-5yH*9thorV6~OEVNDk!Xk))0% ztmEaw0P{4d+KT}f621&D-y?O{C4gm@;&K%r`3xYvi?GA{0M`;;2bf=81~~ftfObGS zgVan?3rMXe+zCj&&b0eTJw*5uFHgH1FdJa503=uOauKOzgy(s=;|Fl}2tYcGa6cir z0%_X=(ql=TO6n?79|j~Vc=>rk=}M$MN0|6Qzzje-m(&7M?gS|hCN*vm zs0o0i9gxl@+($V0I>3Jb%+((Q{EF}jAg#F`R0)u7P3m;QbU-qLY3GsZAzVkeh43IC zJzz0lB4HNc0>T#n<~~4jKQF&e>ZgQ5m*8?Hz`UQ-^@KHq5laCl0L*McKQGr19^>UR zq#Bli+KuooKr$YXUPlCyX@o76nQgS>nVU`F4_hY6o1{1RYZB{k;LpvD4{Jpt)4yzC@(38_yI ze#*<|NsYb<)b)g)0L+u5o&_Y0pTXrf2;1EZI0TR$Pij1=DWq;B+zd!Q&$Qb~-9`8* zFOU2zU?RYD0+Lz0oJXpk)F%PvE>b@ww0sV56~KIg)P1BL03?s|@=v_n;`4wX5DxkR z;3Pmgjno;WW|K;90n`JM;ed22Qe#P-PqfzDj8O3Sc%M z?IU#&sjEpnKzJCCJjS#qNd21Bgxdif05cDeEa2rOq^=D@v@)PB2r%_Rlfn$v4C_M;WLCkGwpd&=^e;>IKcdnaOl?nCj-*c zNlho!O=>;iPC)W?rrk&CA;L4fJoiq(j|n60!gHel$&RFU2Bb%kI*Zg3q)xdT@KwS? zfbEOi;2c0YkJJUE zE+_RM;SoUceWpE0>NkYf3EO@P&;>|8LAVuQzRR=+dHF+9PZDasjmu;1!`*3sw2$x< zVW;mP?I=KcCaHc>OG&K+BscN$PQr79d>WA4%(UA`-9h*PFHiglU^(G7 zfO!y*Jj~0VkopDT$j1Tgfb?>JSxxE=!ofcUoJY6}U{;d)8mS+U`WxZMCjhevw*t)f z0Lc@)e3o#|lYq+!Ujvv&0LkOL?D!dA6~OHKbHJs9rGWI4q&`jR%cNc+B)`D_wSaVU MQd<)aB(wnj4?UUG^8f$< diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.rul b/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.rul deleted file mode 100644 index 0db8417a62c..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.rul +++ /dev/null @@ -1,641 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////// -// -// IIIIIII SSSSSS -// II SS InstallShield (R) -// II SSSSSS (c) 1996-1997, InstallShield Software Corporation -// II SS (c) 1990-1996, InstallShield Corporation -// IIIIIII SSSSSS All Rights Reserved. -// -// -// This code is generated as a starting setup template. You should -// modify it to provide all necessary steps for your setup. -// -// -// File Name: Setup.rul -// -// Description: InstallShield script -// -// Comments: This template script performs a basic setup on a -// Windows 95 or Windows NT 4.0 platform. With minor -// modifications, this template can be adapted to create -// new, customized setups. -// -//////////////////////////////////////////////////////////////////////////////// - - - // Include header file -#include "sdlang.h" -#include "sddialog.h" - -////////////////////// string defines //////////////////////////// - -#define UNINST_LOGFILE_NAME "Uninst.isu" - -//////////////////// installation declarations /////////////////// - - // ----- DLL prototypes ----- - - - // your DLL prototypes - - - // ---- script prototypes ----- - - // generated - prototype ShowDialogs(); - prototype MoveFileData(); - prototype HandleMoveDataError( NUMBER ); - prototype ProcessBeforeDataMove(); - prototype ProcessAfterDataMove(); - prototype SetupRegistry(); - prototype SetupFolders(); - prototype CleanUpInstall(); - prototype SetupInstall(); - prototype SetupScreen(); - prototype CheckRequirements(); - prototype DialogShowSdWelcome(); - prototype DialogShowSdShowInfoList(); - prototype DialogShowSdAskDestPath(); - prototype DialogShowSdSetupType(); - prototype DialogShowSdComponentDialog2(); - prototype DialogShowSdFinishReboot(); - - // your prototypes - - - // ----- global variables ------ - - // generated - BOOL bWinNT, bIsShellExplorer, bInstallAborted, bIs32BitSetup; - STRING svDir; - STRING svName, svCompany, svSerial; - STRING szAppPath; - STRING svSetupType; - - - // your global variables - - -/////////////////////////////////////////////////////////////////////////////// -// -// MAIN PROGRAM -// -// The setup begins here by hiding the visible setup -// window. This is done to allow all the titles, images, etc. to -// be established before showing the main window. The following -// logic then performs the setup in a series of steps. -// -/////////////////////////////////////////////////////////////////////////////// -program - Disable( BACKGROUND ); - - CheckRequirements(); - - SetupInstall(); - - SetupScreen(); - - if (ShowDialogs()<0) goto end_install; - - if (ProcessBeforeDataMove()<0) goto end_install; - - if (MoveFileData()<0) goto end_install; - - if (ProcessAfterDataMove()<0) goto end_install; - - if (SetupRegistry()<0) goto end_install; - - if (SetupFolders()<0) goto end_install; - - - end_install: - - CleanUpInstall(); - - // If an unrecoverable error occurred, clean up the partial installation. - // Otherwise, exit normally. - - if (bInstallAborted) then - abort; - endif; - -endprogram - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: ShowDialogs // -// // -// Purpose: This function manages the display and navigation // -// the standard dialogs that exist in a setup. // -// // -/////////////////////////////////////////////////////////////////////////////// -function ShowDialogs() - NUMBER nResult; - begin - - Dlg_Start: - // beginning of dialogs label - - Dlg_SdWelcome: - nResult = DialogShowSdWelcome(); - if (nResult = BACK) goto Dlg_Start; - - Dlg_SdShowInfoList: - nResult = DialogShowSdShowInfoList(); - if (nResult = BACK) goto Dlg_SdWelcome; - - Dlg_SdAskDestPath: - nResult = DialogShowSdAskDestPath(); - if (nResult = BACK) goto Dlg_SdShowInfoList; - - Dlg_SdSetupType: - nResult = DialogShowSdSetupType(); - if (nResult = BACK) goto Dlg_SdAskDestPath; - - Dlg_SdComponentDialog2: - if ((nResult = BACK) && (svSetupType != "Custom") && (svSetupType != "")) then - goto Dlg_SdSetupType; - endif; - nResult = DialogShowSdComponentDialog2(); - if (nResult = BACK) goto Dlg_SdSetupType; - - return 0; - - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: ProcessBeforeDataMove // -// // -// Purpose: This function performs any necessary operations prior to the // -// actual data move operation. // -// // -/////////////////////////////////////////////////////////////////////////////// -function ProcessBeforeDataMove() - STRING svLogFile; - NUMBER nResult; - begin - - InstallationInfo( @COMPANY_NAME, @PRODUCT_NAME, @PRODUCT_VERSION, @PRODUCT_KEY ); - - svLogFile = UNINST_LOGFILE_NAME; - - nResult = DeinstallStart( svDir, svLogFile, @UNINST_KEY, 0 ); - if (nResult < 0) then - MessageBox( @ERROR_UNINSTSETUP, WARNING ); - endif; - - szAppPath = TARGETDIR; // TODO : if your application .exe is in a subdir of TARGETDIR then add subdir - - if ((bIs32BitSetup) && (bIsShellExplorer)) then - RegDBSetItem( REGDB_APPPATH, szAppPath ); - RegDBSetItem( REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY ); - RegDBSetItem( REGDB_UNINSTALL_NAME, @UNINST_DISPLAY_NAME ); - endif; - - // TODO : update any items you want to process before moving the data - // - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: MoveFileData // -// // -// Purpose: This function handles the data movement for // -// the setup. // -// // -/////////////////////////////////////////////////////////////////////////////// -function MoveFileData() - NUMBER nResult, nDisk; - begin - - nDisk = 1; - SetStatusWindow( 0, "" ); - Disable( DIALOGCACHE ); - Enable( STATUS ); - StatusUpdate( ON, 100 ); - nResult = ComponentMoveData( MEDIA, nDisk, 0 ); - - HandleMoveDataError( nResult ); - - Disable( STATUS ); - - return nResult; - - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: HandleMoveDataError // -// // -// Purpose: This function handles the error (if any) during the move data // -// operation. // -// // -/////////////////////////////////////////////////////////////////////////////// -function HandleMoveDataError( nResult ) - STRING szErrMsg, svComponent , svFileGroup , svFile; - begin - - svComponent = ""; - svFileGroup = ""; - svFile = ""; - - switch (nResult) - case 0: - return 0; - default: - ComponentError ( MEDIA , svComponent , svFileGroup , svFile , nResult ); - szErrMsg = @ERROR_MOVEDATA + "\n\n" + - @ERROR_COMPONENT + " " + svComponent + "\n" + - @ERROR_FILEGROUP + " " + svFileGroup + "\n" + - @ERROR_FILE + " " + svFile; - SprintfBox( SEVERE, @TITLE_CAPTIONBAR, szErrMsg, nResult ); - bInstallAborted = TRUE; - return nResult; - endswitch; - - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: ProcessAfterDataMove // -// // -// Purpose: This function performs any necessary operations needed after // -// all data has been moved. // -// // -/////////////////////////////////////////////////////////////////////////////// -function ProcessAfterDataMove() - begin - - // TODO : update self-registered files and other processes that - // should be performed after the data has been moved. - - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: SetupRegistry // -// // -// Purpose: This function makes the registry entries for this setup. // -// // -/////////////////////////////////////////////////////////////////////////////// -function SetupRegistry() - NUMBER nResult; - - begin - - // TODO : Add all your registry entry keys here - // - // - // RegDBCreateKeyEx, RegDBSetKeyValueEx.... - // - - nResult = CreateRegistrySet( "" ); - - return nResult; - end; - -/////////////////////////////////////////////////////////////////////////////// -// -// Function: SetupFolders -// -// Purpose: This function creates all the folders and shortcuts for the -// setup. This includes program groups and items for Windows 3.1. -// -/////////////////////////////////////////////////////////////////////////////// -function SetupFolders() - NUMBER nResult; - - begin - - - // TODO : Add all your folder (program group) along with shortcuts (program items) - // - // - // CreateProgramFolder, AddFolderIcon.... - // - - nResult = CreateShellObjects( "" ); - - return nResult; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: CleanUpInstall // -// // -// Purpose: This cleans up the setup. Anything that should // -// be released or deleted at the end of the setup should // -// be done here. // -// // -/////////////////////////////////////////////////////////////////////////////// -function CleanUpInstall() - begin - - - if (bInstallAborted) then - return 0; - endif; - - DialogShowSdFinishReboot(); - - if (BATCH_INSTALL) then // ensure locked files are properly written - CommitSharedFiles(0); - endif; - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: SetupInstall // -// // -// Purpose: This will setup the installation. Any general initialization // -// needed for the installation should be performed here. // -// // -/////////////////////////////////////////////////////////////////////////////// -function SetupInstall() - begin - - Enable( CORECOMPONENTHANDLING ); - - bInstallAborted = FALSE; - - if (bIs32BitSetup) then - svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME; - else - svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME16 ^ @PRODUCT_NAME16; // use shorten names - endif; - - TARGETDIR = svDir; - - SdProductName( @PRODUCT_NAME ); - - Enable( DIALOGCACHE ); - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: SetupScreen // -// // -// Purpose: This function establishes the screen look. This includes // -// colors, fonts, and text to be displayed. // -// // -/////////////////////////////////////////////////////////////////////////////// -function SetupScreen() - begin - - Enable( FULLWINDOWMODE ); - Enable( INDVFILESTATUS ); - SetTitle( @TITLE_MAIN, 24, WHITE ); - - SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // Caption bar text. - - Enable( BACKGROUND ); - - Delay( 1 ); - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: CheckRequirements // -// // -// Purpose: This function checks all minimum requirements for the // -// application being installed. If any fail, then the user // -// is informed and the setup is terminated. // -// // -/////////////////////////////////////////////////////////////////////////////// -function CheckRequirements() - NUMBER nvDx, nvDy, nvResult; - STRING svResult; - - begin - - bWinNT = FALSE; - bIsShellExplorer = FALSE; - - // Check screen resolution. - GetExtents( nvDx, nvDy ); - - if (nvDy < 480) then - MessageBox( @ERROR_VGARESOLUTION, WARNING ); - abort; - endif; - - // set 'setup' operation mode - bIs32BitSetup = TRUE; - GetSystemInfo( ISTYPE, nvResult, svResult ); - if (nvResult = 16) then - bIs32BitSetup = FALSE; // running 16-bit setup - return 0; // no additional information required - endif; - - // --- 32-bit testing after this point --- - - // Determine the target system's operating system. - GetSystemInfo( OS, nvResult, svResult ); - - if (nvResult = IS_WINDOWSNT) then - // Running Windows NT. - bWinNT = TRUE; - - // Check to see if the shell being used is EXPLORER shell. - if (GetSystemInfo( OSMAJOR, nvResult, svResult ) = 0) then - if (nvResult >= 4) then - bIsShellExplorer = TRUE; - endif; - endif; - - elseif (nvResult = IS_WINDOWS95 ) then - bIsShellExplorer = TRUE; - - endif; - -end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdWelcome // -// // -// Purpose: This function handles the standard welcome dialog. // -// // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdWelcome() - NUMBER nResult; - STRING szTitle, szMsg; - begin - - szTitle = ""; - szMsg = ""; - nResult = SdWelcome( szTitle, szMsg ); - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdShowInfoList // -// // -// Purpose: This function displays the general information list dialog. // -// // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdShowInfoList() - NUMBER nResult; - LIST list; - STRING szTitle, szMsg, szFile; - begin - - szFile = SUPPORTDIR ^ "infolist.txt"; - - list = ListCreate( STRINGLIST ); - ListReadFromFile( list, szFile ); - szTitle = ""; - szMsg = " "; - nResult = SdShowInfoList( szTitle, szMsg, list ); - - ListDestroy( list ); - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdAskDestPath // -// // -// Purpose: This function asks the user for the destination directory. // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdAskDestPath() - NUMBER nResult; - STRING szTitle, szMsg; - begin - - szTitle = ""; - szMsg = ""; - nResult = SdAskDestPath( szTitle, szMsg, svDir, 0 ); - - TARGETDIR = svDir; - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdSetupType // -// // -// Purpose: This function displays the standard setup type dialog. // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdSetupType() - NUMBER nResult, nType; - STRING szTitle, szMsg; - begin - - switch (svSetupType) - case "Typical": - nType = TYPICAL; - case "Custom": - nType = CUSTOM; - case "Compact": - nType = COMPACT; - case "": - svSetupType = "Typical"; - nType = TYPICAL; - endswitch; - - szTitle = ""; - szMsg = ""; - nResult = SetupType( szTitle, szMsg, "", nType, 0 ); - - switch (nResult) - case COMPACT: - svSetupType = "Compact"; - case TYPICAL: - svSetupType = "Typical"; - case CUSTOM: - svSetupType = "Custom"; - endswitch; - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdComponentDialog2 // -// // -// Purpose: This function displays the custom component dialog. // -// // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdComponentDialog2() - NUMBER nResult; - STRING szTitle, szMsg; - begin - - if ((svSetupType != "Custom") && (svSetupType != "")) then - return 0; - endif; - - szTitle = ""; - szMsg = ""; - nResult = SdComponentDialog2( szTitle, szMsg, svDir, "" ); - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdFinishReboot // -// // -// Purpose: This function will show the last dialog of the product. // -// It will allow the user to reboot and/or show some readme text. // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdFinishReboot() - NUMBER nResult, nDefOptions; - STRING szTitle, szMsg1, szMsg2, szOption1, szOption2; - NUMBER bOpt1, bOpt2; - begin -/* - if (!BATCH_INSTALL) then - bOpt1 = FALSE; - bOpt2 = FALSE; - szMsg1 = ""; - szMsg2 = ""; - szOption1 = ""; - szOption2 = ""; - nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 ); - return 0; - endif; - - nDefOptions = SYS_BOOTMACHINE; - szTitle = ""; - szMsg1 = ""; - szMsg2 = ""; - nResult = SdFinishReboot( szTitle, szMsg1, nDefOptions, szMsg2, 0 ); -*/ - return nResult; - end; - - // --- include script file section --- - -#include "sddialog.rul" - - - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt b/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt deleted file mode 100644 index 2f561d29d81..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt +++ /dev/null @@ -1,24 +0,0 @@ -This is a release of MySQL 3.23.56 for Win32. - -NOTE: If you install MySQL in a folder other than -C:\MYSQL or you intend to start MySQL on NT/Win2000 -as a service, you must create a file named C:\MY.CNF -or \Windows\my.ini or \winnt\my.ini with the following -information:: - -[mysqld] -basedir=E:/installation-path/ -datadir=E:/data-path/ - -After your have installed MySQL, the installation -directory which contains the files named 'my-size.cnf'. -You can use this as a starting point for your own -C:\my.cnf file. - -If you have any problems, you can mail them to -win32@lists.mysql.com after you have consulted the -MySQL manual and the MySQL mailing list archive -(http://www.mysql.com/documentation/index.html) - -On behalf of the MySQL AB gang, -Michael Widenius \ No newline at end of file diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP b/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP deleted file mode 100644 index 3229d50c9bfcabefefb1341fda098d20bcc734b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15694 zcmeI3JB%Ae7{@=K-(K76_xXH&Oi7uF4k@AsrK3$jjnYv@G&D%0il|5m3XnjGA{wMf zL_$gf5>dL)5Cs$g3Mf1j1%y!e9<#Hv>lu6R&bNC-MzTHL8PERqKl43y_U_f!UVjC+ zyj%fz32PtY>kWLBpuxxK?R+3FJjmtqYZu|WZ*RcE`?ulUHv!&%s|Q!#R`B6F=isCF z&ckO{FTkx&F2PqfFT>ZjuE4!J*Wu?M?!xcCK7eOWpTLDLet}DOegpX60rajt1ohF6 zaPHGbaQ@~`aPiB>aQT}jaOK_~aQ*&YaO3-@aQo3Sxcm4Yc<|@H@Z|6R;Q90C0`lVh zg#s@W$Xx-Iz0}KVrP>I(*#|g5PdLJF9h?MS&x3RaoaIXA2p4(N7hE}BaV%I}cL;-qtVlj;-e}&Za^l2$Z)OHw_D6{(`O=TtSF@fhgG48#CUZ5I z4yV%;XV*{|iEYl7X*P&l@o}PΞYl3Pc*AWK<5_&B8evjnkZ9&L1hLEKZN3FPHtC zgCT>?5;ECe7}VFS7UP5EU_2Y7IJ*Y3T#lkl%-NFG1}ZO3c5Stn=?H{M=3C@t0UsXOLL1Rv?)sh2j;#7Uc!oV)f#O2xiD zE2oZ)!+pu!@cmHdAUoAF7Leq`#FY7(+4U4TM^10OLp^0dM#+bYeSNGaI{~k~3kxqt zxl-$WcbsD24Qp)i^?|)U>sU}>yL9MSog#v;aGGX!;QEO&v7T$E zPaHT!&ae?^&Irmrv!Gj^)NWj_3ukc$>f{1s;@8{c_Q}f`(v2f; zUxCan!Bk?WB!Y&qpi!98O1nSy9UOSbikxd5l;a=PPBqbiXYHqRLtOqP!C}X zK_KR|rPpbbhqcYmO1kKs*y@YnEHxUu?T5ZRHfe_@K_v>4g>X{t!`VcwoX&l0*buYL zn%>4Ng0n<6OtGf9@d+6{D$vor5PL@#4v5;II~yzF*h(tZX=1KqrA7tl8DQdzn=f@$ z$CtBo2@`Fq~%*lrvfEPylc z_#-C8OvNxZ6C3-JN%Hw7~(%ITmJ|$;bPq z7noXZ6%3i4bD@tEAR!PIiA;39M0e2K&!p`kHC|5(v1i{ zCh`{Wwwz8w)gu~O*Tz2|&Y2UpU!4I5U6R*zvS2xL;!cfgo(R+Hl8WFo)1Fw1gtPi^BL1w{geV-aho6HBV0Tk*Q3+gPELuAnYZSh8#I@A1)afyR diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Shell Objects/Default.shl b/VC++Files/InstallShield/3.23.XX-gpl/Shell Objects/Default.shl deleted file mode 100644 index 187cb651307..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Shell Objects/Default.shl +++ /dev/null @@ -1,12 +0,0 @@ -[Data] -Folder3= -Group0=Main -Group1=Startup -Folder0= -Folder1= -Folder2= - -[Info] -Type=ShellObject -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl b/VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl deleted file mode 100644 index 687c58b7b21..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl +++ /dev/null @@ -1,23 +0,0 @@ -[Data] -TITLE_MAIN=MySQL Servers and Clients 3.23.56 -COMPANY_NAME=MySQL AB -ERROR_COMPONENT=Component: -COMPANY_NAME16=Company -PRODUCT_VERSION=3.23.56 -ERROR_MOVEDATA=An error occurred during the move data process: %d -ERROR_FILEGROUP=File Group: -UNINST_KEY=MySQL Servers and Clients 3.23.56 -TITLE_CAPTIONBAR=MySQL Servers and Clients 3.23.56 Setup -PRODUCT_NAME16=Product -ERROR_VGARESOLUTION=This program requires VGA or better resolution. -ERROR_FILE=File: -UNINST_DISPLAY_NAME=MySQL Servers and Clients 3.23.56 -PRODUCT_KEY=yourapp.Exe -PRODUCT_NAME=MySQL Servers and Clients 3.23.56 -ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product. - -[General] -Language=0009 -Type=STRINGTABLESPECIFIC -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/String Tables/Default.shl b/VC++Files/InstallShield/3.23.XX-gpl/String Tables/Default.shl deleted file mode 100644 index d4dc4925ab1..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/String Tables/Default.shl +++ /dev/null @@ -1,74 +0,0 @@ -[TITLE_MAIN] -Comment= - -[COMPANY_NAME] -Comment= - -[ERROR_COMPONENT] -Comment= - -[COMPANY_NAME16] -Comment= - -[PRODUCT_VERSION] -Comment= - -[ERROR_MOVEDATA] -Comment= - -[ERROR_FILEGROUP] -Comment= - -[Language] -Lang0=0009 -CurrentLang=0 - -[UNINST_KEY] -Comment= - -[TITLE_CAPTIONBAR] -Comment= - -[Data] -Entry0=ERROR_VGARESOLUTION -Entry1=TITLE_MAIN -Entry2=TITLE_CAPTIONBAR -Entry3=UNINST_KEY -Entry4=UNINST_DISPLAY_NAME -Entry5=COMPANY_NAME -Entry6=PRODUCT_NAME -Entry7=PRODUCT_VERSION -Entry8=PRODUCT_KEY -Entry9=ERROR_MOVEDATA -Entry10=ERROR_UNINSTSETUP -Entry11=COMPANY_NAME16 -Entry12=PRODUCT_NAME16 -Entry13=ERROR_COMPONENT -Entry14=ERROR_FILEGROUP -Entry15=ERROR_FILE - -[PRODUCT_NAME16] -Comment= - -[ERROR_VGARESOLUTION] -Comment= - -[ERROR_FILE] -Comment= - -[General] -Type=STRINGTABLE -Version=1.00.000 - -[UNINST_DISPLAY_NAME] -Comment= - -[PRODUCT_KEY] -Comment= - -[PRODUCT_NAME] -Comment= - -[ERROR_UNINSTSETUP] -Comment= - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Build.tsb b/VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Build.tsb deleted file mode 100644 index 3949bd4c066..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Build.tsb +++ /dev/null @@ -1,56 +0,0 @@ -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[Data] -Key0= -Key1= -Key2= -Key3= -Key4= -Key5= -Key6= -Key7= -Key8= -Key9= - -[General] -Type=TEXTSUB -Version=1.00.000 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - diff --git a/VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Setup.tsb b/VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Setup.tsb deleted file mode 100644 index b0c5a509f0b..00000000000 --- a/VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Setup.tsb +++ /dev/null @@ -1,76 +0,0 @@ -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[Data] -Key0= -Key1= -Key2= -Key3= -Key4= -Key5= -Key10= -Key6= -Key11= -Key7= -Key12= -Key8= -Key13= -Key9= - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[General] -Type=TEXTSUB -Version=1.00.000 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - -[] -Value= -KeyType=4 - diff --git a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/.fgl b/VC++Files/InstallShield/3.23.XXcom/Component Definitions/.fgl deleted file mode 100644 index 81e474f9be8..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/.fgl +++ /dev/null @@ -1,37 +0,0 @@ -[General] -Type=FILELIST -Version=1.00.000 - -[topdir] -subdir0= -subdir1= -subdir2= -subdir3=USERDEFINED - -[] -DISPLAYTEXT=Windows Operating System -TYPE=TEXTSUBFIXED -subdir0=\ - -[\] -DISPLAYTEXT=Windows System Folder -TYPE=TEXTSUBFIXED - -[] -DISPLAYTEXT=Program Files Folder -TYPE=TEXTSUBFIXED -subdir0=\ - -[\] -DISPLAYTEXT=Common Files Folder -TYPE=TEXTSUBFIXED - -[] -DISPLAYTEXT=General Application Destination -TYPE=TEXTSUBFIXED - -[USERDEFINED] -DISPLAYTEXT=Script-defined Folders -TYPE=USERSTART - - diff --git a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.cdf b/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.cdf deleted file mode 100644 index f44131f754e..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.cdf +++ /dev/null @@ -1,192 +0,0 @@ -[Development] -required0=Servers -SELECTED=Yes -FILENEED=STANDARD -required1=Grant Tables -HTTPLOCATION= -STATUS=Examples, Libraries, Includes and Script files -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=Examples, Libraries, Includes and Script files -DISPLAYTEXT=Examples, Libraries, Includes and Script files -IMAGE= -DEFSELECTION=Yes -filegroup0=Development -COMMENT= -INCLUDEINBUILD=Yes -INSTALLATION=ALWAYSOVERWRITE -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[Grant Tables] -required0=Servers -SELECTED=Yes -FILENEED=CRITICAL -HTTPLOCATION= -STATUS=The Grant Tables and Core Files -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The Grant Tables and Core Files -DISPLAYTEXT=The Grant Tables and Core Files -IMAGE= -DEFSELECTION=Yes -filegroup0=Grant Tables -requiredby0=Development -COMMENT= -INCLUDEINBUILD=Yes -requiredby1=Clients and Tools -INSTALLATION=NEVEROVERWRITE -requiredby2=Documentation -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[Components] -component0=Development -component1=Grant Tables -component2=Clients and Tools -component3=Servers -component4=Documentation - -[TopComponents] -component0=Servers -component1=Clients and Tools -component2=Documentation -component3=Development -component4=Grant Tables - -[SetupType] -setuptype0=Compact -setuptype1=Typical -setuptype2=Custom - -[Servers] -SELECTED=Yes -FILENEED=CRITICAL -HTTPLOCATION= -STATUS=The MySQL Servers -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The MySQL Servers -DISPLAYTEXT=The MySQL Servers -IMAGE= -DEFSELECTION=Yes -filegroup0=Servers -requiredby0=Development -COMMENT= -INCLUDEINBUILD=Yes -requiredby1=Grant Tables -INSTALLATION=ALWAYSOVERWRITE -requiredby2=Clients and Tools -requiredby3=Documentation -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[Clients and Tools] -required0=Servers -SELECTED=Yes -FILENEED=HIGHLYRECOMMENDED -required1=Grant Tables -HTTPLOCATION= -STATUS=The MySQL clients and Maintenance Tools -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The MySQL clients and Maintenance Tools -DISPLAYTEXT=The MySQL clients and Maintenance Tools -IMAGE= -DEFSELECTION=Yes -filegroup0=Clients and Tools -COMMENT= -INCLUDEINBUILD=Yes -INSTALLATION=NEWERDATE -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - -[SetupTypeItem-Compact] -Comment= -item0=Grant Tables -item1=Clients and Tools -item2=Servers -item3=Documentation -Descrip= -DisplayText= - -[SetupTypeItem-Custom] -Comment= -item0=Development -item1=Grant Tables -item2=Clients and Tools -item3=Servers -Descrip= -item4=Documentation -DisplayText= - -[Info] -Type=CompDef -Version=1.00.000 -Name= - -[SetupTypeItem-Typical] -Comment= -item0=Development -item1=Grant Tables -item2=Clients and Tools -item3=Servers -Descrip= -item4=Documentation -DisplayText= - -[Documentation] -required0=Servers -SELECTED=Yes -FILENEED=HIGHLYRECOMMENDED -required1=Grant Tables -HTTPLOCATION= -STATUS=The MySQL Documentation with different formats -UNINSTALLABLE=Yes -TARGET= -FTPLOCATION= -VISIBLE=Yes -DESCRIPTION=The MySQL Documentation with different formats -DISPLAYTEXT=The MySQL Documentation with different formats -IMAGE= -DEFSELECTION=Yes -filegroup0=Documentation -COMMENT= -INCLUDEINBUILD=Yes -INSTALLATION=ALWAYSOVERWRITE -COMPRESSIFSEPARATE=No -MISC= -ENCRYPT=No -DISK=ANYDISK -TARGETDIRCDROM= -PASSWORD= -TARGETHIDDEN=General Application Destination - diff --git a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.fgl b/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.fgl deleted file mode 100644 index 4e20dcea4ab..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.fgl +++ /dev/null @@ -1,42 +0,0 @@ -[\] -DISPLAYTEXT=Common Files Folder -TYPE=TEXTSUBFIXED -fulldirectory= - -[\] -DISPLAYTEXT=Windows System Folder -TYPE=TEXTSUBFIXED -fulldirectory= - -[USERDEFINED] -DISPLAYTEXT=Script-defined Folders -TYPE=USERSTART -fulldirectory= - -[] -DISPLAYTEXT=Program Files Folder -SubDir0=\ -TYPE=TEXTSUBFIXED -fulldirectory= - -[] -DISPLAYTEXT=General Application Destination -TYPE=TEXTSUBFIXED -fulldirectory= - -[] -DISPLAYTEXT=Windows Operating System -SubDir0=\ -TYPE=TEXTSUBFIXED -fulldirectory= - -[TopDir] -SubDir0= -SubDir1= -SubDir2= -SubDir3=USERDEFINED - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Clients and Tools.fgl b/VC++Files/InstallShield/3.23.XXcom/File Groups/Clients and Tools.fgl deleted file mode 100644 index 7f30ff9f64b..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/File Groups/Clients and Tools.fgl +++ /dev/null @@ -1,35 +0,0 @@ -[bin] -file15=C:\mysql\bin\pack_isam.exe -file16=C:\mysql\bin\perror.exe -file0=C:\mysql\bin\isamchk.exe -file17=C:\mysql\bin\replace.exe -file1=C:\mysql\bin\myisamchk.exe -file18=C:\mysql\bin\winmysqladmin.cnt -file2=C:\mysql\bin\myisamlog.exe -file19=C:\mysql\bin\winmysqladmin.exe -file3=C:\mysql\bin\myisampack.exe -file4=C:\mysql\bin\mysql.exe -file5=C:\mysql\bin\mysqladmin.exe -file6=C:\mysql\bin\mysqlbinlog.exe -file7=C:\mysql\bin\mysqlc.exe -file8=C:\mysql\bin\mysqlcheck.exe -file9=C:\mysql\bin\mysqldump.exe -file20=C:\mysql\bin\WINMYSQLADMIN.HLP -file21=C:\mysql\bin\cygwinb19.dll -file10=C:\mysql\bin\mysqlimport.exe -fulldirectory= -file22=C:\mysql\bin\libmySQL.dll -file11=C:\mysql\bin\MySqlManager.exe -file23=C:\mysql\bin\my_print_defaults.exe -file12=C:\mysql\bin\mysqlshow.exe -file24=C:\mysql\bin\comp-err.exe -file13=C:\mysql\bin\mysqlshutdown.exe -file14=C:\mysql\bin\mysqlwatch.exe - -[TopDir] -SubDir0=bin - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf b/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf deleted file mode 100644 index 282fae9d19b..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf +++ /dev/null @@ -1,82 +0,0 @@ -[FileGroups] -group0=Development -group1=Grant Tables -group2=Clients and Tools -group3=Servers -group4=Documentation - -[Development] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Grant Tables] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Servers] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Clients and Tools] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM=0000000000000000 -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - -[Info] -Type=FileGrp -Version=1.00.000 -Name= - -[Documentation] -SELFREGISTERING=No -HTTPLOCATION= -LANGUAGE= -OPERATINGSYSTEM= -FTPLOCATION= -FILETYPE=No -INFOTYPE=Standard -COMMENT= -COMPRESS=Yes -COMPRESSDLL= -POTENTIALLY=No -MISC= - diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fgl b/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fgl deleted file mode 100644 index 94344a6ff69..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fgl +++ /dev/null @@ -1,4 +0,0 @@ -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl b/VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl deleted file mode 100644 index a1cf53f880a..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl +++ /dev/null @@ -1,190 +0,0 @@ -[bench\Data\Wisconsin] -file0=C:\mysql\bench\Data\Wisconsin\onek.data -file1=C:\mysql\bench\Data\Wisconsin\tenk.data -fulldirectory= - -[lib\debug] -file0=C:\mysql\lib\debug\libmySQL.dll -file1=C:\mysql\lib\debug\libmySQL.lib -file2=C:\mysql\lib\debug\mysqlclient.lib -file3=C:\mysql\lib\debug\zlib.lib -fulldirectory= - -[bench\output] -fulldirectory= - -[examples\libmysqltest] -file0=C:\mysql\examples\libmysqltest\myTest.c -file1=C:\mysql\examples\libmysqltest\myTest.dsp -file2=C:\mysql\examples\libmysqltest\myTest.dsw -file3=C:\mysql\examples\libmysqltest\myTest.exe -file4=C:\mysql\examples\libmysqltest\myTest.mak -file5=C:\mysql\examples\libmysqltest\myTest.ncb -file6=C:\mysql\examples\libmysqltest\myTest.opt -file7=C:\mysql\examples\libmysqltest\readme -fulldirectory= - -[include] -file0=C:\mysql\include\raid.h -file1=C:\mysql\include\errmsg.h -file2=C:\mysql\include\Libmysql.def -file3=C:\mysql\include\m_ctype.h -file4=C:\mysql\include\m_string.h -file5=C:\mysql\include\my_list.h -file6=C:\mysql\include\my_pthread.h -file7=C:\mysql\include\my_sys.h -file8=C:\mysql\include\mysql.h -file9=C:\mysql\include\mysql_com.h -file10=C:\mysql\include\mysql_version.h -fulldirectory= -file11=C:\mysql\include\mysqld_error.h -file12=C:\mysql\include\dbug.h -file13=C:\mysql\include\my_global.h -file14=C:\mysql\include\config-win.h - -[examples] -SubDir0=examples\libmysqltest -SubDir1=examples\tests -fulldirectory= - -[lib\opt] -file0=C:\mysql\lib\opt\libmySQL.dll -file1=C:\mysql\lib\opt\libmySQL.lib -file2=C:\mysql\lib\opt\mysqlclient.lib -file3=C:\mysql\lib\opt\zlib.lib -fulldirectory= - -[bench\Data] -SubDir0=bench\Data\ATIS -SubDir1=bench\Data\Wisconsin -fulldirectory= - -[bench\limits] -file15=C:\mysql\bench\limits\pg.comment -file16=C:\mysql\bench\limits\solid.cfg -file0=C:\mysql\bench\limits\access.cfg -file17=C:\mysql\bench\limits\solid-nt4.cfg -file1=C:\mysql\bench\limits\access.comment -file18=C:\mysql\bench\limits\sybase.cfg -file2=C:\mysql\bench\limits\Adabas.cfg -file3=C:\mysql\bench\limits\Adabas.comment -file4=C:\mysql\bench\limits\Db2.cfg -file5=C:\mysql\bench\limits\empress.cfg -file6=C:\mysql\bench\limits\empress.comment -file7=C:\mysql\bench\limits\Informix.cfg -file8=C:\mysql\bench\limits\Informix.comment -file9=C:\mysql\bench\limits\msql.cfg -file10=C:\mysql\bench\limits\ms-sql.cfg -fulldirectory= -file11=C:\mysql\bench\limits\Ms-sql65.cfg -file12=C:\mysql\bench\limits\mysql.cfg -file13=C:\mysql\bench\limits\oracle.cfg -file14=C:\mysql\bench\limits\pg.cfg - -[TopDir] -SubDir0=bench -SubDir1=examples -SubDir2=include -SubDir3=lib -SubDir4=scripts - -[bench] -file15=C:\mysql\bench\test-create -file16=C:\mysql\bench\test-insert -file0=C:\mysql\bench\uname.bat -file17=C:\mysql\bench\test-select -file1=C:\mysql\bench\compare-results -file18=C:\mysql\bench\test-wisconsin -file2=C:\mysql\bench\copy-db -file19=C:\mysql\bench\bench-init.pl -file3=C:\mysql\bench\crash-me -file4=C:\mysql\bench\example.bat -file5=C:\mysql\bench\print-limit-table -file6=C:\mysql\bench\pwd.bat -file7=C:\mysql\bench\Readme -SubDir0=bench\Data -file8=C:\mysql\bench\run.bat -SubDir1=bench\limits -file9=C:\mysql\bench\run-all-tests -SubDir2=bench\output -file10=C:\mysql\bench\server-cfg -fulldirectory= -file11=C:\mysql\bench\test-alter-table -file12=C:\mysql\bench\test-ATIS -file13=C:\mysql\bench\test-big-tables -file14=C:\mysql\bench\test-connect - -[examples\tests] -file15=C:\mysql\examples\tests\lock_test.res -file16=C:\mysql\examples\tests\mail_to_db.pl -file0=C:\mysql\examples\tests\unique_users.tst -file17=C:\mysql\examples\tests\table_types.pl -file1=C:\mysql\examples\tests\auto_increment.tst -file18=C:\mysql\examples\tests\test_delayed_insert.pl -file2=C:\mysql\examples\tests\big_record.pl -file19=C:\mysql\examples\tests\udf_test -file3=C:\mysql\examples\tests\big_record.res -file4=C:\mysql\examples\tests\czech-sorting -file5=C:\mysql\examples\tests\deadlock-script.pl -file6=C:\mysql\examples\tests\export.pl -file7=C:\mysql\examples\tests\fork_test.pl -file8=C:\mysql\examples\tests\fork2_test.pl -file9=C:\mysql\examples\tests\fork3_test.pl -file20=C:\mysql\examples\tests\udf_test.res -file21=C:\mysql\examples\tests\auto_increment.res -file10=C:\mysql\examples\tests\function.res -fulldirectory= -file11=C:\mysql\examples\tests\function.tst -file12=C:\mysql\examples\tests\grant.pl -file13=C:\mysql\examples\tests\grant.res -file14=C:\mysql\examples\tests\lock_test.pl - -[bench\Data\ATIS] -file26=C:\mysql\bench\Data\ATIS\stop1.txt -file15=C:\mysql\bench\Data\ATIS\flight_class.txt -file27=C:\mysql\bench\Data\ATIS\time_interval.txt -file16=C:\mysql\bench\Data\ATIS\flight_day.txt -file0=C:\mysql\bench\Data\ATIS\transport.txt -file28=C:\mysql\bench\Data\ATIS\time_zone.txt -file17=C:\mysql\bench\Data\ATIS\flight_fare.txt -file1=C:\mysql\bench\Data\ATIS\airline.txt -file29=C:\mysql\bench\Data\ATIS\aircraft.txt -file18=C:\mysql\bench\Data\ATIS\food_service.txt -file2=C:\mysql\bench\Data\ATIS\airport.txt -file19=C:\mysql\bench\Data\ATIS\ground_service.txt -file3=C:\mysql\bench\Data\ATIS\airport_service.txt -file4=C:\mysql\bench\Data\ATIS\city.txt -file5=C:\mysql\bench\Data\ATIS\class_of_service.txt -file6=C:\mysql\bench\Data\ATIS\code_description.txt -file7=C:\mysql\bench\Data\ATIS\compound_class.txt -file8=C:\mysql\bench\Data\ATIS\connect_leg.txt -file9=C:\mysql\bench\Data\ATIS\date_day.txt -file20=C:\mysql\bench\Data\ATIS\month_name.txt -file21=C:\mysql\bench\Data\ATIS\restrict_carrier.txt -file10=C:\mysql\bench\Data\ATIS\day_name.txt -fulldirectory= -file22=C:\mysql\bench\Data\ATIS\restrict_class.txt -file11=C:\mysql\bench\Data\ATIS\dual_carrier.txt -file23=C:\mysql\bench\Data\ATIS\restriction.txt -file12=C:\mysql\bench\Data\ATIS\fare.txt -file24=C:\mysql\bench\Data\ATIS\state.txt -file13=C:\mysql\bench\Data\ATIS\fconnection.txt -file25=C:\mysql\bench\Data\ATIS\stop.txt -file14=C:\mysql\bench\Data\ATIS\flight.txt - -[General] -Type=FILELIST -Version=1.00.000 - -[scripts] -file0=C:\mysql\scripts\mysql_find_rows.pl -file1=C:\mysql\scripts\mysql_setpermission.pl -file2=C:\mysql\scripts\mysqlhotcopy.pl -file3=C:\mysql\scripts\Readme -fulldirectory= - -[lib] -SubDir0=lib\debug -SubDir1=lib\opt -fulldirectory= - diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Documentation.fgl b/VC++Files/InstallShield/3.23.XXcom/File Groups/Documentation.fgl deleted file mode 100644 index d36acb64538..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/File Groups/Documentation.fgl +++ /dev/null @@ -1,98 +0,0 @@ -[Docs\Flags] -file59=C:\mysql\Docs\Flags\romania.gif -file48=C:\mysql\Docs\Flags\kroatia.eps -file37=C:\mysql\Docs\Flags\iceland.gif -file26=C:\mysql\Docs\Flags\france.eps -file15=C:\mysql\Docs\Flags\china.gif -file49=C:\mysql\Docs\Flags\kroatia.gif -file38=C:\mysql\Docs\Flags\ireland.eps -file27=C:\mysql\Docs\Flags\france.gif -file16=C:\mysql\Docs\Flags\croatia.eps -file0=C:\mysql\Docs\Flags\usa.gif -file39=C:\mysql\Docs\Flags\ireland.gif -file28=C:\mysql\Docs\Flags\germany.eps -file17=C:\mysql\Docs\Flags\croatia.gif -file1=C:\mysql\Docs\Flags\argentina.gif -file29=C:\mysql\Docs\Flags\germany.gif -file18=C:\mysql\Docs\Flags\czech-republic.eps -file2=C:\mysql\Docs\Flags\australia.eps -file19=C:\mysql\Docs\Flags\czech-republic.gif -file3=C:\mysql\Docs\Flags\australia.gif -file80=C:\mysql\Docs\Flags\usa.eps -file4=C:\mysql\Docs\Flags\austria.eps -file81=C:\mysql\Docs\Flags\argentina.eps -file70=C:\mysql\Docs\Flags\spain.eps -file5=C:\mysql\Docs\Flags\austria.gif -file71=C:\mysql\Docs\Flags\spain.gif -file60=C:\mysql\Docs\Flags\russia.eps -file6=C:\mysql\Docs\Flags\brazil.eps -file72=C:\mysql\Docs\Flags\sweden.eps -file61=C:\mysql\Docs\Flags\russia.gif -file50=C:\mysql\Docs\Flags\latvia.eps -file7=C:\mysql\Docs\Flags\brazil.gif -file73=C:\mysql\Docs\Flags\sweden.gif -file62=C:\mysql\Docs\Flags\singapore.eps -file51=C:\mysql\Docs\Flags\latvia.gif -file40=C:\mysql\Docs\Flags\island.eps -file8=C:\mysql\Docs\Flags\bulgaria.eps -file74=C:\mysql\Docs\Flags\switzerland.eps -file63=C:\mysql\Docs\Flags\singapore.gif -file52=C:\mysql\Docs\Flags\netherlands.eps -file41=C:\mysql\Docs\Flags\island.gif -file30=C:\mysql\Docs\Flags\great-britain.eps -file9=C:\mysql\Docs\Flags\bulgaria.gif -file75=C:\mysql\Docs\Flags\switzerland.gif -file64=C:\mysql\Docs\Flags\south-africa.eps -file53=C:\mysql\Docs\Flags\netherlands.gif -file42=C:\mysql\Docs\Flags\israel.eps -file31=C:\mysql\Docs\Flags\great-britain.gif -file20=C:\mysql\Docs\Flags\denmark.eps -file76=C:\mysql\Docs\Flags\taiwan.eps -file65=C:\mysql\Docs\Flags\south-africa.gif -file54=C:\mysql\Docs\Flags\poland.eps -file43=C:\mysql\Docs\Flags\israel.gif -file32=C:\mysql\Docs\Flags\greece.eps -file21=C:\mysql\Docs\Flags\denmark.gif -file10=C:\mysql\Docs\Flags\canada.eps -fulldirectory= -file77=C:\mysql\Docs\Flags\taiwan.gif -file66=C:\mysql\Docs\Flags\south-africa1.eps -file55=C:\mysql\Docs\Flags\poland.gif -file44=C:\mysql\Docs\Flags\italy.eps -file33=C:\mysql\Docs\Flags\greece.gif -file22=C:\mysql\Docs\Flags\estonia.eps -file11=C:\mysql\Docs\Flags\canada.gif -file78=C:\mysql\Docs\Flags\ukraine.eps -file67=C:\mysql\Docs\Flags\south-africa1.gif -file56=C:\mysql\Docs\Flags\portugal.eps -file45=C:\mysql\Docs\Flags\italy.gif -file34=C:\mysql\Docs\Flags\hungary.eps -file23=C:\mysql\Docs\Flags\estonia.gif -file12=C:\mysql\Docs\Flags\chile.eps -file79=C:\mysql\Docs\Flags\ukraine.gif -file68=C:\mysql\Docs\Flags\south-korea.eps -file57=C:\mysql\Docs\Flags\portugal.gif -file46=C:\mysql\Docs\Flags\japan.eps -file35=C:\mysql\Docs\Flags\hungary.gif -file24=C:\mysql\Docs\Flags\finland.eps -file13=C:\mysql\Docs\Flags\chile.gif -file69=C:\mysql\Docs\Flags\south-korea.gif -file58=C:\mysql\Docs\Flags\romania.eps -file47=C:\mysql\Docs\Flags\japan.gif -file36=C:\mysql\Docs\Flags\iceland.eps -file25=C:\mysql\Docs\Flags\finland.gif -file14=C:\mysql\Docs\Flags\china.eps - -[Docs] -file0=C:\mysql\Docs\manual_toc.html -file1=C:\mysql\Docs\manual.html -SubDir0=Docs\Flags -fulldirectory= - -[TopDir] -SubDir0=Docs - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Grant Tables.fgl b/VC++Files/InstallShield/3.23.XXcom/File Groups/Grant Tables.fgl deleted file mode 100644 index 178065a7003..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/File Groups/Grant Tables.fgl +++ /dev/null @@ -1,36 +0,0 @@ -[data\test] -fulldirectory= - -[data\mysql] -file15=C:\mysql\data\mysql\func.frm -file16=C:\mysql\data\mysql\func.MYD -file0=C:\mysql\data\mysql\columns_priv.frm -file17=C:\mysql\data\mysql\func.MYI -file1=C:\mysql\data\mysql\columns_priv.MYD -file2=C:\mysql\data\mysql\columns_priv.MYI -file3=C:\mysql\data\mysql\db.frm -file4=C:\mysql\data\mysql\db.MYD -file5=C:\mysql\data\mysql\db.MYI -file6=C:\mysql\data\mysql\host.frm -file7=C:\mysql\data\mysql\host.MYD -file8=C:\mysql\data\mysql\host.MYI -file9=C:\mysql\data\mysql\tables_priv.frm -file10=C:\mysql\data\mysql\tables_priv.MYD -fulldirectory= -file11=C:\mysql\data\mysql\tables_priv.MYI -file12=C:\mysql\data\mysql\user.frm -file13=C:\mysql\data\mysql\user.MYD -file14=C:\mysql\data\mysql\user.MYI - -[TopDir] -SubDir0=data - -[data] -SubDir0=data\mysql -SubDir1=data\test -fulldirectory= - -[General] -Type=FILELIST -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl b/VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl deleted file mode 100644 index 6f91a474d80..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl +++ /dev/null @@ -1,183 +0,0 @@ -[share\polish] -file0=C:\mysql\share\polish\errmsg.sys -file1=C:\mysql\share\polish\errmsg.txt -fulldirectory= - -[share\dutch] -file0=C:\mysql\share\dutch\errmsg.sys -file1=C:\mysql\share\dutch\errmsg.txt -fulldirectory= - -[share\spanish] -file0=C:\mysql\share\spanish\errmsg.sys -file1=C:\mysql\share\spanish\errmsg.txt -fulldirectory= - -[share\english] -file0=C:\mysql\share\english\errmsg.sys -file1=C:\mysql\share\english\errmsg.txt -fulldirectory= - -[bin] -file0=C:\mysql\bin\mysqld-opt.exe -file1=C:\mysql\bin\mysqld-max.exe -file2=C:\mysql\bin\mysqld-max-nt.exe -file3=C:\mysql\bin\mysqld-nt.exe -file4=C:\mysql\bin\mysqld.exe -fulldirectory= - -[share\korean] -file0=C:\mysql\share\korean\errmsg.sys -file1=C:\mysql\share\korean\errmsg.txt -fulldirectory= - -[share\charsets] -file15=C:\mysql\share\charsets\latin1.conf -file16=C:\mysql\share\charsets\latin2.conf -file0=C:\mysql\share\charsets\win1251ukr.conf -file17=C:\mysql\share\charsets\latin5.conf -file1=C:\mysql\share\charsets\cp1257.conf -file18=C:\mysql\share\charsets\Readme -file2=C:\mysql\share\charsets\croat.conf -file19=C:\mysql\share\charsets\swe7.conf -file3=C:\mysql\share\charsets\danish.conf -file4=C:\mysql\share\charsets\dec8.conf -file5=C:\mysql\share\charsets\dos.conf -file6=C:\mysql\share\charsets\estonia.conf -file7=C:\mysql\share\charsets\german1.conf -file8=C:\mysql\share\charsets\greek.conf -file9=C:\mysql\share\charsets\hebrew.conf -file20=C:\mysql\share\charsets\usa7.conf -file21=C:\mysql\share\charsets\win1250.conf -file10=C:\mysql\share\charsets\hp8.conf -fulldirectory= -file22=C:\mysql\share\charsets\win1251.conf -file11=C:\mysql\share\charsets\hungarian.conf -file23=C:\mysql\share\charsets\cp1251.conf -file12=C:\mysql\share\charsets\Index -file13=C:\mysql\share\charsets\koi8_ru.conf -file14=C:\mysql\share\charsets\koi8_ukr.conf - -[share\ukrainian] -file0=C:\mysql\share\ukrainian\errmsg.sys -file1=C:\mysql\share\ukrainian\errmsg.txt -fulldirectory= - -[share\hungarian] -file0=C:\mysql\share\hungarian\errmsg.sys -file1=C:\mysql\share\hungarian\errmsg.txt -fulldirectory= - -[share\german] -file0=C:\mysql\share\german\errmsg.sys -file1=C:\mysql\share\german\errmsg.txt -fulldirectory= - -[share\portuguese] -file0=C:\mysql\share\portuguese\errmsg.sys -file1=C:\mysql\share\portuguese\errmsg.txt -fulldirectory= - -[share\estonian] -file0=C:\mysql\share\estonian\errmsg.sys -file1=C:\mysql\share\estonian\errmsg.txt -fulldirectory= - -[share\romanian] -file0=C:\mysql\share\romanian\errmsg.sys -file1=C:\mysql\share\romanian\errmsg.txt -fulldirectory= - -[share\french] -file0=C:\mysql\share\french\errmsg.sys -file1=C:\mysql\share\french\errmsg.txt -fulldirectory= - -[share\swedish] -file0=C:\mysql\share\swedish\errmsg.sys -file1=C:\mysql\share\swedish\errmsg.txt -fulldirectory= - -[share\slovak] -file0=C:\mysql\share\slovak\errmsg.sys -file1=C:\mysql\share\slovak\errmsg.txt -fulldirectory= - -[share\greek] -file0=C:\mysql\share\greek\errmsg.sys -file1=C:\mysql\share\greek\errmsg.txt -fulldirectory= - -[TopDir] -file0=C:\mysql\my-small.cnf -file1=C:\mysql\my-large.cnf -file2=C:\mysql\my-medium.cnf -file3=C:\mysql\my-huge.cnf -SubDir0=bin -SubDir1=share - -[share] -SubDir8=share\hungarian -SubDir9=share\charsets -SubDir20=share\spanish -SubDir21=share\swedish -SubDir10=share\italian -SubDir22=share\ukrainian -SubDir11=share\japanese -SubDir12=share\korean -SubDir13=share\norwegian -SubDir14=share\norwegian-ny -SubDir15=share\polish -SubDir16=share\portuguese -SubDir0=share\czech -SubDir17=share\romanian -SubDir1=share\danish -SubDir18=share\russian -SubDir2=share\dutch -SubDir19=share\slovak -SubDir3=share\english -fulldirectory= -SubDir4=share\estonian -SubDir5=share\french -SubDir6=share\german -SubDir7=share\greek - -[share\norwegian-ny] -file0=C:\mysql\share\norwegian-ny\errmsg.sys -file1=C:\mysql\share\norwegian-ny\errmsg.txt -fulldirectory= - -[share\danish] -file0=C:\mysql\share\danish\errmsg.sys -file1=C:\mysql\share\danish\errmsg.txt -fulldirectory= - -[share\czech] -file0=C:\mysql\share\czech\errmsg.sys -file1=C:\mysql\share\czech\errmsg.txt -fulldirectory= - -[General] -Type=FILELIST -Version=1.00.000 - -[share\russian] -file0=C:\mysql\share\russian\errmsg.sys -file1=C:\mysql\share\russian\errmsg.txt -fulldirectory= - -[share\norwegian] -file0=C:\mysql\share\norwegian\errmsg.sys -file1=C:\mysql\share\norwegian\errmsg.txt -fulldirectory= - -[share\japanese] -file0=C:\mysql\share\japanese\errmsg.sys -file1=C:\mysql\share\japanese\errmsg.txt -fulldirectory= - -[share\italian] -file0=C:\mysql\share\italian\errmsg.sys -file1=C:\mysql\share\italian\errmsg.txt -fulldirectory= - diff --git a/VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr b/VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr deleted file mode 100644 index 811d69717d8..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr +++ /dev/null @@ -1,51 +0,0 @@ -[Language] -LanguageSupport0=0009 - -[OperatingSystem] -OSSupport=0000000000010010 - -[Data] -CurrentMedia= -set_mifserial= -ProductName=MySQL Servers and Clients -CurrentComponentDef=Default.cdf -set_dlldebug=No -AppExe= -DevEnvironment=Microsoft Visual C++ 6 -set_mif=No -set_testmode=No -Instructions=Instructions.txt -EmailAddresss= -SummaryText= -Department= -Type=Database Application -Author= -HomeURL= -InstallRoot=C:\MySQL-Install\3.23.XXcom -set_level=Level 3 -InstallationGUID=40744a4d-efed-4cff-84a9-9e6389550f5c -Version=1.00.000 -set_miffile=Status.mif -set_args= -set_maxerr=50 -Notes=Notes.txt -CurrentFileGroupDef=Default.fdf -set_dllcmdline= -set_warnaserr=No -Copyright= -set_preproc= -Category= -CurrentPlatform= -set_compileb4build=No -set_crc=Yes -set_maxwarn=50 -Description=Description.txt -CompanyName=MySQL -CurrentLanguage=English - -[MediaInfo] - -[General] -Type=INSTALLMAIN -Version=1.10.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/Registry Entries/Default.rge b/VC++Files/InstallShield/3.23.XXcom/Registry Entries/Default.rge deleted file mode 100644 index 537dfd82e48..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Registry Entries/Default.rge +++ /dev/null @@ -1,4 +0,0 @@ -[General] -Type=REGISTRYDATA -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg b/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg deleted file mode 100644 index 0c6d4e6b70812d069322e88155868913fc543e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28458 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 diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino b/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino deleted file mode 100644 index 204d8ea0f364524a444de8aa4c839fbdfb40413c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58611 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 z 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 diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins b/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins deleted file mode 100644 index 759009b5c8462f5f1b617fb9f202c2e638ce4bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57122 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 U?Y7{S!vK%H{K_l&d*#Ca2lRel4gdfE diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs b/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs deleted file mode 100644 index 5fcfcb62c4e70338ce55aab3c89149f351d7f4c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65611 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 MQd<)aB(wnj4?UUG^8f$< diff --git a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul b/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul deleted file mode 100644 index 0db8417a62c..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul +++ /dev/null @@ -1,641 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////// -// -// IIIIIII SSSSSS -// II SS InstallShield (R) -// II SSSSSS (c) 1996-1997, InstallShield Software Corporation -// II SS (c) 1990-1996, InstallShield Corporation -// IIIIIII SSSSSS All Rights Reserved. -// -// -// This code is generated as a starting setup template. You should -// modify it to provide all necessary steps for your setup. -// -// -// File Name: Setup.rul -// -// Description: InstallShield script -// -// Comments: This template script performs a basic setup on a -// Windows 95 or Windows NT 4.0 platform. With minor -// modifications, this template can be adapted to create -// new, customized setups. -// -//////////////////////////////////////////////////////////////////////////////// - - - // Include header file -#include "sdlang.h" -#include "sddialog.h" - -////////////////////// string defines //////////////////////////// - -#define UNINST_LOGFILE_NAME "Uninst.isu" - -//////////////////// installation declarations /////////////////// - - // ----- DLL prototypes ----- - - - // your DLL prototypes - - - // ---- script prototypes ----- - - // generated - prototype ShowDialogs(); - prototype MoveFileData(); - prototype HandleMoveDataError( NUMBER ); - prototype ProcessBeforeDataMove(); - prototype ProcessAfterDataMove(); - prototype SetupRegistry(); - prototype SetupFolders(); - prototype CleanUpInstall(); - prototype SetupInstall(); - prototype SetupScreen(); - prototype CheckRequirements(); - prototype DialogShowSdWelcome(); - prototype DialogShowSdShowInfoList(); - prototype DialogShowSdAskDestPath(); - prototype DialogShowSdSetupType(); - prototype DialogShowSdComponentDialog2(); - prototype DialogShowSdFinishReboot(); - - // your prototypes - - - // ----- global variables ------ - - // generated - BOOL bWinNT, bIsShellExplorer, bInstallAborted, bIs32BitSetup; - STRING svDir; - STRING svName, svCompany, svSerial; - STRING szAppPath; - STRING svSetupType; - - - // your global variables - - -/////////////////////////////////////////////////////////////////////////////// -// -// MAIN PROGRAM -// -// The setup begins here by hiding the visible setup -// window. This is done to allow all the titles, images, etc. to -// be established before showing the main window. The following -// logic then performs the setup in a series of steps. -// -/////////////////////////////////////////////////////////////////////////////// -program - Disable( BACKGROUND ); - - CheckRequirements(); - - SetupInstall(); - - SetupScreen(); - - if (ShowDialogs()<0) goto end_install; - - if (ProcessBeforeDataMove()<0) goto end_install; - - if (MoveFileData()<0) goto end_install; - - if (ProcessAfterDataMove()<0) goto end_install; - - if (SetupRegistry()<0) goto end_install; - - if (SetupFolders()<0) goto end_install; - - - end_install: - - CleanUpInstall(); - - // If an unrecoverable error occurred, clean up the partial installation. - // Otherwise, exit normally. - - if (bInstallAborted) then - abort; - endif; - -endprogram - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: ShowDialogs // -// // -// Purpose: This function manages the display and navigation // -// the standard dialogs that exist in a setup. // -// // -/////////////////////////////////////////////////////////////////////////////// -function ShowDialogs() - NUMBER nResult; - begin - - Dlg_Start: - // beginning of dialogs label - - Dlg_SdWelcome: - nResult = DialogShowSdWelcome(); - if (nResult = BACK) goto Dlg_Start; - - Dlg_SdShowInfoList: - nResult = DialogShowSdShowInfoList(); - if (nResult = BACK) goto Dlg_SdWelcome; - - Dlg_SdAskDestPath: - nResult = DialogShowSdAskDestPath(); - if (nResult = BACK) goto Dlg_SdShowInfoList; - - Dlg_SdSetupType: - nResult = DialogShowSdSetupType(); - if (nResult = BACK) goto Dlg_SdAskDestPath; - - Dlg_SdComponentDialog2: - if ((nResult = BACK) && (svSetupType != "Custom") && (svSetupType != "")) then - goto Dlg_SdSetupType; - endif; - nResult = DialogShowSdComponentDialog2(); - if (nResult = BACK) goto Dlg_SdSetupType; - - return 0; - - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: ProcessBeforeDataMove // -// // -// Purpose: This function performs any necessary operations prior to the // -// actual data move operation. // -// // -/////////////////////////////////////////////////////////////////////////////// -function ProcessBeforeDataMove() - STRING svLogFile; - NUMBER nResult; - begin - - InstallationInfo( @COMPANY_NAME, @PRODUCT_NAME, @PRODUCT_VERSION, @PRODUCT_KEY ); - - svLogFile = UNINST_LOGFILE_NAME; - - nResult = DeinstallStart( svDir, svLogFile, @UNINST_KEY, 0 ); - if (nResult < 0) then - MessageBox( @ERROR_UNINSTSETUP, WARNING ); - endif; - - szAppPath = TARGETDIR; // TODO : if your application .exe is in a subdir of TARGETDIR then add subdir - - if ((bIs32BitSetup) && (bIsShellExplorer)) then - RegDBSetItem( REGDB_APPPATH, szAppPath ); - RegDBSetItem( REGDB_APPPATH_DEFAULT, szAppPath ^ @PRODUCT_KEY ); - RegDBSetItem( REGDB_UNINSTALL_NAME, @UNINST_DISPLAY_NAME ); - endif; - - // TODO : update any items you want to process before moving the data - // - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: MoveFileData // -// // -// Purpose: This function handles the data movement for // -// the setup. // -// // -/////////////////////////////////////////////////////////////////////////////// -function MoveFileData() - NUMBER nResult, nDisk; - begin - - nDisk = 1; - SetStatusWindow( 0, "" ); - Disable( DIALOGCACHE ); - Enable( STATUS ); - StatusUpdate( ON, 100 ); - nResult = ComponentMoveData( MEDIA, nDisk, 0 ); - - HandleMoveDataError( nResult ); - - Disable( STATUS ); - - return nResult; - - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: HandleMoveDataError // -// // -// Purpose: This function handles the error (if any) during the move data // -// operation. // -// // -/////////////////////////////////////////////////////////////////////////////// -function HandleMoveDataError( nResult ) - STRING szErrMsg, svComponent , svFileGroup , svFile; - begin - - svComponent = ""; - svFileGroup = ""; - svFile = ""; - - switch (nResult) - case 0: - return 0; - default: - ComponentError ( MEDIA , svComponent , svFileGroup , svFile , nResult ); - szErrMsg = @ERROR_MOVEDATA + "\n\n" + - @ERROR_COMPONENT + " " + svComponent + "\n" + - @ERROR_FILEGROUP + " " + svFileGroup + "\n" + - @ERROR_FILE + " " + svFile; - SprintfBox( SEVERE, @TITLE_CAPTIONBAR, szErrMsg, nResult ); - bInstallAborted = TRUE; - return nResult; - endswitch; - - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: ProcessAfterDataMove // -// // -// Purpose: This function performs any necessary operations needed after // -// all data has been moved. // -// // -/////////////////////////////////////////////////////////////////////////////// -function ProcessAfterDataMove() - begin - - // TODO : update self-registered files and other processes that - // should be performed after the data has been moved. - - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: SetupRegistry // -// // -// Purpose: This function makes the registry entries for this setup. // -// // -/////////////////////////////////////////////////////////////////////////////// -function SetupRegistry() - NUMBER nResult; - - begin - - // TODO : Add all your registry entry keys here - // - // - // RegDBCreateKeyEx, RegDBSetKeyValueEx.... - // - - nResult = CreateRegistrySet( "" ); - - return nResult; - end; - -/////////////////////////////////////////////////////////////////////////////// -// -// Function: SetupFolders -// -// Purpose: This function creates all the folders and shortcuts for the -// setup. This includes program groups and items for Windows 3.1. -// -/////////////////////////////////////////////////////////////////////////////// -function SetupFolders() - NUMBER nResult; - - begin - - - // TODO : Add all your folder (program group) along with shortcuts (program items) - // - // - // CreateProgramFolder, AddFolderIcon.... - // - - nResult = CreateShellObjects( "" ); - - return nResult; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: CleanUpInstall // -// // -// Purpose: This cleans up the setup. Anything that should // -// be released or deleted at the end of the setup should // -// be done here. // -// // -/////////////////////////////////////////////////////////////////////////////// -function CleanUpInstall() - begin - - - if (bInstallAborted) then - return 0; - endif; - - DialogShowSdFinishReboot(); - - if (BATCH_INSTALL) then // ensure locked files are properly written - CommitSharedFiles(0); - endif; - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: SetupInstall // -// // -// Purpose: This will setup the installation. Any general initialization // -// needed for the installation should be performed here. // -// // -/////////////////////////////////////////////////////////////////////////////// -function SetupInstall() - begin - - Enable( CORECOMPONENTHANDLING ); - - bInstallAborted = FALSE; - - if (bIs32BitSetup) then - svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME; - else - svDir = "C:\\mysql"; //PROGRAMFILES ^ @COMPANY_NAME16 ^ @PRODUCT_NAME16; // use shorten names - endif; - - TARGETDIR = svDir; - - SdProductName( @PRODUCT_NAME ); - - Enable( DIALOGCACHE ); - - return 0; - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: SetupScreen // -// // -// Purpose: This function establishes the screen look. This includes // -// colors, fonts, and text to be displayed. // -// // -/////////////////////////////////////////////////////////////////////////////// -function SetupScreen() - begin - - Enable( FULLWINDOWMODE ); - Enable( INDVFILESTATUS ); - SetTitle( @TITLE_MAIN, 24, WHITE ); - - SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION ); // Caption bar text. - - Enable( BACKGROUND ); - - Delay( 1 ); - end; - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: CheckRequirements // -// // -// Purpose: This function checks all minimum requirements for the // -// application being installed. If any fail, then the user // -// is informed and the setup is terminated. // -// // -/////////////////////////////////////////////////////////////////////////////// -function CheckRequirements() - NUMBER nvDx, nvDy, nvResult; - STRING svResult; - - begin - - bWinNT = FALSE; - bIsShellExplorer = FALSE; - - // Check screen resolution. - GetExtents( nvDx, nvDy ); - - if (nvDy < 480) then - MessageBox( @ERROR_VGARESOLUTION, WARNING ); - abort; - endif; - - // set 'setup' operation mode - bIs32BitSetup = TRUE; - GetSystemInfo( ISTYPE, nvResult, svResult ); - if (nvResult = 16) then - bIs32BitSetup = FALSE; // running 16-bit setup - return 0; // no additional information required - endif; - - // --- 32-bit testing after this point --- - - // Determine the target system's operating system. - GetSystemInfo( OS, nvResult, svResult ); - - if (nvResult = IS_WINDOWSNT) then - // Running Windows NT. - bWinNT = TRUE; - - // Check to see if the shell being used is EXPLORER shell. - if (GetSystemInfo( OSMAJOR, nvResult, svResult ) = 0) then - if (nvResult >= 4) then - bIsShellExplorer = TRUE; - endif; - endif; - - elseif (nvResult = IS_WINDOWS95 ) then - bIsShellExplorer = TRUE; - - endif; - -end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdWelcome // -// // -// Purpose: This function handles the standard welcome dialog. // -// // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdWelcome() - NUMBER nResult; - STRING szTitle, szMsg; - begin - - szTitle = ""; - szMsg = ""; - nResult = SdWelcome( szTitle, szMsg ); - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdShowInfoList // -// // -// Purpose: This function displays the general information list dialog. // -// // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdShowInfoList() - NUMBER nResult; - LIST list; - STRING szTitle, szMsg, szFile; - begin - - szFile = SUPPORTDIR ^ "infolist.txt"; - - list = ListCreate( STRINGLIST ); - ListReadFromFile( list, szFile ); - szTitle = ""; - szMsg = " "; - nResult = SdShowInfoList( szTitle, szMsg, list ); - - ListDestroy( list ); - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdAskDestPath // -// // -// Purpose: This function asks the user for the destination directory. // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdAskDestPath() - NUMBER nResult; - STRING szTitle, szMsg; - begin - - szTitle = ""; - szMsg = ""; - nResult = SdAskDestPath( szTitle, szMsg, svDir, 0 ); - - TARGETDIR = svDir; - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdSetupType // -// // -// Purpose: This function displays the standard setup type dialog. // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdSetupType() - NUMBER nResult, nType; - STRING szTitle, szMsg; - begin - - switch (svSetupType) - case "Typical": - nType = TYPICAL; - case "Custom": - nType = CUSTOM; - case "Compact": - nType = COMPACT; - case "": - svSetupType = "Typical"; - nType = TYPICAL; - endswitch; - - szTitle = ""; - szMsg = ""; - nResult = SetupType( szTitle, szMsg, "", nType, 0 ); - - switch (nResult) - case COMPACT: - svSetupType = "Compact"; - case TYPICAL: - svSetupType = "Typical"; - case CUSTOM: - svSetupType = "Custom"; - endswitch; - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdComponentDialog2 // -// // -// Purpose: This function displays the custom component dialog. // -// // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdComponentDialog2() - NUMBER nResult; - STRING szTitle, szMsg; - begin - - if ((svSetupType != "Custom") && (svSetupType != "")) then - return 0; - endif; - - szTitle = ""; - szMsg = ""; - nResult = SdComponentDialog2( szTitle, szMsg, svDir, "" ); - - return nResult; - end; - - -/////////////////////////////////////////////////////////////////////////////// -// // -// Function: DialogShowSdFinishReboot // -// // -// Purpose: This function will show the last dialog of the product. // -// It will allow the user to reboot and/or show some readme text. // -// // -/////////////////////////////////////////////////////////////////////////////// -function DialogShowSdFinishReboot() - NUMBER nResult, nDefOptions; - STRING szTitle, szMsg1, szMsg2, szOption1, szOption2; - NUMBER bOpt1, bOpt2; - begin -/* - if (!BATCH_INSTALL) then - bOpt1 = FALSE; - bOpt2 = FALSE; - szMsg1 = ""; - szMsg2 = ""; - szOption1 = ""; - szOption2 = ""; - nResult = SdFinish( szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2 ); - return 0; - endif; - - nDefOptions = SYS_BOOTMACHINE; - szTitle = ""; - szMsg1 = ""; - szMsg2 = ""; - nResult = SdFinishReboot( szTitle, szMsg1, nDefOptions, szMsg2, 0 ); -*/ - return nResult; - end; - - // --- include script file section --- - -#include "sddialog.rul" - - - diff --git a/VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt b/VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt deleted file mode 100644 index 2f561d29d81..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt +++ /dev/null @@ -1,24 +0,0 @@ -This is a release of MySQL 3.23.56 for Win32. - -NOTE: If you install MySQL in a folder other than -C:\MYSQL or you intend to start MySQL on NT/Win2000 -as a service, you must create a file named C:\MY.CNF -or \Windows\my.ini or \winnt\my.ini with the following -information:: - -[mysqld] -basedir=E:/installation-path/ -datadir=E:/data-path/ - -After your have installed MySQL, the installation -directory which contains the files named 'my-size.cnf'. -You can use this as a starting point for your own -C:\my.cnf file. - -If you have any problems, you can mail them to -win32@lists.mysql.com after you have consulted the -MySQL manual and the MySQL mailing list archive -(http://www.mysql.com/documentation/index.html) - -On behalf of the MySQL AB gang, -Michael Widenius \ No newline at end of file diff --git a/VC++Files/InstallShield/3.23.XXcom/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP b/VC++Files/InstallShield/3.23.XXcom/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP deleted file mode 100644 index 3229d50c9bfcabefefb1341fda098d20bcc734b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15694 zcmeI3JB%Ae7{@=K-(K76_xXH&Oi7uF4k@AsrK3$jjnYv@G&D%0il|5m3XnjGA{wMf zL_$gf5>dL)5Cs$g3Mf1j1%y!e9<#Hv>lu6R&bNC-MzTHL8PERqKl43y_U_f!UVjC+ zyj%fz32PtY>kWLBpuxxK?R+3FJjmtqYZu|WZ*RcE`?ulUHv!&%s|Q!#R`B6F=isCF z&ckO{FTkx&F2PqfFT>ZjuE4!J*Wu?M?!xcCK7eOWpTLDLet}DOegpX60rajt1ohF6 zaPHGbaQ@~`aPiB>aQT}jaOK_~aQ*&YaO3-@aQo3Sxcm4Yc<|@H@Z|6R;Q90C0`lVh zg#s@W$Xx-Iz0}KVrP>I(*#|g5PdLJF9h?MS&x3RaoaIXA2p4(N7hE}BaV%I}cL;-qtVlj;-e}&Za^l2$Z)OHw_D6{(`O=TtSF@fhgG48#CUZ5I z4yV%;XV*{|iEYl7X*P&l@o}PΞYl3Pc*AWK<5_&B8evjnkZ9&L1hLEKZN3FPHtC zgCT>?5;ECe7}VFS7UP5EU_2Y7IJ*Y3T#lkl%-NFG1}ZO3c5Stn=?H{M=3C@t0UsXOLL1Rv?)sh2j;#7Uc!oV)f#O2xiD zE2oZ)!+pu!@cmHdAUoAF7Leq`#FY7(+4U4TM^10OLp^0dM#+bYeSNGaI{~k~3kxqt zxl-$WcbsD24Qp)i^?|)U>sU}>yL9MSog#v;aGGX!;QEO&v7T$E zPaHT!&ae?^&Irmrv!Gj^)NWj_3ukc$>f{1s;@8{c_Q}f`(v2f; zUxCan!Bk?WB!Y&qpi!98O1nSy9UOSbikxd5l;a=PPBqbiXYHqRLtOqP!C}X zK_KR|rPpbbhqcYmO1kKs*y@YnEHxUu?T5ZRHfe_@K_v>4g>X{t!`VcwoX&l0*buYL zn%>4Ng0n<6OtGf9@d+6{D$vor5PL@#4v5;II~yzF*h(tZX=1KqrA7tl8DQdzn=f@$ z$CtBo2@`Fq~%*lrvfEPylc z_#-C8OvNxZ6C3-JN%Hw7~(%ITmJ|$;bPq z7noXZ6%3i4bD@tEAR!PIiA;39M0e2K&!p`kHC|5(v1i{ zCh`{Wwwz8w)gu~O*Tz2|&Y2UpU!4I5U6R*zvS2xL;!cfgo(R+Hl8WFo)1Fw1gtPi^BL1w{geV-aho6HBV0Tk*Q3+gPELuAnYZSh8#I@A1)afyR diff --git a/VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl b/VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl deleted file mode 100644 index 187cb651307..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl +++ /dev/null @@ -1,12 +0,0 @@ -[Data] -Folder3= -Group0=Main -Group1=Startup -Folder0= -Folder1= -Folder2= - -[Info] -Type=ShellObject -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl b/VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl deleted file mode 100644 index dd998365667..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl +++ /dev/null @@ -1,23 +0,0 @@ -[Data] -TITLE_MAIN=MySQL Commercial Servers and Clients 3.23.56 -ERROR_COMPONENT=Component: -COMPANY_NAME=MySQL AB -COMPANY_NAME16=Company -ERROR_FILEGROUP=File Group: -ERROR_MOVEDATA=An error occurred during the move data process: %d -PRODUCT_VERSION=3.23.56 -UNINST_KEY=MySQL Commercial Servers and Clients 3.23.56 -TITLE_CAPTIONBAR=MySQL Commercial Servers and Clients 3.23.56 Setup -PRODUCT_NAME16=Product -ERROR_FILE=File: -ERROR_VGARESOLUTION=This program requires VGA or better resolution. -PRODUCT_KEY=yourapp.Exe -UNINST_DISPLAY_NAME=MySQL Commercial Servers and Clients 3.23.56 -ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product. -PRODUCT_NAME=MySQL Commercial Servers and Clients 3.23.56 - -[General] -Language=0009 -Type=STRINGTABLESPECIFIC -Version=1.00.000 - diff --git a/VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl b/VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl deleted file mode 100644 index f197667992e..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl +++ /dev/null @@ -1,74 +0,0 @@ -[TITLE_MAIN] -Comment= - -[ERROR_COMPONENT] -Comment= - -[COMPANY_NAME] -Comment= - -[COMPANY_NAME16] -Comment= - -[ERROR_FILEGROUP] -Comment= - -[ERROR_MOVEDATA] -Comment= - -[PRODUCT_VERSION] -Comment= - -[UNINST_KEY] -Comment= - -[Language] -Lang0=0009 -CurrentLang=0 - -[TITLE_CAPTIONBAR] -Comment= - -[PRODUCT_NAME16] -Comment= - -[Data] -Entry0=ERROR_VGARESOLUTION -Entry1=TITLE_MAIN -Entry2=TITLE_CAPTIONBAR -Entry3=UNINST_KEY -Entry4=UNINST_DISPLAY_NAME -Entry5=COMPANY_NAME -Entry6=PRODUCT_NAME -Entry7=PRODUCT_VERSION -Entry8=PRODUCT_KEY -Entry10=ERROR_UNINSTSETUP -Entry9=ERROR_MOVEDATA -Entry11=COMPANY_NAME16 -Entry12=PRODUCT_NAME16 -Entry13=ERROR_COMPONENT -Entry14=ERROR_FILEGROUP -Entry15=ERROR_FILE - -[ERROR_FILE] -Comment= - -[ERROR_VGARESOLUTION] -Comment= - -[PRODUCT_KEY] -Comment= - -[UNINST_DISPLAY_NAME] -Comment= - -[General] -Type=STRINGTABLE -Version=1.00.000 - -[ERROR_UNINSTSETUP] -Comment= - -[PRODUCT_NAME] -Comment= - diff --git a/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Build.tsb b/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Build.tsb deleted file mode 100644 index 0478df14bff..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Build.tsb +++ /dev/null @@ -1,56 +0,0 @@ -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[Data] -Key0= -Key1= -Key2= -Key3= -Key4= -Key5= -Key6= -Key7= -Key8= -Key9= - -[General] -Type=TEXTSUB -Version=1.00.000 - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - diff --git a/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Setup.tsb b/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Setup.tsb deleted file mode 100644 index 258173c7a48..00000000000 --- a/VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Setup.tsb +++ /dev/null @@ -1,76 +0,0 @@ -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[Data] -Key0= -Key1= -Key2= -Key3= -Key4= -Key10= -Key5= -Key11= -Key6= -Key12= -Key7= -Key13= -Key8= -Key9= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[General] -Type=TEXTSUB -Version=1.00.000 - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - -[] -KeyType=4 -Value= - diff --git a/VC++Files/InstallShield/4.0.XX-classic/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt b/VC++Files/InstallShield/4.0.XX-classic/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt index acad9353244..e5a6f6ac433 100755 --- a/VC++Files/InstallShield/4.0.XX-classic/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt +++ b/VC++Files/InstallShield/4.0.XX-classic/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt @@ -1,4 +1,4 @@ -This is a release of MySQL Classic 4.0.11a-gamma for Win32. +This is a release of MySQL Classic @VERSION@ for Win32. NOTE: If you install MySQL in a folder other than C:\MYSQL or you intend to start MySQL on NT/Win2000 @@ -22,4 +22,4 @@ MySQL manual and the MySQL mailing list archive (http://www.mysql.com/documentation/index.html) On behalf of the MySQL AB gang, -Michael Widenius \ No newline at end of file +Michael Widenius diff --git a/VC++Files/InstallShield/4.0.XX-classic/String Tables/0009-English/value.shl b/VC++Files/InstallShield/4.0.XX-classic/String Tables/0009-English/value.shl index 9359ce70202..5f767a63f43 100755 --- a/VC++Files/InstallShield/4.0.XX-classic/String Tables/0009-English/value.shl +++ b/VC++Files/InstallShield/4.0.XX-classic/String Tables/0009-English/value.shl @@ -1,23 +1,23 @@ [Data] -TITLE_MAIN=MySQL Classic Servers and Clients 4.0.11a-gamma +TITLE_MAIN=MySQL Classic Servers and Clients @VERSION@ COMPANY_NAME=MySQL AB ERROR_COMPONENT=Component: COMPANY_NAME16=Company -PRODUCT_VERSION=MySQL Classic Servers and Clients 4.0.11a-gamma +PRODUCT_VERSION=MySQL Classic Servers and Clients @VERSION@ ERROR_MOVEDATA=An error occurred during the move data process: %d ERROR_FILEGROUP=File Group: -UNINST_KEY=MySQL Classic Servers and Clients 4.0.11a-gamma -TITLE_CAPTIONBAR=MySQL Classic Servers and Clients 4.0.11a-gamma +UNINST_KEY=MySQL Classic Servers and Clients @VERSION@ +TITLE_CAPTIONBAR=MySQL Classic Servers and Clients @VERSION@ PRODUCT_NAME16=Product ERROR_VGARESOLUTION=This program requires VGA or better resolution. ERROR_FILE=File: -UNINST_DISPLAY_NAME=MySQL Classic Servers and Clients 4.0.11a-gamma +UNINST_DISPLAY_NAME=MySQL Classic Servers and Clients @VERSION@ PRODUCT_KEY=yourapp.Exe -PRODUCT_NAME=MySQL Classic Servers and Clients 4.0.11a-gamma +PRODUCT_NAME=MySQL Classic Servers and Clients @VERSION@ ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product. [General] Language=0009 Type=STRINGTABLESPECIFIC -Version=1.00.000 +Version=@VERSION@ diff --git a/VC++Files/InstallShield/4.0.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt b/VC++Files/InstallShield/4.0.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt index c91cb20740d..acdf4f48618 100755 --- a/VC++Files/InstallShield/4.0.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt +++ b/VC++Files/InstallShield/4.0.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt @@ -1,4 +1,4 @@ -This is a release of MySQL 4.0.11a-gamma for Win32. +This is a release of MySQL @VERSION@ for Win32. NOTE: If you install MySQL in a folder other than C:\MYSQL or you intend to start MySQL on NT/Win2000 @@ -22,4 +22,4 @@ MySQL manual and the MySQL mailing list archive (http://www.mysql.com/documentation/index.html) On behalf of the MySQL AB gang, -Michael Widenius \ No newline at end of file +Michael Widenius diff --git a/VC++Files/InstallShield/4.0.XX-gpl/String Tables/0009-English/value.shl b/VC++Files/InstallShield/4.0.XX-gpl/String Tables/0009-English/value.shl index ccd18e688eb..0a6c33be42b 100755 --- a/VC++Files/InstallShield/4.0.XX-gpl/String Tables/0009-English/value.shl +++ b/VC++Files/InstallShield/4.0.XX-gpl/String Tables/0009-English/value.shl @@ -1,23 +1,23 @@ [Data] -TITLE_MAIN=MySQL Servers and Clients 4.0.11a-gamma +TITLE_MAIN=MySQL Servers and Clients @VERSION@ COMPANY_NAME=MySQL AB ERROR_COMPONENT=Component: COMPANY_NAME16=Company -PRODUCT_VERSION=MySQL Servers and Clients 4.0.11a-gamma +PRODUCT_VERSION=MySQL Servers and Clients @VERSION@ ERROR_MOVEDATA=An error occurred during the move data process: %d ERROR_FILEGROUP=File Group: -UNINST_KEY=MySQL Servers and Clients 4.0.11a-gamma -TITLE_CAPTIONBAR=MySQL Servers and Clients 4.0.11a-gamma +UNINST_KEY=MySQL Servers and Clients @VERSION@ +TITLE_CAPTIONBAR=MySQL Servers and Clients @VERSION@ PRODUCT_NAME16=Product ERROR_VGARESOLUTION=This program requires VGA or better resolution. ERROR_FILE=File: -UNINST_DISPLAY_NAME=MySQL Servers and Clients 4.0.11a-gamma +UNINST_DISPLAY_NAME=MySQL Servers and Clients @VERSION@ PRODUCT_KEY=yourapp.Exe -PRODUCT_NAME=MySQL Servers and Clients 4.0.11a-gamma +PRODUCT_NAME=MySQL Servers and Clients @VERSION@ ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product. [General] Language=0009 Type=STRINGTABLESPECIFIC -Version=1.00.000 +Version=@VERSION@ diff --git a/VC++Files/InstallShield/4.0.XX-pro/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt b/VC++Files/InstallShield/4.0.XX-pro/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt index 18d7995fd50..52ccf8e11a9 100755 --- a/VC++Files/InstallShield/4.0.XX-pro/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt +++ b/VC++Files/InstallShield/4.0.XX-pro/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt @@ -1,4 +1,4 @@ -This is a release of MySQL Pro 4.0.11a-gamma for Win32. +This is a release of MySQL Pro @VERSION@ for Win32. NOTE: If you install MySQL in a folder other than C:\MYSQL or you intend to start MySQL on NT/Win2000 @@ -22,4 +22,4 @@ MySQL manual and the MySQL mailing list archive (http://www.mysql.com/documentation/index.html) On behalf of the MySQL AB gang, -Michael Widenius \ No newline at end of file +Michael Widenius diff --git a/VC++Files/InstallShield/4.0.XX-pro/String Tables/0009-English/value.shl b/VC++Files/InstallShield/4.0.XX-pro/String Tables/0009-English/value.shl index c1dd3707afb..61b2e6fb50f 100755 --- a/VC++Files/InstallShield/4.0.XX-pro/String Tables/0009-English/value.shl +++ b/VC++Files/InstallShield/4.0.XX-pro/String Tables/0009-English/value.shl @@ -1,23 +1,23 @@ [Data] -TITLE_MAIN=MySQL Pro Servers and Clients 4.0.11a-gamma +TITLE_MAIN=MySQL Pro Servers and Clients @VERSION@ COMPANY_NAME=MySQL AB ERROR_COMPONENT=Component: COMPANY_NAME16=Company -PRODUCT_VERSION=MySQL Pro Servers and Clients 4.0.11a-gamma +PRODUCT_VERSION=MySQL Pro Servers and Clients @VERSION@ ERROR_MOVEDATA=An error occurred during the move data process: %d ERROR_FILEGROUP=File Group: -UNINST_KEY=MySQL Pro Servers and Clients 4.0.11a-gamma -TITLE_CAPTIONBAR=MySQL Pro Servers and Clients 4.0.11a-gamma +UNINST_KEY=MySQL Pro Servers and Clients @VERSION@ +TITLE_CAPTIONBAR=MySQL Pro Servers and Clients @VERSION@ PRODUCT_NAME16=Product ERROR_VGARESOLUTION=This program requires VGA or better resolution. ERROR_FILE=File: -UNINST_DISPLAY_NAME=MySQL Pro Servers and Clients 4.0.11a-gamma +UNINST_DISPLAY_NAME=MySQL Pro Servers and Clients @VERSION@ PRODUCT_KEY=yourapp.Exe -PRODUCT_NAME=MySQL Pro Servers and Clients 4.0.11a-gamma +PRODUCT_NAME=MySQL Pro Servers and Clients @VERSION@ ERROR_UNINSTSETUP=unInstaller setup failed to initialize. You may not be able to uninstall this product. [General] Language=0009 Type=STRINGTABLESPECIFIC -Version=1.00.000 +Version=@VERSION@ diff --git a/VC++Files/libmysqltest/myTest-package.dsp b/VC++Files/libmysqltest/myTest-package.dsp new file mode 100644 index 00000000000..a5c73d447b3 --- /dev/null +++ b/VC++Files/libmysqltest/myTest-package.dsp @@ -0,0 +1,92 @@ +# Microsoft Developer Studio Project File - Name="myTest" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=myTest - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "myTest.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "myTest.mak" CFG="myTest - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "myTest - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "myTest - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=xicl6.exe +RSC=rc.exe + +!IF "$(CFG)" == "myTest - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "release" +# PROP Intermediate_Dir "release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /G6 /W3 /O2 /I "..\..\include" /D "NDEBUG" /D "DBUG_UFF" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=xilink6.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\..\lib\opt\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\lib_release" + +!ELSEIF "$(CFG)" == "myTest - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "debug" +# PROP Intermediate_Dir "debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "..\..\include" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /Fr /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=xilink6.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\..\lib\debug\libmysql.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\lib_debug" + +!ENDIF + +# Begin Target + +# Name "myTest - Win32 Release" +# Name "myTest - Win32 Debug" +# Begin Source File + +SOURCE=.\Mytest.c +# End Source File +# End Target +# End Project diff --git a/scripts/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh index b0d63f1d6d8..c521c4cfdcb 100755 --- a/scripts/make_win_src_distribution.sh +++ b/scripts/make_win_src_distribution.sh @@ -114,37 +114,16 @@ done # Convert argument file from unix to DOS text # -if [ `which recode` ] -then +unix_to_dos() +{ + for arg do + print_debug "Replacing LF -> CRLF from '$arg'" - print_debug "Using 'recode' to convert from unix to dos text" - - unix_to_dos() - { - for arg do - print_debug "Replacing LF -> CRLF from '$arg'" - - chmod u+w $arg - recode lat1..ibmpc $arg - done - } - -else - - print_debug "Using 'sed' to convert from unix to dos text" - - unix_to_dos() - { - for arg do - print_debug "Replacing LF -> CRLF from '$arg'" - - sed -e 's/$/\r/' $arg > $arg.tmp - rm -f $arg - mv $arg.tmp $arg - done - } - -fi + cat $arg | awk '{sub(/$/,"\r");print}' > $arg.tmp + rm -f $arg + mv $arg.tmp $arg + done +} # @@ -168,6 +147,28 @@ find $BASE \( -name "*.dsp" -o -name "*.dsw" \) -and -not -path \*SCCS\* -print done ) +# +# Process version tags in InstallShield files +# + +vreplace() +{ + for arg do + unix_to_dos $arg + cat $arg | sed -e 's!@''VERSION''@!@VERSION@!' > $arg.tmp + rm -f $arg + mv $arg.tmp $arg + done +} + +for d in 4.0.XX-gpl 4.0.XX-pro 4.0.XX-classic +do + cd $BASE/InstallShield/$d/String\ Tables/0009-English + vreplace value.shl + cd ../../Setup\ Files/Compressed\ Files/Language\ Independent/OS\ Independent + vreplace infolist.txt +done + # # Move all error message files to root directory # From 29eec6c7387eda257081438521471dffd4cce512 Mon Sep 17 00:00:00 2001 From: "kostja@oak.local" <> Date: Tue, 16 Sep 2003 04:04:54 +0400 Subject: [PATCH 16/81] join buffer cache usage/not usage is taken into account to increase the cost of FULL SCAN --- sql/sql_select.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 3738382928f..bd0c21bb3b0 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2133,11 +2133,21 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, s->table->used_keys && best_key) && !(s->table->force_index && best_key)) { // Check full join - /* - Estimate cost of reading table. Note, that we don't read a table - on each iteration as in most cases join buffer is in use. - */ + /* Estimate cost of reading table. */ tmp= (double) s->read_time; + if (s->on_expr) // Can't use join cache + { + /* We have to read the whole table for each record */ + tmp*= record_count; + } + else + { + /* We read the table as many times as join buffer becomes full. */ + tmp*= (1.0 + floor((double) cache_record_length(join,idx) * + record_count / + (double) thd->variables.join_buff_size)); + } + /* In case of full scan we check every row in the table: here we take into account rows read and skipped, as well as rows From dfd981505a70e518815471465c2391898c8c500f Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Tue, 16 Sep 2003 14:45:42 +0300 Subject: [PATCH 17/81] More explicit error messages from myisamchk --- myisam/mi_check.c | 35 +++++++++++++++++++++++++++-------- myisam/mi_dynrec.c | 18 ++++++++++++++---- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/myisam/mi_check.c b/myisam/mi_check.c index f5b0a1aabaa..a4ae7b25dbb 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -200,21 +200,33 @@ int chk_del(MI_CHECK *param, register MI_INFO *info, uint test_flag) empty+=info->s->base.pack_reclength; } } + if (test_flag & T_VERBOSE) + puts("\n"); if (empty != info->state->empty) { - if (test_flag & T_VERBOSE) puts(""); mi_check_print_warning(param, - "Not used space is supposed to be: %s but is: %s", - llstr(info->state->empty,buff), - llstr(empty,buff2)); - info->state->empty=empty; + "Found %s deleted space in delete link chain. Should be %s", + llstr(empty,buff2), + llstr(info->state->empty,buff)); } - if (i != 0 || next_link != HA_OFFSET_ERROR) + if (next_link != HA_OFFSET_ERROR) + { + mi_check_print_error(param, + "Found more than the expected %s deleted rows in delete link chain", + llstr(info->state->del, buff)); goto wrong; - - if (test_flag & T_VERBOSE) puts("\n"); + } + if (i != 0) + { + mi_check_print_error(param, + "Found %s deleted rows in delete link chain. Should be %s", + llstr(info->state->del - i, buff2), + llstr(info->state->del, buff)); + goto wrong; + } } DBUG_RETURN(0); + wrong: param->testflag|=T_RETRY_WITHOUT_QUICK; if (test_flag & T_VERBOSE) puts(""); @@ -1040,6 +1052,13 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) } } + if (del_length != info->state->empty) + { + mi_check_print_warning(param, + "Found %s deleted space. Should be %s", + llstr(del_length,llbuff2), + llstr(info->state->empty,llbuff)); + } if (used+empty+del_length != info->state->data_file_length) { mi_check_print_warning(param, diff --git a/myisam/mi_dynrec.c b/myisam/mi_dynrec.c index 86d648a5af0..e1bfe4c3ac5 100644 --- a/myisam/mi_dynrec.c +++ b/myisam/mi_dynrec.c @@ -167,7 +167,6 @@ static int _mi_find_writepos(MI_INFO *info, if (info->s->state.dellink != HA_OFFSET_ERROR) { /* Deleted blocks exists; Get last used block */ - *filepos=info->s->state.dellink; block_info.second_read=0; info->rec_cache.seek_not_done=1; @@ -211,7 +210,11 @@ static int _mi_find_writepos(MI_INFO *info, -/* Remove a deleted block from the deleted list */ +/* + Unlink a deleted block from the deleted list. + This block will be combined with the preceding or next block to form + a big block. +*/ static bool unlink_deleted_block(MI_INFO *info, MI_BLOCK_INFO *block_info) { @@ -225,6 +228,7 @@ static bool unlink_deleted_block(MI_INFO *info, MI_BLOCK_INFO *block_info) { MI_BLOCK_INFO tmp; tmp.second_read=0; + /* Unlink block from the previous block */ if (!(_mi_get_block_info(&tmp,info->dfile,block_info->prev_filepos) & BLOCK_DELETED)) DBUG_RETURN(1); /* Something is wrong */ @@ -232,6 +236,7 @@ static bool unlink_deleted_block(MI_INFO *info, MI_BLOCK_INFO *block_info) if (my_pwrite(info->dfile,(char*) tmp.header+4,8, block_info->prev_filepos+4, MYF(MY_NABP))) DBUG_RETURN(1); + /* Unlink block from next block */ if (block_info->next_filepos != HA_OFFSET_ERROR) { if (!(_mi_get_block_info(&tmp,info->dfile,block_info->next_filepos) @@ -244,11 +249,16 @@ static bool unlink_deleted_block(MI_INFO *info, MI_BLOCK_INFO *block_info) DBUG_RETURN(1); } } + /* We now have one less deleted block */ info->state->del--; info->state->empty-= block_info->block_len; info->s->state.split--; - /* Removing block that we are using through mi_rrnd */ + /* + If this was a block that we where accessing through table scan + (mi_rrnd() or mi_scan(), then ensure that we skip over this block + when doing next mi_rrnd() or mi_scan(). + */ if (info->nextpos == block_info->filepos) info->nextpos+=block_info->block_len; DBUG_RETURN(0); @@ -325,7 +335,7 @@ static int delete_dynamic_record(MI_INFO *info, my_off_t filepos, info->state->empty+=length; filepos=block_info.next_filepos; - /* Now it's safe to unlink the block */ + /* Now it's safe to unlink the deleted block directly after this one */ if (remove_next_block && unlink_deleted_block(info,&del_block)) error=1; } while (!(b_type & BLOCK_LAST)); From 668e7dcec83bf50b2ae22b4a440199d56343eebd Mon Sep 17 00:00:00 2001 From: "kostja@oak.local" <> Date: Tue, 16 Sep 2003 20:28:29 +0400 Subject: [PATCH 18/81] select.test cleanup --- mysql-test/r/select.result | 1221 ------------------------------------ mysql-test/t/select.test | 6 + 2 files changed, 6 insertions(+), 1221 deletions(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index bde527b9b44..09a4ffdb88b 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -25,1205 +25,6 @@ UNIQUE fld1 (fld1), KEY fld3 (fld3), PRIMARY KEY (auto) ); -INSERT INTO t2 VALUES (1,000001,00,'Omaha','teethe','neat',''); -INSERT INTO t2 VALUES (2,011401,37,'breaking','dreaded','Steinberg','W'); -INSERT INTO t2 VALUES (3,011402,37,'Romans','scholastics','jarring',''); -INSERT INTO t2 VALUES (4,011403,37,'intercepted','audiology','tinily',''); -INSERT INTO t2 VALUES (5,011501,37,'bewilderingly','wallet','balled',''); -INSERT INTO t2 VALUES (6,011701,37,'astound','parters','persist','W'); -INSERT INTO t2 VALUES (7,011702,37,'admonishing','eschew','attainments',''); -INSERT INTO t2 VALUES (8,011703,37,'sumac','quitter','fanatic',''); -INSERT INTO t2 VALUES (9,012001,37,'flanking','neat','measures','FAS'); -INSERT INTO t2 VALUES (10,012003,37,'combed','Steinberg','rightfulness',''); -INSERT INTO t2 VALUES (11,012004,37,'subjective','jarring','capably',''); -INSERT INTO t2 VALUES (12,012005,37,'scatterbrain','tinily','impulsive',''); -INSERT INTO t2 VALUES (13,012301,37,'Eulerian','balled','starlet',''); -INSERT INTO t2 VALUES (14,012302,36,'dubbed','persist','terminators',''); -INSERT INTO t2 VALUES (15,012303,37,'Kane','attainments','untying',''); -INSERT INTO t2 VALUES (16,012304,37,'overlay','fanatic','announces','FAS'); -INSERT INTO t2 VALUES (17,012305,37,'perturb','measures','featherweight','FAS'); -INSERT INTO t2 VALUES (18,012306,37,'goblins','rightfulness','pessimist','FAS'); -INSERT INTO t2 VALUES (19,012501,37,'annihilates','capably','daughter',''); -INSERT INTO t2 VALUES (20,012602,37,'Wotan','impulsive','decliner','FAS'); -INSERT INTO t2 VALUES (21,012603,37,'snatching','starlet','lawgiver',''); -INSERT INTO t2 VALUES (22,012604,37,'concludes','terminators','stated',''); -INSERT INTO t2 VALUES (23,012605,37,'laterally','untying','readable',''); -INSERT INTO t2 VALUES (24,012606,37,'yelped','announces','attrition',''); -INSERT INTO t2 VALUES (25,012701,37,'grazing','featherweight','cascade','FAS'); -INSERT INTO t2 VALUES (26,012702,37,'Baird','pessimist','motors','FAS'); -INSERT INTO t2 VALUES (27,012703,37,'celery','daughter','interrogate',''); -INSERT INTO t2 VALUES (28,012704,37,'misunderstander','decliner','pests','W'); -INSERT INTO t2 VALUES (29,013601,37,'handgun','lawgiver','stairway',''); -INSERT INTO t2 VALUES (30,013602,37,'foldout','stated','dopers','FAS'); -INSERT INTO t2 VALUES (31,013603,37,'mystic','readable','testicle','W'); -INSERT INTO t2 VALUES (32,013604,37,'succumbed','attrition','Parsifal','W'); -INSERT INTO t2 VALUES (33,013605,37,'Nabisco','cascade','leavings',''); -INSERT INTO t2 VALUES (34,013606,37,'fingerings','motors','postulation','W'); -INSERT INTO t2 VALUES (35,013607,37,'aging','interrogate','squeaking',''); -INSERT INTO t2 VALUES (36,013608,37,'afield','pests','contrasted',''); -INSERT INTO t2 VALUES (37,013609,37,'ammonium','stairway','leftover',''); -INSERT INTO t2 VALUES (38,013610,37,'boat','dopers','whiteners',''); -INSERT INTO t2 VALUES (39,013801,37,'intelligibility','testicle','erases','W'); -INSERT INTO t2 VALUES (40,013802,37,'Augustine','Parsifal','Punjab','W'); -INSERT INTO t2 VALUES (41,013803,37,'teethe','leavings','Merritt',''); -INSERT INTO t2 VALUES (42,013804,37,'dreaded','postulation','Quixotism',''); -INSERT INTO t2 VALUES (43,013901,37,'scholastics','squeaking','sweetish','FAS'); -INSERT INTO t2 VALUES (44,016001,37,'audiology','contrasted','dogging','FAS'); -INSERT INTO t2 VALUES (45,016201,37,'wallet','leftover','scornfully','FAS'); -INSERT INTO t2 VALUES (46,016202,37,'parters','whiteners','bellow',''); -INSERT INTO t2 VALUES (47,016301,37,'eschew','erases','bills',''); -INSERT INTO t2 VALUES (48,016302,37,'quitter','Punjab','cupboard','FAS'); -INSERT INTO t2 VALUES (49,016303,37,'neat','Merritt','sureties','FAS'); -INSERT INTO t2 VALUES (50,016304,37,'Steinberg','Quixotism','puddings',''); -INSERT INTO t2 VALUES (51,018001,37,'jarring','sweetish','tapestry',''); -INSERT INTO t2 VALUES (52,018002,37,'tinily','dogging','fetters',''); -INSERT INTO t2 VALUES (53,018003,37,'balled','scornfully','bivalves',''); -INSERT INTO t2 VALUES (54,018004,37,'persist','bellow','incurring',''); -INSERT INTO t2 VALUES (55,018005,37,'attainments','bills','Adolph',''); -INSERT INTO t2 VALUES (56,018007,37,'fanatic','cupboard','pithed',''); -INSERT INTO t2 VALUES (57,018008,37,'measures','sureties','emergency',''); -INSERT INTO t2 VALUES (58,018009,37,'rightfulness','puddings','Miles',''); -INSERT INTO t2 VALUES (59,018010,37,'capably','tapestry','trimmings',''); -INSERT INTO t2 VALUES (60,018012,37,'impulsive','fetters','tragedies','W'); -INSERT INTO t2 VALUES (61,018013,37,'starlet','bivalves','skulking','W'); -INSERT INTO t2 VALUES (62,018014,37,'terminators','incurring','flint',''); -INSERT INTO t2 VALUES (63,018015,37,'untying','Adolph','flopping','W'); -INSERT INTO t2 VALUES (64,018016,37,'announces','pithed','relaxing','FAS'); -INSERT INTO t2 VALUES (65,018017,37,'featherweight','emergency','offload','FAS'); -INSERT INTO t2 VALUES (66,018018,37,'pessimist','Miles','suites','W'); -INSERT INTO t2 VALUES (67,018019,37,'daughter','trimmings','lists','FAS'); -INSERT INTO t2 VALUES (68,018020,37,'decliner','tragedies','animized','FAS'); -INSERT INTO t2 VALUES (69,018021,37,'lawgiver','skulking','multilayer','W'); -INSERT INTO t2 VALUES (70,018022,37,'stated','flint','standardizes','FAS'); -INSERT INTO t2 VALUES (71,018023,37,'readable','flopping','Judas',''); -INSERT INTO t2 VALUES (72,018024,37,'attrition','relaxing','vacuuming','W'); -INSERT INTO t2 VALUES (73,018025,37,'cascade','offload','dentally','W'); -INSERT INTO t2 VALUES (74,018026,37,'motors','suites','humanness','W'); -INSERT INTO t2 VALUES (75,018027,37,'interrogate','lists','inch','W'); -INSERT INTO t2 VALUES (76,018028,37,'pests','animized','Weissmuller','W'); -INSERT INTO t2 VALUES (77,018029,37,'stairway','multilayer','irresponsibly','W'); -INSERT INTO t2 VALUES (78,018030,37,'dopers','standardizes','luckily','FAS'); -INSERT INTO t2 VALUES (79,018032,37,'testicle','Judas','culled','W'); -INSERT INTO t2 VALUES (80,018033,37,'Parsifal','vacuuming','medical','FAS'); -INSERT INTO t2 VALUES (81,018034,37,'leavings','dentally','bloodbath','FAS'); -INSERT INTO t2 VALUES (82,018035,37,'postulation','humanness','subschema','W'); -INSERT INTO t2 VALUES (83,018036,37,'squeaking','inch','animals','W'); -INSERT INTO t2 VALUES (84,018037,37,'contrasted','Weissmuller','Micronesia',''); -INSERT INTO t2 VALUES (85,018038,37,'leftover','irresponsibly','repetitions',''); -INSERT INTO t2 VALUES (86,018039,37,'whiteners','luckily','Antares',''); -INSERT INTO t2 VALUES (87,018040,37,'erases','culled','ventilate','W'); -INSERT INTO t2 VALUES (88,018041,37,'Punjab','medical','pityingly',''); -INSERT INTO t2 VALUES (89,018042,37,'Merritt','bloodbath','interdependent',''); -INSERT INTO t2 VALUES (90,018043,37,'Quixotism','subschema','Graves','FAS'); -INSERT INTO t2 VALUES (91,018044,37,'sweetish','animals','neonatal',''); -INSERT INTO t2 VALUES (92,018045,37,'dogging','Micronesia','scribbled','FAS'); -INSERT INTO t2 VALUES (93,018046,37,'scornfully','repetitions','chafe','W'); -INSERT INTO t2 VALUES (94,018048,37,'bellow','Antares','honoring',''); -INSERT INTO t2 VALUES (95,018049,37,'bills','ventilate','realtor',''); -INSERT INTO t2 VALUES (96,018050,37,'cupboard','pityingly','elite',''); -INSERT INTO t2 VALUES (97,018051,37,'sureties','interdependent','funereal',''); -INSERT INTO t2 VALUES (98,018052,37,'puddings','Graves','abrogating',''); -INSERT INTO t2 VALUES (99,018053,50,'tapestry','neonatal','sorters',''); -INSERT INTO t2 VALUES (100,018054,37,'fetters','scribbled','Conley',''); -INSERT INTO t2 VALUES (101,018055,37,'bivalves','chafe','lectured',''); -INSERT INTO t2 VALUES (102,018056,37,'incurring','honoring','Abraham',''); -INSERT INTO t2 VALUES (103,018057,37,'Adolph','realtor','Hawaii','W'); -INSERT INTO t2 VALUES (104,018058,37,'pithed','elite','cage',''); -INSERT INTO t2 VALUES (105,018059,36,'emergency','funereal','hushes',''); -INSERT INTO t2 VALUES (106,018060,37,'Miles','abrogating','Simla',''); -INSERT INTO t2 VALUES (107,018061,37,'trimmings','sorters','reporters',''); -INSERT INTO t2 VALUES (108,018101,37,'tragedies','Conley','Dutchman','FAS'); -INSERT INTO t2 VALUES (109,018102,37,'skulking','lectured','descendants','FAS'); -INSERT INTO t2 VALUES (110,018103,37,'flint','Abraham','groupings','FAS'); -INSERT INTO t2 VALUES (111,018104,37,'flopping','Hawaii','dissociate',''); -INSERT INTO t2 VALUES (112,018201,37,'relaxing','cage','coexist','W'); -INSERT INTO t2 VALUES (113,018202,37,'offload','hushes','Beebe',''); -INSERT INTO t2 VALUES (114,018402,37,'suites','Simla','Taoism',''); -INSERT INTO t2 VALUES (115,018403,37,'lists','reporters','Connally',''); -INSERT INTO t2 VALUES (116,018404,37,'animized','Dutchman','fetched','FAS'); -INSERT INTO t2 VALUES (117,018405,37,'multilayer','descendants','checkpoints','FAS'); -INSERT INTO t2 VALUES (118,018406,37,'standardizes','groupings','rusting',''); -INSERT INTO t2 VALUES (119,018409,37,'Judas','dissociate','galling',''); -INSERT INTO t2 VALUES (120,018601,37,'vacuuming','coexist','obliterates',''); -INSERT INTO t2 VALUES (121,018602,37,'dentally','Beebe','traitor',''); -INSERT INTO t2 VALUES (122,018603,37,'humanness','Taoism','resumes','FAS'); -INSERT INTO t2 VALUES (123,018801,37,'inch','Connally','analyzable','FAS'); -INSERT INTO t2 VALUES (124,018802,37,'Weissmuller','fetched','terminator','FAS'); -INSERT INTO t2 VALUES (125,018803,37,'irresponsibly','checkpoints','gritty','FAS'); -INSERT INTO t2 VALUES (126,018804,37,'luckily','rusting','firearm','W'); -INSERT INTO t2 VALUES (127,018805,37,'culled','galling','minima',''); -INSERT INTO t2 VALUES (128,018806,37,'medical','obliterates','Selfridge',''); -INSERT INTO t2 VALUES (129,018807,37,'bloodbath','traitor','disable',''); -INSERT INTO t2 VALUES (130,018808,37,'subschema','resumes','witchcraft','W'); -INSERT INTO t2 VALUES (131,018809,37,'animals','analyzable','betroth','W'); -INSERT INTO t2 VALUES (132,018810,37,'Micronesia','terminator','Manhattanize',''); -INSERT INTO t2 VALUES (133,018811,37,'repetitions','gritty','imprint',''); -INSERT INTO t2 VALUES (134,018812,37,'Antares','firearm','peeked',''); -INSERT INTO t2 VALUES (135,019101,37,'ventilate','minima','swelling',''); -INSERT INTO t2 VALUES (136,019102,37,'pityingly','Selfridge','interrelationships','W'); -INSERT INTO t2 VALUES (137,019103,37,'interdependent','disable','riser',''); -INSERT INTO t2 VALUES (138,019201,37,'Graves','witchcraft','Gandhian','W'); -INSERT INTO t2 VALUES (139,030501,37,'neonatal','betroth','peacock','A'); -INSERT INTO t2 VALUES (140,030502,50,'scribbled','Manhattanize','bee','A'); -INSERT INTO t2 VALUES (141,030503,37,'chafe','imprint','kanji',''); -INSERT INTO t2 VALUES (142,030504,37,'honoring','peeked','dental',''); -INSERT INTO t2 VALUES (143,031901,37,'realtor','swelling','scarf','FAS'); -INSERT INTO t2 VALUES (144,036001,37,'elite','interrelationships','chasm','A'); -INSERT INTO t2 VALUES (145,036002,37,'funereal','riser','insolence','A'); -INSERT INTO t2 VALUES (146,036004,37,'abrogating','Gandhian','syndicate',''); -INSERT INTO t2 VALUES (147,036005,37,'sorters','peacock','alike',''); -INSERT INTO t2 VALUES (148,038001,37,'Conley','bee','imperial','A'); -INSERT INTO t2 VALUES (149,038002,37,'lectured','kanji','convulsion','A'); -INSERT INTO t2 VALUES (150,038003,37,'Abraham','dental','railway','A'); -INSERT INTO t2 VALUES (151,038004,37,'Hawaii','scarf','validate','A'); -INSERT INTO t2 VALUES (152,038005,37,'cage','chasm','normalizes','A'); -INSERT INTO t2 VALUES (153,038006,37,'hushes','insolence','comprehensive',''); -INSERT INTO t2 VALUES (154,038007,37,'Simla','syndicate','chewing',''); -INSERT INTO t2 VALUES (155,038008,37,'reporters','alike','denizen',''); -INSERT INTO t2 VALUES (156,038009,37,'Dutchman','imperial','schemer',''); -INSERT INTO t2 VALUES (157,038010,37,'descendants','convulsion','chronicle',''); -INSERT INTO t2 VALUES (158,038011,37,'groupings','railway','Kline',''); -INSERT INTO t2 VALUES (159,038012,37,'dissociate','validate','Anatole',''); -INSERT INTO t2 VALUES (160,038013,37,'coexist','normalizes','partridges',''); -INSERT INTO t2 VALUES (161,038014,37,'Beebe','comprehensive','brunch',''); -INSERT INTO t2 VALUES (162,038015,37,'Taoism','chewing','recruited',''); -INSERT INTO t2 VALUES (163,038016,37,'Connally','denizen','dimensions','W'); -INSERT INTO t2 VALUES (164,038017,37,'fetched','schemer','Chicana','W'); -INSERT INTO t2 VALUES (165,038018,37,'checkpoints','chronicle','announced',''); -INSERT INTO t2 VALUES (166,038101,37,'rusting','Kline','praised','FAS'); -INSERT INTO t2 VALUES (167,038102,37,'galling','Anatole','employing',''); -INSERT INTO t2 VALUES (168,038103,37,'obliterates','partridges','linear',''); -INSERT INTO t2 VALUES (169,038104,37,'traitor','brunch','quagmire',''); -INSERT INTO t2 VALUES (170,038201,37,'resumes','recruited','western','A'); -INSERT INTO t2 VALUES (171,038202,37,'analyzable','dimensions','relishing',''); -INSERT INTO t2 VALUES (172,038203,37,'terminator','Chicana','serving','A'); -INSERT INTO t2 VALUES (173,038204,37,'gritty','announced','scheduling',''); -INSERT INTO t2 VALUES (174,038205,37,'firearm','praised','lore',''); -INSERT INTO t2 VALUES (175,038206,37,'minima','employing','eventful',''); -INSERT INTO t2 VALUES (176,038208,37,'Selfridge','linear','arteriole','A'); -INSERT INTO t2 VALUES (177,042801,37,'disable','quagmire','disentangle',''); -INSERT INTO t2 VALUES (178,042802,37,'witchcraft','western','cured','A'); -INSERT INTO t2 VALUES (179,046101,37,'betroth','relishing','Fenton','W'); -INSERT INTO t2 VALUES (180,048001,37,'Manhattanize','serving','avoidable','A'); -INSERT INTO t2 VALUES (181,048002,37,'imprint','scheduling','drains','A'); -INSERT INTO t2 VALUES (182,048003,37,'peeked','lore','detectably','FAS'); -INSERT INTO t2 VALUES (183,048004,37,'swelling','eventful','husky',''); -INSERT INTO t2 VALUES (184,048005,37,'interrelationships','arteriole','impelling',''); -INSERT INTO t2 VALUES (185,048006,37,'riser','disentangle','undoes',''); -INSERT INTO t2 VALUES (186,048007,37,'Gandhian','cured','evened',''); -INSERT INTO t2 VALUES (187,048008,37,'peacock','Fenton','squeezes',''); -INSERT INTO t2 VALUES (188,048101,37,'bee','avoidable','destroyer','FAS'); -INSERT INTO t2 VALUES (189,048102,37,'kanji','drains','rudeness',''); -INSERT INTO t2 VALUES (190,048201,37,'dental','detectably','beaner','FAS'); -INSERT INTO t2 VALUES (191,048202,37,'scarf','husky','boorish',''); -INSERT INTO t2 VALUES (192,048203,37,'chasm','impelling','Everhart',''); -INSERT INTO t2 VALUES (193,048204,37,'insolence','undoes','encompass','A'); -INSERT INTO t2 VALUES (194,048205,37,'syndicate','evened','mushrooms',''); -INSERT INTO t2 VALUES (195,048301,37,'alike','squeezes','Alison','A'); -INSERT INTO t2 VALUES (196,048302,37,'imperial','destroyer','externally','FAS'); -INSERT INTO t2 VALUES (197,048303,37,'convulsion','rudeness','pellagra',''); -INSERT INTO t2 VALUES (198,048304,37,'railway','beaner','cult',''); -INSERT INTO t2 VALUES (199,048305,37,'validate','boorish','creek','A'); -INSERT INTO t2 VALUES (200,048401,37,'normalizes','Everhart','Huffman',''); -INSERT INTO t2 VALUES (201,048402,37,'comprehensive','encompass','Majorca','FAS'); -INSERT INTO t2 VALUES (202,048403,37,'chewing','mushrooms','governing','A'); -INSERT INTO t2 VALUES (203,048404,37,'denizen','Alison','gadfly','FAS'); -INSERT INTO t2 VALUES (204,048405,37,'schemer','externally','reassigned','FAS'); -INSERT INTO t2 VALUES (205,048406,37,'chronicle','pellagra','intentness','W'); -INSERT INTO t2 VALUES (206,048407,37,'Kline','cult','craziness',''); -INSERT INTO t2 VALUES (207,048408,37,'Anatole','creek','psychic',''); -INSERT INTO t2 VALUES (208,048409,37,'partridges','Huffman','squabbled',''); -INSERT INTO t2 VALUES (209,048410,37,'brunch','Majorca','burlesque',''); -INSERT INTO t2 VALUES (210,048411,37,'recruited','governing','capped',''); -INSERT INTO t2 VALUES (211,048412,37,'dimensions','gadfly','extracted','A'); -INSERT INTO t2 VALUES (212,048413,37,'Chicana','reassigned','DiMaggio',''); -INSERT INTO t2 VALUES (213,048601,37,'announced','intentness','exclamation','FAS'); -INSERT INTO t2 VALUES (214,048602,37,'praised','craziness','subdirectory',''); -INSERT INTO t2 VALUES (215,048603,37,'employing','psychic','fangs',''); -INSERT INTO t2 VALUES (216,048604,37,'linear','squabbled','buyer','A'); -INSERT INTO t2 VALUES (217,048801,37,'quagmire','burlesque','pithing','A'); -INSERT INTO t2 VALUES (218,050901,37,'western','capped','transistorizing','A'); -INSERT INTO t2 VALUES (219,051201,37,'relishing','extracted','nonbiodegradable',''); -INSERT INTO t2 VALUES (220,056002,37,'serving','DiMaggio','dislocate',''); -INSERT INTO t2 VALUES (221,056003,37,'scheduling','exclamation','monochromatic','FAS'); -INSERT INTO t2 VALUES (222,056004,37,'lore','subdirectory','batting',''); -INSERT INTO t2 VALUES (223,056102,37,'eventful','fangs','postcondition','A'); -INSERT INTO t2 VALUES (224,056203,37,'arteriole','buyer','catalog','FAS'); -INSERT INTO t2 VALUES (225,056204,37,'disentangle','pithing','Remus',''); -INSERT INTO t2 VALUES (226,058003,37,'cured','transistorizing','devices','A'); -INSERT INTO t2 VALUES (227,058004,37,'Fenton','nonbiodegradable','bike','A'); -INSERT INTO t2 VALUES (228,058005,37,'avoidable','dislocate','qualify',''); -INSERT INTO t2 VALUES (229,058006,37,'drains','monochromatic','detained',''); -INSERT INTO t2 VALUES (230,058007,37,'detectably','batting','commended',''); -INSERT INTO t2 VALUES (231,058101,37,'husky','postcondition','civilize',''); -INSERT INTO t2 VALUES (232,058102,37,'impelling','catalog','Elmhurst',''); -INSERT INTO t2 VALUES (233,058103,37,'undoes','Remus','anesthetizing',''); -INSERT INTO t2 VALUES (234,058105,37,'evened','devices','deaf',''); -INSERT INTO t2 VALUES (235,058111,37,'squeezes','bike','Brigham',''); -INSERT INTO t2 VALUES (236,058112,37,'destroyer','qualify','title',''); -INSERT INTO t2 VALUES (237,058113,37,'rudeness','detained','coarse',''); -INSERT INTO t2 VALUES (238,058114,37,'beaner','commended','combinations',''); -INSERT INTO t2 VALUES (239,058115,37,'boorish','civilize','grayness',''); -INSERT INTO t2 VALUES (240,058116,37,'Everhart','Elmhurst','innumerable','FAS'); -INSERT INTO t2 VALUES (241,058117,37,'encompass','anesthetizing','Caroline','A'); -INSERT INTO t2 VALUES (242,058118,37,'mushrooms','deaf','fatty','FAS'); -INSERT INTO t2 VALUES (243,058119,37,'Alison','Brigham','eastbound',''); -INSERT INTO t2 VALUES (244,058120,37,'externally','title','inexperienced',''); -INSERT INTO t2 VALUES (245,058121,37,'pellagra','coarse','hoarder','A'); -INSERT INTO t2 VALUES (246,058122,37,'cult','combinations','scotch','W'); -INSERT INTO t2 VALUES (247,058123,37,'creek','grayness','passport','A'); -INSERT INTO t2 VALUES (248,058124,37,'Huffman','innumerable','strategic','FAS'); -INSERT INTO t2 VALUES (249,058125,37,'Majorca','Caroline','gated',''); -INSERT INTO t2 VALUES (250,058126,37,'governing','fatty','flog',''); -INSERT INTO t2 VALUES (251,058127,37,'gadfly','eastbound','Pipestone',''); -INSERT INTO t2 VALUES (252,058128,37,'reassigned','inexperienced','Dar',''); -INSERT INTO t2 VALUES (253,058201,37,'intentness','hoarder','Corcoran',''); -INSERT INTO t2 VALUES (254,058202,37,'craziness','scotch','flyers','A'); -INSERT INTO t2 VALUES (255,058303,37,'psychic','passport','competitions','W'); -INSERT INTO t2 VALUES (256,058304,37,'squabbled','strategic','suppliers','FAS'); -INSERT INTO t2 VALUES (257,058602,37,'burlesque','gated','skips',''); -INSERT INTO t2 VALUES (258,058603,37,'capped','flog','institutes',''); -INSERT INTO t2 VALUES (259,058604,37,'extracted','Pipestone','troop','A'); -INSERT INTO t2 VALUES (260,058605,37,'DiMaggio','Dar','connective','W'); -INSERT INTO t2 VALUES (261,058606,37,'exclamation','Corcoran','denies',''); -INSERT INTO t2 VALUES (262,058607,37,'subdirectory','flyers','polka',''); -INSERT INTO t2 VALUES (263,060401,36,'fangs','competitions','observations','FAS'); -INSERT INTO t2 VALUES (264,061701,36,'buyer','suppliers','askers',''); -INSERT INTO t2 VALUES (265,066201,36,'pithing','skips','homeless','FAS'); -INSERT INTO t2 VALUES (266,066501,36,'transistorizing','institutes','Anna',''); -INSERT INTO t2 VALUES (267,068001,36,'nonbiodegradable','troop','subdirectories','W'); -INSERT INTO t2 VALUES (268,068002,36,'dislocate','connective','decaying','FAS'); -INSERT INTO t2 VALUES (269,068005,36,'monochromatic','denies','outwitting','W'); -INSERT INTO t2 VALUES (270,068006,36,'batting','polka','Harpy','W'); -INSERT INTO t2 VALUES (271,068007,36,'postcondition','observations','crazed',''); -INSERT INTO t2 VALUES (272,068008,36,'catalog','askers','suffocate',''); -INSERT INTO t2 VALUES (273,068009,36,'Remus','homeless','provers','FAS'); -INSERT INTO t2 VALUES (274,068010,36,'devices','Anna','technically',''); -INSERT INTO t2 VALUES (275,068011,36,'bike','subdirectories','Franklinizations',''); -INSERT INTO t2 VALUES (276,068202,36,'qualify','decaying','considered',''); -INSERT INTO t2 VALUES (277,068302,36,'detained','outwitting','tinnily',''); -INSERT INTO t2 VALUES (278,068303,36,'commended','Harpy','uninterruptedly',''); -INSERT INTO t2 VALUES (279,068401,36,'civilize','crazed','whistled','A'); -INSERT INTO t2 VALUES (280,068501,36,'Elmhurst','suffocate','automate',''); -INSERT INTO t2 VALUES (281,068502,36,'anesthetizing','provers','gutting','W'); -INSERT INTO t2 VALUES (282,068503,36,'deaf','technically','surreptitious',''); -INSERT INTO t2 VALUES (283,068602,36,'Brigham','Franklinizations','Choctaw',''); -INSERT INTO t2 VALUES (284,068603,36,'title','considered','cooks',''); -INSERT INTO t2 VALUES (285,068701,36,'coarse','tinnily','millivolt','FAS'); -INSERT INTO t2 VALUES (286,068702,36,'combinations','uninterruptedly','counterpoise',''); -INSERT INTO t2 VALUES (287,068703,36,'grayness','whistled','Gothicism',''); -INSERT INTO t2 VALUES (288,076001,36,'innumerable','automate','feminine',''); -INSERT INTO t2 VALUES (289,076002,36,'Caroline','gutting','metaphysically','W'); -INSERT INTO t2 VALUES (290,076101,36,'fatty','surreptitious','sanding','A'); -INSERT INTO t2 VALUES (291,076102,36,'eastbound','Choctaw','contributorily',''); -INSERT INTO t2 VALUES (292,076103,36,'inexperienced','cooks','receivers','FAS'); -INSERT INTO t2 VALUES (293,076302,36,'hoarder','millivolt','adjourn',''); -INSERT INTO t2 VALUES (294,076303,36,'scotch','counterpoise','straggled','A'); -INSERT INTO t2 VALUES (295,076304,36,'passport','Gothicism','druggists',''); -INSERT INTO t2 VALUES (296,076305,36,'strategic','feminine','thanking','FAS'); -INSERT INTO t2 VALUES (297,076306,36,'gated','metaphysically','ostrich',''); -INSERT INTO t2 VALUES (298,076307,36,'flog','sanding','hopelessness','FAS'); -INSERT INTO t2 VALUES (299,076402,36,'Pipestone','contributorily','Eurydice',''); -INSERT INTO t2 VALUES (300,076501,36,'Dar','receivers','excitation','W'); -INSERT INTO t2 VALUES (301,076502,36,'Corcoran','adjourn','presumes','FAS'); -INSERT INTO t2 VALUES (302,076701,36,'flyers','straggled','imaginable','FAS'); -INSERT INTO t2 VALUES (303,078001,36,'competitions','druggists','concoct','W'); -INSERT INTO t2 VALUES (304,078002,36,'suppliers','thanking','peering','W'); -INSERT INTO t2 VALUES (305,078003,36,'skips','ostrich','Phelps','FAS'); -INSERT INTO t2 VALUES (306,078004,36,'institutes','hopelessness','ferociousness','FAS'); -INSERT INTO t2 VALUES (307,078005,36,'troop','Eurydice','sentences',''); -INSERT INTO t2 VALUES (308,078006,36,'connective','excitation','unlocks',''); -INSERT INTO t2 VALUES (309,078007,36,'denies','presumes','engrossing','W'); -INSERT INTO t2 VALUES (310,078008,36,'polka','imaginable','Ruth',''); -INSERT INTO t2 VALUES (311,078101,36,'observations','concoct','tying',''); -INSERT INTO t2 VALUES (312,078103,36,'askers','peering','exclaimers',''); -INSERT INTO t2 VALUES (313,078104,36,'homeless','Phelps','synergy',''); -INSERT INTO t2 VALUES (314,078105,36,'Anna','ferociousness','Huey','W'); -INSERT INTO t2 VALUES (315,082101,36,'subdirectories','sentences','merging',''); -INSERT INTO t2 VALUES (316,083401,36,'decaying','unlocks','judges','A'); -INSERT INTO t2 VALUES (317,084001,36,'outwitting','engrossing','Shylock','W'); -INSERT INTO t2 VALUES (318,084002,36,'Harpy','Ruth','Miltonism',''); -INSERT INTO t2 VALUES (319,086001,36,'crazed','tying','hen','W'); -INSERT INTO t2 VALUES (320,086102,36,'suffocate','exclaimers','honeybee','FAS'); -INSERT INTO t2 VALUES (321,086201,36,'provers','synergy','towers',''); -INSERT INTO t2 VALUES (322,088001,36,'technically','Huey','dilutes','W'); -INSERT INTO t2 VALUES (323,088002,36,'Franklinizations','merging','numerals','FAS'); -INSERT INTO t2 VALUES (324,088003,36,'considered','judges','democracy','FAS'); -INSERT INTO t2 VALUES (325,088004,36,'tinnily','Shylock','Ibero-',''); -INSERT INTO t2 VALUES (326,088101,36,'uninterruptedly','Miltonism','invalids',''); -INSERT INTO t2 VALUES (327,088102,36,'whistled','hen','behavior',''); -INSERT INTO t2 VALUES (328,088103,36,'automate','honeybee','accruing',''); -INSERT INTO t2 VALUES (329,088104,36,'gutting','towers','relics','A'); -INSERT INTO t2 VALUES (330,088105,36,'surreptitious','dilutes','rackets',''); -INSERT INTO t2 VALUES (331,088106,36,'Choctaw','numerals','Fischbein','W'); -INSERT INTO t2 VALUES (332,088201,36,'cooks','democracy','phony','W'); -INSERT INTO t2 VALUES (333,088203,36,'millivolt','Ibero-','cross','FAS'); -INSERT INTO t2 VALUES (334,088204,36,'counterpoise','invalids','cleanup',''); -INSERT INTO t2 VALUES (335,088302,37,'Gothicism','behavior','conspirator',''); -INSERT INTO t2 VALUES (336,088303,37,'feminine','accruing','label','FAS'); -INSERT INTO t2 VALUES (337,088305,37,'metaphysically','relics','university',''); -INSERT INTO t2 VALUES (338,088402,37,'sanding','rackets','cleansed','FAS'); -INSERT INTO t2 VALUES (339,088501,36,'contributorily','Fischbein','ballgown',''); -INSERT INTO t2 VALUES (340,088502,36,'receivers','phony','starlet',''); -INSERT INTO t2 VALUES (341,088503,36,'adjourn','cross','aqueous',''); -INSERT INTO t2 VALUES (342,098001,58,'straggled','cleanup','portrayal','A'); -INSERT INTO t2 VALUES (343,098002,58,'druggists','conspirator','despising','W'); -INSERT INTO t2 VALUES (344,098003,58,'thanking','label','distort','W'); -INSERT INTO t2 VALUES (345,098004,58,'ostrich','university','palmed',''); -INSERT INTO t2 VALUES (346,098005,58,'hopelessness','cleansed','faced',''); -INSERT INTO t2 VALUES (347,098006,58,'Eurydice','ballgown','silverware',''); -INSERT INTO t2 VALUES (348,141903,29,'excitation','starlet','assessor',''); -INSERT INTO t2 VALUES (349,098008,58,'presumes','aqueous','spiders',''); -INSERT INTO t2 VALUES (350,098009,58,'imaginable','portrayal','artificially',''); -INSERT INTO t2 VALUES (351,098010,58,'concoct','despising','reminiscence',''); -INSERT INTO t2 VALUES (352,098011,58,'peering','distort','Mexican',''); -INSERT INTO t2 VALUES (353,098012,58,'Phelps','palmed','obnoxious',''); -INSERT INTO t2 VALUES (354,098013,58,'ferociousness','faced','fragile',''); -INSERT INTO t2 VALUES (355,098014,58,'sentences','silverware','apprehensible',''); -INSERT INTO t2 VALUES (356,098015,58,'unlocks','assessor','births',''); -INSERT INTO t2 VALUES (357,098016,58,'engrossing','spiders','garages',''); -INSERT INTO t2 VALUES (358,098017,58,'Ruth','artificially','panty',''); -INSERT INTO t2 VALUES (359,098018,58,'tying','reminiscence','anteater',''); -INSERT INTO t2 VALUES (360,098019,58,'exclaimers','Mexican','displacement','A'); -INSERT INTO t2 VALUES (361,098020,58,'synergy','obnoxious','drovers','A'); -INSERT INTO t2 VALUES (362,098021,58,'Huey','fragile','patenting','A'); -INSERT INTO t2 VALUES (363,098022,58,'merging','apprehensible','far','A'); -INSERT INTO t2 VALUES (364,098023,58,'judges','births','shrieks',''); -INSERT INTO t2 VALUES (365,098024,58,'Shylock','garages','aligning','W'); -INSERT INTO t2 VALUES (366,098025,37,'Miltonism','panty','pragmatism',''); -INSERT INTO t2 VALUES (367,106001,36,'hen','anteater','fevers','W'); -INSERT INTO t2 VALUES (368,108001,36,'honeybee','displacement','reexamines','A'); -INSERT INTO t2 VALUES (369,108002,36,'towers','drovers','occupancies',''); -INSERT INTO t2 VALUES (370,108003,36,'dilutes','patenting','sweats','FAS'); -INSERT INTO t2 VALUES (371,108004,36,'numerals','far','modulators',''); -INSERT INTO t2 VALUES (372,108005,36,'democracy','shrieks','demand','W'); -INSERT INTO t2 VALUES (373,108007,36,'Ibero-','aligning','Madeira',''); -INSERT INTO t2 VALUES (374,108008,36,'invalids','pragmatism','Viennese','W'); -INSERT INTO t2 VALUES (375,108009,36,'behavior','fevers','chillier','W'); -INSERT INTO t2 VALUES (376,108010,36,'accruing','reexamines','wildcats','FAS'); -INSERT INTO t2 VALUES (377,108011,36,'relics','occupancies','gentle',''); -INSERT INTO t2 VALUES (378,108012,36,'rackets','sweats','Angles','W'); -INSERT INTO t2 VALUES (379,108101,36,'Fischbein','modulators','accuracies',''); -INSERT INTO t2 VALUES (380,108102,36,'phony','demand','toggle',''); -INSERT INTO t2 VALUES (381,108103,36,'cross','Madeira','Mendelssohn','W'); -INSERT INTO t2 VALUES (382,108111,50,'cleanup','Viennese','behaviorally',''); -INSERT INTO t2 VALUES (383,108105,36,'conspirator','chillier','Rochford',''); -INSERT INTO t2 VALUES (384,108106,36,'label','wildcats','mirror','W'); -INSERT INTO t2 VALUES (385,108107,36,'university','gentle','Modula',''); -INSERT INTO t2 VALUES (386,108108,50,'cleansed','Angles','clobbering',''); -INSERT INTO t2 VALUES (387,108109,36,'ballgown','accuracies','chronography',''); -INSERT INTO t2 VALUES (388,108110,36,'starlet','toggle','Eskimoizeds',''); -INSERT INTO t2 VALUES (389,108201,36,'aqueous','Mendelssohn','British','W'); -INSERT INTO t2 VALUES (390,108202,36,'portrayal','behaviorally','pitfalls',''); -INSERT INTO t2 VALUES (391,108203,36,'despising','Rochford','verify','W'); -INSERT INTO t2 VALUES (392,108204,36,'distort','mirror','scatter','FAS'); -INSERT INTO t2 VALUES (393,108205,36,'palmed','Modula','Aztecan',''); -INSERT INTO t2 VALUES (394,108301,36,'faced','clobbering','acuity','W'); -INSERT INTO t2 VALUES (395,108302,36,'silverware','chronography','sinking','W'); -INSERT INTO t2 VALUES (396,112101,36,'assessor','Eskimoizeds','beasts','FAS'); -INSERT INTO t2 VALUES (397,112102,36,'spiders','British','Witt','W'); -INSERT INTO t2 VALUES (398,113701,36,'artificially','pitfalls','physicists','FAS'); -INSERT INTO t2 VALUES (399,116001,36,'reminiscence','verify','folksong','A'); -INSERT INTO t2 VALUES (400,116201,36,'Mexican','scatter','strokes','FAS'); -INSERT INTO t2 VALUES (401,116301,36,'obnoxious','Aztecan','crowder',''); -INSERT INTO t2 VALUES (402,116302,36,'fragile','acuity','merry',''); -INSERT INTO t2 VALUES (403,116601,36,'apprehensible','sinking','cadenced',''); -INSERT INTO t2 VALUES (404,116602,36,'births','beasts','alimony','A'); -INSERT INTO t2 VALUES (405,116603,36,'garages','Witt','principled','A'); -INSERT INTO t2 VALUES (406,116701,36,'panty','physicists','golfing',''); -INSERT INTO t2 VALUES (407,116702,36,'anteater','folksong','undiscovered',''); -INSERT INTO t2 VALUES (408,118001,36,'displacement','strokes','irritates',''); -INSERT INTO t2 VALUES (409,118002,36,'drovers','crowder','patriots','A'); -INSERT INTO t2 VALUES (410,118003,36,'patenting','merry','rooms','FAS'); -INSERT INTO t2 VALUES (411,118004,36,'far','cadenced','towering','W'); -INSERT INTO t2 VALUES (412,118005,36,'shrieks','alimony','displease',''); -INSERT INTO t2 VALUES (413,118006,36,'aligning','principled','photosensitive',''); -INSERT INTO t2 VALUES (414,118007,36,'pragmatism','golfing','inking',''); -INSERT INTO t2 VALUES (415,118008,36,'fevers','undiscovered','gainers',''); -INSERT INTO t2 VALUES (416,118101,36,'reexamines','irritates','leaning','A'); -INSERT INTO t2 VALUES (417,118102,36,'occupancies','patriots','hydrant','A'); -INSERT INTO t2 VALUES (418,118103,36,'sweats','rooms','preserve',''); -INSERT INTO t2 VALUES (419,118202,36,'modulators','towering','blinded','A'); -INSERT INTO t2 VALUES (420,118203,36,'demand','displease','interactions','A'); -INSERT INTO t2 VALUES (421,118204,36,'Madeira','photosensitive','Barry',''); -INSERT INTO t2 VALUES (422,118302,36,'Viennese','inking','whiteness','A'); -INSERT INTO t2 VALUES (423,118304,36,'chillier','gainers','pastimes','W'); -INSERT INTO t2 VALUES (424,118305,36,'wildcats','leaning','Edenization',''); -INSERT INTO t2 VALUES (425,118306,36,'gentle','hydrant','Muscat',''); -INSERT INTO t2 VALUES (426,118307,36,'Angles','preserve','assassinated',''); -INSERT INTO t2 VALUES (427,123101,36,'accuracies','blinded','labeled',''); -INSERT INTO t2 VALUES (428,123102,36,'toggle','interactions','glacial','A'); -INSERT INTO t2 VALUES (429,123301,36,'Mendelssohn','Barry','implied','W'); -INSERT INTO t2 VALUES (430,126001,36,'behaviorally','whiteness','bibliographies','W'); -INSERT INTO t2 VALUES (431,126002,36,'Rochford','pastimes','Buchanan',''); -INSERT INTO t2 VALUES (432,126003,36,'mirror','Edenization','forgivably','FAS'); -INSERT INTO t2 VALUES (433,126101,36,'Modula','Muscat','innuendo','A'); -INSERT INTO t2 VALUES (434,126301,36,'clobbering','assassinated','den','FAS'); -INSERT INTO t2 VALUES (435,126302,36,'chronography','labeled','submarines','W'); -INSERT INTO t2 VALUES (436,126402,36,'Eskimoizeds','glacial','mouthful','A'); -INSERT INTO t2 VALUES (437,126601,36,'British','implied','expiring',''); -INSERT INTO t2 VALUES (438,126602,36,'pitfalls','bibliographies','unfulfilled','FAS'); -INSERT INTO t2 VALUES (439,126702,36,'verify','Buchanan','precession',''); -INSERT INTO t2 VALUES (440,128001,36,'scatter','forgivably','nullified',''); -INSERT INTO t2 VALUES (441,128002,36,'Aztecan','innuendo','affects',''); -INSERT INTO t2 VALUES (442,128003,36,'acuity','den','Cynthia',''); -INSERT INTO t2 VALUES (443,128004,36,'sinking','submarines','Chablis','A'); -INSERT INTO t2 VALUES (444,128005,36,'beasts','mouthful','betterments','FAS'); -INSERT INTO t2 VALUES (445,128007,36,'Witt','expiring','advertising',''); -INSERT INTO t2 VALUES (446,128008,36,'physicists','unfulfilled','rubies','A'); -INSERT INTO t2 VALUES (447,128009,36,'folksong','precession','southwest','FAS'); -INSERT INTO t2 VALUES (448,128010,36,'strokes','nullified','superstitious','A'); -INSERT INTO t2 VALUES (449,128011,36,'crowder','affects','tabernacle','W'); -INSERT INTO t2 VALUES (450,128012,36,'merry','Cynthia','silk','A'); -INSERT INTO t2 VALUES (451,128013,36,'cadenced','Chablis','handsomest','A'); -INSERT INTO t2 VALUES (452,128014,36,'alimony','betterments','Persian','A'); -INSERT INTO t2 VALUES (453,128015,36,'principled','advertising','analog','W'); -INSERT INTO t2 VALUES (454,128016,36,'golfing','rubies','complex','W'); -INSERT INTO t2 VALUES (455,128017,36,'undiscovered','southwest','Taoist',''); -INSERT INTO t2 VALUES (456,128018,36,'irritates','superstitious','suspend',''); -INSERT INTO t2 VALUES (457,128019,36,'patriots','tabernacle','relegated',''); -INSERT INTO t2 VALUES (458,128020,36,'rooms','silk','awesome','W'); -INSERT INTO t2 VALUES (459,128021,36,'towering','handsomest','Bruxelles',''); -INSERT INTO t2 VALUES (460,128022,36,'displease','Persian','imprecisely','A'); -INSERT INTO t2 VALUES (461,128023,36,'photosensitive','analog','televise',''); -INSERT INTO t2 VALUES (462,128101,36,'inking','complex','braking',''); -INSERT INTO t2 VALUES (463,128102,36,'gainers','Taoist','true','FAS'); -INSERT INTO t2 VALUES (464,128103,36,'leaning','suspend','disappointing','FAS'); -INSERT INTO t2 VALUES (465,128104,36,'hydrant','relegated','navally','W'); -INSERT INTO t2 VALUES (466,128106,36,'preserve','awesome','circus',''); -INSERT INTO t2 VALUES (467,128107,36,'blinded','Bruxelles','beetles',''); -INSERT INTO t2 VALUES (468,128108,36,'interactions','imprecisely','trumps',''); -INSERT INTO t2 VALUES (469,128202,36,'Barry','televise','fourscore','W'); -INSERT INTO t2 VALUES (470,128203,36,'whiteness','braking','Blackfoots',''); -INSERT INTO t2 VALUES (471,128301,36,'pastimes','true','Grady',''); -INSERT INTO t2 VALUES (472,128302,36,'Edenization','disappointing','quiets','FAS'); -INSERT INTO t2 VALUES (473,128303,36,'Muscat','navally','floundered','FAS'); -INSERT INTO t2 VALUES (474,128304,36,'assassinated','circus','profundity','W'); -INSERT INTO t2 VALUES (475,128305,36,'labeled','beetles','Garrisonian','W'); -INSERT INTO t2 VALUES (476,128307,36,'glacial','trumps','Strauss',''); -INSERT INTO t2 VALUES (477,128401,36,'implied','fourscore','cemented','FAS'); -INSERT INTO t2 VALUES (478,128502,36,'bibliographies','Blackfoots','contrition','A'); -INSERT INTO t2 VALUES (479,128503,36,'Buchanan','Grady','mutations',''); -INSERT INTO t2 VALUES (480,128504,36,'forgivably','quiets','exhibits','W'); -INSERT INTO t2 VALUES (481,128505,36,'innuendo','floundered','tits',''); -INSERT INTO t2 VALUES (482,128601,36,'den','profundity','mate','A'); -INSERT INTO t2 VALUES (483,128603,36,'submarines','Garrisonian','arches',''); -INSERT INTO t2 VALUES (484,128604,36,'mouthful','Strauss','Moll',''); -INSERT INTO t2 VALUES (485,128702,36,'expiring','cemented','ropers',''); -INSERT INTO t2 VALUES (486,128703,36,'unfulfilled','contrition','bombast',''); -INSERT INTO t2 VALUES (487,128704,36,'precession','mutations','difficultly','A'); -INSERT INTO t2 VALUES (488,138001,36,'nullified','exhibits','adsorption',''); -INSERT INTO t2 VALUES (489,138002,36,'affects','tits','definiteness','FAS'); -INSERT INTO t2 VALUES (490,138003,36,'Cynthia','mate','cultivation','A'); -INSERT INTO t2 VALUES (491,138004,36,'Chablis','arches','heals','A'); -INSERT INTO t2 VALUES (492,138005,36,'betterments','Moll','Heusen','W'); -INSERT INTO t2 VALUES (493,138006,36,'advertising','ropers','target','FAS'); -INSERT INTO t2 VALUES (494,138007,36,'rubies','bombast','cited','A'); -INSERT INTO t2 VALUES (495,138008,36,'southwest','difficultly','congresswoman','W'); -INSERT INTO t2 VALUES (496,138009,36,'superstitious','adsorption','Katherine',''); -INSERT INTO t2 VALUES (497,138102,36,'tabernacle','definiteness','titter','A'); -INSERT INTO t2 VALUES (498,138103,36,'silk','cultivation','aspire','A'); -INSERT INTO t2 VALUES (499,138104,36,'handsomest','heals','Mardis',''); -INSERT INTO t2 VALUES (500,138105,36,'Persian','Heusen','Nadia','W'); -INSERT INTO t2 VALUES (501,138201,36,'analog','target','estimating','FAS'); -INSERT INTO t2 VALUES (502,138302,36,'complex','cited','stuck','A'); -INSERT INTO t2 VALUES (503,138303,36,'Taoist','congresswoman','fifteenth','A'); -INSERT INTO t2 VALUES (504,138304,36,'suspend','Katherine','Colombo',''); -INSERT INTO t2 VALUES (505,138401,29,'relegated','titter','survey','A'); -INSERT INTO t2 VALUES (506,140102,29,'awesome','aspire','staffing',''); -INSERT INTO t2 VALUES (507,140103,29,'Bruxelles','Mardis','obtain',''); -INSERT INTO t2 VALUES (508,140104,29,'imprecisely','Nadia','loaded',''); -INSERT INTO t2 VALUES (509,140105,29,'televise','estimating','slaughtered',''); -INSERT INTO t2 VALUES (510,140201,29,'braking','stuck','lights','A'); -INSERT INTO t2 VALUES (511,140701,29,'true','fifteenth','circumference',''); -INSERT INTO t2 VALUES (512,141501,29,'disappointing','Colombo','dull','A'); -INSERT INTO t2 VALUES (513,141502,29,'navally','survey','weekly','A'); -INSERT INTO t2 VALUES (514,141901,29,'circus','staffing','wetness',''); -INSERT INTO t2 VALUES (515,141902,29,'beetles','obtain','visualized',''); -INSERT INTO t2 VALUES (516,142101,29,'trumps','loaded','Tannenbaum',''); -INSERT INTO t2 VALUES (517,142102,29,'fourscore','slaughtered','moribund',''); -INSERT INTO t2 VALUES (518,142103,29,'Blackfoots','lights','demultiplex',''); -INSERT INTO t2 VALUES (519,142701,29,'Grady','circumference','lockings',''); -INSERT INTO t2 VALUES (520,143001,29,'quiets','dull','thugs','FAS'); -INSERT INTO t2 VALUES (521,143501,29,'floundered','weekly','unnerves',''); -INSERT INTO t2 VALUES (522,143502,29,'profundity','wetness','abut',''); -INSERT INTO t2 VALUES (523,148001,29,'Garrisonian','visualized','Chippewa','A'); -INSERT INTO t2 VALUES (524,148002,29,'Strauss','Tannenbaum','stratifications','A'); -INSERT INTO t2 VALUES (525,148003,29,'cemented','moribund','signaled',''); -INSERT INTO t2 VALUES (526,148004,29,'contrition','demultiplex','Italianizes','A'); -INSERT INTO t2 VALUES (527,148005,29,'mutations','lockings','algorithmic','A'); -INSERT INTO t2 VALUES (528,148006,29,'exhibits','thugs','paranoid','FAS'); -INSERT INTO t2 VALUES (529,148007,29,'tits','unnerves','camping','A'); -INSERT INTO t2 VALUES (530,148009,29,'mate','abut','signifying','A'); -INSERT INTO t2 VALUES (531,148010,29,'arches','Chippewa','Patrice','W'); -INSERT INTO t2 VALUES (532,148011,29,'Moll','stratifications','search','A'); -INSERT INTO t2 VALUES (533,148012,29,'ropers','signaled','Angeles','A'); -INSERT INTO t2 VALUES (534,148013,29,'bombast','Italianizes','semblance',''); -INSERT INTO t2 VALUES (535,148023,36,'difficultly','algorithmic','taxed',''); -INSERT INTO t2 VALUES (536,148015,29,'adsorption','paranoid','Beatrice',''); -INSERT INTO t2 VALUES (537,148016,29,'definiteness','camping','retrace',''); -INSERT INTO t2 VALUES (538,148017,29,'cultivation','signifying','lockout',''); -INSERT INTO t2 VALUES (539,148018,29,'heals','Patrice','grammatic',''); -INSERT INTO t2 VALUES (540,148019,29,'Heusen','search','helmsman',''); -INSERT INTO t2 VALUES (541,148020,29,'target','Angeles','uniform','W'); -INSERT INTO t2 VALUES (542,148021,29,'cited','semblance','hamming',''); -INSERT INTO t2 VALUES (543,148022,29,'congresswoman','taxed','disobedience',''); -INSERT INTO t2 VALUES (544,148101,29,'Katherine','Beatrice','captivated','A'); -INSERT INTO t2 VALUES (545,148102,29,'titter','retrace','transferals','A'); -INSERT INTO t2 VALUES (546,148201,29,'aspire','lockout','cartographer','A'); -INSERT INTO t2 VALUES (547,148401,29,'Mardis','grammatic','aims','FAS'); -INSERT INTO t2 VALUES (548,148402,29,'Nadia','helmsman','Pakistani',''); -INSERT INTO t2 VALUES (549,148501,29,'estimating','uniform','burglarized','FAS'); -INSERT INTO t2 VALUES (550,148502,29,'stuck','hamming','saucepans','A'); -INSERT INTO t2 VALUES (551,148503,29,'fifteenth','disobedience','lacerating','A'); -INSERT INTO t2 VALUES (552,148504,29,'Colombo','captivated','corny',''); -INSERT INTO t2 VALUES (553,148601,29,'survey','transferals','megabytes','FAS'); -INSERT INTO t2 VALUES (554,148602,29,'staffing','cartographer','chancellor',''); -INSERT INTO t2 VALUES (555,150701,29,'obtain','aims','bulk','A'); -INSERT INTO t2 VALUES (556,152101,29,'loaded','Pakistani','commits','A'); -INSERT INTO t2 VALUES (557,152102,29,'slaughtered','burglarized','meson','W'); -INSERT INTO t2 VALUES (558,155202,36,'lights','saucepans','deputies',''); -INSERT INTO t2 VALUES (559,155203,29,'circumference','lacerating','northeaster','A'); -INSERT INTO t2 VALUES (560,155204,29,'dull','corny','dipole',''); -INSERT INTO t2 VALUES (561,155205,29,'weekly','megabytes','machining','0'); -INSERT INTO t2 VALUES (562,156001,29,'wetness','chancellor','therefore',''); -INSERT INTO t2 VALUES (563,156002,29,'visualized','bulk','Telefunken',''); -INSERT INTO t2 VALUES (564,156102,29,'Tannenbaum','commits','salvaging',''); -INSERT INTO t2 VALUES (565,156301,29,'moribund','meson','Corinthianizes','A'); -INSERT INTO t2 VALUES (566,156302,29,'demultiplex','deputies','restlessly','A'); -INSERT INTO t2 VALUES (567,156303,29,'lockings','northeaster','bromides',''); -INSERT INTO t2 VALUES (568,156304,29,'thugs','dipole','generalized','A'); -INSERT INTO t2 VALUES (569,156305,29,'unnerves','machining','mishaps',''); -INSERT INTO t2 VALUES (570,156306,29,'abut','therefore','quelling',''); -INSERT INTO t2 VALUES (571,156501,29,'Chippewa','Telefunken','spiritual','A'); -INSERT INTO t2 VALUES (572,158001,29,'stratifications','salvaging','beguiles','FAS'); -INSERT INTO t2 VALUES (573,158002,29,'signaled','Corinthianizes','Trobriand','FAS'); -INSERT INTO t2 VALUES (574,158101,29,'Italianizes','restlessly','fleeing','A'); -INSERT INTO t2 VALUES (575,158102,29,'algorithmic','bromides','Armour','A'); -INSERT INTO t2 VALUES (576,158103,29,'paranoid','generalized','chin','A'); -INSERT INTO t2 VALUES (577,158201,29,'camping','mishaps','provers','A'); -INSERT INTO t2 VALUES (578,158202,29,'signifying','quelling','aeronautic','A'); -INSERT INTO t2 VALUES (579,158203,29,'Patrice','spiritual','voltage','W'); -INSERT INTO t2 VALUES (580,158204,29,'search','beguiles','sash',''); -INSERT INTO t2 VALUES (581,158301,29,'Angeles','Trobriand','anaerobic','A'); -INSERT INTO t2 VALUES (582,158302,29,'semblance','fleeing','simultaneous','A'); -INSERT INTO t2 VALUES (583,158303,29,'taxed','Armour','accumulating','A'); -INSERT INTO t2 VALUES (584,158304,29,'Beatrice','chin','Medusan','A'); -INSERT INTO t2 VALUES (585,158305,29,'retrace','provers','shouted','A'); -INSERT INTO t2 VALUES (586,158306,29,'lockout','aeronautic','freakish',''); -INSERT INTO t2 VALUES (587,158501,29,'grammatic','voltage','index','FAS'); -INSERT INTO t2 VALUES (588,160301,29,'helmsman','sash','commercially',''); -INSERT INTO t2 VALUES (589,166101,50,'uniform','anaerobic','mistiness','A'); -INSERT INTO t2 VALUES (590,166102,50,'hamming','simultaneous','endpoint',''); -INSERT INTO t2 VALUES (591,168001,29,'disobedience','accumulating','straight','A'); -INSERT INTO t2 VALUES (592,168002,29,'captivated','Medusan','flurried',''); -INSERT INTO t2 VALUES (593,168003,29,'transferals','shouted','denotative','A'); -INSERT INTO t2 VALUES (594,168101,29,'cartographer','freakish','coming','FAS'); -INSERT INTO t2 VALUES (595,168102,29,'aims','index','commencements','FAS'); -INSERT INTO t2 VALUES (596,168103,29,'Pakistani','commercially','gentleman',''); -INSERT INTO t2 VALUES (597,168104,29,'burglarized','mistiness','gifted',''); -INSERT INTO t2 VALUES (598,168202,29,'saucepans','endpoint','Shanghais',''); -INSERT INTO t2 VALUES (599,168301,29,'lacerating','straight','sportswriting','A'); -INSERT INTO t2 VALUES (600,168502,29,'corny','flurried','sloping','A'); -INSERT INTO t2 VALUES (601,168503,29,'megabytes','denotative','navies',''); -INSERT INTO t2 VALUES (602,168601,29,'chancellor','coming','leaflet','A'); -INSERT INTO t2 VALUES (603,173001,40,'bulk','commencements','shooter',''); -INSERT INTO t2 VALUES (604,173701,40,'commits','gentleman','Joplin','FAS'); -INSERT INTO t2 VALUES (605,173702,40,'meson','gifted','babies',''); -INSERT INTO t2 VALUES (606,176001,40,'deputies','Shanghais','subdivision','FAS'); -INSERT INTO t2 VALUES (607,176101,40,'northeaster','sportswriting','burstiness','W'); -INSERT INTO t2 VALUES (608,176201,40,'dipole','sloping','belted','FAS'); -INSERT INTO t2 VALUES (609,176401,40,'machining','navies','assails','FAS'); -INSERT INTO t2 VALUES (610,176501,40,'therefore','leaflet','admiring','W'); -INSERT INTO t2 VALUES (611,176601,40,'Telefunken','shooter','swaying','0'); -INSERT INTO t2 VALUES (612,176602,40,'salvaging','Joplin','Goldstine','FAS'); -INSERT INTO t2 VALUES (613,176603,40,'Corinthianizes','babies','fitting',''); -INSERT INTO t2 VALUES (614,178001,40,'restlessly','subdivision','Norwalk','W'); -INSERT INTO t2 VALUES (615,178002,40,'bromides','burstiness','weakening','W'); -INSERT INTO t2 VALUES (616,178003,40,'generalized','belted','analogy','FAS'); -INSERT INTO t2 VALUES (617,178004,40,'mishaps','assails','deludes',''); -INSERT INTO t2 VALUES (618,178005,40,'quelling','admiring','cokes',''); -INSERT INTO t2 VALUES (619,178006,40,'spiritual','swaying','Clayton',''); -INSERT INTO t2 VALUES (620,178007,40,'beguiles','Goldstine','exhausts',''); -INSERT INTO t2 VALUES (621,178008,40,'Trobriand','fitting','causality',''); -INSERT INTO t2 VALUES (622,178101,40,'fleeing','Norwalk','sating','FAS'); -INSERT INTO t2 VALUES (623,178102,40,'Armour','weakening','icon',''); -INSERT INTO t2 VALUES (624,178103,40,'chin','analogy','throttles',''); -INSERT INTO t2 VALUES (625,178201,40,'provers','deludes','communicants','FAS'); -INSERT INTO t2 VALUES (626,178202,40,'aeronautic','cokes','dehydrate','FAS'); -INSERT INTO t2 VALUES (627,178301,40,'voltage','Clayton','priceless','FAS'); -INSERT INTO t2 VALUES (628,178302,40,'sash','exhausts','publicly',''); -INSERT INTO t2 VALUES (629,178401,40,'anaerobic','causality','incidentals','FAS'); -INSERT INTO t2 VALUES (630,178402,40,'simultaneous','sating','commonplace',''); -INSERT INTO t2 VALUES (631,178403,40,'accumulating','icon','mumbles',''); -INSERT INTO t2 VALUES (632,178404,40,'Medusan','throttles','furthermore','W'); -INSERT INTO t2 VALUES (633,178501,40,'shouted','communicants','cautioned','W'); -INSERT INTO t2 VALUES (634,186002,37,'freakish','dehydrate','parametrized','A'); -INSERT INTO t2 VALUES (635,186102,37,'index','priceless','registration','A'); -INSERT INTO t2 VALUES (636,186201,40,'commercially','publicly','sadly','FAS'); -INSERT INTO t2 VALUES (637,186202,40,'mistiness','incidentals','positioning',''); -INSERT INTO t2 VALUES (638,186203,40,'endpoint','commonplace','babysitting',''); -INSERT INTO t2 VALUES (639,186302,37,'straight','mumbles','eternal','A'); -INSERT INTO t2 VALUES (640,188007,37,'flurried','furthermore','hoarder',''); -INSERT INTO t2 VALUES (641,188008,37,'denotative','cautioned','congregates',''); -INSERT INTO t2 VALUES (642,188009,37,'coming','parametrized','rains',''); -INSERT INTO t2 VALUES (643,188010,37,'commencements','registration','workers','W'); -INSERT INTO t2 VALUES (644,188011,37,'gentleman','sadly','sags','A'); -INSERT INTO t2 VALUES (645,188012,37,'gifted','positioning','unplug','W'); -INSERT INTO t2 VALUES (646,188013,37,'Shanghais','babysitting','garage','A'); -INSERT INTO t2 VALUES (647,188014,37,'sportswriting','eternal','boulder','A'); -INSERT INTO t2 VALUES (648,188015,37,'sloping','hoarder','hollowly','A'); -INSERT INTO t2 VALUES (649,188016,37,'navies','congregates','specifics',''); -INSERT INTO t2 VALUES (650,188017,37,'leaflet','rains','Teresa',''); -INSERT INTO t2 VALUES (651,188102,37,'shooter','workers','Winsett',''); -INSERT INTO t2 VALUES (652,188103,37,'Joplin','sags','convenient','A'); -INSERT INTO t2 VALUES (653,188202,37,'babies','unplug','buckboards','FAS'); -INSERT INTO t2 VALUES (654,188301,40,'subdivision','garage','amenities',''); -INSERT INTO t2 VALUES (655,188302,40,'burstiness','boulder','resplendent','FAS'); -INSERT INTO t2 VALUES (656,188303,40,'belted','hollowly','priding','FAS'); -INSERT INTO t2 VALUES (657,188401,37,'assails','specifics','configurations',''); -INSERT INTO t2 VALUES (658,188402,37,'admiring','Teresa','untidiness','A'); -INSERT INTO t2 VALUES (659,188503,37,'swaying','Winsett','Brice','W'); -INSERT INTO t2 VALUES (660,188504,37,'Goldstine','convenient','sews','FAS'); -INSERT INTO t2 VALUES (661,188505,37,'fitting','buckboards','participated',''); -INSERT INTO t2 VALUES (662,190701,37,'Norwalk','amenities','Simon','FAS'); -INSERT INTO t2 VALUES (663,190703,50,'weakening','resplendent','certificates',''); -INSERT INTO t2 VALUES (664,191701,37,'analogy','priding','Fitzpatrick',''); -INSERT INTO t2 VALUES (665,191702,37,'deludes','configurations','Evanston','A'); -INSERT INTO t2 VALUES (666,191703,37,'cokes','untidiness','misted',''); -INSERT INTO t2 VALUES (667,196001,37,'Clayton','Brice','textures','A'); -INSERT INTO t2 VALUES (668,196002,37,'exhausts','sews','save',''); -INSERT INTO t2 VALUES (669,196003,37,'causality','participated','count',''); -INSERT INTO t2 VALUES (670,196101,37,'sating','Simon','rightful','A'); -INSERT INTO t2 VALUES (671,196103,37,'icon','certificates','chaperone',''); -INSERT INTO t2 VALUES (672,196104,37,'throttles','Fitzpatrick','Lizzy','A'); -INSERT INTO t2 VALUES (673,196201,37,'communicants','Evanston','clenched','A'); -INSERT INTO t2 VALUES (674,196202,37,'dehydrate','misted','effortlessly',''); -INSERT INTO t2 VALUES (675,196203,37,'priceless','textures','accessed',''); -INSERT INTO t2 VALUES (676,198001,37,'publicly','save','beaters','A'); -INSERT INTO t2 VALUES (677,198003,37,'incidentals','count','Hornblower','FAS'); -INSERT INTO t2 VALUES (678,198004,37,'commonplace','rightful','vests','A'); -INSERT INTO t2 VALUES (679,198005,37,'mumbles','chaperone','indulgences','FAS'); -INSERT INTO t2 VALUES (680,198006,37,'furthermore','Lizzy','infallibly','A'); -INSERT INTO t2 VALUES (681,198007,37,'cautioned','clenched','unwilling','FAS'); -INSERT INTO t2 VALUES (682,198008,37,'parametrized','effortlessly','excrete','FAS'); -INSERT INTO t2 VALUES (683,198009,37,'registration','accessed','spools','A'); -INSERT INTO t2 VALUES (684,198010,37,'sadly','beaters','crunches','FAS'); -INSERT INTO t2 VALUES (685,198011,37,'positioning','Hornblower','overestimating','FAS'); -INSERT INTO t2 VALUES (686,198012,37,'babysitting','vests','ineffective',''); -INSERT INTO t2 VALUES (687,198013,37,'eternal','indulgences','humiliation','A'); -INSERT INTO t2 VALUES (688,198014,37,'hoarder','infallibly','sophomore',''); -INSERT INTO t2 VALUES (689,198015,37,'congregates','unwilling','star',''); -INSERT INTO t2 VALUES (690,198017,37,'rains','excrete','rifles',''); -INSERT INTO t2 VALUES (691,198018,37,'workers','spools','dialysis',''); -INSERT INTO t2 VALUES (692,198019,37,'sags','crunches','arriving',''); -INSERT INTO t2 VALUES (693,198020,37,'unplug','overestimating','indulge',''); -INSERT INTO t2 VALUES (694,198021,37,'garage','ineffective','clockers',''); -INSERT INTO t2 VALUES (695,198022,37,'boulder','humiliation','languages',''); -INSERT INTO t2 VALUES (696,198023,50,'hollowly','sophomore','Antarctica','A'); -INSERT INTO t2 VALUES (697,198024,37,'specifics','star','percentage',''); -INSERT INTO t2 VALUES (698,198101,37,'Teresa','rifles','ceiling','A'); -INSERT INTO t2 VALUES (699,198103,37,'Winsett','dialysis','specification',''); -INSERT INTO t2 VALUES (700,198105,37,'convenient','arriving','regimented','A'); -INSERT INTO t2 VALUES (701,198106,37,'buckboards','indulge','ciphers',''); -INSERT INTO t2 VALUES (702,198201,37,'amenities','clockers','pictures','A'); -INSERT INTO t2 VALUES (703,198204,37,'resplendent','languages','serpents','A'); -INSERT INTO t2 VALUES (704,198301,53,'priding','Antarctica','allot','A'); -INSERT INTO t2 VALUES (705,198302,53,'configurations','percentage','realized','A'); -INSERT INTO t2 VALUES (706,198303,53,'untidiness','ceiling','mayoral','A'); -INSERT INTO t2 VALUES (707,198304,53,'Brice','specification','opaquely','A'); -INSERT INTO t2 VALUES (708,198401,37,'sews','regimented','hostess','FAS'); -INSERT INTO t2 VALUES (709,198402,37,'participated','ciphers','fiftieth',''); -INSERT INTO t2 VALUES (710,198403,37,'Simon','pictures','incorrectly',''); -INSERT INTO t2 VALUES (711,202101,37,'certificates','serpents','decomposition','FAS'); -INSERT INTO t2 VALUES (712,202301,37,'Fitzpatrick','allot','stranglings',''); -INSERT INTO t2 VALUES (713,202302,37,'Evanston','realized','mixture','FAS'); -INSERT INTO t2 VALUES (714,202303,37,'misted','mayoral','electroencephalography','FAS'); -INSERT INTO t2 VALUES (715,202304,37,'textures','opaquely','similarities','FAS'); -INSERT INTO t2 VALUES (716,202305,37,'save','hostess','charges','W'); -INSERT INTO t2 VALUES (717,202601,37,'count','fiftieth','freest','FAS'); -INSERT INTO t2 VALUES (718,202602,37,'rightful','incorrectly','Greenberg','FAS'); -INSERT INTO t2 VALUES (719,202605,37,'chaperone','decomposition','tinting',''); -INSERT INTO t2 VALUES (720,202606,37,'Lizzy','stranglings','expelled','W'); -INSERT INTO t2 VALUES (721,202607,37,'clenched','mixture','warm',''); -INSERT INTO t2 VALUES (722,202901,37,'effortlessly','electroencephalography','smoothed',''); -INSERT INTO t2 VALUES (723,202902,37,'accessed','similarities','deductions','FAS'); -INSERT INTO t2 VALUES (724,202903,37,'beaters','charges','Romano','W'); -INSERT INTO t2 VALUES (725,202904,37,'Hornblower','freest','bitterroot',''); -INSERT INTO t2 VALUES (726,202907,37,'vests','Greenberg','corset',''); -INSERT INTO t2 VALUES (727,202908,37,'indulgences','tinting','securing',''); -INSERT INTO t2 VALUES (728,203101,37,'infallibly','expelled','environing','FAS'); -INSERT INTO t2 VALUES (729,203103,37,'unwilling','warm','cute',''); -INSERT INTO t2 VALUES (730,203104,37,'excrete','smoothed','Crays',''); -INSERT INTO t2 VALUES (731,203105,37,'spools','deductions','heiress','FAS'); -INSERT INTO t2 VALUES (732,203401,37,'crunches','Romano','inform','FAS'); -INSERT INTO t2 VALUES (733,203402,37,'overestimating','bitterroot','avenge',''); -INSERT INTO t2 VALUES (734,203404,37,'ineffective','corset','universals',''); -INSERT INTO t2 VALUES (735,203901,37,'humiliation','securing','Kinsey','W'); -INSERT INTO t2 VALUES (736,203902,37,'sophomore','environing','ravines','FAS'); -INSERT INTO t2 VALUES (737,203903,37,'star','cute','bestseller',''); -INSERT INTO t2 VALUES (738,203906,37,'rifles','Crays','equilibrium',''); -INSERT INTO t2 VALUES (739,203907,37,'dialysis','heiress','extents','0'); -INSERT INTO t2 VALUES (740,203908,37,'arriving','inform','relatively',''); -INSERT INTO t2 VALUES (741,203909,37,'indulge','avenge','pressure','FAS'); -INSERT INTO t2 VALUES (742,206101,37,'clockers','universals','critiques','FAS'); -INSERT INTO t2 VALUES (743,206201,37,'languages','Kinsey','befouled',''); -INSERT INTO t2 VALUES (744,206202,37,'Antarctica','ravines','rightfully','FAS'); -INSERT INTO t2 VALUES (745,206203,37,'percentage','bestseller','mechanizing','FAS'); -INSERT INTO t2 VALUES (746,206206,37,'ceiling','equilibrium','Latinizes',''); -INSERT INTO t2 VALUES (747,206207,37,'specification','extents','timesharing',''); -INSERT INTO t2 VALUES (748,206208,37,'regimented','relatively','Aden',''); -INSERT INTO t2 VALUES (749,208001,37,'ciphers','pressure','embassies',''); -INSERT INTO t2 VALUES (750,208002,37,'pictures','critiques','males','FAS'); -INSERT INTO t2 VALUES (751,208003,37,'serpents','befouled','shapelessly','FAS'); -INSERT INTO t2 VALUES (752,208004,37,'allot','rightfully','genres','FAS'); -INSERT INTO t2 VALUES (753,208008,37,'realized','mechanizing','mastering',''); -INSERT INTO t2 VALUES (754,208009,37,'mayoral','Latinizes','Newtonian',''); -INSERT INTO t2 VALUES (755,208010,37,'opaquely','timesharing','finishers','FAS'); -INSERT INTO t2 VALUES (756,208011,37,'hostess','Aden','abates',''); -INSERT INTO t2 VALUES (757,208101,37,'fiftieth','embassies','teem',''); -INSERT INTO t2 VALUES (758,208102,37,'incorrectly','males','kiting','FAS'); -INSERT INTO t2 VALUES (759,208103,37,'decomposition','shapelessly','stodgy','FAS'); -INSERT INTO t2 VALUES (760,208104,37,'stranglings','genres','scalps','FAS'); -INSERT INTO t2 VALUES (761,208105,37,'mixture','mastering','feed','FAS'); -INSERT INTO t2 VALUES (762,208110,37,'electroencephalography','Newtonian','guitars',''); -INSERT INTO t2 VALUES (763,208111,37,'similarities','finishers','airships',''); -INSERT INTO t2 VALUES (764,208112,37,'charges','abates','store',''); -INSERT INTO t2 VALUES (765,208113,37,'freest','teem','denounces',''); -INSERT INTO t2 VALUES (766,208201,37,'Greenberg','kiting','Pyle','FAS'); -INSERT INTO t2 VALUES (767,208203,37,'tinting','stodgy','Saxony',''); -INSERT INTO t2 VALUES (768,208301,37,'expelled','scalps','serializations','FAS'); -INSERT INTO t2 VALUES (769,208302,37,'warm','feed','Peruvian','FAS'); -INSERT INTO t2 VALUES (770,208305,37,'smoothed','guitars','taxonomically','FAS'); -INSERT INTO t2 VALUES (771,208401,37,'deductions','airships','kingdom','A'); -INSERT INTO t2 VALUES (772,208402,37,'Romano','store','stint','A'); -INSERT INTO t2 VALUES (773,208403,37,'bitterroot','denounces','Sault','A'); -INSERT INTO t2 VALUES (774,208404,37,'corset','Pyle','faithful',''); -INSERT INTO t2 VALUES (775,208501,37,'securing','Saxony','Ganymede','FAS'); -INSERT INTO t2 VALUES (776,208502,37,'environing','serializations','tidiness','FAS'); -INSERT INTO t2 VALUES (777,208503,37,'cute','Peruvian','gainful','FAS'); -INSERT INTO t2 VALUES (778,208504,37,'Crays','taxonomically','contrary','FAS'); -INSERT INTO t2 VALUES (779,208505,37,'heiress','kingdom','Tipperary','FAS'); -INSERT INTO t2 VALUES (780,210101,37,'inform','stint','tropics','W'); -INSERT INTO t2 VALUES (781,210102,37,'avenge','Sault','theorizers',''); -INSERT INTO t2 VALUES (782,210103,37,'universals','faithful','renew','0'); -INSERT INTO t2 VALUES (783,210104,37,'Kinsey','Ganymede','already',''); -INSERT INTO t2 VALUES (784,210105,37,'ravines','tidiness','terminal',''); -INSERT INTO t2 VALUES (785,210106,37,'bestseller','gainful','Hegelian',''); -INSERT INTO t2 VALUES (786,210107,37,'equilibrium','contrary','hypothesizer',''); -INSERT INTO t2 VALUES (787,210401,37,'extents','Tipperary','warningly','FAS'); -INSERT INTO t2 VALUES (788,213201,37,'relatively','tropics','journalizing','FAS'); -INSERT INTO t2 VALUES (789,213203,37,'pressure','theorizers','nested',''); -INSERT INTO t2 VALUES (790,213204,37,'critiques','renew','Lars',''); -INSERT INTO t2 VALUES (791,213205,37,'befouled','already','saplings',''); -INSERT INTO t2 VALUES (792,213206,37,'rightfully','terminal','foothill',''); -INSERT INTO t2 VALUES (793,213207,37,'mechanizing','Hegelian','labeled',''); -INSERT INTO t2 VALUES (794,216101,37,'Latinizes','hypothesizer','imperiously','FAS'); -INSERT INTO t2 VALUES (795,216103,37,'timesharing','warningly','reporters','FAS'); -INSERT INTO t2 VALUES (796,218001,37,'Aden','journalizing','furnishings','FAS'); -INSERT INTO t2 VALUES (797,218002,37,'embassies','nested','precipitable','FAS'); -INSERT INTO t2 VALUES (798,218003,37,'males','Lars','discounts','FAS'); -INSERT INTO t2 VALUES (799,218004,37,'shapelessly','saplings','excises','FAS'); -INSERT INTO t2 VALUES (800,143503,50,'genres','foothill','Stalin',''); -INSERT INTO t2 VALUES (801,218006,37,'mastering','labeled','despot','FAS'); -INSERT INTO t2 VALUES (802,218007,37,'Newtonian','imperiously','ripeness','FAS'); -INSERT INTO t2 VALUES (803,218008,37,'finishers','reporters','Arabia',''); -INSERT INTO t2 VALUES (804,218009,37,'abates','furnishings','unruly',''); -INSERT INTO t2 VALUES (805,218010,37,'teem','precipitable','mournfulness',''); -INSERT INTO t2 VALUES (806,218011,37,'kiting','discounts','boom','FAS'); -INSERT INTO t2 VALUES (807,218020,37,'stodgy','excises','slaughter','A'); -INSERT INTO t2 VALUES (808,218021,50,'scalps','Stalin','Sabine',''); -INSERT INTO t2 VALUES (809,218022,37,'feed','despot','handy','FAS'); -INSERT INTO t2 VALUES (810,218023,37,'guitars','ripeness','rural',''); -INSERT INTO t2 VALUES (811,218024,37,'airships','Arabia','organizer',''); -INSERT INTO t2 VALUES (812,218101,37,'store','unruly','shipyard','FAS'); -INSERT INTO t2 VALUES (813,218102,37,'denounces','mournfulness','civics','FAS'); -INSERT INTO t2 VALUES (814,218103,37,'Pyle','boom','inaccuracy','FAS'); -INSERT INTO t2 VALUES (815,218201,37,'Saxony','slaughter','rules','FAS'); -INSERT INTO t2 VALUES (816,218202,37,'serializations','Sabine','juveniles','FAS'); -INSERT INTO t2 VALUES (817,218203,37,'Peruvian','handy','comprised','W'); -INSERT INTO t2 VALUES (818,218204,37,'taxonomically','rural','investigations',''); -INSERT INTO t2 VALUES (819,218205,37,'kingdom','organizer','stabilizes','A'); -INSERT INTO t2 VALUES (820,218301,37,'stint','shipyard','seminaries','FAS'); -INSERT INTO t2 VALUES (821,218302,37,'Sault','civics','Hunter','A'); -INSERT INTO t2 VALUES (822,218401,37,'faithful','inaccuracy','sporty','FAS'); -INSERT INTO t2 VALUES (823,218402,37,'Ganymede','rules','test','FAS'); -INSERT INTO t2 VALUES (824,218403,37,'tidiness','juveniles','weasels',''); -INSERT INTO t2 VALUES (825,218404,37,'gainful','comprised','CERN',''); -INSERT INTO t2 VALUES (826,218407,37,'contrary','investigations','tempering',''); -INSERT INTO t2 VALUES (827,218408,37,'Tipperary','stabilizes','afore','FAS'); -INSERT INTO t2 VALUES (828,218409,37,'tropics','seminaries','Galatean',''); -INSERT INTO t2 VALUES (829,218410,37,'theorizers','Hunter','techniques','W'); -INSERT INTO t2 VALUES (830,226001,37,'renew','sporty','error',''); -INSERT INTO t2 VALUES (831,226002,37,'already','test','veranda',''); -INSERT INTO t2 VALUES (832,226003,37,'terminal','weasels','severely',''); -INSERT INTO t2 VALUES (833,226004,37,'Hegelian','CERN','Cassites','FAS'); -INSERT INTO t2 VALUES (834,226005,37,'hypothesizer','tempering','forthcoming',''); -INSERT INTO t2 VALUES (835,226006,37,'warningly','afore','guides',''); -INSERT INTO t2 VALUES (836,226007,37,'journalizing','Galatean','vanish','FAS'); -INSERT INTO t2 VALUES (837,226008,37,'nested','techniques','lied','A'); -INSERT INTO t2 VALUES (838,226203,37,'Lars','error','sawtooth','FAS'); -INSERT INTO t2 VALUES (839,226204,37,'saplings','veranda','fated','FAS'); -INSERT INTO t2 VALUES (840,226205,37,'foothill','severely','gradually',''); -INSERT INTO t2 VALUES (841,226206,37,'labeled','Cassites','widens',''); -INSERT INTO t2 VALUES (842,226207,37,'imperiously','forthcoming','preclude',''); -INSERT INTO t2 VALUES (843,226208,37,'reporters','guides','Jobrel',''); -INSERT INTO t2 VALUES (844,226209,37,'furnishings','vanish','hooker',''); -INSERT INTO t2 VALUES (845,226210,37,'precipitable','lied','rainstorm',''); -INSERT INTO t2 VALUES (846,226211,37,'discounts','sawtooth','disconnects',''); -INSERT INTO t2 VALUES (847,228001,37,'excises','fated','cruelty',''); -INSERT INTO t2 VALUES (848,228004,37,'Stalin','gradually','exponentials','A'); -INSERT INTO t2 VALUES (849,228005,37,'despot','widens','affective','A'); -INSERT INTO t2 VALUES (850,228006,37,'ripeness','preclude','arteries',''); -INSERT INTO t2 VALUES (851,228007,37,'Arabia','Jobrel','Crosby','FAS'); -INSERT INTO t2 VALUES (852,228008,37,'unruly','hooker','acquaint',''); -INSERT INTO t2 VALUES (853,228009,37,'mournfulness','rainstorm','evenhandedly',''); -INSERT INTO t2 VALUES (854,228101,37,'boom','disconnects','percentage',''); -INSERT INTO t2 VALUES (855,228108,37,'slaughter','cruelty','disobedience',''); -INSERT INTO t2 VALUES (856,228109,37,'Sabine','exponentials','humility',''); -INSERT INTO t2 VALUES (857,228110,37,'handy','affective','gleaning','A'); -INSERT INTO t2 VALUES (858,228111,37,'rural','arteries','petted','A'); -INSERT INTO t2 VALUES (859,228112,37,'organizer','Crosby','bloater','A'); -INSERT INTO t2 VALUES (860,228113,37,'shipyard','acquaint','minion','A'); -INSERT INTO t2 VALUES (861,228114,37,'civics','evenhandedly','marginal','A'); -INSERT INTO t2 VALUES (862,228115,37,'inaccuracy','percentage','apiary','A'); -INSERT INTO t2 VALUES (863,228116,37,'rules','disobedience','measures',''); -INSERT INTO t2 VALUES (864,228117,37,'juveniles','humility','precaution',''); -INSERT INTO t2 VALUES (865,228118,37,'comprised','gleaning','repelled',''); -INSERT INTO t2 VALUES (866,228119,37,'investigations','petted','primary','FAS'); -INSERT INTO t2 VALUES (867,228120,37,'stabilizes','bloater','coverings',''); -INSERT INTO t2 VALUES (868,228121,37,'seminaries','minion','Artemia','A'); -INSERT INTO t2 VALUES (869,228122,37,'Hunter','marginal','navigate',''); -INSERT INTO t2 VALUES (870,228201,37,'sporty','apiary','spatial',''); -INSERT INTO t2 VALUES (871,228206,37,'test','measures','Gurkha',''); -INSERT INTO t2 VALUES (872,228207,37,'weasels','precaution','meanwhile','A'); -INSERT INTO t2 VALUES (873,228208,37,'CERN','repelled','Melinda','A'); -INSERT INTO t2 VALUES (874,228209,37,'tempering','primary','Butterfield',''); -INSERT INTO t2 VALUES (875,228210,37,'afore','coverings','Aldrich','A'); -INSERT INTO t2 VALUES (876,228211,37,'Galatean','Artemia','previewing','A'); -INSERT INTO t2 VALUES (877,228212,37,'techniques','navigate','glut','A'); -INSERT INTO t2 VALUES (878,228213,37,'error','spatial','unaffected',''); -INSERT INTO t2 VALUES (879,228214,37,'veranda','Gurkha','inmate',''); -INSERT INTO t2 VALUES (880,228301,37,'severely','meanwhile','mineral',''); -INSERT INTO t2 VALUES (881,228305,37,'Cassites','Melinda','impending','A'); -INSERT INTO t2 VALUES (882,228306,37,'forthcoming','Butterfield','meditation','A'); -INSERT INTO t2 VALUES (883,228307,37,'guides','Aldrich','ideas',''); -INSERT INTO t2 VALUES (884,228308,37,'vanish','previewing','miniaturizes','W'); -INSERT INTO t2 VALUES (885,228309,37,'lied','glut','lewdly',''); -INSERT INTO t2 VALUES (886,228310,37,'sawtooth','unaffected','title',''); -INSERT INTO t2 VALUES (887,228311,37,'fated','inmate','youthfulness',''); -INSERT INTO t2 VALUES (888,228312,37,'gradually','mineral','creak','FAS'); -INSERT INTO t2 VALUES (889,228313,37,'widens','impending','Chippewa',''); -INSERT INTO t2 VALUES (890,228314,37,'preclude','meditation','clamored',''); -INSERT INTO t2 VALUES (891,228401,65,'Jobrel','ideas','freezes',''); -INSERT INTO t2 VALUES (892,228402,65,'hooker','miniaturizes','forgivably','FAS'); -INSERT INTO t2 VALUES (893,228403,65,'rainstorm','lewdly','reduce','FAS'); -INSERT INTO t2 VALUES (894,228404,65,'disconnects','title','McGovern','W'); -INSERT INTO t2 VALUES (895,228405,65,'cruelty','youthfulness','Nazis','W'); -INSERT INTO t2 VALUES (896,228406,65,'exponentials','creak','epistle','W'); -INSERT INTO t2 VALUES (897,228407,65,'affective','Chippewa','socializes','W'); -INSERT INTO t2 VALUES (898,228408,65,'arteries','clamored','conceptions',''); -INSERT INTO t2 VALUES (899,228409,65,'Crosby','freezes','Kevin',''); -INSERT INTO t2 VALUES (900,228410,65,'acquaint','forgivably','uncovering',''); -INSERT INTO t2 VALUES (901,230301,37,'evenhandedly','reduce','chews','FAS'); -INSERT INTO t2 VALUES (902,230302,37,'percentage','McGovern','appendixes','FAS'); -INSERT INTO t2 VALUES (903,230303,37,'disobedience','Nazis','raining',''); -INSERT INTO t2 VALUES (904,018062,37,'humility','epistle','infest',''); -INSERT INTO t2 VALUES (905,230501,37,'gleaning','socializes','compartment',''); -INSERT INTO t2 VALUES (906,230502,37,'petted','conceptions','minting',''); -INSERT INTO t2 VALUES (907,230503,37,'bloater','Kevin','ducks',''); -INSERT INTO t2 VALUES (908,230504,37,'minion','uncovering','roped','A'); -INSERT INTO t2 VALUES (909,230505,37,'marginal','chews','waltz',''); -INSERT INTO t2 VALUES (910,230506,37,'apiary','appendixes','Lillian',''); -INSERT INTO t2 VALUES (911,230507,37,'measures','raining','repressions','A'); -INSERT INTO t2 VALUES (912,230508,37,'precaution','infest','chillingly',''); -INSERT INTO t2 VALUES (913,230509,37,'repelled','compartment','noncritical',''); -INSERT INTO t2 VALUES (914,230901,37,'primary','minting','lithograph',''); -INSERT INTO t2 VALUES (915,230902,37,'coverings','ducks','spongers',''); -INSERT INTO t2 VALUES (916,230903,37,'Artemia','roped','parenthood',''); -INSERT INTO t2 VALUES (917,230904,37,'navigate','waltz','posed',''); -INSERT INTO t2 VALUES (918,230905,37,'spatial','Lillian','instruments',''); -INSERT INTO t2 VALUES (919,230906,37,'Gurkha','repressions','filial',''); -INSERT INTO t2 VALUES (920,230907,37,'meanwhile','chillingly','fixedly',''); -INSERT INTO t2 VALUES (921,230908,37,'Melinda','noncritical','relives',''); -INSERT INTO t2 VALUES (922,230909,37,'Butterfield','lithograph','Pandora',''); -INSERT INTO t2 VALUES (923,230910,37,'Aldrich','spongers','watering','A'); -INSERT INTO t2 VALUES (924,230911,37,'previewing','parenthood','ungrateful',''); -INSERT INTO t2 VALUES (925,230912,37,'glut','posed','secures',''); -INSERT INTO t2 VALUES (926,230913,37,'unaffected','instruments','chastisers',''); -INSERT INTO t2 VALUES (927,230914,37,'inmate','filial','icon',''); -INSERT INTO t2 VALUES (928,231304,37,'mineral','fixedly','reuniting','A'); -INSERT INTO t2 VALUES (929,231305,37,'impending','relives','imagining','A'); -INSERT INTO t2 VALUES (930,231306,37,'meditation','Pandora','abiding','A'); -INSERT INTO t2 VALUES (931,231307,37,'ideas','watering','omnisciently',''); -INSERT INTO t2 VALUES (932,231308,37,'miniaturizes','ungrateful','Britannic',''); -INSERT INTO t2 VALUES (933,231309,37,'lewdly','secures','scholastics','A'); -INSERT INTO t2 VALUES (934,231310,37,'title','chastisers','mechanics','A'); -INSERT INTO t2 VALUES (935,231311,37,'youthfulness','icon','humidly','A'); -INSERT INTO t2 VALUES (936,231312,37,'creak','reuniting','masterpiece',''); -INSERT INTO t2 VALUES (937,231313,37,'Chippewa','imagining','however',''); -INSERT INTO t2 VALUES (938,231314,37,'clamored','abiding','Mendelian',''); -INSERT INTO t2 VALUES (939,231315,37,'freezes','omnisciently','jarred',''); -INSERT INTO t2 VALUES (940,232102,37,'forgivably','Britannic','scolds',''); -INSERT INTO t2 VALUES (941,232103,37,'reduce','scholastics','infatuate',''); -INSERT INTO t2 VALUES (942,232104,37,'McGovern','mechanics','willed','A'); -INSERT INTO t2 VALUES (943,232105,37,'Nazis','humidly','joyfully',''); -INSERT INTO t2 VALUES (944,232106,37,'epistle','masterpiece','Microsoft',''); -INSERT INTO t2 VALUES (945,232107,37,'socializes','however','fibrosities',''); -INSERT INTO t2 VALUES (946,232108,37,'conceptions','Mendelian','Baltimorean',''); -INSERT INTO t2 VALUES (947,232601,37,'Kevin','jarred','equestrian',''); -INSERT INTO t2 VALUES (948,232602,37,'uncovering','scolds','Goodrich',''); -INSERT INTO t2 VALUES (949,232603,37,'chews','infatuate','apish','A'); -INSERT INTO t2 VALUES (950,232605,37,'appendixes','willed','Adlerian',''); -INSERT INTO t2 VALUES (5950,1232605,37,'appendixes','willed','Adlerian',''); -INSERT INTO t2 VALUES (5951,1232606,37,'appendixes','willed','Adlerian',''); -INSERT INTO t2 VALUES (5952,1232607,37,'appendixes','willed','Adlerian',''); -INSERT INTO t2 VALUES (5953,1232608,37,'appendixes','willed','Adlerian',''); -INSERT INTO t2 VALUES (5954,1232609,37,'appendixes','willed','Adlerian',''); -INSERT INTO t2 VALUES (951,232606,37,'raining','joyfully','Tropez',''); -INSERT INTO t2 VALUES (952,232607,37,'infest','Microsoft','nouns',''); -INSERT INTO t2 VALUES (953,232608,37,'compartment','fibrosities','distracting',''); -INSERT INTO t2 VALUES (954,232609,37,'minting','Baltimorean','mutton',''); -INSERT INTO t2 VALUES (955,236104,37,'ducks','equestrian','bridgeable','A'); -INSERT INTO t2 VALUES (956,236105,37,'roped','Goodrich','stickers','A'); -INSERT INTO t2 VALUES (957,236106,37,'waltz','apish','transcontinental','A'); -INSERT INTO t2 VALUES (958,236107,37,'Lillian','Adlerian','amateurish',''); -INSERT INTO t2 VALUES (959,236108,37,'repressions','Tropez','Gandhian',''); -INSERT INTO t2 VALUES (960,236109,37,'chillingly','nouns','stratified',''); -INSERT INTO t2 VALUES (961,236110,37,'noncritical','distracting','chamberlains',''); -INSERT INTO t2 VALUES (962,236111,37,'lithograph','mutton','creditably',''); -INSERT INTO t2 VALUES (963,236112,37,'spongers','bridgeable','philosophic',''); -INSERT INTO t2 VALUES (964,236113,37,'parenthood','stickers','ores',''); -INSERT INTO t2 VALUES (965,238005,37,'posed','transcontinental','Carleton',''); -INSERT INTO t2 VALUES (966,238006,37,'instruments','amateurish','tape','A'); -INSERT INTO t2 VALUES (967,238007,37,'filial','Gandhian','afloat','A'); -INSERT INTO t2 VALUES (968,238008,37,'fixedly','stratified','goodness','A'); -INSERT INTO t2 VALUES (969,238009,37,'relives','chamberlains','welcoming',''); -INSERT INTO t2 VALUES (970,238010,37,'Pandora','creditably','Pinsky','FAS'); -INSERT INTO t2 VALUES (971,238011,37,'watering','philosophic','halting',''); -INSERT INTO t2 VALUES (972,238012,37,'ungrateful','ores','bibliography',''); -INSERT INTO t2 VALUES (973,238013,37,'secures','Carleton','decoding',''); -INSERT INTO t2 VALUES (974,240401,41,'chastisers','tape','variance','A'); -INSERT INTO t2 VALUES (975,240402,41,'icon','afloat','allowed','A'); -INSERT INTO t2 VALUES (976,240901,41,'reuniting','goodness','dire','A'); -INSERT INTO t2 VALUES (977,240902,41,'imagining','welcoming','dub','A'); -INSERT INTO t2 VALUES (978,241801,41,'abiding','Pinsky','poisoning',''); -INSERT INTO t2 VALUES (979,242101,41,'omnisciently','halting','Iraqis','A'); -INSERT INTO t2 VALUES (980,242102,41,'Britannic','bibliography','heaving',''); -INSERT INTO t2 VALUES (981,242201,41,'scholastics','decoding','population','A'); -INSERT INTO t2 VALUES (982,242202,41,'mechanics','variance','bomb','A'); -INSERT INTO t2 VALUES (983,242501,41,'humidly','allowed','Majorca','A'); -INSERT INTO t2 VALUES (984,242502,41,'masterpiece','dire','Gershwins',''); -INSERT INTO t2 VALUES (985,246201,41,'however','dub','explorers',''); -INSERT INTO t2 VALUES (986,246202,41,'Mendelian','poisoning','libretto','A'); -INSERT INTO t2 VALUES (987,246203,41,'jarred','Iraqis','occurred',''); -INSERT INTO t2 VALUES (988,246204,41,'scolds','heaving','Lagos',''); -INSERT INTO t2 VALUES (989,246205,41,'infatuate','population','rats',''); -INSERT INTO t2 VALUES (990,246301,41,'willed','bomb','bankruptcies','A'); -INSERT INTO t2 VALUES (991,246302,41,'joyfully','Majorca','crying',''); -INSERT INTO t2 VALUES (992,248001,41,'Microsoft','Gershwins','unexpected',''); -INSERT INTO t2 VALUES (993,248002,41,'fibrosities','explorers','accessed','A'); -INSERT INTO t2 VALUES (994,248003,41,'Baltimorean','libretto','colorful','A'); -INSERT INTO t2 VALUES (995,248004,41,'equestrian','occurred','versatility','A'); -INSERT INTO t2 VALUES (996,248005,41,'Goodrich','Lagos','cosy',''); -INSERT INTO t2 VALUES (997,248006,41,'apish','rats','Darius','A'); -INSERT INTO t2 VALUES (998,248007,41,'Adlerian','bankruptcies','mastering','A'); -INSERT INTO t2 VALUES (999,248008,41,'Tropez','crying','Asiaticizations','A'); -INSERT INTO t2 VALUES (1000,248009,41,'nouns','unexpected','offerers','A'); -INSERT INTO t2 VALUES (1001,248010,41,'distracting','accessed','uncles','A'); -INSERT INTO t2 VALUES (1002,248011,41,'mutton','colorful','sleepwalk',''); -INSERT INTO t2 VALUES (1003,248012,41,'bridgeable','versatility','Ernestine',''); -INSERT INTO t2 VALUES (1004,248013,41,'stickers','cosy','checksumming',''); -INSERT INTO t2 VALUES (1005,248014,41,'transcontinental','Darius','stopped',''); -INSERT INTO t2 VALUES (1006,248015,41,'amateurish','mastering','sicker',''); -INSERT INTO t2 VALUES (1007,248016,41,'Gandhian','Asiaticizations','Italianization',''); -INSERT INTO t2 VALUES (1008,248017,41,'stratified','offerers','alphabetic',''); -INSERT INTO t2 VALUES (1009,248018,41,'chamberlains','uncles','pharmaceutic',''); -INSERT INTO t2 VALUES (1010,248019,41,'creditably','sleepwalk','creator',''); -INSERT INTO t2 VALUES (1011,248020,41,'philosophic','Ernestine','chess',''); -INSERT INTO t2 VALUES (1012,248021,41,'ores','checksumming','charcoal',''); -INSERT INTO t2 VALUES (1013,248101,41,'Carleton','stopped','Epiphany','A'); -INSERT INTO t2 VALUES (1014,248102,41,'tape','sicker','bulldozes','A'); -INSERT INTO t2 VALUES (1015,248201,41,'afloat','Italianization','Pygmalion','A'); -INSERT INTO t2 VALUES (1016,248202,41,'goodness','alphabetic','caressing','A'); -INSERT INTO t2 VALUES (1017,248203,41,'welcoming','pharmaceutic','Palestine','A'); -INSERT INTO t2 VALUES (1018,248204,41,'Pinsky','creator','regimented','A'); -INSERT INTO t2 VALUES (1019,248205,41,'halting','chess','scars','A'); -INSERT INTO t2 VALUES (1020,248206,41,'bibliography','charcoal','realest','A'); -INSERT INTO t2 VALUES (1021,248207,41,'decoding','Epiphany','diffusing','A'); -INSERT INTO t2 VALUES (1022,248208,41,'variance','bulldozes','clubroom','A'); -INSERT INTO t2 VALUES (1023,248209,41,'allowed','Pygmalion','Blythe','A'); -INSERT INTO t2 VALUES (1024,248210,41,'dire','caressing','ahead',''); -INSERT INTO t2 VALUES (1025,248211,50,'dub','Palestine','reviver',''); -INSERT INTO t2 VALUES (1026,250501,34,'poisoning','regimented','retransmitting','A'); -INSERT INTO t2 VALUES (1027,250502,34,'Iraqis','scars','landslide',''); -INSERT INTO t2 VALUES (1028,250503,34,'heaving','realest','Eiffel',''); -INSERT INTO t2 VALUES (1029,250504,34,'population','diffusing','absentee',''); -INSERT INTO t2 VALUES (1030,250505,34,'bomb','clubroom','aye',''); -INSERT INTO t2 VALUES (1031,250601,34,'Majorca','Blythe','forked','A'); -INSERT INTO t2 VALUES (1032,250602,34,'Gershwins','ahead','Peruvianizes',''); -INSERT INTO t2 VALUES (1033,250603,34,'explorers','reviver','clerked',''); -INSERT INTO t2 VALUES (1034,250604,34,'libretto','retransmitting','tutor',''); -INSERT INTO t2 VALUES (1035,250605,34,'occurred','landslide','boulevard',''); -INSERT INTO t2 VALUES (1036,251001,34,'Lagos','Eiffel','shuttered',''); -INSERT INTO t2 VALUES (1037,251002,34,'rats','absentee','quotes','A'); -INSERT INTO t2 VALUES (1038,251003,34,'bankruptcies','aye','Caltech',''); -INSERT INTO t2 VALUES (1039,251004,34,'crying','forked','Mossberg',''); -INSERT INTO t2 VALUES (1040,251005,34,'unexpected','Peruvianizes','kept',''); -INSERT INTO t2 VALUES (1041,251301,34,'accessed','clerked','roundly',''); -INSERT INTO t2 VALUES (1042,251302,34,'colorful','tutor','features','A'); -INSERT INTO t2 VALUES (1043,251303,34,'versatility','boulevard','imaginable','A'); -INSERT INTO t2 VALUES (1044,251304,34,'cosy','shuttered','controller',''); -INSERT INTO t2 VALUES (1045,251305,34,'Darius','quotes','racial',''); -INSERT INTO t2 VALUES (1046,251401,34,'mastering','Caltech','uprisings','A'); -INSERT INTO t2 VALUES (1047,251402,34,'Asiaticizations','Mossberg','narrowed','A'); -INSERT INTO t2 VALUES (1048,251403,34,'offerers','kept','cannot','A'); -INSERT INTO t2 VALUES (1049,251404,34,'uncles','roundly','vest',''); -INSERT INTO t2 VALUES (1050,251405,34,'sleepwalk','features','famine',''); -INSERT INTO t2 VALUES (1051,251406,34,'Ernestine','imaginable','sugars',''); -INSERT INTO t2 VALUES (1052,251801,34,'checksumming','controller','exterminated','A'); -INSERT INTO t2 VALUES (1053,251802,34,'stopped','racial','belays',''); -INSERT INTO t2 VALUES (1054,252101,34,'sicker','uprisings','Hodges','A'); -INSERT INTO t2 VALUES (1055,252102,34,'Italianization','narrowed','translatable',''); -INSERT INTO t2 VALUES (1056,252301,34,'alphabetic','cannot','duality','A'); -INSERT INTO t2 VALUES (1057,252302,34,'pharmaceutic','vest','recording','A'); -INSERT INTO t2 VALUES (1058,252303,34,'creator','famine','rouses','A'); -INSERT INTO t2 VALUES (1059,252304,34,'chess','sugars','poison',''); -INSERT INTO t2 VALUES (1060,252305,34,'charcoal','exterminated','attitude',''); -INSERT INTO t2 VALUES (1061,252306,34,'Epiphany','belays','dusted',''); -INSERT INTO t2 VALUES (1062,252307,34,'bulldozes','Hodges','encompasses',''); -INSERT INTO t2 VALUES (1063,252308,34,'Pygmalion','translatable','presentation',''); -INSERT INTO t2 VALUES (1064,252309,34,'caressing','duality','Kantian',''); -INSERT INTO t2 VALUES (1065,256001,34,'Palestine','recording','imprecision','A'); -INSERT INTO t2 VALUES (1066,256002,34,'regimented','rouses','saving',''); -INSERT INTO t2 VALUES (1067,256003,34,'scars','poison','maternal',''); -INSERT INTO t2 VALUES (1068,256004,34,'realest','attitude','hewed',''); -INSERT INTO t2 VALUES (1069,256005,34,'diffusing','dusted','kerosene',''); -INSERT INTO t2 VALUES (1070,258001,34,'clubroom','encompasses','Cubans',''); -INSERT INTO t2 VALUES (1071,258002,34,'Blythe','presentation','photographers',''); -INSERT INTO t2 VALUES (1072,258003,34,'ahead','Kantian','nymph','A'); -INSERT INTO t2 VALUES (1073,258004,34,'reviver','imprecision','bedlam','A'); -INSERT INTO t2 VALUES (1074,258005,34,'retransmitting','saving','north','A'); -INSERT INTO t2 VALUES (1075,258006,34,'landslide','maternal','Schoenberg','A'); -INSERT INTO t2 VALUES (1076,258007,34,'Eiffel','hewed','botany','A'); -INSERT INTO t2 VALUES (1077,258008,34,'absentee','kerosene','curs',''); -INSERT INTO t2 VALUES (1078,258009,34,'aye','Cubans','solidification',''); -INSERT INTO t2 VALUES (1079,258010,34,'forked','photographers','inheritresses',''); -INSERT INTO t2 VALUES (1080,258011,34,'Peruvianizes','nymph','stiller',''); -INSERT INTO t2 VALUES (1081,258101,68,'clerked','bedlam','t1','A'); -INSERT INTO t2 VALUES (1082,258102,68,'tutor','north','suite','A'); -INSERT INTO t2 VALUES (1083,258103,34,'boulevard','Schoenberg','ransomer',''); -INSERT INTO t2 VALUES (1084,258104,68,'shuttered','botany','Willy',''); -INSERT INTO t2 VALUES (1085,258105,68,'quotes','curs','Rena','A'); -INSERT INTO t2 VALUES (1086,258106,68,'Caltech','solidification','Seattle','A'); -INSERT INTO t2 VALUES (1087,258107,68,'Mossberg','inheritresses','relaxes','A'); -INSERT INTO t2 VALUES (1088,258108,68,'kept','stiller','exclaim',''); -INSERT INTO t2 VALUES (1089,258109,68,'roundly','t1','implicated','A'); -INSERT INTO t2 VALUES (1090,258110,68,'features','suite','distinguish',''); -INSERT INTO t2 VALUES (1091,258111,68,'imaginable','ransomer','assayed',''); -INSERT INTO t2 VALUES (1092,258112,68,'controller','Willy','homeowner',''); -INSERT INTO t2 VALUES (1093,258113,68,'racial','Rena','and',''); -INSERT INTO t2 VALUES (1094,258201,34,'uprisings','Seattle','stealth',''); -INSERT INTO t2 VALUES (1095,258202,34,'narrowed','relaxes','coinciding','A'); -INSERT INTO t2 VALUES (1096,258203,34,'cannot','exclaim','founder','A'); -INSERT INTO t2 VALUES (1097,258204,34,'vest','implicated','environing',''); -INSERT INTO t2 VALUES (1098,258205,34,'famine','distinguish','jewelry',''); -INSERT INTO t2 VALUES (1099,258301,34,'sugars','assayed','lemons','A'); -INSERT INTO t2 VALUES (1100,258401,34,'exterminated','homeowner','brokenness','A'); -INSERT INTO t2 VALUES (1101,258402,34,'belays','and','bedpost','A'); -INSERT INTO t2 VALUES (1102,258403,34,'Hodges','stealth','assurers','A'); -INSERT INTO t2 VALUES (1103,258404,34,'translatable','coinciding','annoyers',''); -INSERT INTO t2 VALUES (1104,258405,34,'duality','founder','affixed',''); -INSERT INTO t2 VALUES (1105,258406,34,'recording','environing','warbling',''); -INSERT INTO t2 VALUES (1106,258407,34,'rouses','jewelry','seriously',''); -INSERT INTO t2 VALUES (1107,228123,37,'poison','lemons','boasted',''); -INSERT INTO t2 VALUES (1108,250606,34,'attitude','brokenness','Chantilly',''); -INSERT INTO t2 VALUES (1109,208405,37,'dusted','bedpost','Iranizes',''); -INSERT INTO t2 VALUES (1110,212101,37,'encompasses','assurers','violinist',''); -INSERT INTO t2 VALUES (1111,218206,37,'presentation','annoyers','extramarital',''); -INSERT INTO t2 VALUES (1112,150401,37,'Kantian','affixed','spates',''); -INSERT INTO t2 VALUES (1113,248212,41,'imprecision','warbling','cloakroom',''); -INSERT INTO t2 VALUES (1114,128026,00,'saving','seriously','gazer',''); -INSERT INTO t2 VALUES (1115,128024,00,'maternal','boasted','hand',''); -INSERT INTO t2 VALUES (1116,128027,00,'hewed','Chantilly','tucked',''); -INSERT INTO t2 VALUES (1117,128025,00,'kerosene','Iranizes','gems',''); -INSERT INTO t2 VALUES (1118,128109,00,'Cubans','violinist','clinker',''); -INSERT INTO t2 VALUES (1119,128705,00,'photographers','extramarital','refiner',''); -INSERT INTO t2 VALUES (1120,126303,00,'nymph','spates','callus',''); -INSERT INTO t2 VALUES (1121,128308,00,'bedlam','cloakroom','leopards',''); -INSERT INTO t2 VALUES (1122,128204,00,'north','gazer','comfortingly',''); -INSERT INTO t2 VALUES (1123,128205,00,'Schoenberg','hand','generically',''); -INSERT INTO t2 VALUES (1124,128206,00,'botany','tucked','getters',''); -INSERT INTO t2 VALUES (1125,128207,00,'curs','gems','sexually',''); -INSERT INTO t2 VALUES (1126,118205,00,'solidification','clinker','spear',''); -INSERT INTO t2 VALUES (1127,116801,00,'inheritresses','refiner','serums',''); -INSERT INTO t2 VALUES (1128,116803,00,'stiller','callus','Italianization',''); -INSERT INTO t2 VALUES (1129,116804,00,'t1','leopards','attendants',''); -INSERT INTO t2 VALUES (1130,116802,00,'suite','comfortingly','spies',''); -INSERT INTO t2 VALUES (1131,128605,00,'ransomer','generically','Anthony',''); -INSERT INTO t2 VALUES (1132,118308,00,'Willy','getters','planar',''); -INSERT INTO t2 VALUES (1133,113702,00,'Rena','sexually','cupped',''); -INSERT INTO t2 VALUES (1134,113703,00,'Seattle','spear','cleanser',''); -INSERT INTO t2 VALUES (1135,112103,00,'relaxes','serums','commuters',''); -INSERT INTO t2 VALUES (1136,118009,00,'exclaim','Italianization','honeysuckle',''); -INSERT INTO t2 VALUES (5136,1118009,00,'exclaim','Italianization','honeysuckle',''); -INSERT INTO t2 VALUES (1137,138011,00,'implicated','attendants','orphanage',''); -INSERT INTO t2 VALUES (1138,138010,00,'distinguish','spies','skies',''); -INSERT INTO t2 VALUES (1139,138012,00,'assayed','Anthony','crushers',''); -INSERT INTO t2 VALUES (1140,068304,00,'homeowner','planar','Puritan',''); -INSERT INTO t2 VALUES (1141,078009,00,'and','cupped','squeezer',''); -INSERT INTO t2 VALUES (1142,108013,00,'stealth','cleanser','bruises',''); -INSERT INTO t2 VALUES (1143,084004,00,'coinciding','commuters','bonfire',''); -INSERT INTO t2 VALUES (1144,083402,00,'founder','honeysuckle','Colombo',''); -INSERT INTO t2 VALUES (1145,084003,00,'environing','orphanage','nondecreasing',''); -INSERT INTO t2 VALUES (1146,088504,00,'jewelry','skies','innocents',''); -INSERT INTO t2 VALUES (1147,088005,00,'lemons','crushers','masked',''); -INSERT INTO t2 VALUES (1148,088007,00,'brokenness','Puritan','file',''); -INSERT INTO t2 VALUES (1149,088006,00,'bedpost','squeezer','brush',''); -INSERT INTO t2 VALUES (1150,148025,00,'assurers','bruises','mutilate',''); -INSERT INTO t2 VALUES (1151,148024,00,'annoyers','bonfire','mommy',''); -INSERT INTO t2 VALUES (1152,138305,00,'affixed','Colombo','bulkheads',''); -INSERT INTO t2 VALUES (1153,138306,00,'warbling','nondecreasing','undeclared',''); -INSERT INTO t2 VALUES (1154,152701,00,'seriously','innocents','displacements',''); -INSERT INTO t2 VALUES (1155,148505,00,'boasted','masked','nieces',''); -INSERT INTO t2 VALUES (1156,158003,00,'Chantilly','file','coeducation',''); -INSERT INTO t2 VALUES (1157,156201,00,'Iranizes','brush','brassy',''); -INSERT INTO t2 VALUES (1158,156202,00,'violinist','mutilate','authenticator',''); -INSERT INTO t2 VALUES (1159,158307,00,'extramarital','mommy','Washoe',''); -INSERT INTO t2 VALUES (1160,158402,00,'spates','bulkheads','penny',''); -INSERT INTO t2 VALUES (1161,158401,00,'cloakroom','undeclared','Flagler',''); -INSERT INTO t2 VALUES (1162,068013,00,'gazer','displacements','stoned',''); -INSERT INTO t2 VALUES (1163,068012,00,'hand','nieces','cranes',''); -INSERT INTO t2 VALUES (1164,068203,00,'tucked','coeducation','masterful',''); -INSERT INTO t2 VALUES (1165,088205,00,'gems','brassy','biracial',''); -INSERT INTO t2 VALUES (1166,068704,00,'clinker','authenticator','steamships',''); -INSERT INTO t2 VALUES (1167,068604,00,'refiner','Washoe','windmills',''); -INSERT INTO t2 VALUES (1168,158502,00,'callus','penny','exploit',''); -INSERT INTO t2 VALUES (1169,123103,00,'leopards','Flagler','riverfront',''); -INSERT INTO t2 VALUES (1170,148026,00,'comfortingly','stoned','sisterly',''); -INSERT INTO t2 VALUES (1171,123302,00,'generically','cranes','sharpshoot',''); -INSERT INTO t2 VALUES (1172,076503,00,'getters','masterful','mittens',''); -INSERT INTO t2 VALUES (1173,126304,00,'sexually','biracial','interdependency',''); -INSERT INTO t2 VALUES (1174,068306,00,'spear','steamships','policy',''); -INSERT INTO t2 VALUES (1175,143504,00,'serums','windmills','unleashing',''); -INSERT INTO t2 VALUES (1176,160201,00,'Italianization','exploit','pretenders',''); -INSERT INTO t2 VALUES (1177,148028,00,'attendants','riverfront','overstatements',''); -INSERT INTO t2 VALUES (1178,148027,00,'spies','sisterly','birthed',''); -INSERT INTO t2 VALUES (1179,143505,00,'Anthony','sharpshoot','opportunism',''); -INSERT INTO t2 VALUES (1180,108014,00,'planar','mittens','showroom',''); -INSERT INTO t2 VALUES (1181,076104,00,'cupped','interdependency','compromisingly',''); -INSERT INTO t2 VALUES (1182,078106,00,'cleanser','policy','Medicare',''); -INSERT INTO t2 VALUES (1183,126102,00,'commuters','unleashing','corresponds',''); -INSERT INTO t2 VALUES (1184,128029,00,'honeysuckle','pretenders','hardware',''); -INSERT INTO t2 VALUES (1185,128028,00,'orphanage','overstatements','implant',''); -INSERT INTO t2 VALUES (1186,018410,00,'skies','birthed','Alicia',''); -INSERT INTO t2 VALUES (1187,128110,00,'crushers','opportunism','requesting',''); -INSERT INTO t2 VALUES (1188,148506,00,'Puritan','showroom','produced',''); -INSERT INTO t2 VALUES (1189,123303,00,'squeezer','compromisingly','criticizes',''); -INSERT INTO t2 VALUES (1190,123304,00,'bruises','Medicare','backer',''); -INSERT INTO t2 VALUES (1191,068504,00,'bonfire','corresponds','positively',''); -INSERT INTO t2 VALUES (1192,068305,00,'Colombo','hardware','colicky',''); -INSERT INTO t2 VALUES (1193,000000,00,'nondecreasing','implant','thrillingly',''); select t2.fld3 from t2 where companynr = 58 and fld3 like "%imaginable%"; fld3 imaginable @@ -1687,16 +488,6 @@ price2 double(11,0), key (period), key (name) ); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1001,"Iranizes",37,5987435,234724); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1002,"violinist",37,28357832,8723648); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1003,"extramarital",37,39654943,235872); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1004,"spates",78,726498,72987523); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1005,"cloakroom",78,98439034,823742); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1006,"gazer",101,834598,27348324); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1007,"hand",154,983543950,29837423); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1008,"tucked",311,234298,3275892); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1009,"gems",447,2374834,9872392); -INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1010,"clinker",512,786542,76234234); create temporary table tmp type = myisam select * from t3; insert into t3 select * from tmp; insert into tmp select * from t3; @@ -2499,18 +1290,6 @@ companyname char(30) NOT NULL default '', PRIMARY KEY (companynr), UNIQUE KEY companyname(companyname) ) TYPE=MyISAM MAX_ROWS=50 PACK_KEYS=1 COMMENT='companynames'; -INSERT INTO t4 (companynr, companyname) VALUES (29,'company 1'); -INSERT INTO t4 (companynr, companyname) VALUES (34,'company 2'); -INSERT INTO t4 (companynr, companyname) VALUES (36,'company 3'); -INSERT INTO t4 (companynr, companyname) VALUES (37,'company 4'); -INSERT INTO t4 (companynr, companyname) VALUES (40,'company 5'); -INSERT INTO t4 (companynr, companyname) VALUES (41,'company 6'); -INSERT INTO t4 (companynr, companyname) VALUES (53,'company 7'); -INSERT INTO t4 (companynr, companyname) VALUES (58,'company 8'); -INSERT INTO t4 (companynr, companyname) VALUES (65,'company 9'); -INSERT INTO t4 (companynr, companyname) VALUES (68,'company 10'); -INSERT INTO t4 (companynr, companyname) VALUES (50,'company 11'); -INSERT INTO t4 (companynr, companyname) VALUES (00,'Unknown'); select STRAIGHT_JOIN t2.companynr,companyname from t4,t2 where t2.companynr=t4.companynr group by t2.companynr; companynr companyname 00 Unknown diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 9884c88b420..3e23fa1a3f2 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -40,6 +40,7 @@ CREATE TABLE t2 ( # Populate table # +--disable_query_log INSERT INTO t2 VALUES (1,000001,00,'Omaha','teethe','neat',''); INSERT INTO t2 VALUES (2,011401,37,'breaking','dreaded','Steinberg','W'); INSERT INTO t2 VALUES (3,011402,37,'Romans','scholastics','jarring',''); @@ -1239,6 +1240,7 @@ INSERT INTO t2 VALUES (1190,123304,00,'bruises','Medicare','backer',''); INSERT INTO t2 VALUES (1191,068504,00,'bonfire','corresponds','positively',''); INSERT INTO t2 VALUES (1192,068305,00,'Colombo','hardware','colicky',''); INSERT INTO t2 VALUES (1193,000000,00,'nondecreasing','implant','thrillingly',''); +--enable_query_log # # Search with a key @@ -1364,6 +1366,7 @@ create table t3 ( key (name) ); +--disable_query_log INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1001,"Iranizes",37,5987435,234724); INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1002,"violinist",37,28357832,8723648); INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1003,"extramarital",37,39654943,235872); @@ -1374,6 +1377,7 @@ INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1007,"hand",154,9835 INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1008,"tucked",311,234298,3275892); INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1009,"gems",447,2374834,9872392); INSERT INTO t3 (period,name,companynr,price,price2) VALUES (1010,"clinker",512,786542,76234234); +--enable_query_log create temporary table tmp type = myisam select * from t3; @@ -1496,6 +1500,7 @@ create table t4 ( UNIQUE KEY companyname(companyname) ) TYPE=MyISAM MAX_ROWS=50 PACK_KEYS=1 COMMENT='companynames'; +--disable_query_log INSERT INTO t4 (companynr, companyname) VALUES (29,'company 1'); INSERT INTO t4 (companynr, companyname) VALUES (34,'company 2'); INSERT INTO t4 (companynr, companyname) VALUES (36,'company 3'); @@ -1508,6 +1513,7 @@ INSERT INTO t4 (companynr, companyname) VALUES (65,'company 9'); INSERT INTO t4 (companynr, companyname) VALUES (68,'company 10'); INSERT INTO t4 (companynr, companyname) VALUES (50,'company 11'); INSERT INTO t4 (companynr, companyname) VALUES (00,'Unknown'); +--enable_query_log # # Test of stright join to force a full join. From de3019c61a34f885eb1936018634af0f652160a2 Mon Sep 17 00:00:00 2001 From: "kostja@oak.local" <> Date: Tue, 16 Sep 2003 21:20:16 +0400 Subject: [PATCH 19/81] comment made more explanatory --- sql/sql_select.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index bd0c21bb3b0..d537dccc5a6 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2149,11 +2149,13 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, } /* - In case of full scan we check every row in the table: - here we take into account rows read and skipped, as well as rows - passed to next select - */ - + We estimate the cost of making full cortesian product between + rows in the scanned table and generated records as + record_count*s->records/TIME_FOR_COMPARE. Taking into account + cost of evaluating WHERE clause for s->found_records is not + necessary because it costs much less than the cost mentioned + above. + */ if (best == DBL_MAX || (tmp + record_count/(double) TIME_FOR_COMPARE*s->records < best + record_count/(double) TIME_FOR_COMPARE*records)) From 048245ae9d303fe72cbfa61e5dd8829a376bb25a Mon Sep 17 00:00:00 2001 From: "kostja@oak.local" <> Date: Wed, 17 Sep 2003 14:00:43 +0400 Subject: [PATCH 20/81] fixed test result to be in sync with the optimiser --- mysql-test/r/distinct.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index da0c6a5eb72..9fcb001de2c 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -303,9 +303,9 @@ t1 index id id 4 NULL 2 Using index; Using temporary t2 index id id 8 NULL 1 Using index; Distinct t3 index id id 8 NULL 1 Using index; Distinct j_lj_t2 index id id 4 NULL 2 Using where; Using index; Distinct -t2_lj index id id 8 NULL 1 Using where; Using index; Distinct +t2_lj ref id id 4 j_lj_t2.id 1 Using where; Using index; Distinct j_lj_t3 index id id 4 NULL 2 Using where; Using index; Distinct -t3_lj index id id 8 NULL 1 Using where; Using index; Distinct +t3_lj ref id id 4 j_lj_t3.id 1 Using where; Using index; Distinct SELECT DISTINCT t1.id from From 6fba16eabf292036495b46531bd905bb85aae60e Mon Sep 17 00:00:00 2001 From: "kostja@oak.local" <> Date: Wed, 17 Sep 2003 21:52:05 +0400 Subject: [PATCH 21/81] Applied Monty corrections to the FULL SCAN optimiser bug patch. --- mysql-test/r/distinct.result | 6 ++-- mysql-test/r/order_by.result | 14 ++++----- sql/sql_select.cc | 55 +++++++++++++++++++++--------------- 3 files changed, 43 insertions(+), 32 deletions(-) diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index 9fcb001de2c..a0343f13394 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -173,9 +173,9 @@ INSERT INTO t2 values (1),(2),(3); INSERT INTO t3 VALUES (1,'1'),(2,'2'),(1,'1'),(2,'2'); explain SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a; table type possible_keys key key_len ref rows Extra -t2 index a a 4 NULL 5 Using index; Using temporary -t1 eq_ref PRIMARY PRIMARY 4 t2.a 1 -t3 index a a 5 NULL 5 Using where; Using index +t3 index a a 5 NULL 6 Using index; Using temporary +t2 index a a 4 NULL 5 Using index; Distinct +t1 eq_ref PRIMARY PRIMARY 4 t2.a 1 Using where; Distinct SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a; a 1 diff --git a/mysql-test/r/order_by.result b/mysql-test/r/order_by.result index 64fac8af872..58f4972d08f 100644 --- a/mysql-test/r/order_by.result +++ b/mysql-test/r/order_by.result @@ -307,17 +307,17 @@ table type possible_keys key key_len ref rows Extra t1 range a a 9 NULL 8 Using where; Using index explain select * from t1 where a = 2 and b >0 order by a desc,b desc; table type possible_keys key key_len ref rows Extra -t1 range a a 9 NULL 4 Using where; Using index +t1 range a a 9 NULL 5 Using where; Using index explain select * from t1 where a = 2 and b is null order by a desc,b desc; table type possible_keys key key_len ref rows Extra t1 ref a a 9 const,const 1 Using where; Using index; Using filesort explain select * from t1 where a = 2 and (b is null or b > 0) order by a desc,b desc; table type possible_keys key key_len ref rows Extra -t1 range a a 9 NULL 5 Using where; Using index +t1 range a a 9 NULL 6 Using where; Using index explain select * from t1 where a = 2 and b > 0 order by a desc,b desc; table type possible_keys key key_len ref rows Extra -t1 range a a 9 NULL 4 Using where; Using index +t1 range a a 9 NULL 5 Using where; Using index explain select * from t1 where a = 2 and b < 2 order by a desc,b desc; table type possible_keys key key_len ref rows Extra t1 range a a 9 NULL 2 Using where; Using index @@ -466,8 +466,8 @@ t2 eq_ref PRIMARY,uid PRIMARY 4 t1.gid 1 t3 eq_ref PRIMARY PRIMARY 2 t2.uid 1 Using where; Using index EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t1.gid,t3.skr; table type possible_keys key key_len ref rows Extra -t1 index PRIMARY PRIMARY 4 NULL 6 Using index -t3 eq_ref PRIMARY PRIMARY 2 t1.gid 1 Using where +t3 ALL PRIMARY NULL NULL NULL 6 Using temporary; Using filesort +t1 eq_ref PRIMARY PRIMARY 4 t3.uid 1 Using where; Using index EXPLAIN SELECT t1.gid, t2.sid, t3.uid from t2, t1, t3 where t2.gid = t1.gid and t2.uid = t3.uid order by t3.uid, t1.gid; table type possible_keys key key_len ref rows Extra t1 index PRIMARY PRIMARY 4 NULL 6 Using index; Using temporary; Using filesort @@ -475,8 +475,8 @@ t2 eq_ref PRIMARY,uid PRIMARY 4 t1.gid 1 t3 eq_ref PRIMARY PRIMARY 2 t2.uid 1 Using where; Using index EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t3.skr,t1.gid; table type possible_keys key key_len ref rows Extra -t1 index PRIMARY PRIMARY 4 NULL 6 Using index; Using temporary; Using filesort -t3 eq_ref PRIMARY PRIMARY 2 t1.gid 1 Using where +t3 ALL PRIMARY NULL NULL NULL 6 Using temporary; Using filesort +t1 eq_ref PRIMARY PRIMARY 4 t3.uid 1 Using where; Using index EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.skr = t3.uid order by t1.gid,t3.skr; table type possible_keys key key_len ref rows Extra t1 ALL NULL NULL NULL NULL 6 Using temporary; Using filesort diff --git a/sql/sql_select.cc b/sql/sql_select.cc index d537dccc5a6..53c41482a36 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1898,7 +1898,7 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, best=best_time=records=DBL_MAX; KEYUSE *best_key=0; uint best_max_key_part=0; - my_bool found_constrain= 0; + my_bool found_constraint= 0; if (s->keyuse) { /* Use key if possible */ @@ -1979,7 +1979,7 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, } else { - found_constrain= 1; + found_constraint= 1; /* Check if we found full key */ @@ -2133,12 +2133,28 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, s->table->used_keys && best_key) && !(s->table->force_index && best_key)) { // Check full join + ha_rows rnd_records= s->found_records; /* Estimate cost of reading table. */ - tmp= (double) s->read_time; + tmp= s->table->file->scan_time(); + /* + If there is a restriction on the table, assume that 25% of the + rows can be skipped on next part. + This is to force tables that this table depends on before this + table + */ + if (found_constraint) + rnd_records-= rnd_records/4; + if (s->on_expr) // Can't use join cache { - /* We have to read the whole table for each record */ - tmp*= record_count; + tmp= record_count * + /* We have to read the whole table for each record */ + (tmp + + /* + And we have to skip rows which does not satisfy join + condition for each record. + */ + (s->records - rnd_records)/(double) TIME_FOR_COMPARE); } else { @@ -2146,30 +2162,25 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, tmp*= (1.0 + floor((double) cache_record_length(join,idx) * record_count / (double) thd->variables.join_buff_size)); + /* + We don't make full cartesian product between rows in the scanned + table and existing records because we skip all rows from the + scanned table, which does not satisfy join condition when + we read the table (see flush_cached_records for details). Here we + take into account cost to read and skip these records. + */ + tmp+= (s->records - rnd_records)/(double) TIME_FOR_COMPARE; } /* - We estimate the cost of making full cortesian product between - rows in the scanned table and generated records as - record_count*s->records/TIME_FOR_COMPARE. Taking into account - cost of evaluating WHERE clause for s->found_records is not - necessary because it costs much less than the cost mentioned - above. + We estimate the cost of evaluating WHERE clause for found records + as record_count * rnd_records + TIME_FOR_COMPARE. This cost plus + tmp give us total cost of using TABLE SCAN */ if (best == DBL_MAX || - (tmp + record_count/(double) TIME_FOR_COMPARE*s->records < + (tmp + record_count/(double) TIME_FOR_COMPARE*rnd_records < best + record_count/(double) TIME_FOR_COMPARE*records)) { - /* - If there is a restriction on the table, assume that 25% of the - rows can be skipped on next part. - This is to force tables that this table depends on before this - table - */ - ha_rows rnd_records= s->found_records; - if (found_constrain) - rnd_records-= rnd_records/4; - /* If the table has a range (s->quick is set) make_join_select() will ensure that this will be used From 6b2cf69dcaa31b17aeabc7f60516d09796f8ca01 Mon Sep 17 00:00:00 2001 From: "jani@rhols221.adsl.netsonic.fi" <> Date: Wed, 17 Sep 2003 21:08:40 +0300 Subject: [PATCH 22/81] Fixed a bug in default.c, which caused quoted arguments not being read correctly from my.cnf. --- mysys/default.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mysys/default.c b/mysys/default.c index d938bc4435f..0318efeb448 100644 --- a/mysys/default.c +++ b/mysys/default.c @@ -387,6 +387,8 @@ static int search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, *ptr++= '='; for ( ; value != value_end; value++) { + if (*value == '\"' || *value == '\'') + continue; if (*value == '\\' && value != value_end-1) { switch(*++value) { @@ -405,6 +407,12 @@ static int search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, case 's': *ptr++= ' '; /* space */ break; + case '\"': + *ptr++= '\"'; + break; + case '\'': + *ptr++= '\''; + break; case '\\': *ptr++= '\\'; break; From 33250a01babd50e23e6a648399df872e3dfcaeed Mon Sep 17 00:00:00 2001 From: "jani@rhols221.adsl.netsonic.fi" <> Date: Wed, 17 Sep 2003 21:41:36 +0300 Subject: [PATCH 23/81] Fixed Bug#1291, client displays wrong prompt when in the middle of backticks. --- client/mysql.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index 639e5f450ad..2fa131b854a 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -40,7 +40,7 @@ #include #include -const char *VER= "12.21"; +const char *VER= "12.22"; /* Don't try to make a nice table if the data is too big */ #define MAX_COLUMN_LENGTH 1024 @@ -801,7 +801,9 @@ static int read_lines(bool execute_commands) char *prompt= (char*) (glob_buffer.is_empty() ? construct_prompt() : !in_string ? " -> " : in_string == '\'' ? - " '> " : " \"> "); + " '> " : (in_string == '`' ? + " `> " : + " \"> ")); if (opt_outfile && glob_buffer.is_empty()) fflush(OUTFILE); From 74077c79fc51a2994df9b71cef7f152bc34a27e3 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Wed, 17 Sep 2003 22:01:08 +0200 Subject: [PATCH 24/81] - added make_win_src_distribution.sh to EXTRA_SCRIPTS --- scripts/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 0f492e040af..19fb7cedc7a 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -32,6 +32,7 @@ bin_SCRIPTS = @server_scripts@ \ make_win_src_distribution EXTRA_SCRIPTS = make_binary_distribution.sh \ + make_win_src_distribution.sh \ msql2mysql.sh \ mysql_config.sh \ mysql_fix_privilege_tables.sh \ From caf23b6999b3c9788217176a7a123f3bd0ae13df Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Wed, 17 Sep 2003 22:41:01 +0200 Subject: [PATCH 25/81] - force the removal of /var/lock/subsys/mysql on MySQL shutdown --- support-files/mysql.server.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index 694e6fa8ebb..fe1f0de8477 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -178,7 +178,7 @@ case "$mode" in # delete lock for RedHat / SuSE if test -f /var/lock/subsys/mysql then - rm /var/lock/subsys/mysql + rm -f /var/lock/subsys/mysql fi else echo "No mysqld pid file found. Looked for $pid_file." From 69aed374a536dff9ba0ab37363556165f9a6c27d Mon Sep 17 00:00:00 2001 From: "dlenev@mysql.com" <> Date: Fri, 19 Sep 2003 16:43:56 +0400 Subject: [PATCH 26/81] Fix for bug #1340 (More careful checks if we met proper Create_file_log_event before Append or Exec event we are processing now) --- client/mysqlbinlog.cc | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index ac43130b8bc..e00c60ef0a5 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -169,6 +169,8 @@ public: } Create_file_log_event *grab_event(uint file_id) { + if (file_id >= file_names.elements) + return 0; Create_file_log_event **ptr= (Create_file_log_event**)file_names.buffer + file_id; Create_file_log_event *res= *ptr; @@ -182,8 +184,14 @@ public: } void process(Append_block_log_event *ae) { - if (ae->file_id >= file_names.elements) - { + Create_file_log_event* ce= 0; + + if (ae->file_id < file_names.elements) + ce= *((Create_file_log_event**)file_names.buffer + ae->file_id); + + if (ce) + append_to_file(ce->fname,O_APPEND|O_BINARY|O_WRONLY,ae->block,ae->block_len); + else /* There is no Create_file event (a bad binlog or a big --position). Assuming it's a big --position, we just do nothing and @@ -191,11 +199,6 @@ public: */ fprintf(stderr,"Warning: ignoring Append_block as there is no \ Create_file event for file_id: %u\n",ae->file_id); - return; - } - Create_file_log_event* ce= - *((Create_file_log_event**)file_names.buffer + ae->file_id); - append_to_file(ce->fname,O_APPEND|O_BINARY|O_WRONLY,ae->block,ae->block_len); } }; From 40cabaa77332a60300319411ecf51642209be751 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Fri, 19 Sep 2003 18:34:57 +0200 Subject: [PATCH 27/81] - fixed several typos ("uppdate"->"update" and "tryed"->"tried") --- extra/comp_err.c | 2 +- heap/hp_test2.c | 4 ++-- isam/test2.c | 4 ++-- myisam/mi_test2.c | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/extra/comp_err.c b/extra/comp_err.c index 806fb5052b4..b63041869ea 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -109,7 +109,7 @@ int main(int argc,char *argv[]) if (to) fclose(to); if (error) - fprintf(stderr,"Can't uppdate messagefile %s, errno: %d\n",*argv,errno); + fprintf(stderr,"Can't update messagefile %s, errno: %d\n",*argv,errno); exit(error); return(0); diff --git a/heap/hp_test2.c b/heap/hp_test2.c index e2570893519..36016797447 100644 --- a/heap/hp_test2.c +++ b/heap/hp_test2.c @@ -237,12 +237,12 @@ int main(int argc, char *argv[]) { if (my_errno != HA_ERR_FOUND_DUPP_KEY || key3[n3] == 0) { - printf("error: %d; can't uppdate:\nFrom: \"%s\"\nTo: \"%s\"\n", + printf("error: %d; can't update:\nFrom: \"%s\"\nTo: \"%s\"\n", my_errno,record,record2); goto err; } if (verbose) - printf("Double key when tryed to uppdate:\nFrom: \"%s\"\nTo: \"%s\"\n",record,record2); + printf("Double key when tried to update:\nFrom: \"%s\"\nTo: \"%s\"\n",record,record2); } else { diff --git a/isam/test2.c b/isam/test2.c index c8f97ccdefa..5b09cc8b716 100644 --- a/isam/test2.c +++ b/isam/test2.c @@ -265,12 +265,12 @@ int main(int argc, char *argv[]) { if (my_errno != HA_ERR_FOUND_DUPP_KEY || key3[n3] == 0) { - printf("error: %d; can't uppdate:\nFrom: \"%s\"\nTo: \"%s\"\n", + printf("error: %d; can't update:\nFrom: \"%s\"\nTo: \"%s\"\n", my_errno,read_record,record2); goto err; } if (verbose) - printf("Double key when tryed to uppdate:\nFrom: \"%s\"\nTo: \"%s\"\n",record,record2); + printf("Double key when tried to update:\nFrom: \"%s\"\nTo: \"%s\"\n",record,record2); } else { diff --git a/myisam/mi_test2.c b/myisam/mi_test2.c index e3a2ecfbb1f..2a658ca2054 100644 --- a/myisam/mi_test2.c +++ b/myisam/mi_test2.c @@ -329,12 +329,12 @@ int main(int argc, char *argv[]) { if (my_errno != HA_ERR_FOUND_DUPP_KEY || key3[n3] == 0) { - printf("error: %d; can't uppdate:\nFrom: \"%s\"\nTo: \"%s\"\n", + printf("error: %d; can't update:\nFrom: \"%s\"\nTo: \"%s\"\n", my_errno,read_record,record2); goto err; } if (verbose) - printf("Double key when tryed to uppdate:\nFrom: \"%s\"\nTo: \"%s\"\n",record,record2); + printf("Double key when tried to update:\nFrom: \"%s\"\nTo: \"%s\"\n",record,record2); } else { From c4384241ecd692b365e1b7a112d8d7342730fe2f Mon Sep 17 00:00:00 2001 From: "dlenev@mysql.com" <> Date: Fri, 19 Sep 2003 20:34:58 +0400 Subject: [PATCH 28/81] Bugfix for bug #1340, style fix before push --- client/mysqlbinlog.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 43872dd718a..6eab790857d 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -200,10 +200,8 @@ public: } void process(Append_block_log_event *ae) { - Create_file_log_event* ce= 0; - - if (ae->file_id < file_names.elements) - ce= *((Create_file_log_event**)file_names.buffer + ae->file_id); + Create_file_log_event* ce= (ae->file_id < file_names.elements) ? + *((Create_file_log_event**)file_names.buffer + ae->file_id) : 0; if (ce) append_to_file(ce->fname,O_APPEND|O_BINARY|O_WRONLY,ae->block,ae->block_len); From 118670017f2a9a6b0bb91a6a3ba1fcfad6e91ea6 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Fri, 19 Sep 2003 19:07:41 +0200 Subject: [PATCH 29/81] removing my chmods so that the test can be run on non-Unix platforms (kind request from the Novell team). Note that old chmods in rpl_rotate_logs remain. --- mysql-test/r/rpl000009.result | 12 ------------ mysql-test/t/rpl000009.test | 18 ++++++++++-------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/mysql-test/r/rpl000009.result b/mysql-test/r/rpl000009.result index 4a8057467f2..569dd301143 100644 --- a/mysql-test/r/rpl000009.result +++ b/mysql-test/r/rpl000009.result @@ -111,22 +111,10 @@ n s 2 two bar 3 three bar 4 four bar -insert into bar.t1 values(10, 'should be there'); -flush tables; -load data from master; -Error on delete of './bar/t1.MYI' (Errcode: 13) -select * from bar.t1; -n s -1 one bar -2 two bar -3 three bar -4 four bar -10 should be there load table bar.t1 from master; Table 't1' already exists drop table bar.t1; load table bar.t1 from master; -start slave; drop database bar; drop database foo; drop database foo; diff --git a/mysql-test/t/rpl000009.test b/mysql-test/t/rpl000009.test index 975cfbf9a65..e019e1fc3a7 100644 --- a/mysql-test/t/rpl000009.test +++ b/mysql-test/t/rpl000009.test @@ -110,13 +110,14 @@ select * from bar.t1; # Check that LOAD DATA FROM MASTER reports the error if it can't drop a # table to be overwritten. -insert into bar.t1 values(10, 'should be there'); -flush tables; -system chmod 500 var/slave-data/bar/; ---error 6 -load data from master; # should fail (errno 13) -system chmod 700 var/slave-data/bar/; -select * from bar.t1; # should contain the row (10, ...) +# DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX +# insert into bar.t1 values(10, 'should be there'); +# flush tables; +# system chmod 500 var/slave-data/bar/; +# --error 6 +# load data from master; # should fail (errno 13) +# system chmod 700 var/slave-data/bar/; +# select * from bar.t1; # should contain the row (10, ...) # Check that LOAD TABLE FROM MASTER fails if the table exists on slave @@ -126,7 +127,8 @@ drop table bar.t1; load table bar.t1 from master; # as LOAD DATA FROM MASTER failed it did not restart slave threads -start slave; +# DISABLED FOR NOW +# start slave; # Now time for cleanup connection master; From f05a1c83940557721a42c758e26f2adace291d0a Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Tue, 23 Sep 2003 13:36:01 +0300 Subject: [PATCH 30/81] Block SIGPIPE also for not threaded client programs. Added --include and --libs_r options to mysql_config. Added mysql_get_client_version() to client library Fixed some minor benchmark issues --- acinclude.m4 | 3 ++- configure.in | 2 +- extra/comp_err.c | 2 +- include/mysql.h | 9 +++++---- libmysql/libmysql.c | 13 +++++++------ libmysql/libmysql.def | 1 + scripts/Makefile.am | 1 + scripts/mysql_config.sh | 22 ++++++++++++++++++---- scripts/mysql_install_db.sh | 8 ++++---- sql-bench/bench-init.pl.sh | 2 +- sql-bench/server-cfg.sh | 1 - sql-bench/test-alter-table.sh | 2 +- sql-bench/test-select.sh | 5 +++-- tests/mail_to_db.pl | 4 ++-- 14 files changed, 47 insertions(+), 28 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index f6bd1d9e83e..f7833bdce41 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -839,9 +839,10 @@ AC_MSG_CHECKING(for OpenSSL) echo "You can't use the --all-static link option when using openssl." exit 1 fi + NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS $openssl_libs" + else AC_MSG_RESULT(no) fi - NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS $openssl_libs" AC_SUBST(openssl_libs) AC_SUBST(openssl_includes) ]) diff --git a/configure.in b/configure.in index 8ec42366ed9..168ac91667d 100644 --- a/configure.in +++ b/configure.in @@ -2256,7 +2256,7 @@ do done if test $charset_okay = 0; then - AC_MSG_ERROR([Charset $cs not available. (Available $CHARSETS_AVAILABLE). + AC_MSG_ERROR([Charset '$cs' not available. (Available $CHARSETS_AVAILABLE). See the Installation chapter in the Reference Manual.]); fi done diff --git a/extra/comp_err.c b/extra/comp_err.c index 806fb5052b4..8e9c6fc0f0e 100644 --- a/extra/comp_err.c +++ b/extra/comp_err.c @@ -60,7 +60,7 @@ int main(int argc,char *argv[]) return(1); } - VOID(count_rows(from,'"','}')); /* Calculate start-info */ + VOID(count_rows(from,'"','{')); /* Calculate start-info */ if (remember_rows(from,'}') < 0) /* Remember rows */ { fprintf(stderr,"Can't find textrows in '%s'\n",*argv); diff --git a/include/mysql.h b/include/mysql.h index b27d98e7e57..1db322d5304 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -349,10 +349,11 @@ int STDCALL mysql_refresh(MYSQL *mysql, unsigned int refresh_options); int STDCALL mysql_kill(MYSQL *mysql,unsigned long pid); int STDCALL mysql_ping(MYSQL *mysql); -const char * STDCALL mysql_stat(MYSQL *mysql); -const char * STDCALL mysql_get_server_info(MYSQL *mysql); -const char * STDCALL mysql_get_client_info(void); -const char * STDCALL mysql_get_host_info(MYSQL *mysql); +const char * STDCALL mysql_stat(MYSQL *mysql); +const char * STDCALL mysql_get_server_info(MYSQL *mysql); +const char * STDCALL mysql_get_client_info(void); +ulong STDCALL mysql_get_client_version(void); +const char * STDCALL mysql_get_host_info(MYSQL *mysql); unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql); MYSQL_RES * STDCALL mysql_list_dbs(MYSQL *mysql,const char *wild); MYSQL_RES * STDCALL mysql_list_tables(MYSQL *mysql,const char *wild); diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 9e32e60f7da..cd4e8c77f20 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -1452,10 +1452,6 @@ mysql_init(MYSQL *mysql) after we return if this is not the case. */ mysql->rpl_pivot = 1; -#if defined(SIGPIPE) && defined(THREAD) && !defined(__WIN__) - if (!((mysql)->client_flag & CLIENT_IGNORE_SIGPIPE)) - (void) signal(SIGPIPE,pipe_sig_handler); -#endif /* Only enable LOAD DATA INFILE by default if configured with @@ -1515,8 +1511,8 @@ void mysql_once_init(void) mysql_unix_port = env; } mysql_debug(NullS); -#if defined(SIGPIPE) && !defined(THREAD) && !defined(__WIN__) - (void) signal(SIGPIPE,SIG_IGN); +#if defined(SIGPIPE) && !defined(__WIN__) + (void) signal(SIGPIPE, SIG_IGN); #endif } #ifdef THREAD @@ -2911,6 +2907,11 @@ mysql_get_client_info(void) return (char*) MYSQL_SERVER_VERSION; } +ulong STDCALL mysql_get_client_version(void) +{ + return MYSQL_VERSION_ID; +} + int STDCALL mysql_options(MYSQL *mysql,enum mysql_option option, const char *arg) diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def index baa8643b92d..542ab890e95 100644 --- a/libmysql/libmysql.def +++ b/libmysql/libmysql.def @@ -24,6 +24,7 @@ EXPORTS mysql_get_host_info mysql_get_proto_info mysql_get_server_info + mysql_get_client_version mysql_info mysql_init mysql_insert_id diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 72fc73ef28b..c83b0d0b043 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -113,6 +113,7 @@ SUFFIXES = .sh -e 's!@''CLIENT_LIBS''@!@CLIENT_LIBS@!' \ -e 's!@''LIBS''@!@LIBS@!' \ -e 's!@''innodb_system_libs''@!@innodb_system_libs@!' \ + -e 's!@''openssl_libs''@!@openssl_libs@!' \ -e 's!@''VERSION''@!@VERSION@!' \ -e 's!@''MYSQL_SERVER_SUFFIX''@!@MYSQL_SERVER_SUFFIX@!' \ -e 's!@''COMPILATION_COMMENT''@!@COMPILATION_COMMENT@!' \ diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh index 3cc5b3a5016..52284104636 100644 --- a/scripts/mysql_config.sh +++ b/scripts/mysql_config.sh @@ -84,17 +84,29 @@ port='@MYSQL_TCP_PORT@' ldflags='@LDFLAGS@' client_libs='@CLIENT_LIBS@' -libs="$ldflags -L'$pkglibdir' -lmysqlclient $client_libs" -libs=`echo $libs | sed -e 's; +;;'` -cflags="-I'$pkgincludedir'" -embedded_libs="$ldflags -L'$pkglibdir' -lmysqld @LIBS@ @innodb_system_libs@" +# Create options, without end space + +libs="$ldflags -L$pkglibdir -lmysqlclient $client_libs" +libs=`echo "$libs" | sed -e 's; \+; ;g' | sed -e 's;^ *;;' | sed -e 's; *\$;;'` +libs_r="$ldflags -L$pkglibdir -lmysqlclient_r @LIBS@ @openssl_libs@" +libs_r=`echo "$libs_r" | sed -e 's; \+; ;g' | sed -e 's;^ *;;' | sed -e 's; *\$;;'` +cflags="-I$pkgincludedir @CFLAGS@" +include="-I$pkgincludedir" +embedded_libs="$ldflags -L$pkglibdir -lmysqld @LIBS@ @innodb_system_libs@" +embedded_libs=`echo "$embedded_libs" | sed -e 's; \+; ;g' | sed -e 's;^ *;;' | sed -e 's; *\$;;'` + +# Remove some options that a client doesn't have to care about + +cflags=`echo "$cflags " | sed -e 's;\(-DDBUG_OFF\|-DSAFEMALLOC\|-USAFEMALLOC\|-DSAFE_MUTEX\|-DPEDANTIC_SAFEMALLOC\|-DUNIV_MUST_NOT_INLINE\|-DFORCE_INIT_OF_VARS\|-DEXTRA_DEBUG\|-DHAVE_purify\|-O[0-9]\|-W[-A-Za-z]*\) *;;g' | sed -e 's; *\$;;'` usage () { cat <&1` if [ $? -ne 0 ] @@ -333,7 +333,7 @@ $c_c END_OF_DATA then echo "" - if test "$IN_RPM" -eq 0 + if test "$IN_RPM" = "0" then echo "To start mysqld at boot time you have to copy support-files/mysql.server" echo "to the right place for your system" @@ -354,7 +354,7 @@ then echo "able to use the new GRANT command!" fi echo - if test "$IN_RPM" -eq 0 + if test "$IN_RPM" = "0" then echo "You can start the MySQL daemon with:" echo "cd @prefix@ ; $bindir/mysqld_safe &" diff --git a/sql-bench/bench-init.pl.sh b/sql-bench/bench-init.pl.sh index b7d2b962e13..b02f5034637 100644 --- a/sql-bench/bench-init.pl.sh +++ b/sql-bench/bench-init.pl.sh @@ -31,7 +31,7 @@ # $server Object for current server # $limits Hash reference to limits for benchmark -$benchmark_version="2.14"; +$benchmark_version="2.15"; use Getopt::Long; require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n"; diff --git a/sql-bench/server-cfg.sh b/sql-bench/server-cfg.sh index 55371431152..905e7ee65be 100644 --- a/sql-bench/server-cfg.sh +++ b/sql-bench/server-cfg.sh @@ -2862,7 +2862,6 @@ sub new $limits{'working_blobs'} = 1; # If big varchar/blobs works $limits{'order_by_unused'} = 0; $limits{'working_all_fields'} = 1; - $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b).. return $self; } diff --git a/sql-bench/test-alter-table.sh b/sql-bench/test-alter-table.sh index f338792e9ef..93a9c1b444e 100644 --- a/sql-bench/test-alter-table.sh +++ b/sql-bench/test-alter-table.sh @@ -24,7 +24,7 @@ use DBI; use Benchmark; $opt_start_field_count=8; # start with this many fields -$opt_loop_count=20; # How many tests to do +$opt_loop_count=100; # How many tests to do $opt_row_count=1000; # Rows in the table $opt_field_count=1000; # Add until this many fields. $opt_time_limit=10*60; # Don't wait more than 10 min for some tests diff --git a/sql-bench/test-select.sh b/sql-bench/test-select.sh index a5de042cab1..8981fa49cff 100644 --- a/sql-bench/test-select.sh +++ b/sql-bench/test-select.sh @@ -356,7 +356,8 @@ if ($limits->{'group_distinct_functions'}) timestr(timediff($end_time, $loop_time),"all") . "\n"; # Workaround mimer's behavior - if (limits->{'multi_distinct'} == 1 ) { + if ($limits->{'multi_distinct'}) + { $loop_time=new Benchmark; $rows=$estimated=$count=0; for ($i=0 ; $i < $opt_medium_loop_count ; $i++) @@ -370,7 +371,7 @@ if ($limits->{'group_distinct_functions'}) print_time($estimated); print " for count_distinct_2 ($count:$rows): " . timestr(timediff($end_time, $loop_time),"all") . "\n"; - } + } $loop_time=new Benchmark; $rows=$estimated=$count=0; diff --git a/tests/mail_to_db.pl b/tests/mail_to_db.pl index 671e8b23599..dc40fb3ede6 100755 --- a/tests/mail_to_db.pl +++ b/tests/mail_to_db.pl @@ -25,8 +25,8 @@ $opt_debug = 0; $opt_host = undef(); $opt_port = undef(); $opt_socket = undef(); -$opt_db = undef(); -$opt_table = undef(); +$opt_db = "mail"; +$opt_table = "mails"; $opt_user = undef(); $opt_password = undef(); $opt_max_mail_size = 65536; From 45a41e85e3d6c94be8690d2431fb4ed96da03c06 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Tue, 23 Sep 2003 17:06:44 +0300 Subject: [PATCH 31/81] Code cleanup of new patches --- client/mysqlbinlog.cc | 125 ++++++++++++++++++++---------------------- mysys/default.c | 14 ++++- mysys/mf_dirname.c | 34 ++++++++---- 3 files changed, 92 insertions(+), 81 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 6eab790857d..910b42d184d 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -20,8 +20,6 @@ #include #include #include "log_event.h" -#include "include/my_sys.h" -#include "unistd.h" #define BIN_LOG_HEADER_SIZE 4 #define PROBE_HEADER_LEN (EVENT_LEN_OFFSET+4) @@ -75,49 +73,7 @@ class Load_log_processor int target_dir_name_len; DYNAMIC_ARRAY file_names; - const char* create_file(Create_file_log_event *ce) - { - const char *bname= ce->fname + ce->fname_len -1; - while (bname>ce->fname && bname[-1]!=FN_LIBCHAR) - bname--; - - uint blen= ce->fname_len - (bname-ce->fname); - uint full_len= target_dir_name_len + blen + 9 + 9 + 1; - char *tmp; - if (!(tmp= my_malloc(full_len,MYF(MY_WME))) || - set_dynamic(&file_names,(gptr)&ce,ce->file_id)) - { - die("Could not construct local filename %s%s",target_dir_name,bname); - return 0; - } - - char *ptr= tmp; - memcpy(ptr,target_dir_name,target_dir_name_len); - ptr+= target_dir_name_len; - memcpy(ptr,bname,blen); - ptr+= blen; - sprintf(ptr,"-%08x",ce->file_id); - ptr+= 9; - - uint version= 0; - for (;;) - { - sprintf(ptr,"-%08x",version); - if (access(tmp,F_OK)) - break; - version++; - if (version>UINT_MAX) - { - die("Could not construct local filename %s%s",target_dir_name,bname); - return 0; - } - } - - ce->set_fname_outside_temp_buf(tmp,full_len); - - return tmp; - } - + const char *create_file(Create_file_log_event *ce); void append_to_file(const char* fname, int flags, gptr data, uint size) { @@ -129,7 +85,6 @@ class Load_log_processor } public: - Load_log_processor() { init_dynamic_array(&file_names,sizeof(Create_file_log_event*), @@ -142,26 +97,10 @@ public: delete_dynamic(&file_names); } - void init_by_dir_name(const char *atarget_dir_name) + void init_by_dir_name(const char *dir) { - char *end= strmov(target_dir_name,atarget_dir_name); - if (end[-1]!=FN_LIBCHAR) - *end++= FN_LIBCHAR; - target_dir_name_len= end-target_dir_name; - } - void init_by_file_name(const char *file_name) - { - int len= strlen(file_name); - const char *end= file_name + len - 1; - while (end>file_name && *end!=FN_LIBCHAR) - end--; - if (*end!=FN_LIBCHAR) - target_dir_name_len= 0; - else - { - target_dir_name_len= end - file_name + 1; - memmove(target_dir_name,file_name,target_dir_name_len); - } + target_dir_name_len= (convert_dirname(target_dir_name, dir, NullS) - + target_dir_name); } void init_by_cur_dir() { @@ -196,7 +135,8 @@ public: void process(Create_file_log_event *ce) { const char *fname= create_file(ce); - append_to_file(fname,O_CREAT|O_EXCL|O_BINARY|O_WRONLY,ce->block,ce->block_len); + append_to_file(fname,O_CREAT|O_EXCL|O_BINARY|O_WRONLY,ce->block, + ce->block_len); } void process(Append_block_log_event *ae) { @@ -204,8 +144,10 @@ public: *((Create_file_log_event**)file_names.buffer + ae->file_id) : 0; if (ce) - append_to_file(ce->fname,O_APPEND|O_BINARY|O_WRONLY,ae->block,ae->block_len); + append_to_file(ce->fname,O_APPEND|O_BINARY|O_WRONLY, ae->block, + ae->block_len); else + { /* There is no Create_file event (a bad binlog or a big --position). Assuming it's a big --position, we just do nothing and @@ -213,9 +155,58 @@ public: */ fprintf(stderr,"Warning: ignoring Append_block as there is no \ Create_file event for file_id: %u\n",ae->file_id); + } } }; + +const char *Load_log_processor::create_file(Create_file_log_event *ce) +{ + const char *bname= ce->fname+dirname_length(ce->fname); + uint blen= ce->fname_len - (bname-ce->fname); + uint full_len= target_dir_name_len + blen + 9 + 9 + 1; + uint version= 0; + char *tmp, *ptr; + + if (!(tmp= my_malloc(full_len,MYF(MY_WME))) || + set_dynamic(&file_names,(gptr)&ce,ce->file_id)) + { + die("Could not construct local filename %s%s",target_dir_name,bname); + return 0; + } + + memcpy(tmp, target_dir_name, target_dir_name_len); + ptr= tmp+ target_dir_name_len; + memcpy(ptr,bname,blen); + ptr+= blen; + ptr+= my_sprintf(ptr,(ptr,"-%x",ce->file_id)); + + /* + Note that this code has a possible race condition if there was was + many simultaneous clients running which tried to create files at the same + time. Fortunately this should never be the case. + + A better way to do this would be to use 'create_tmp_file() and avoid this + race condition altogether on the expense of getting more cryptic file + names. + */ + for (;;) + { + sprintf(ptr,"-%x",version); + if (access(tmp,F_OK)) + break; + /* If we have to try more than 1000 times, something is seriously wrong */ + if (version++ > 1000) + { + die("Could not construct local filename %s%s",target_dir_name,bname); + return 0; + } + } + ce->set_fname_outside_temp_buf(tmp,full_len); + return tmp; +} + + Load_log_processor load_processor; static struct my_option my_long_options[] = diff --git a/mysys/default.c b/mysys/default.c index 0318efeb448..3c9f9c823a1 100644 --- a/mysys/default.c +++ b/mysys/default.c @@ -375,9 +375,20 @@ static int search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, char *value_end; for (value++ ; isspace(*value); value++) ; value_end=strend(value); + /* + We don't have to test for value_end >= value as we know there is + an '=' before + */ for ( ; isspace(value_end[-1]) ; value_end--) ; if (value_end < value) /* Empty string */ value_end=value; + + /* remove quotes around argument */ + if ((*value == '\"' || *value == '\'') && *value == value_end[-1]) + { + value++; + value_end--; + } if (!(tmp=alloc_root(alloc,(uint) (end-ptr)+3 + (uint) (value_end-value)+1))) goto err; @@ -385,10 +396,9 @@ static int search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc, goto err; ptr=strnmov(strmov(tmp,"--"),ptr,(uint) (end-ptr)); *ptr++= '='; + for ( ; value != value_end; value++) { - if (*value == '\"' || *value == '\'') - continue; if (*value == '\\' && value != value_end-1) { switch(*++value) { diff --git a/mysys/mf_dirname.c b/mysys/mf_dirname.c index 6523abcdb12..d35f2c4f7ae 100644 --- a/mysys/mf_dirname.c +++ b/mysys/mf_dirname.c @@ -54,19 +54,29 @@ uint dirname_part(my_string to, const char *name) } /* dirname */ - /* - Convert directory name to use under this system - If MSDOS converts '/' to '\' - If VMS converts '<' to '[' and '>' to ']' - Adds a FN_LIBCHAR to end if the result string if there isn't one - and the last isn't dev_char. - Copies data from 'from' until ASCII(0) for until from == from_end - If you want to use the whole 'from' string, just send NullS as the - last argument. - If the result string is larger than FN_REFLEN -1, then it's cut. +/* + Convert directory name to use under this system - Returns pointer to end \0 - */ + SYNPOSIS + convert_dirname() + to Store result here + from Original filename + from_end Pointer at end of filename (normally end \0) + + IMPLEMENTATION + If MSDOS converts '/' to '\' + If VMS converts '<' to '[' and '>' to ']' + Adds a FN_LIBCHAR to end if the result string if there isn't one + and the last isn't dev_char. + Copies data from 'from' until ASCII(0) for until from == from_end + If you want to use the whole 'from' string, just send NullS as the + last argument. + + If the result string is larger than FN_REFLEN -1, then it's cut. + + RETURN + Returns pointer to end \0 in to +*/ #ifndef FN_DEVCHAR #define FN_DEVCHAR '\0' /* For easier code */ From b0ae222ea2efb794ebd59d8b1508451c9604ae6a Mon Sep 17 00:00:00 2001 From: "monty@mishka.mysql.fi" <> Date: Wed, 24 Sep 2003 09:08:33 +0300 Subject: [PATCH 32/81] Merge script with 4.1 --- BitKeeper/etc/logging_ok | 1 + scripts/mysql_fix_privilege_tables.sql | 124 ++++++++++--------------- 2 files changed, 52 insertions(+), 73 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index d55ab57a458..2e8ecfa0ad7 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -64,6 +64,7 @@ monty@donna.mysql.fi monty@hundin.mysql.fi monty@mashka.(none) monty@mashka.mysql.fi +monty@mishka.mysql.fi monty@narttu. monty@narttu.mysql.fi monty@rescue. diff --git a/scripts/mysql_fix_privilege_tables.sql b/scripts/mysql_fix_privilege_tables.sql index aca9a9c21d4..1120f5c89c5 100644 --- a/scripts/mysql_fix_privilege_tables.sql +++ b/scripts/mysql_fix_privilege_tables.sql @@ -1,30 +1,24 @@ --- This scripts updates the mysql.user, mysql.db, mysql.host and the --- mysql.func tables to MySQL 3.22.14 and above. +-- This script converts any old privilege tables to privilege tables suitable +-- for MySQL 4.0. --- This is needed if you want to use the new GRANT functions, --- CREATE AGGREGATE FUNCTION or want to use the more secure passwords in 3.23 +-- You can safely ignore all 'Duplicate column' and 'Unknown column' errors" +-- as this just means that your tables where already up to date. +-- This script is safe to run even if your tables are already up to date! --- If you get 'Access denied' errors, you should run this script again --- and give the MySQL root user password as an argument! +-- On unix, you should use the mysql_fix_privilege_tables script to execute +-- this sql script. +-- On windows you should do 'mysql --force < mysql_fix_privilege_tables.sql' - --- Converting all privilege tables to MyISAM format +USE mysql; ALTER TABLE user type=MyISAM; ALTER TABLE db type=MyISAM; ALTER TABLE host type=MyISAM; ALTER TABLE func type=MyISAM; ALTER TABLE columns_priv type=MyISAM; ALTER TABLE tables_priv type=MyISAM; - - --- Fix old password format, add File_priv and func table - --- If your tables are already up to date or partially up to date you will --- get some warnings about 'Duplicated column name'. You can safely ignore these! - -alter table user change password password char(16) NOT NULL; -alter table user add File_priv enum('N','Y') NOT NULL; -CREATE TABLE if not exists func ( +ALTER TABLE user change Password Password char(41) not null; +ALTER TABLE user add File_priv enum('N','Y') NOT NULL; +CREATE TABLE IF NOT EXISTS func ( name char(64) DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, @@ -32,27 +26,24 @@ CREATE TABLE if not exists func ( PRIMARY KEY (name) ); --- Add the new grant colums +-- Detect whether or not we had the Grant_priv column +SET @hadGrantPriv:=0; +SELECT @hadGrantPriv:=1 FROM user WHERE Grant_priv LIKE '%'; --- Creating Grant Alter and Index privileges if they don't exists --- You can ignore any Duplicate column errors -alter table user add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; -alter table host add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; -alter table db add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; +ALTER TABLE user add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; +ALTER TABLE host add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; +ALTER TABLE db add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') NOT NULL,add Index_priv enum('N','Y') NOT NULL,add Alter_priv enum('N','Y') NOT NULL; --- If the new grant columns didn't exists, copy File -> Grant --- and Create -> Alter, Index, References +--- Fix privileges for old tables +UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0; +UPDATE db SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0; +UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0; --- Setting default privileges for the new grant, index and alter privileges - UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv; - UPDATE db SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv; - UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv; -- --- The second alter changes ssl_type to new 4.0.2 format - +-- The second alter changes ssl_type to new 4.0.2 format -- Adding columns needed by GRANT .. REQUIRE (openssl)" --- You can ignore any Duplicate column errors" + ALTER TABLE user ADD ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL, ADD ssl_cipher BLOB NOT NULL, @@ -64,8 +55,6 @@ ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL; -- Create tables_priv and columns_priv if they don't exists -- --- Creating the new table and column privilege tables" - CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) DEFAULT '' NOT NULL, Db char(60) DEFAULT '' NOT NULL, @@ -77,6 +66,7 @@ CREATE TABLE IF NOT EXISTS tables_priv ( Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name) ); + CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) DEFAULT '' NOT NULL, Db char(60) DEFAULT '' NOT NULL, @@ -88,72 +78,60 @@ CREATE TABLE IF NOT EXISTS columns_priv ( PRIMARY KEY (Host,Db,User,Table_name,Column_name) ); --- --- Name change of Type -> Column_priv from MySQL 3.22.12 --- - --- Changing name of columns_priv.Type -> columns_priv.Column_priv --- You can ignore any Unknown column errors from this +-- +-- Name change of Type -> Column_priv from MySQL 3.22.12 +-- ALTER TABLE columns_priv change Type Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL; - -- -- Add the new 'type' column to the func table. -- --- Fixing the func table --- You can ignore any Duplicate column errors - -alter table func add type enum ('function','aggregate') NOT NULL; - +ALTER TABLE func add type enum ('function','aggregate') NOT NULL; -- -- Change the user,db and host tables to MySQL 4.0 format -- --- Adding new fields used by MySQL 4.0.2 to the privilege tables --- You can ignore any Duplicate column errors +# Detect whether we had Show_db_priv +SET @hadShowDbPriv:=0; +SELECT @hadShowDbPriv:=1 FROM user WHERE Show_db_priv LIKE '%'; - -alter table user -add Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER alter_priv, -add Super_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Show_db_priv, -add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Super_priv, -add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Create_tmp_table_priv, -add Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Lock_tables_priv, -add Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Execute_priv, -add Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Repl_slave_priv; +ALTER TABLE user +ADD Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER alter_priv, +ADD Super_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Show_db_priv, +ADD Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Super_priv, +ADD Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Create_tmp_table_priv, +ADD Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Lock_tables_priv, +ADD Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Execute_priv, +ADD Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL AFTER Repl_slave_priv; -- Convert privileges so that users have similar privileges as before --- Updating new privileges in MySQL 4.0.2 from old ones - - update user set show_db_priv= select_priv, super_priv=process_priv, execute_priv=process_priv, create_tmp_table_priv='Y', Lock_tables_priv='Y', Repl_slave_priv=file_priv, Repl_client_priv=file_priv where user<>""; +UPDATE user SET show_db_priv= select_priv, super_priv=process_priv, execute_priv=process_priv, create_tmp_table_priv='Y', Lock_tables_priv='Y', Repl_slave_priv=file_priv, Repl_client_priv=file_priv where user<>"" AND @hadShowDbPriv = 0; -- Add fields that can be used to limit number of questions and connections -- for some users. - -alter table user -add max_questions int(11) NOT NULL AFTER x509_subject, -add max_updates int(11) unsigned NOT NULL AFTER max_questions, -add max_connections int(11) unsigned NOT NULL AFTER max_updates; +ALTER TABLE user +ADD max_questions int(11) NOT NULL AFTER x509_subject, +ADD max_updates int(11) unsigned NOT NULL AFTER max_questions, +ADD max_connections int(11) unsigned NOT NULL AFTER max_updates; -- -- Add Create_tmp_table_priv and Lock_tables_priv to db and host -- - -alter table db -add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, -add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL; -alter table host -add Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, -add Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL; +ALTER TABLE db +ADD Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, +ADD Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL; +ALTER TABLE host +ADD Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL, +ADD Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL; From df59678b95f717101366ea7970c89a4b53462d53 Mon Sep 17 00:00:00 2001 From: "ram@gw.mysql.r18.ru" <> Date: Wed, 24 Sep 2003 15:41:09 +0500 Subject: [PATCH 33/81] A fix. Please never use 'ulong' here! --- BitKeeper/etc/logging_ok | 1 + include/mysql.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 2e8ecfa0ad7..9fc395e6813 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -86,6 +86,7 @@ peter@linux.local peter@mysql.com peterg@mysql.com pgulutzan@linux.local +ram@gw.mysql.r18.ru ram@mysql.r18.ru ram@ram.(none) ranger@regul.home.lan diff --git a/include/mysql.h b/include/mysql.h index 1db322d5304..95730c0f2f5 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -352,7 +352,7 @@ int STDCALL mysql_ping(MYSQL *mysql); const char * STDCALL mysql_stat(MYSQL *mysql); const char * STDCALL mysql_get_server_info(MYSQL *mysql); const char * STDCALL mysql_get_client_info(void); -ulong STDCALL mysql_get_client_version(void); +unsigned long STDCALL mysql_get_client_version(void); const char * STDCALL mysql_get_host_info(MYSQL *mysql); unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql); MYSQL_RES * STDCALL mysql_list_dbs(MYSQL *mysql,const char *wild); From 5e07599ebe9031083fe3d86112181ab2431f2f23 Mon Sep 17 00:00:00 2001 From: "ram@gw.mysql.r18.ru" <> Date: Wed, 24 Sep 2003 16:13:47 +0500 Subject: [PATCH 34/81] #1169: Add --exec command to mysqltest --- client/mysqltest.c | 65 +++++++++++++++++++++++++++++++++++ mysql-test/mysql-test-run.sh | 8 +++++ mysql-test/r/mysqldump.result | 17 +++++++++ mysql-test/t/mysqldump.test | 10 ++++++ 4 files changed, 100 insertions(+) create mode 100644 mysql-test/r/mysqldump.result create mode 100644 mysql-test/t/mysqldump.test diff --git a/client/mysqltest.c b/client/mysqltest.c index d733ab58243..a02fdf30601 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -199,6 +199,7 @@ Q_ENABLE_RESULT_LOG, Q_DISABLE_RESULT_LOG, Q_SERVER_START, Q_SERVER_STOP,Q_REQUIRE_MANAGER, Q_WAIT_FOR_SLAVE_TO_STOP, Q_REQUIRE_VERSION, +Q_EXEC, Q_UNKNOWN, /* Unknown command. */ Q_COMMENT, /* Comments, ignored. */ Q_COMMENT_WITH_COMMAND @@ -264,6 +265,7 @@ const char *command_names[]= "require_manager", "wait_for_slave_to_stop", "require_version", + "exec", 0 }; @@ -821,6 +823,66 @@ int do_source(struct st_query* q) return open_file(name); } +/* + Execute given command. + + SYNOPSIS + do_exec() + q called command + + DESCRIPTION + If one uses --exec command [args] command in .test file + we will execute the command and record its output. + + RETURN VALUES + 0 ok + 1 error +*/ + +int do_exec(struct st_query* q) +{ + int error= 0; + DYNAMIC_STRING *ds; + DYNAMIC_STRING ds_tmp; + char buf[1024]; + FILE *res_file; + char *cmd= q->first_argument; + + while (*cmd && isspace(*cmd)) + cmd++; + if (!*cmd) + die("Missing argument in exec\n"); + + if (q->record_file[0]) + { + init_dynamic_string(&ds_tmp, "", 16384, 65536); + ds= &ds_tmp; + } + else + ds= &ds_res; + + if (!(res_file= popen(cmd, "r")) && q->abort_on_error) + die("popen() failed\n"); + while (fgets(buf, sizeof(buf), res_file)) + dynstr_append(ds, buf); + pclose(res_file); + if (record) + { + if (!q->record_file[0] && !result_file) + die("At line %u: Missing result file", start_lineno); + if (!result_file) + str_to_file(q->record_file, ds->str, ds->length); + } + else if (q->record_file[0]) + { + error= check_result(ds, q->record_file, q->require_file); + } + if (ds == &ds_tmp) + dynstr_free(&ds_tmp); + + return error; +} + int var_query_set(VAR* v, const char* p, const char** p_end) { char* end = (char*)((p_end && *p_end) ? *p_end : p + strlen(p)); @@ -2469,6 +2531,9 @@ int main(int argc, char** argv) case Q_PING: (void) mysql_ping(&cur_con->mysql); break; + case Q_EXEC: + (void) do_exec(q); + break; default: processed = 0; break; } } diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 1d1293f81d2..a2643e84d9f 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -428,6 +428,11 @@ if [ x$SOURCE_DIST = x1 ] ; then else MYSQL_TEST="$BASEDIR/client/mysqltest" fi + if [ -f "$BASEDIR/client/.libs/mysqldump" ] ; then + MYSQL_DUMP="$BASEDIR/client/.libs/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" + else + MYSQL_DUMP="$BASEDIR/client/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" + fi if [ -n "$STRACE_CLIENT" ]; then MYSQL_TEST="strace -o $MYSQL_TEST_DIR/var/log/mysqltest.strace $MYSQL_TEST" fi @@ -449,6 +454,7 @@ else MYSQLD="$VALGRIND $BASEDIR/bin/mysqld" fi MYSQL_TEST="$BASEDIR/bin/mysqltest" + MYSQL_DUMP="$BASEDIR/bin/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" MYSQLADMIN="$BASEDIR/bin/mysqladmin" WAIT_PID="$BASEDIR/bin/mysql_waitpid" MYSQL_MANAGER="$BASEDIR/bin/mysqlmanager" @@ -466,6 +472,8 @@ else fi fi +export MYSQL_DUMP + if [ -z "$MASTER_MYSQLD" ] then MASTER_MYSQLD=$MYSQLD diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result new file mode 100644 index 00000000000..085cf2788f9 --- /dev/null +++ b/mysql-test/r/mysqldump.result @@ -0,0 +1,17 @@ +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a int); +INSERT INTO t1 VALUES (1), (2); + + + + + + 1 + + + 2 + +
+
+
+DROP TABLE t1; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test new file mode 100644 index 00000000000..c98fd4050f2 --- /dev/null +++ b/mysql-test/t/mysqldump.test @@ -0,0 +1,10 @@ +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +# XML output + +CREATE TABLE t1(a int); +INSERT INTO t1 VALUES (1), (2); +--exec $MYSQL_DUMP -X test t1 +DROP TABLE t1; From 6153b0073dbbe4dc19428bb9c354253233d9f90e Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 24 Sep 2003 14:33:23 +0300 Subject: [PATCH 35/81] Correct fix for buffer overruns for compressed blobs. (Bugs #770, #1304 and maybe #1295) --- myisam/mi_packrec.c | 4 +++- myisam/myisamdef.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/myisam/mi_packrec.c b/myisam/mi_packrec.c index 1bd39aa900b..b21bf0b2163 100644 --- a/myisam/mi_packrec.c +++ b/myisam/mi_packrec.c @@ -743,7 +743,7 @@ static void uf_blob(MI_COLUMNDEF *rec, MI_BIT_BUFF *bit_buff, { ulong length=get_bits(bit_buff,rec->space_length_bits); uint pack_length=(uint) (end-to)-mi_portable_sizeof_char_ptr; - if (bit_buff->blob_pos+length > bit_buff->end) + if (bit_buff->blob_pos+length > bit_buff->blob_end) { bit_buff->error=1; bzero((byte*) to,(end-to)); @@ -1067,6 +1067,7 @@ uint _mi_pack_get_block_info(MI_INFO *myisam, MI_BLOCK_INFO *info, File file, &myisam->rec_buff))) return BLOCK_FATAL_ERROR; /* not enough memory */ myisam->bit_buff.blob_pos=(uchar*) myisam->rec_buff+info->rec_len; + myisam->bit_buff.blob_end= myisam->bit_buff.blob_pos+info->blob_len; myisam->blob_length=info->blob_len; } info->filepos=filepos+head_length; @@ -1243,6 +1244,7 @@ static uchar *_mi_mempack_get_block_info(MI_INFO *myisam,MI_BLOCK_INFO *info, &myisam->rec_buff))) return 0; /* not enough memory */ myisam->bit_buff.blob_pos=(uchar*) myisam->rec_buff; + myisam->bit_buff.blob_end= (uchar*) myisam->rec_buff + info->blob_len; } return header; } diff --git a/myisam/myisamdef.h b/myisam/myisamdef.h index 7631b245b9b..e1df1d73191 100644 --- a/myisam/myisamdef.h +++ b/myisam/myisamdef.h @@ -213,7 +213,7 @@ typedef uint mi_bit_type; typedef struct st_mi_bit_buff { /* Used for packing of record */ mi_bit_type current_byte; uint bits; - uchar *pos,*end,*blob_pos; + uchar *pos,*end,*blob_pos,*blob_end; uint error; } MI_BIT_BUFF; From 75e89e0af841def0d5e4e213ba4eaad90c4f31f9 Mon Sep 17 00:00:00 2001 From: "ram@gw.mysql.r18.ru" <> Date: Wed, 24 Sep 2003 16:46:19 +0500 Subject: [PATCH 36/81] Added MYSQL_BINLOG variable. --- mysql-test/mysql-test-run.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index a2643e84d9f..e63c8866d5a 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -433,6 +433,11 @@ if [ x$SOURCE_DIST = x1 ] ; then else MYSQL_DUMP="$BASEDIR/client/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" fi + if [ -f "$BASEDIR/client/.libs/mysqlbinlog" ] ; then + MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog" + else + MYSQL_BINLOG="$BASEDIR/client/mysqlbinlog" + fi if [ -n "$STRACE_CLIENT" ]; then MYSQL_TEST="strace -o $MYSQL_TEST_DIR/var/log/mysqltest.strace $MYSQL_TEST" fi @@ -455,6 +460,7 @@ else fi MYSQL_TEST="$BASEDIR/bin/mysqltest" MYSQL_DUMP="$BASEDIR/bin/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" + MYSQL_BINLOG="$BASEDIR/bin/mysqlbinlog" MYSQLADMIN="$BASEDIR/bin/mysqladmin" WAIT_PID="$BASEDIR/bin/mysql_waitpid" MYSQL_MANAGER="$BASEDIR/bin/mysqlmanager" @@ -473,6 +479,7 @@ else fi export MYSQL_DUMP +export MYSQL_BINLOG if [ -z "$MASTER_MYSQLD" ] then From 977c7b2d65704add77eb57be8989e2bdd0da09c1 Mon Sep 17 00:00:00 2001 From: "dlenev@mysql.com" <> Date: Wed, 24 Sep 2003 23:25:58 +0400 Subject: [PATCH 37/81] Test for mysqlbinlog Particularly for BUG#1340 mysqlbinlog coredumps when reading Exec event without seeing Create_file event before --- mysql-test/mysql-test-run.sh | 6 +- mysql-test/r/mysqlbinlog.result | 84 +++++++++++++++++++++++++ mysql-test/t/mysqlbinlog-master.opt | 1 + mysql-test/t/mysqlbinlog.test | 95 +++++++++++++++++++++++++++++ 4 files changed, 183 insertions(+), 3 deletions(-) create mode 100644 mysql-test/r/mysqlbinlog.result create mode 100644 mysql-test/t/mysqlbinlog-master.opt create mode 100644 mysql-test/t/mysqlbinlog.test diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index e63c8866d5a..498c7ccf5ed 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -434,9 +434,9 @@ if [ x$SOURCE_DIST = x1 ] ; then MYSQL_DUMP="$BASEDIR/client/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" fi if [ -f "$BASEDIR/client/.libs/mysqlbinlog" ] ; then - MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog" + MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog --local-load=$MYSQL_TMP_DIR" else - MYSQL_BINLOG="$BASEDIR/client/mysqlbinlog" + MYSQL_BINLOG="$BASEDIR/client/mysqlbinlog --local-load=$MYSQL_TMP_DIR" fi if [ -n "$STRACE_CLIENT" ]; then MYSQL_TEST="strace -o $MYSQL_TEST_DIR/var/log/mysqltest.strace $MYSQL_TEST" @@ -460,7 +460,7 @@ else fi MYSQL_TEST="$BASEDIR/bin/mysqltest" MYSQL_DUMP="$BASEDIR/bin/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" - MYSQL_BINLOG="$BASEDIR/bin/mysqlbinlog" + MYSQL_BINLOG="$BASEDIR/bin/mysqlbinlog --local-load=$MYSQL_TMP_DIR" MYSQLADMIN="$BASEDIR/bin/mysqladmin" WAIT_PID="$BASEDIR/bin/mysql_waitpid" MYSQL_MANAGER="$BASEDIR/bin/mysqlmanager" diff --git a/mysql-test/r/mysqlbinlog.result b/mysql-test/r/mysqlbinlog.result new file mode 100644 index 00000000000..63f026274af --- /dev/null +++ b/mysql-test/r/mysqlbinlog.result @@ -0,0 +1,84 @@ +drop table if exists t1; +drop table if exists t2; +set timestamp=1000000000; +create table t1 (word varchar(20)); +create table t2 (id int auto_increment not null primary key); +insert into t1 values ("abirvalg"); +insert into t2 values (); +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +insert into t1 values ("Alas"); +flush logs; + +--- Local -- +use test; +SET TIMESTAMP=1000000000; +create table t1 (word varchar(20)); +SET TIMESTAMP=1000000000; +create table t2 (id int auto_increment not null primary key); +SET TIMESTAMP=1000000000; +insert into t1 values ("abirvalg"); +SET INSERT_ID=1; +SET TIMESTAMP=1000000000; +insert into t2 values (); +LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-1-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-2-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-3-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-4-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-5-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); + +--- Broken LOAD DATA -- +use test; +SET TIMESTAMP=1000000000; +insert into t1 values ("Alas"); + +--- --database -- +SET INSERT_ID=1; + +--- --position -- +use test; +SET TIMESTAMP=1000000000; +insert into t1 values ("Alas"); + +--- Remote -- +use test; +SET TIMESTAMP=1000000000; +create table t1 (word varchar(20)); +SET TIMESTAMP=1000000000; +create table t2 (id int auto_increment not null primary key); +SET TIMESTAMP=1000000000; +insert into t1 values ("abirvalg"); +SET INSERT_ID=1; +SET TIMESTAMP=1000000000; +insert into t2 values (); +SET TIMESTAMP=1000000000; +insert into t1 values ("Alas"); + +--- Broken LOAD DATA -- +use test; +SET TIMESTAMP=1000000000; +insert into t1 values ("Alas"); + +--- --database -- +use test; +SET TIMESTAMP=1000000000; +create table t1 (word varchar(20)); +SET TIMESTAMP=1000000000; +create table t2 (id int auto_increment not null primary key); +SET TIMESTAMP=1000000000; +insert into t1 values ("abirvalg"); +SET INSERT_ID=1; +SET TIMESTAMP=1000000000; +insert into t2 values (); +SET TIMESTAMP=1000000000; +insert into t1 values ("Alas"); + +--- --position -- +use test; +SET TIMESTAMP=1000000000; +insert into t1 values ("Alas"); +drop table t1; diff --git a/mysql-test/t/mysqlbinlog-master.opt b/mysql-test/t/mysqlbinlog-master.opt new file mode 100644 index 00000000000..ac1a87c73b3 --- /dev/null +++ b/mysql-test/t/mysqlbinlog-master.opt @@ -0,0 +1 @@ +--max-binlog-size=4096 diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test new file mode 100644 index 00000000000..78992cb1e11 --- /dev/null +++ b/mysql-test/t/mysqlbinlog.test @@ -0,0 +1,95 @@ +# We are using .opt file since we need small binlog size +--disable_warnings +drop table if exists t1; +drop table if exists t2; +--enable_warnings + +# we need this for getting fixed timestamps inside of this test +set timestamp=1000000000; + +create table t1 (word varchar(20)); +create table t2 (id int auto_increment not null primary key); + +# simple test for simple statement and various events +insert into t1 values ("abirvalg"); +insert into t2 values (); +# Should be uncommented in 4.1 +# set @a:=1 +# insert into t2 values (@a); + +# test for load data and load data distributed among the several +# files (we need to fill up first binlog) +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +load data infile '../../std_data/words.dat' into table t1; +# simple query to show more in second binlog +insert into t1 values ("Alas"); +flush logs; + +# delimiters are for easier debugging in future +--disable_query_log +select "--- Local --" as ""; +--enable_query_log + +# +# We should use --short-form everywhere because in other case output will +# be time dependend. Better than nothing. +# + +--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.001 +# this should not fail but shouldn't produce any working statements +--disable_query_log +select "--- Broken LOAD DATA --" as ""; +--enable_query_log +--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.002 + +# this should show almost nothing +--disable_query_log +select "--- --database --" as ""; +--enable_query_log +--exec $MYSQL_BINLOG --short-form --database=nottest $MYSQL_TEST_DIR/var/log/master-bin.001 + +# this test for position option +--disable_query_log +select "--- --position --" as ""; +--enable_query_log +--exec $MYSQL_BINLOG --short-form --position=27 $MYSQL_TEST_DIR/var/log/master-bin.002 + +# These are tests for remote binlog. +# They should return the same as previous test. +# But now they are not. V. Vagin should fix this. +# We test all the same options second time since code for remote case is +# essentially different. If code for both cases will be unified we'll be +# able to throw out most of this. + +--disable_query_log +select "--- Remote --" as ""; +--enable_query_log + +# This is broken now +# By the way it seems that remote version fetches all events with name >= master-bin.001 +--exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.001 + +# This is broken too +--disable_query_log +select "--- Broken LOAD DATA --" as ""; +--enable_query_log +--exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 + +# And this too ! (altough it is documented) +--disable_query_log +select "--- --database --" as ""; +--enable_query_log +--exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.001 + +# Strangely but this works +--disable_query_log +select "--- --position --" as ""; +--enable_query_log +--exec $MYSQL_BINLOG --short-form --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 + +# clean up +drop table t1; From b4171fe6209cf58cfba642f6aefdedeed9880095 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Wed, 24 Sep 2003 22:55:04 +0200 Subject: [PATCH 38/81] Fix for Bug #1392 "On Win, slave leaves one temp file after successf. replicating LOAD DATA INFILE" Windows-specific bug (we forgot to close a file before deleting it). Patch written by me, tested by Miguel (thanks!) and it works. --- sql/log.cc | 2 +- sql/log_event.cc | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sql/log.cc b/sql/log.cc index bd5aeb02121..6307ac0c11e 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -870,7 +870,7 @@ void MYSQL_LOG::new_file(bool need_lock) close(LOG_CLOSE_TO_BE_OPENED); /* - Note that at this point, log_type == LOG_CLOSED (important for is_open()). + Note that at this point, log_type != LOG_CLOSED (important for is_open()). */ open(old_name, save_log_type, new_name_ptr, index_file_name, io_cache_type, diff --git a/sql/log_event.cc b/sql/log_event.cc index 82e9c5950a7..5c76bf3d055 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2382,6 +2382,16 @@ int Execute_load_log_event::exec_event(struct st_relay_log_info* rli) } goto err; } + /* + We have an open file descriptor to the .info file; we need to close it + or Windows will refuse to delete the file in my_delete(). + */ + if (fd >= 0) + { + my_close(fd, MYF(0)); + end_io_cache(&file); + fd= -1; + } (void) my_delete(fname, MYF(MY_WME)); memcpy(p, ".data", 6); (void) my_delete(fname, MYF(MY_WME)); From 7826fce2649c7e44b9dd990b6dcdf377104494e4 Mon Sep 17 00:00:00 2001 From: "dlenev@mysql.com" <> Date: Thu, 25 Sep 2003 01:25:19 +0400 Subject: [PATCH 39/81] Fixed BUG#1357 MySQL too eagerly cleanups temporary files for LOAD DATA (SQL_LOAD-...) --- sql/log_event.cc | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/sql/log_event.cc b/sql/log_event.cc index 82e9c5950a7..dbf433707a3 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -140,11 +140,6 @@ Log_event::Log_event() /* Delete all temporary files used for SQL_LOAD. - - TODO - - When we get a 'server start' event, we should only remove - the files associated with the server id that just started. - Easily fixable by adding server_id as a prefix to the log files. */ static void cleanup_load_tmpdir() @@ -152,13 +147,30 @@ static void cleanup_load_tmpdir() MY_DIR *dirp; FILEINFO *file; uint i; + char fname[FN_REFLEN]; + char prefbuf[31]; + char *p; + if (!(dirp=my_dir(slave_load_tmpdir,MYF(MY_WME)))) return; - char fname[FN_REFLEN]; + + /* + When we are deleting temporary files, we should only remove + the files associated with the server id of our server. + We don't use event_server_id here because since we've disabled + direct binlogging of Create_file/Append_file/Exec_load events + we cannot meet Start_log event in the middle of events from one + LOAD DATA. + */ + p= strmake(prefbuf,"SQL_LOAD-",9); + p= int10_to_str(::server_id, p, 10); + *(p++)= '-'; + *p= 0; + for (i=0 ; i < (uint)dirp->number_off_files; i++) { file=dirp->dir_entry+i; - if (is_prefix(file->name,"SQL_LOAD-")) + if (is_prefix(file->name, prefbuf)) { fn_format(fname,file->name,slave_load_tmpdir,"",MY_UNPACK_FILENAME); my_delete(fname, MYF(0)); From 9854acae2538480fc1447a91762ca85e2dae922a Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Thu, 25 Sep 2003 00:14:46 +0200 Subject: [PATCH 40/81] Fix for BUG#1391: "If LOAD DATA INFILE 'small_file' fails on master, slave leaves temp files" (the bug is in the master) --- mysql-test/r/rpl_loaddata.result | 13 ++++++++- mysql-test/std_data/rpl_loaddata2.dat | 2 +- mysql-test/t/rpl_loaddata.test | 15 +++++++++++ sql/sql_load.cc | 39 ++++++++++++++++----------- 4 files changed, 52 insertions(+), 17 deletions(-) diff --git a/mysql-test/r/rpl_loaddata.result b/mysql-test/r/rpl_loaddata.result index 0302381c119..8b910d0d183 100644 --- a/mysql-test/r/rpl_loaddata.result +++ b/mysql-test/r/rpl_loaddata.result @@ -19,7 +19,7 @@ select * from t3; day id category name 2003-02-22 2461 b a a a @ %  ' " a 2003-03-22 2161 c asdf -2003-04-22 2416 a bbbbb +2003-03-22 2416 a bbbbb show master status; File Position Binlog_do_db Binlog_ignore_db slave-bin.001 964 @@ -55,3 +55,14 @@ reset slave; show slave status; Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space 127.0.0.1 root MASTER_PORT 1 4 slave-relay-bin.001 4 No No 0 0 0 4 +reset master; +create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60), +unique(day)); +load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields +terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by +'\n##\n' starting by '>' ignore 1 lines; +Duplicate entry '2003-03-22' for key 1 +show master status; +File Position Binlog_do_db Binlog_ignore_db +master-bin.001 491 +drop table t2; diff --git a/mysql-test/std_data/rpl_loaddata2.dat b/mysql-test/std_data/rpl_loaddata2.dat index b883d9dcd58..04d84f1f45e 100644 --- a/mysql-test/std_data/rpl_loaddata2.dat +++ b/mysql-test/std_data/rpl_loaddata2.dat @@ -4,5 +4,5 @@ ## >2003-03-22,2161,%c%,%asdf% ## ->2003-04-22,2416,%a%,%bbbbb% +>2003-03-22,2416,%a%,%bbbbb% ## diff --git a/mysql-test/t/rpl_loaddata.test b/mysql-test/t/rpl_loaddata.test index 4c4ff6a093e..a3bb8c9aec9 100644 --- a/mysql-test/t/rpl_loaddata.test +++ b/mysql-test/t/rpl_loaddata.test @@ -112,3 +112,18 @@ stop slave; reset slave; --replace_result $MASTER_MYPORT MASTER_PORT show slave status; + +# Finally, see if logging is done ok on master for a failing LOAD DATA INFILE + +connection master; +reset master; +create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60), +unique(day)); +--error 1062; +load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields +terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by +'\n##\n' starting by '>' ignore 1 lines; +# To test that there is Create_file & Delete_file, we test if the binlog is as +# long as expected (can't do SHOW BINLOG EVENTS because of varying file_id). +show master status; +drop table t2; diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 0ae6ccb4c4a..ca540a8cdc0 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -282,22 +282,31 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, ha_autocommit_or_rollback(thd,error); if (!opt_old_rpl_compat && mysql_bin_log.is_open()) { + /* + Make sure last block (the one which caused the error) gets logged. + This is needed because otherwise after write of + (to the binlog, not to read_info (which is a cache)) + Delete_file_log_event the bad block will remain in read_info (because + pre_read is not called at the end of the last block; remember pre_read + is called whenever a new block is read from disk). + At the end of mysql_load(), the destructor of read_info will call + end_io_cache() which will flush read_info, so we will finally have + this in the binlog: + Append_block # The last successfull block + Delete_file + Append_block # The failing block + which is nonsense. + Or could also be (for a small file) + Create_file # The failing block + which is nonsense (Delete_file is not written in this case, because: + Create_file has not been written, so Delete_file is not written, then + when read_info is destroyed end_io_cache() is called which writes + Create_file. + */ + read_info.end_io_cache(); + /* If the file was not empty, wrote_create_file is true */ if (lf_info.wrote_create_file) { - /* - Make sure last block (the one which caused the error) gets logged. - This is needed because otherwise after write of - (to the binlog, not to read_info (which is a cache)) - Delete_file_log_event the bad block will remain in read_info. - At the end of mysql_load(), the destructor of read_info will call - end_io_cache() which will flush read_info, so we will finally have - this in the binlog: - Append_block # The last successfull block - Delete_file - Append_block # The failing block - which is nonsense. - */ - read_info.end_io_cache(); Delete_file_log_event d(thd, db, log_delayed); mysql_bin_log.write(&d); } @@ -327,7 +336,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, } else { - read_info.end_io_cache(); // make sure last block gets logged + read_info.end_io_cache(); if (lf_info.wrote_create_file) { Execute_load_log_event e(thd, db, log_delayed); From e4c7496c141ad9990a42121bcdd53eb22e90df2f Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Thu, 25 Sep 2003 00:24:06 +0200 Subject: [PATCH 41/81] a small comment about why we call end_io_cache in mysql_load --- sql/sql_load.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sql/sql_load.cc b/sql/sql_load.cc index ca540a8cdc0..e692e7b8dab 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -336,6 +336,11 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, } else { + /* + As already explained above, we need to call end_io_cache() or the last + block will be logged only after Execute_load_log_event (which is wrong), + when read_info is destroyed. + */ read_info.end_io_cache(); if (lf_info.wrote_create_file) { From fd2925b7c764926619ae4ad790f3e4094902dd58 Mon Sep 17 00:00:00 2001 From: "vva@eagle.mysql.r18.ru" <> Date: Wed, 24 Sep 2003 19:30:20 -0400 Subject: [PATCH 42/81] fixed bug #1194 (changes in Item_func_set_user_var::update, ::val, ::val_str, ::val_int) --- mysql-test/r/user_var.result | 32 +++++++++ mysql-test/t/user_var.test | 19 +++++ sql/item_func.cc | 131 +++++++++++++++++++++++++++++------ 3 files changed, 159 insertions(+), 23 deletions(-) diff --git a/mysql-test/r/user_var.result b/mysql-test/r/user_var.result index 67e55acb29b..d94ab6f57c3 100644 --- a/mysql-test/r/user_var.result +++ b/mysql-test/r/user_var.result @@ -42,3 +42,35 @@ select @a:=10, @b:=2, @a > @b, @a < @b; select @a:="10", @b:="2", @a > @b, @a < @b; @a:="10" @b:="2" @a > @b @a < @b 10 2 0 1 +select @a:=1; +@a:=1 +1 +select @a, @a:=1; +@a @a:=1 +1 1 +create table t1 (id int); +insert into t1 values (1); +select @c:=0; +@c:=0 +0 +update t1 SET id=(@c:=@c+1); +select @c; +@c +1 +select @c:=0; +@c:=0 +0 +update t1 set id=(@c:=@c+1); +select @c; +@c +1 +select @c:=0; +@c:=0 +0 +select @c:=@c+1; +@c:=@c+1 +1 +drop table t1; +select @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b, @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b; +@a:=10 @b:=2 @a>@b @a:="10" @b:="2" @a>@b @a:=10 @b:=2 @a>@b @a:="10" @b:="2" @a>@b +10 2 1 10 2 0 10 2 1 10 2 0 diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test index f5f91a8a680..1e466c149bb 100644 --- a/mysql-test/t/user_var.test +++ b/mysql-test/t/user_var.test @@ -23,3 +23,22 @@ select @a:=10, @b:=1, @a > @b, @a < @b; select @a:="10", @b:="1", @a > @b, @a < @b; select @a:=10, @b:=2, @a > @b, @a < @b; select @a:="10", @b:="2", @a > @b, @a < @b; + +# Fixed bug #1194 +select @a:=1; +select @a, @a:=1; + +create table t1 (id int); +insert into t1 values (1); +select @c:=0; +update t1 SET id=(@c:=@c+1); +select @c; +select @c:=0; +update t1 set id=(@c:=@c+1); +select @c; +select @c:=0; +select @c:=@c+1; +drop table t1; + +# just fof fun :) +select @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b, @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b; \ No newline at end of file diff --git a/sql/item_func.cc b/sql/item_func.cc index 3b1a35e4d08..10f267b766d 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1903,48 +1903,132 @@ void Item_func_set_user_var::update_hash(void *ptr, uint length, bool Item_func_set_user_var::update() { + DBUG_ENTER("Item_func_set_user_var::update"); switch (cached_result_type) { case REAL_RESULT: - (void) val(); - break; - case INT_RESULT: - (void) val_int(); - break; - case STRING_RESULT: - char buffer[MAX_FIELD_WIDTH]; - String tmp(buffer,sizeof(buffer)); - (void) val_str(&tmp); + { + double value=args[0]->val(); + update_hash((void*) &value,sizeof(value), REAL_RESULT); break; } - return current_thd->fatal_error; + case INT_RESULT: + { + longlong value=args[0]->val_int(); + update_hash((void*) &value,sizeof(longlong),INT_RESULT); + break; + } + case STRING_RESULT: + { + char buffer[MAX_FIELD_WIDTH]; + String tmp(buffer,sizeof(buffer)); + String *res=args[0]->val_str(&tmp); + if (!res) // Null value + update_hash((void*) 0,0,STRING_RESULT); + else + update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); + break; + } + } + DBUG_RETURN(current_thd->fatal_error); } double Item_func_set_user_var::val() { - double value=args[0]->val(); - update_hash((void*) &value,sizeof(value), REAL_RESULT); - return value; + DBUG_ENTER("Item_func_set_user_var::val"); + switch (cached_result_type) { + case REAL_RESULT: + { + double value=args[0]->val(); + update_hash((void*) &value,sizeof(value), REAL_RESULT); + return value; + } + case INT_RESULT: + { + longlong value=args[0]->val_int(); + update_hash((void*) &value,sizeof(longlong),INT_RESULT); + return value; + } + case STRING_RESULT: + { + char buffer[MAX_FIELD_WIDTH]; + String tmp(buffer,sizeof(buffer)); + String *res=args[0]->val_str(&tmp); + if (!res) // Null value + update_hash((void*) 0,0,STRING_RESULT); + else + update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); + return atof(res->c_ptr()); + } + } + DBUG_RETURN(args[0]->val()); } longlong Item_func_set_user_var::val_int() { - longlong value=args[0]->val_int(); - update_hash((void*) &value,sizeof(longlong),INT_RESULT); - return value; + DBUG_ENTER("Item_func_set_user_var::val_int"); + switch (cached_result_type) { + case REAL_RESULT: + { + double value=args[0]->val(); + update_hash((void*) &value,sizeof(value), REAL_RESULT); + return (longlong)value; + } + case INT_RESULT: + { + longlong value=args[0]->val_int(); + update_hash((void*) &value,sizeof(longlong),INT_RESULT); + return value; + } + case STRING_RESULT: + { + char buffer[MAX_FIELD_WIDTH]; + String tmp(buffer,sizeof(buffer)); + String *res=args[0]->val_str(&tmp); + if (!res) // Null value + update_hash((void*) 0,0,STRING_RESULT); + else + update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); + return strtoull(res->c_ptr(),NULL,10); + } + } + DBUG_RETURN(args[0]->val_int()); } String * Item_func_set_user_var::val_str(String *str) { - String *res=args[0]->val_str(str); - if (!res) // Null value - update_hash((void*) 0,0,STRING_RESULT); - else - update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); - return res; + DBUG_ENTER("Item_func_set_user_var::val_str"); + switch (cached_result_type) { + case REAL_RESULT: + { + double value=args[0]->val(); + update_hash((void*) &value,sizeof(value), REAL_RESULT); + str->set(value,decimals); + return str; + } + case INT_RESULT: + { + longlong value=args[0]->val_int(); + update_hash((void*) &value,sizeof(longlong),INT_RESULT); + str->set(value,decimals); + return str; + } + case STRING_RESULT: + { + char buffer[MAX_FIELD_WIDTH]; + String tmp(buffer,sizeof(buffer)); + String *res=args[0]->val_str(&tmp); + if (!res) // Null value + update_hash((void*) 0,0,STRING_RESULT); + else + update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); + return res; + } + } + DBUG_RETURN(args[0]->val_str(str)); } @@ -1973,6 +2057,7 @@ user_var_entry *Item_func_get_user_var::get_entry() String * Item_func_get_user_var::val_str(String *str) { + DBUG_ENTER("Item_func_get_user_var::val_str"); user_var_entry *entry=get_entry(); if (!entry) return NULL; @@ -1991,7 +2076,7 @@ Item_func_get_user_var::val_str(String *str) } break; } - return str; + DBUG_RETURN(str); } From e92c823c8d57e9c344a7a7a288c5d5247b29c6e2 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Thu, 25 Sep 2003 23:12:24 +0200 Subject: [PATCH 43/81] - Improved portability of the sql-bench Perl scripts by replacing the calls of external programs "uname" and "pwd" with Perl builtin functions "cwd()" and "POSIX::uname()" --- sql-bench/as3ap.sh | 3 ++- sql-bench/bench-count-distinct.sh | 3 ++- sql-bench/bench-init.pl.sh | 21 +++------------------ sql-bench/copy-db.sh | 3 ++- sql-bench/crash-me.sh | 24 +++++------------------- sql-bench/innotest1.sh | 3 ++- sql-bench/innotest1a.sh | 3 ++- sql-bench/innotest1b.sh | 3 ++- sql-bench/innotest2.sh | 3 ++- sql-bench/innotest2a.sh | 3 ++- sql-bench/innotest2b.sh | 3 ++- sql-bench/run-all-tests.sh | 3 ++- sql-bench/test-ATIS.sh | 3 ++- sql-bench/test-alter-table.sh | 3 ++- sql-bench/test-big-tables.sh | 3 ++- sql-bench/test-connect.sh | 3 ++- sql-bench/test-create.sh | 3 ++- sql-bench/test-insert.sh | 3 ++- sql-bench/test-select.sh | 3 ++- sql-bench/test-transactions.sh | 3 ++- sql-bench/test-wisconsin.sh | 3 ++- 21 files changed, 46 insertions(+), 56 deletions(-) diff --git a/sql-bench/as3ap.sh b/sql-bench/as3ap.sh index ed796249ebb..f6827c004d7 100644 --- a/sql-bench/as3ap.sh +++ b/sql-bench/as3ap.sh @@ -21,10 +21,11 @@ ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $opt_loop_count=1; diff --git a/sql-bench/bench-count-distinct.sh b/sql-bench/bench-count-distinct.sh index 1359a864ac1..8ebc910df59 100644 --- a/sql-bench/bench-count-distinct.sh +++ b/sql-bench/bench-count-distinct.sh @@ -20,6 +20,7 @@ # ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Getopt::Long; use Benchmark; @@ -30,7 +31,7 @@ $opt_small_loop_count=10; $opt_regions=6; $opt_groups=100; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $columns=min($limits->{'max_columns'},500,($limits->{'query_size'}-50)/24, diff --git a/sql-bench/bench-init.pl.sh b/sql-bench/bench-init.pl.sh index b02f5034637..1ac5f29723b 100644 --- a/sql-bench/bench-init.pl.sh +++ b/sql-bench/bench-init.pl.sh @@ -33,6 +33,7 @@ $benchmark_version="2.15"; use Getopt::Long; +use POSIX; require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n"; @@ -417,24 +418,8 @@ sub machine_part sub machine { - $name= `uname -s -r -m`; - if ($?) - { - $name= `uname -s -m`; - } - if ($?) - { - $name= `uname -s`; - } - if ($?) - { - $name= `uname`; - } - if ($?) - { - $name="unknown"; - } - chomp($name); $name =~ s/[\n\r]//g; + my @name = POSIX::uname(); + my $name= $name[0] . " " . $name[2] . " " . $name[4]; return $name; } diff --git a/sql-bench/copy-db.sh b/sql-bench/copy-db.sh index f5394b09923..3d2f418280c 100644 --- a/sql-bench/copy-db.sh +++ b/sql-bench/copy-db.sh @@ -22,12 +22,13 @@ $VER = "1.0"; use Getopt::Long; +use Cwd; use DBI; $max_row_length=500000; # Don't create bigger SQL rows that this $opt_lock=1; # lock tables -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n"; diff --git a/sql-bench/crash-me.sh b/sql-bench/crash-me.sh index ff649acdae4..00989fc0bc8 100644 --- a/sql-bench/crash-me.sh +++ b/sql-bench/crash-me.sh @@ -41,9 +41,11 @@ $version="1.61"; +use Cwd; use DBI; use Getopt::Long; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +use POSIX; +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n"; $opt_server="mysql"; $opt_host="localhost"; $opt_database="test"; @@ -3247,24 +3249,8 @@ EOF sub machine { - $name= `uname -s -r -m`; - if ($?) - { - $name= `uname -s -m`; - } - if ($?) - { - $name= `uname -s`; - } - if ($?) - { - $name= `uname`; - } - if ($?) - { - $name="unknown"; - } - chomp($name); $name =~ s/[\n\r]//g; + my @name = POSIX::uname(); + my $name= $name[0] . " " . $name[2] . " " . $name[4]; return $name; } diff --git a/sql-bench/innotest1.sh b/sql-bench/innotest1.sh index b875a431040..8675de19ae4 100644 --- a/sql-bench/innotest1.sh +++ b/sql-bench/innotest1.sh @@ -5,12 +5,13 @@ # ############################################################################ +use Cwd; use DBI; use Benchmark; $opt_loop_count = 100000; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; print "Innotest1: MySQL/InnoDB stress test in Perl\n"; diff --git a/sql-bench/innotest1a.sh b/sql-bench/innotest1a.sh index d78357427bc..93f8a2a443b 100644 --- a/sql-bench/innotest1a.sh +++ b/sql-bench/innotest1a.sh @@ -5,12 +5,13 @@ # ############################################################################ +use Cwd; use DBI; use Benchmark; $opt_loop_count = 200000; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; print "Innotest1a: MySQL/InnoDB stress test in Perl\n"; diff --git a/sql-bench/innotest1b.sh b/sql-bench/innotest1b.sh index d83fce00efc..48fe96ebe7d 100644 --- a/sql-bench/innotest1b.sh +++ b/sql-bench/innotest1b.sh @@ -5,12 +5,13 @@ # ############################################################################ +use Cwd; use DBI; use Benchmark; $opt_loop_count = 200000; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; print "Innotest1b: MySQL/InnoDB stress test in Perl\n"; diff --git a/sql-bench/innotest2.sh b/sql-bench/innotest2.sh index 05c21098249..aea44003903 100644 --- a/sql-bench/innotest2.sh +++ b/sql-bench/innotest2.sh @@ -5,12 +5,13 @@ # ############################################################################ +use Cwd; use DBI; use Benchmark; $opt_loop_count = 100000; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; print "Innotest2: MySQL/InnoDB stress test in Perl for FOREIGN keys\n"; diff --git a/sql-bench/innotest2a.sh b/sql-bench/innotest2a.sh index e0fe2001d24..3d4bb9933da 100644 --- a/sql-bench/innotest2a.sh +++ b/sql-bench/innotest2a.sh @@ -5,12 +5,13 @@ # ############################################################################ +use Cwd; use DBI; use Benchmark; $opt_loop_count = 100000; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; print "Innotest2a: MySQL/InnoDB stress test in Perl for FOREIGN keys\n"; diff --git a/sql-bench/innotest2b.sh b/sql-bench/innotest2b.sh index 83f48cf5352..272b6dcffd0 100644 --- a/sql-bench/innotest2b.sh +++ b/sql-bench/innotest2b.sh @@ -5,12 +5,13 @@ # ############################################################################ +use Cwd; use DBI; use Benchmark; $opt_loop_count = 100000; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; print "Innotest2b: MySQL/InnoDB stress test in Perl for FOREIGN keys\n"; diff --git a/sql-bench/run-all-tests.sh b/sql-bench/run-all-tests.sh index f392431140c..da576d73852 100644 --- a/sql-bench/run-all-tests.sh +++ b/sql-bench/run-all-tests.sh @@ -34,11 +34,12 @@ # --log ==> puts output in output/RUN-server-machine-cmp-$opt_cmp use DBI; +use Cwd; $opt_silent=1; # Don't write header @ORG_ARGV=@ARGV; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $opt_silent=0; $perl=$^X; diff --git a/sql-bench/test-ATIS.sh b/sql-bench/test-ATIS.sh index ac3d7360198..1f11f4319b5 100644 --- a/sql-bench/test-ATIS.sh +++ b/sql-bench/test-ATIS.sh @@ -24,12 +24,13 @@ # - skip a couple of the tests in Q4 that Oracle doesn't understand ################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; $opt_loop_count=100; # Run selects this many times -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; if ($opt_small_test) diff --git a/sql-bench/test-alter-table.sh b/sql-bench/test-alter-table.sh index 93a9c1b444e..2ca54000065 100644 --- a/sql-bench/test-alter-table.sh +++ b/sql-bench/test-alter-table.sh @@ -20,6 +20,7 @@ # ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; @@ -29,7 +30,7 @@ $opt_row_count=1000; # Rows in the table $opt_field_count=1000; # Add until this many fields. $opt_time_limit=10*60; # Don't wait more than 10 min for some tests -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $opt_field_count=min($opt_field_count,$limits->{'max_columns'}, diff --git a/sql-bench/test-big-tables.sh b/sql-bench/test-big-tables.sh index 151a169d31f..fb58247eddd 100644 --- a/sql-bench/test-big-tables.sh +++ b/sql-bench/test-big-tables.sh @@ -21,13 +21,14 @@ ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; $opt_loop_count=1000; # Change this to make test harder/easier $opt_field_count=1000; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $opt_field_count=min($opt_field_count,$limits->{'max_columns'}, diff --git a/sql-bench/test-connect.sh b/sql-bench/test-connect.sh index 0f1aca5aaa7..b7a360cac38 100644 --- a/sql-bench/test-connect.sh +++ b/sql-bench/test-connect.sh @@ -24,6 +24,7 @@ # by using option --loop_value='what_ever_you_like'. ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; @@ -31,7 +32,7 @@ $opt_loop_count=100000; # Change this to make test harder/easier $str_length=65000; # This is the length of blob strings in PART:5 $max_test=20; # How many times to test if the server is busy -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; # This is the length of blob strings in PART:5 diff --git a/sql-bench/test-create.sh b/sql-bench/test-create.sh index 1e7d3841bb5..8188b47f587 100644 --- a/sql-bench/test-create.sh +++ b/sql-bench/test-create.sh @@ -30,13 +30,14 @@ ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; $opt_loop_count=10000; # Change this to make test harder/easier # This is the default value for the amount of tables used in this test. -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $create_loop_count=$opt_loop_count; diff --git a/sql-bench/test-insert.sh b/sql-bench/test-insert.sh index b61ad00b557..8f2d246ff12 100644 --- a/sql-bench/test-insert.sh +++ b/sql-bench/test-insert.sh @@ -28,6 +28,7 @@ # ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; use Data::Dumper; @@ -38,7 +39,7 @@ $range_loop_count=$small_loop_count*50; $many_keys_loop_count=$opt_loop_count; $opt_read_key_loop_count=$opt_loop_count; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; if ($opt_small_test) diff --git a/sql-bench/test-select.sh b/sql-bench/test-select.sh index 8981fa49cff..63f70b0aaa1 100644 --- a/sql-bench/test-select.sh +++ b/sql-bench/test-select.sh @@ -20,6 +20,7 @@ # ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Getopt::Long; use Benchmark; @@ -30,7 +31,7 @@ $opt_small_loop_count=10; $opt_regions=6; $opt_groups=100; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $columns=min($limits->{'max_columns'},500,($limits->{'query_size'}-50)/24, diff --git a/sql-bench/test-transactions.sh b/sql-bench/test-transactions.sh index 8f92633524f..50d7098bca7 100644 --- a/sql-bench/test-transactions.sh +++ b/sql-bench/test-transactions.sh @@ -21,6 +21,7 @@ ##################### Standard benchmark inits ############################## +use Cwd; use DBI; use Benchmark; #use warnings; @@ -30,7 +31,7 @@ $opt_groups=27; # Characters are 'A' -> Z $opt_loop_count=10000; # Change this to make test harder/easier $opt_medium_loop_count=100; # Change this to make test harder/easier -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; # Avoid warnings for variables in bench-init.pl diff --git a/sql-bench/test-wisconsin.sh b/sql-bench/test-wisconsin.sh index adc3e5b5aa4..89ffb9aa629 100644 --- a/sql-bench/test-wisconsin.sh +++ b/sql-bench/test-wisconsin.sh @@ -17,12 +17,13 @@ # MA 02111-1307, USA # +use Cwd; use DBI; use Benchmark; $opt_loop_count=10; -chomp($pwd = `pwd`); $pwd = "." if ($pwd eq ''); +$pwd = cwd(); $pwd = "." if ($pwd eq ''); require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n"; $into_table = ""; From 7dbbd82f13cfa38761f1b223913d4ec3bd0d0a62 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Fri, 26 Sep 2003 23:43:22 +0200 Subject: [PATCH 44/81] Fix for 64-bit machines. I am almost sure this is the cause for BUG#1381 [Opn]: Bug in replication on HP-UX 64 bit binaries? BUG#1256 [CRp]: Replication slave fails to connect to master in 64-bit version (Solaris) The reason why I think it's wrong is that the normal client code has uint32 ip_addr. (of course on 32-bit machines it does not matter, but on 64-bit it does). --- sql/mini_client.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/mini_client.cc b/sql/mini_client.cc index 9993951d8e9..f204c38c18c 100644 --- a/sql/mini_client.cc +++ b/sql/mini_client.cc @@ -547,7 +547,7 @@ mc_mysql_connect(MYSQL *mysql,const char *host, const char *user, { char buff[NAME_LEN+USERNAME_LENGTH+100],*end,*host_info; my_socket sock; - ulong ip_addr; + uint32 ip_addr; struct sockaddr_in sock_addr; ulong pkt_length; NET *net= &mysql->net; From 9d7014c07be2511194bed4f948aa67200cda40da Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Sun, 28 Sep 2003 18:31:49 +0200 Subject: [PATCH 45/81] Fix for BUG#1345 "SQL Syntax Error in binarylog with DROP TABLES": it's just backquoting the db's and table's names when writing DROP TEMPORARY TABLE to the binlog when a connection ends. A testcase for this. --- mysql-test/r/drop_temp_table.result | 11 +++++++++++ mysql-test/t/drop_temp_table.test | 13 +++++++++++++ sql/sql_base.cc | 14 ++++++-------- 3 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 mysql-test/r/drop_temp_table.result create mode 100644 mysql-test/t/drop_temp_table.test diff --git a/mysql-test/r/drop_temp_table.result b/mysql-test/r/drop_temp_table.result new file mode 100644 index 00000000000..40e363dbf00 --- /dev/null +++ b/mysql-test/r/drop_temp_table.result @@ -0,0 +1,11 @@ +reset master; +create database `drop-temp+table-test`; +use `drop-temp+table-test`; +create temporary table `table:name` (a int); +show binlog events; +Log_name Pos Event_type Server_id Orig_log_pos Info +master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 +master-bin.001 79 Query 1 79 use test; create database `drop-temp+table-test` +master-bin.001 152 Query 1 152 use drop-temp+table-test; create temporary table `table:name` (a int) +master-bin.001 246 Query 1 246 use drop-temp+table-test; DROP /*!40005 TEMPORARY */ TABLE `drop-temp+table-test`.`table:name` +drop database `drop-temp+table-test`; diff --git a/mysql-test/t/drop_temp_table.test b/mysql-test/t/drop_temp_table.test new file mode 100644 index 00000000000..4849e998bf5 --- /dev/null +++ b/mysql-test/t/drop_temp_table.test @@ -0,0 +1,13 @@ +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); +connection con1; +reset master; +create database `drop-temp+table-test`; +use `drop-temp+table-test`; +create temporary table `table:name` (a int); +disconnect con1; +connection con2; +let $VERSION=`select version()`; +--replace_result $VERSION VERSION +show binlog events; +drop database `drop-temp+table-test`; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 43718e5d93b..1010378825f 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -561,15 +561,13 @@ void close_temporary_tables(THD *thd) { // skip temporary tables not created directly by the user if (table->real_name[0] != '#') - { - /* - Here we assume table_cache_key always starts - with \0 terminated db name - */ found_user_tables = 1; - } - end = strxmov(end,table->table_cache_key,".", - table->real_name,",", NullS); + /* + Here we assume table_cache_key always starts + with \0 terminated db name + */ + end = strxmov(end,"`",table->table_cache_key,"`", + ".`",table->real_name,"`,", NullS); } next=table->next; close_temporary(table); From 89f30200bca2fe2861401d0acf9d45320bf9592a Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Mon, 29 Sep 2003 12:31:35 +0300 Subject: [PATCH 46/81] Removed random chars after filename for LOAD DATA INFILE (in mysqlbinlog) Add quoting for use `database` for mysqlbinlog Removed test ins0000001 Add support for --replace for exec in mysqltest Don't refer to install dir in mysqlbinlog.result --- client/mysqlbinlog.cc | 11 +-- client/mysqltest.c | 30 +++---- mysql-test/r/drop_temp_table.result | 6 +- mysql-test/r/fulltext_multi.result | 1 - mysql-test/r/fulltext_order_by.result | 1 - mysql-test/r/ins000001.result | 13 --- mysql-test/r/insert.result | 22 +++-- mysql-test/r/insert_select.result | 2 +- mysql-test/r/mix_innodb_myisam_binlog.result | 94 ++++++++++---------- mysql-test/r/mysqlbinlog.result | 13 ++- mysql-test/r/rpl_log.result | 56 ++++++------ mysql-test/t/fulltext_multi.test | 2 +- mysql-test/t/fulltext_order_by.test | 1 - mysql-test/t/ins000001.test | 9 -- mysql-test/t/insert.test | 26 ++++-- mysql-test/t/mysqlbinlog.test | 6 +- sql/log_event.cc | 4 +- support-files/mysql.server.sh | 23 ++--- 18 files changed, 161 insertions(+), 159 deletions(-) delete mode 100644 mysql-test/r/ins000001.result delete mode 100644 mysql-test/t/ins000001.test diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 910b42d184d..84dcc4a7395 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -202,7 +202,7 @@ const char *Load_log_processor::create_file(Create_file_log_event *ce) return 0; } } - ce->set_fname_outside_temp_buf(tmp,full_len); + ce->set_fname_outside_temp_buf(tmp,strlen(tmp)); return tmp; } @@ -622,10 +622,11 @@ Could not read entry at offset %s : Error in log format or read error", } } /* - We print the event, but with a leading '#': this is just to inform the - user of the original command; the command we want to execute will be a - derivation of this original command (we will change the filename and - use LOCAL), prepared in the 'case EXEC_LOAD_EVENT' below. + We print the event, but with a leading '#': this is just to inform + the user of the original command; the command we want to execute + will be a derivation of this original command (we will change the + filename and use LOCAL), prepared in the 'case EXEC_LOAD_EVENT' + below. */ ce->print(result_file, short_form, last_db, true); load_processor.process(ce); diff --git a/client/mysqltest.c b/client/mysqltest.c index a02fdf30601..fcb9bb7102e 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -42,7 +42,7 @@ **********************************************************************/ -#define MTEST_VERSION "1.28" +#define MTEST_VERSION "1.29" #include #include @@ -77,6 +77,7 @@ #ifndef MYSQL_MANAGER_PORT #define MYSQL_MANAGER_PORT 23546 #endif +#define MAX_SERVER_ARGS 20 /* Sometimes in a test the client starts before @@ -121,10 +122,19 @@ static int *block_ok_stack_end; static int *cur_block, *block_stack_end; static int block_stack[BLOCK_STACK_DEPTH]; - static int block_ok_stack[BLOCK_STACK_DEPTH]; static uint global_expected_errno[MAX_EXPECTED_ERRORS], global_expected_errors; +static int embedded_server_arg_count=0; +static char *embedded_server_args[MAX_SERVER_ARGS]; + +static const char *embedded_server_groups[] = { + "server", + "embedded", + "mysqltest_SERVER", + NullS +}; + #include "sslopt-vars.h" DYNAMIC_ARRAY q_lines; @@ -326,18 +336,8 @@ void mysql_disable_rpl_parse(MYSQL* mysql __attribute__((unused))) {} int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; } int mysql_rpl_probe(MYSQL *mysql __attribute__((unused))) { return 1; } #endif - -#define MAX_SERVER_ARGS 20 - -static int embedded_server_arg_count=0; -static char *embedded_server_args[MAX_SERVER_ARGS]; - -static const char *embedded_server_groups[] = { - "server", - "embedded", - "mysqltest_SERVER", - NullS -}; +static void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val, + int len); static void do_eval(DYNAMIC_STRING* query_eval, const char* query) @@ -864,7 +864,7 @@ int do_exec(struct st_query* q) if (!(res_file= popen(cmd, "r")) && q->abort_on_error) die("popen() failed\n"); while (fgets(buf, sizeof(buf), res_file)) - dynstr_append(ds, buf); + replace_dynstr_append_mem(ds, buf, strlen(buf)); pclose(res_file); if (record) { diff --git a/mysql-test/r/drop_temp_table.result b/mysql-test/r/drop_temp_table.result index 40e363dbf00..385a3fb6e5c 100644 --- a/mysql-test/r/drop_temp_table.result +++ b/mysql-test/r/drop_temp_table.result @@ -5,7 +5,7 @@ create temporary table `table:name` (a int); show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 -master-bin.001 79 Query 1 79 use test; create database `drop-temp+table-test` -master-bin.001 152 Query 1 152 use drop-temp+table-test; create temporary table `table:name` (a int) -master-bin.001 246 Query 1 246 use drop-temp+table-test; DROP /*!40005 TEMPORARY */ TABLE `drop-temp+table-test`.`table:name` +master-bin.001 79 Query 1 79 use `test`; create database `drop-temp+table-test` +master-bin.001 152 Query 1 152 use `drop-temp+table-test`; create temporary table `table:name` (a int) +master-bin.001 246 Query 1 246 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE `drop-temp+table-test`.`table:name` drop database `drop-temp+table-test`; diff --git a/mysql-test/r/fulltext_multi.result b/mysql-test/r/fulltext_multi.result index 72b7102fd3f..968b00020e2 100644 --- a/mysql-test/r/fulltext_multi.result +++ b/mysql-test/r/fulltext_multi.result @@ -1,4 +1,3 @@ -use test; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( a int(11) NOT NULL auto_increment, diff --git a/mysql-test/r/fulltext_order_by.result b/mysql-test/r/fulltext_order_by.result index c0e72ff789f..bfee9eba280 100644 --- a/mysql-test/r/fulltext_order_by.result +++ b/mysql-test/r/fulltext_order_by.result @@ -1,4 +1,3 @@ -use test; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( a INT AUTO_INCREMENT PRIMARY KEY, diff --git a/mysql-test/r/ins000001.result b/mysql-test/r/ins000001.result deleted file mode 100644 index ec4f73e7a5d..00000000000 --- a/mysql-test/r/ins000001.result +++ /dev/null @@ -1,13 +0,0 @@ -use test; -drop table if exists t1,t2; -create table t1 (email varchar(50)); -insert into t1 values ('sasha@mysql.com'),('monty@mysql.com'), -('foo@hotmail.com'),('foo@aol.com'),('bar@aol.com'); -create table t2(id int not null auto_increment primary key, -t2 varchar(50), unique(t2)); -insert into t2 (t2) select distinct substring(email, locate('@', email)+1) from t1; -select * from t2; -id t2 -1 mysql.com -2 hotmail.com -3 aol.com diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result index ebcb7721822..270994e3998 100644 --- a/mysql-test/r/insert.result +++ b/mysql-test/r/insert.result @@ -1,4 +1,4 @@ -drop table if exists t1; +drop table if exists t1,t2; create table t1 (a int not null); insert into t1 values (1); insert into t1 values (a+2); @@ -68,9 +68,19 @@ id 0 2 drop table t1; -drop database if exists foo; -create database foo; -use foo; +create table t1 (email varchar(50)); +insert into t1 values ('sasha@mysql.com'),('monty@mysql.com'),('foo@hotmail.com'),('foo@aol.com'),('bar@aol.com'); +create table t2(id int not null auto_increment primary key, t2 varchar(50), unique(t2)); +insert into t2 (t2) select distinct substring(email, locate('@', email)+1) from t1; +select * from t2; +id t2 +1 mysql.com +2 hotmail.com +3 aol.com +drop table t1,t2; +drop database if exists mysqltest; +create database mysqltest; +use mysqltest; create table t1 (c int); -insert into foo.t1 set foo.t1.c = '1'; -drop database foo; +insert into mysqltest.t1 set mysqltest.t1.c = '1'; +drop database mysqltest; diff --git a/mysql-test/r/insert_select.result b/mysql-test/r/insert_select.result index 0142ef68993..23cb7244f48 100644 --- a/mysql-test/r/insert_select.result +++ b/mysql-test/r/insert_select.result @@ -75,7 +75,7 @@ Duplicate entry '2' for key 1 show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 -master-bin.001 79 Query 1 79 use test; insert into t1 select * from t2 +master-bin.001 79 Query 1 79 use `test`; insert into t1 select * from t2 drop table t1, t2; drop table if exists t1, t2; create table t1 (a int not null); diff --git a/mysql-test/r/mix_innodb_myisam_binlog.result b/mysql-test/r/mix_innodb_myisam_binlog.result index cd96584b6a4..7b266544c92 100644 --- a/mysql-test/r/mix_innodb_myisam_binlog.result +++ b/mysql-test/r/mix_innodb_myisam_binlog.result @@ -8,10 +8,10 @@ insert into t2 select * from t1; commit; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(1) -master-bin.001 178 Query 1 79 use test; insert into t2 select * from t1 -master-bin.001 244 Query 1 244 use test; COMMIT +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(1) +master-bin.001 178 Query 1 79 use `test`; insert into t2 select * from t1 +master-bin.001 244 Query 1 244 use `test`; COMMIT delete from t1; delete from t2; reset master; @@ -22,10 +22,10 @@ rollback; Warning: Some non-transactional changed tables couldn't be rolled back show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(2) -master-bin.001 178 Query 1 79 use test; insert into t2 select * from t1 -master-bin.001 244 Query 1 244 use test; ROLLBACK +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(2) +master-bin.001 178 Query 1 79 use `test`; insert into t2 select * from t1 +master-bin.001 244 Query 1 244 use `test`; ROLLBACK delete from t1; delete from t2; reset master; @@ -39,13 +39,13 @@ Warning: Some non-transactional changed tables couldn't be rolled back commit; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(3) -master-bin.001 178 Query 1 79 use test; savepoint my_savepoint -master-bin.001 235 Query 1 79 use test; insert into t1 values(4) -master-bin.001 294 Query 1 79 use test; insert into t2 select * from t1 -master-bin.001 360 Query 1 79 use test; rollback to savepoint my_savepoint -master-bin.001 429 Query 1 429 use test; COMMIT +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(3) +master-bin.001 178 Query 1 79 use `test`; savepoint my_savepoint +master-bin.001 235 Query 1 79 use `test`; insert into t1 values(4) +master-bin.001 294 Query 1 79 use `test`; insert into t2 select * from t1 +master-bin.001 360 Query 1 79 use `test`; rollback to savepoint my_savepoint +master-bin.001 429 Query 1 429 use `test`; COMMIT delete from t1; delete from t2; reset master; @@ -64,14 +64,14 @@ a 7 show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(5) -master-bin.001 178 Query 1 79 use test; savepoint my_savepoint -master-bin.001 235 Query 1 79 use test; insert into t1 values(6) -master-bin.001 294 Query 1 79 use test; insert into t2 select * from t1 -master-bin.001 360 Query 1 79 use test; rollback to savepoint my_savepoint -master-bin.001 429 Query 1 79 use test; insert into t1 values(7) -master-bin.001 488 Query 1 488 use test; COMMIT +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(5) +master-bin.001 178 Query 1 79 use `test`; savepoint my_savepoint +master-bin.001 235 Query 1 79 use `test`; insert into t1 values(6) +master-bin.001 294 Query 1 79 use `test`; insert into t2 select * from t1 +master-bin.001 360 Query 1 79 use `test`; rollback to savepoint my_savepoint +master-bin.001 429 Query 1 79 use `test`; insert into t1 values(7) +master-bin.001 488 Query 1 488 use `test`; COMMIT delete from t1; delete from t2; reset master; @@ -86,10 +86,10 @@ get_lock("a",10) 1 show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(8) -master-bin.001 178 Query 1 79 use test; insert into t2 select * from t1 -master-bin.001 244 Query 1 244 use test; ROLLBACK +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(8) +master-bin.001 178 Query 1 79 use `test`; insert into t2 select * from t1 +master-bin.001 244 Query 1 244 use `test`; ROLLBACK delete from t1; delete from t2; reset master; @@ -97,8 +97,8 @@ insert into t1 values(9); insert into t2 select * from t1; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; insert into t1 values(9) -master-bin.001 138 Query 1 138 use test; insert into t2 select * from t1 +master-bin.001 79 Query 1 79 use `test`; insert into t1 values(9) +master-bin.001 138 Query 1 138 use `test`; insert into t2 select * from t1 delete from t1; delete from t2; reset master; @@ -107,17 +107,17 @@ begin; insert into t2 select * from t1; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; insert into t1 values(10) -master-bin.001 139 Query 1 139 use test; insert into t2 select * from t1 +master-bin.001 79 Query 1 79 use `test`; insert into t1 values(10) +master-bin.001 139 Query 1 139 use `test`; insert into t2 select * from t1 insert into t1 values(11); commit; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; insert into t1 values(10) -master-bin.001 139 Query 1 139 use test; insert into t2 select * from t1 -master-bin.001 205 Query 1 205 use test; BEGIN -master-bin.001 245 Query 1 205 use test; insert into t1 values(11) -master-bin.001 305 Query 1 305 use test; COMMIT +master-bin.001 79 Query 1 79 use `test`; insert into t1 values(10) +master-bin.001 139 Query 1 139 use `test`; insert into t2 select * from t1 +master-bin.001 205 Query 1 205 use `test`; BEGIN +master-bin.001 245 Query 1 205 use `test`; insert into t1 values(11) +master-bin.001 305 Query 1 305 use `test`; COMMIT alter table t2 type=INNODB; delete from t1; delete from t2; @@ -128,10 +128,10 @@ insert into t2 select * from t1; commit; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(12) -master-bin.001 179 Query 1 79 use test; insert into t2 select * from t1 -master-bin.001 245 Query 1 245 use test; COMMIT +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(12) +master-bin.001 179 Query 1 79 use `test`; insert into t2 select * from t1 +master-bin.001 245 Query 1 245 use `test`; COMMIT delete from t1; delete from t2; reset master; @@ -153,9 +153,9 @@ rollback to savepoint my_savepoint; commit; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(14) -master-bin.001 179 Query 1 179 use test; COMMIT +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(14) +master-bin.001 179 Query 1 179 use `test`; COMMIT delete from t1; delete from t2; reset master; @@ -173,8 +173,8 @@ a 18 show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; BEGIN -master-bin.001 119 Query 1 79 use test; insert into t1 values(16) -master-bin.001 179 Query 1 79 use test; insert into t1 values(18) -master-bin.001 239 Query 1 239 use test; COMMIT +master-bin.001 79 Query 1 79 use `test`; BEGIN +master-bin.001 119 Query 1 79 use `test`; insert into t1 values(16) +master-bin.001 179 Query 1 79 use `test`; insert into t1 values(18) +master-bin.001 239 Query 1 239 use `test`; COMMIT drop table t1,t2; diff --git a/mysql-test/r/mysqlbinlog.result b/mysql-test/r/mysqlbinlog.result index 63f026274af..eeac31ba40b 100644 --- a/mysql-test/r/mysqlbinlog.result +++ b/mysql-test/r/mysqlbinlog.result @@ -1,5 +1,4 @@ -drop table if exists t1; -drop table if exists t2; +drop table if exists t1,t2; set timestamp=1000000000; create table t1 (word varchar(20)); create table t2 (id int auto_increment not null primary key); @@ -25,11 +24,11 @@ insert into t1 values ("abirvalg"); SET INSERT_ID=1; SET TIMESTAMP=1000000000; insert into t2 values (); -LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-1-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); -LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-2-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); -LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-3-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); -LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-4-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); -LOAD DATA LOCAL INFILE '/home/dlenev/src/mysql-4.0-binlog/mysql-test/var/tmp/words.dat-5-0 ' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-1-0' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-2-0' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-3-0' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-4-0' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); +LOAD DATA LOCAL INFILE 'MYSQL_TEST_DIR/var/tmp/words.dat-5-0' INTO TABLE t1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' STARTING BY '' (word); --- Broken LOAD DATA -- use test; diff --git a/mysql-test/r/rpl_log.result b/mysql-test/r/rpl_log.result index 26e465f9c3b..7e2a8df75ac 100644 --- a/mysql-test/r/rpl_log.result +++ b/mysql-test/r/rpl_log.result @@ -20,24 +20,24 @@ drop table t1; show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 -master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key) +master-bin.001 79 Query 1 79 use `test`; create table t1(n int not null auto_increment primary key) master-bin.001 172 Intvar 1 172 INSERT_ID=1 -master-bin.001 200 Query 1 200 use test; insert into t1 values (NULL) -master-bin.001 263 Query 1 263 use test; drop table t1 -master-bin.001 311 Query 1 311 use test; create table t1 (word char(20) not null) +master-bin.001 200 Query 1 200 use `test`; insert into t1 values (NULL) +master-bin.001 263 Query 1 263 use `test`; drop table t1 +master-bin.001 311 Query 1 311 use `test`; create table t1 (word char(20) not null) master-bin.001 386 Create_file 1 386 db=test;table=t1;file_id=1;block_len=581 master-bin.001 1056 Exec_load 1 1056 ;file_id=1 -master-bin.001 1079 Query 1 1079 use test; drop table t1 +master-bin.001 1079 Query 1 1079 use `test`; drop table t1 show binlog events from 79 limit 1; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key) +master-bin.001 79 Query 1 79 use `test`; create table t1(n int not null auto_increment primary key) show binlog events from 79 limit 2; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key) +master-bin.001 79 Query 1 79 use `test`; create table t1(n int not null auto_increment primary key) master-bin.001 172 Intvar 1 172 INSERT_ID=1 show binlog events from 79 limit 2,1; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 200 Query 1 200 use test; insert into t1 values (NULL) +master-bin.001 200 Query 1 200 use `test`; insert into t1 values (NULL) flush logs; create table t5 (a int); drop table t5; @@ -50,22 +50,22 @@ drop table t1; show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 -master-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key) +master-bin.001 79 Query 1 79 use `test`; create table t1(n int not null auto_increment primary key) master-bin.001 172 Intvar 1 172 INSERT_ID=1 -master-bin.001 200 Query 1 200 use test; insert into t1 values (NULL) -master-bin.001 263 Query 1 263 use test; drop table t1 -master-bin.001 311 Query 1 311 use test; create table t1 (word char(20) not null) +master-bin.001 200 Query 1 200 use `test`; insert into t1 values (NULL) +master-bin.001 263 Query 1 263 use `test`; drop table t1 +master-bin.001 311 Query 1 311 use `test`; create table t1 (word char(20) not null) master-bin.001 386 Create_file 1 386 db=test;table=t1;file_id=1;block_len=581 master-bin.001 1056 Exec_load 1 1056 ;file_id=1 -master-bin.001 1079 Query 1 1079 use test; drop table t1 +master-bin.001 1079 Query 1 1079 use `test`; drop table t1 master-bin.001 1127 Rotate 1 1127 master-bin.002;pos=4 show binlog events in 'master-bin.002'; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.002 4 Query 1 4 use test; create table t5 (a int) -master-bin.002 62 Query 1 62 use test; drop table t5 -master-bin.002 110 Query 1 110 use test; create table t1 (n int) -master-bin.002 168 Query 1 168 use test; insert into t1 values (1) -master-bin.002 228 Query 1 228 use test; drop table t1 +master-bin.002 4 Query 1 4 use `test`; create table t5 (a int) +master-bin.002 62 Query 1 62 use `test`; drop table t5 +master-bin.002 110 Query 1 110 use `test`; create table t1 (n int) +master-bin.002 168 Query 1 168 use `test`; insert into t1 values (1) +master-bin.002 228 Query 1 228 use `test`; drop table t1 show master logs; Log_name master-bin.001 @@ -78,22 +78,22 @@ slave-bin.002 show binlog events in 'slave-bin.001' from 4; Log_name Pos Event_type Server_id Orig_log_pos Info slave-bin.001 4 Start 2 4 Server ver: VERSION, Binlog ver: 3 -slave-bin.001 79 Query 1 79 use test; create table t1(n int not null auto_increment primary key) +slave-bin.001 79 Query 1 79 use `test`; create table t1(n int not null auto_increment primary key) slave-bin.001 172 Intvar 1 172 INSERT_ID=1 -slave-bin.001 200 Query 1 200 use test; insert into t1 values (NULL) -slave-bin.001 263 Query 1 263 use test; drop table t1 -slave-bin.001 311 Query 1 311 use test; create table t1 (word char(20) not null) +slave-bin.001 200 Query 1 200 use `test`; insert into t1 values (NULL) +slave-bin.001 263 Query 1 263 use `test`; drop table t1 +slave-bin.001 311 Query 1 311 use `test`; create table t1 (word char(20) not null) slave-bin.001 386 Create_file 1 386 db=test;table=t1;file_id=1;block_len=581 slave-bin.001 1065 Exec_load 1 1065 ;file_id=1 -slave-bin.001 1088 Query 1 1088 use test; drop table t1 -slave-bin.001 1136 Query 1 1136 use test; create table t5 (a int) -slave-bin.001 1194 Query 1 1194 use test; drop table t5 +slave-bin.001 1088 Query 1 1088 use `test`; drop table t1 +slave-bin.001 1136 Query 1 1136 use `test`; create table t5 (a int) +slave-bin.001 1194 Query 1 1194 use `test`; drop table t5 slave-bin.001 1242 Rotate 2 1242 slave-bin.002;pos=4 show binlog events in 'slave-bin.002' from 4; Log_name Pos Event_type Server_id Orig_log_pos Info -slave-bin.002 4 Query 1 4 use test; create table t1 (n int) -slave-bin.002 62 Query 1 62 use test; insert into t1 values (1) -slave-bin.002 122 Query 1 122 use test; drop table t1 +slave-bin.002 4 Query 1 4 use `test`; create table t1 (n int) +slave-bin.002 62 Query 1 62 use `test`; insert into t1 values (1) +slave-bin.002 122 Query 1 122 use `test`; drop table t1 show slave status; Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space 127.0.0.1 root MASTER_PORT 1 master-bin.002 276 slave-relay-bin.003 211 master-bin.002 Yes Yes 0 0 276 211 diff --git a/mysql-test/t/fulltext_multi.test b/mysql-test/t/fulltext_multi.test index 233c243146e..f71704e1bb9 100644 --- a/mysql-test/t/fulltext_multi.test +++ b/mysql-test/t/fulltext_multi.test @@ -1,5 +1,5 @@ # several FULLTEXT indexes in one table test -use test; + DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( a int(11) NOT NULL auto_increment, diff --git a/mysql-test/t/fulltext_order_by.test b/mysql-test/t/fulltext_order_by.test index 3b60ee77db2..8c34230cfe3 100644 --- a/mysql-test/t/fulltext_order_by.test +++ b/mysql-test/t/fulltext_order_by.test @@ -1,4 +1,3 @@ -use test; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( a INT AUTO_INCREMENT PRIMARY KEY, diff --git a/mysql-test/t/ins000001.test b/mysql-test/t/ins000001.test deleted file mode 100644 index 4d75b4e7fe3..00000000000 --- a/mysql-test/t/ins000001.test +++ /dev/null @@ -1,9 +0,0 @@ -use test; -drop table if exists t1,t2; -create table t1 (email varchar(50)); -insert into t1 values ('sasha@mysql.com'),('monty@mysql.com'), -('foo@hotmail.com'),('foo@aol.com'),('bar@aol.com'); -create table t2(id int not null auto_increment primary key, - t2 varchar(50), unique(t2)); -insert into t2 (t2) select distinct substring(email, locate('@', email)+1) from t1; -select * from t2; diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test index be585157e63..fbb9134ff7f 100644 --- a/mysql-test/t/insert.test +++ b/mysql-test/t/insert.test @@ -2,7 +2,7 @@ # Test of refering to old values # -drop table if exists t1; +drop table if exists t1,t2; create table t1 (a int not null); insert into t1 values (1); insert into t1 values (a+2); @@ -61,14 +61,26 @@ insert into t1 values (1), (NULL), (2); select * from t1; drop table t1; +# +# Test if insert ... select distinct +# + +create table t1 (email varchar(50)); +insert into t1 values ('sasha@mysql.com'),('monty@mysql.com'),('foo@hotmail.com'),('foo@aol.com'),('bar@aol.com'); +create table t2(id int not null auto_increment primary key, t2 varchar(50), unique(t2)); +insert into t2 (t2) select distinct substring(email, locate('@', email)+1) from t1; +select * from t2; +drop table t1,t2; + # # Test of mysqld crash with fully qualified column names # -drop database if exists foo; -create database foo; -use foo; +--disable_warnings +drop database if exists mysqltest; +--enable_warnings +create database mysqltest; +use mysqltest; create table t1 (c int); -insert into foo.t1 set foo.t1.c = '1'; -drop database foo; - +insert into mysqltest.t1 set mysqltest.t1.c = '1'; +drop database mysqltest; diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test index 78992cb1e11..736c5e32622 100644 --- a/mysql-test/t/mysqlbinlog.test +++ b/mysql-test/t/mysqlbinlog.test @@ -1,7 +1,6 @@ # We are using .opt file since we need small binlog size --disable_warnings -drop table if exists t1; -drop table if exists t2; +drop table if exists t1,t2; --enable_warnings # we need this for getting fixed timestamps inside of this test @@ -39,6 +38,7 @@ select "--- Local --" as ""; # be time dependend. Better than nothing. # +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.001 # this should not fail but shouldn't produce any working statements --disable_query_log @@ -50,12 +50,14 @@ select "--- Broken LOAD DATA --" as ""; --disable_query_log select "--- --database --" as ""; --enable_query_log +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form --database=nottest $MYSQL_TEST_DIR/var/log/master-bin.001 # this test for position option --disable_query_log select "--- --position --" as ""; --enable_query_log +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form --position=27 $MYSQL_TEST_DIR/var/log/master-bin.002 # These are tests for remote binlog. diff --git a/sql/log_event.cc b/sql/log_event.cc index 189c4f37252..292e371e4dd 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -244,9 +244,9 @@ void Query_log_event::pack_info(String* packet) tmp.length(0); if (db && db_len) { - tmp.append("use "); + tmp.append("use `",5); tmp.append(db, db_len); - tmp.append("; ", 2); + tmp.append("`; ", 3); } if (query && q_len) diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index fe1f0de8477..89d45e0f26d 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -57,16 +57,6 @@ fi PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin export PATH -if test -z "$pid_file" -then - pid_file=$datadir/`@HOSTNAME@`.pid -else - case "$pid_file" in - /* ) ;; - * ) pid_file="$datadir/$pid_file" ;; - esac -fi - mode=$1 # start or stop parse_arguments() { @@ -118,6 +108,19 @@ else test -z "$print_defaults" && print_defaults="my_print_defaults" fi +# +# Set pid file if not given +# +if test -z "$pid_file" +then + pid_file=$datadir/`@HOSTNAME@`.pid +else + case "$pid_file" in + /* ) ;; + * ) pid_file="$datadir/$pid_file" ;; + esac +fi + # # Test if someone changed datadir; In this case we should also read the # default arguments from this directory From 9b8b92faff6b96058dccf71f604ddec2c59f71a0 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Mon, 29 Sep 2003 12:01:10 +0200 Subject: [PATCH 47/81] - enable changing the number of table bits for JOINs to be increased from ulong to ulonglong by defining -DBIG_JOINS --- sql/mysql_priv.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 8024c755a63..23cf4952e3d 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -29,7 +29,12 @@ #undef write /* remove pthread.h macro definition for EMX */ #endif +#ifdef BIG_JOINS +typedef ulonglong table_map; /* Used for table bits in join */ +#else typedef ulong table_map; /* Used for table bits in join */ +#endif /* BIG_JOINS */ + typedef ulong key_map; /* Used for finding keys */ typedef ulong key_part_map; /* Used for finding key parts */ From 573e5bffbf1e08de308dc1d39bc1b71a38061cdc Mon Sep 17 00:00:00 2001 From: "dlenev@mysql.com" <> Date: Mon, 29 Sep 2003 23:10:30 +0400 Subject: [PATCH 48/81] Added resetting of replace_result patterns after --exec command in mysqltest (in order to be consistent with ordinary query execution). --- client/mysqltest.c | 4 ++++ mysql-test/t/mysqlbinlog.test | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/client/mysqltest.c b/client/mysqltest.c index fcb9bb7102e..fd1c928b4fd 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -866,6 +866,10 @@ int do_exec(struct st_query* q) while (fgets(buf, sizeof(buf), res_file)) replace_dynstr_append_mem(ds, buf, strlen(buf)); pclose(res_file); + + if (glob_replace) + free_replace(); + if (record) { if (!q->record_file[0] && !result_file) diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test index 736c5e32622..22b63146652 100644 --- a/mysql-test/t/mysqlbinlog.test +++ b/mysql-test/t/mysqlbinlog.test @@ -40,10 +40,12 @@ select "--- Local --" as ""; --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.001 + # this should not fail but shouldn't produce any working statements --disable_query_log select "--- Broken LOAD DATA --" as ""; --enable_query_log +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.002 # this should show almost nothing @@ -73,24 +75,28 @@ select "--- Remote --" as ""; # This is broken now # By the way it seems that remote version fetches all events with name >= master-bin.001 +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.001 # This is broken too --disable_query_log select "--- Broken LOAD DATA --" as ""; --enable_query_log +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 # And this too ! (altough it is documented) --disable_query_log select "--- --database --" as ""; --enable_query_log +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.001 # Strangely but this works --disable_query_log select "--- --position --" as ""; --enable_query_log +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --exec $MYSQL_BINLOG --short-form --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 # clean up From 7234ed2681b30e205ec67a1c0cc8affacac26b78 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Mon, 29 Sep 2003 22:56:31 +0200 Subject: [PATCH 49/81] fix for a random test failure on hpux/ia64 (a missing synchronization in the test) --- mysql-test/r/drop_temp_table.result | 7 +++++++ mysql-test/t/drop_temp_table.test | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/mysql-test/r/drop_temp_table.result b/mysql-test/r/drop_temp_table.result index 385a3fb6e5c..6b18b54335d 100644 --- a/mysql-test/r/drop_temp_table.result +++ b/mysql-test/r/drop_temp_table.result @@ -2,10 +2,17 @@ reset master; create database `drop-temp+table-test`; use `drop-temp+table-test`; create temporary table `table:name` (a int); +select get_lock("a",10); +get_lock("a",10) +1 +select get_lock("a",10); +get_lock("a",10) +1 show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 master-bin.001 79 Query 1 79 use `test`; create database `drop-temp+table-test` master-bin.001 152 Query 1 152 use `drop-temp+table-test`; create temporary table `table:name` (a int) master-bin.001 246 Query 1 246 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE `drop-temp+table-test`.`table:name` +master-bin.001 365 Query 1 365 use `drop-temp+table-test`; DO RELEASE_LOCK("a") drop database `drop-temp+table-test`; diff --git a/mysql-test/t/drop_temp_table.test b/mysql-test/t/drop_temp_table.test index 4849e998bf5..1a7d8796bb3 100644 --- a/mysql-test/t/drop_temp_table.test +++ b/mysql-test/t/drop_temp_table.test @@ -5,8 +5,14 @@ reset master; create database `drop-temp+table-test`; use `drop-temp+table-test`; create temporary table `table:name` (a int); +select get_lock("a",10); disconnect con1; + connection con2; +# We want to SHOW BINLOG EVENTS, to know what was logged. But there is no +# guarantee that logging of the terminated con1 has been done yet. +# To be sure that logging has been done, we use a user lock. +select get_lock("a",10); let $VERSION=`select version()`; --replace_result $VERSION VERSION show binlog events; From 8d083df3a8c10b3599e95a2a745c1fe8d4b715b0 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Tue, 30 Sep 2003 00:08:12 +0200 Subject: [PATCH 50/81] A note that Valgrind does not give a good stacktrace when the problem is involving an assembly function. Testcase was BUG#1194 SELECT @a:=1; SELECT @a, @a:=1; --- BUILD/compile-pentium-valgrind-max | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/BUILD/compile-pentium-valgrind-max b/BUILD/compile-pentium-valgrind-max index 14f57d24841..0201001c959 100755 --- a/BUILD/compile-pentium-valgrind-max +++ b/BUILD/compile-pentium-valgrind-max @@ -1,5 +1,17 @@ #! /bin/sh +echo "\ +******************************************************************************** +Note that by default BUILD/compile-pentium-valgrind-max calls 'configure' with +--enable-assembler. When Valgrind detects an error involving an assembly +function (for example an uninitialized value used as an argument of an assembly +function), Valgrind will not print the stacktrace and 'valgrind +--gdb-attach=yes' will not work either. If you need a stacktrace in those cases, +you have to run BUILD/compile-pentium-valgrind-max with the --disable-assembler +argument. +******************************************************************************** +" + path=`dirname $0` . "$path/SETUP.sh" @@ -11,3 +23,15 @@ extra_configs="$pentium_configs $debug_configs" extra_configs="$extra_configs --with-berkeley-db --with-innodb --with-embedded-server --with-openssl" . "$path/FINISH.sh" + +echo "\ +******************************************************************************** +Note that by default BUILD/compile-pentium-valgrind-max calls 'configure' with +--enable-assembler. When Valgrind detects an error involving an assembly +function (for example an uninitialized value used as an argument of an assembly +function), Valgrind will not print the stacktrace and 'valgrind +--gdb-attach=yes' will not work either. If you need a stacktrace in those cases, +you have to run BUILD/compile-pentium-valgrind-max with the --disable-assembler +argument. +******************************************************************************** +" From fd835da6ece8544c09901260bfc3de6ee8ff199e Mon Sep 17 00:00:00 2001 From: "vva@eagle.mysql.r18.ru" <> Date: Tue, 30 Sep 2003 12:32:48 -0400 Subject: [PATCH 51/81] rewrite Item_func_set_user_var ::val, ::val_str, ::val_int, ::update with less code duplication --- sql/item_func.cc | 135 ++++++++++++++++------------------------------- sql/item_func.h | 5 ++ 2 files changed, 51 insertions(+), 89 deletions(-) diff --git a/sql/item_func.cc b/sql/item_func.cc index 10f267b766d..2105df6156c 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1899,35 +1899,46 @@ void Item_func_set_user_var::update_hash(void *ptr, uint length, return; } +double Item_func_set_user_var::native_val() +{ + double value=args[0]->val(); + update_hash((void*) &value,sizeof(value), REAL_RESULT); + return value; +} + +longlong Item_func_set_user_var::native_val_int() +{ + longlong value=args[0]->val_int(); + update_hash((void*) &value,sizeof(longlong),INT_RESULT); + return value; +} + +String *Item_func_set_user_var::native_val_str(String *str) +{ + char buffer[MAX_FIELD_WIDTH]; + String *res=args[0]->val_str(str); + if (!res) // Null value + update_hash((void*) 0,0,STRING_RESULT); + else + update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); + return res; +} + +String *Item_func_set_user_var::native_val_str() +{ + char buffer[MAX_FIELD_WIDTH]; + String tmp(buffer,sizeof(buffer)); + return native_val_str(&tmp); +} bool Item_func_set_user_var::update() { DBUG_ENTER("Item_func_set_user_var::update"); switch (cached_result_type) { - case REAL_RESULT: - { - double value=args[0]->val(); - update_hash((void*) &value,sizeof(value), REAL_RESULT); - break; - } - case INT_RESULT: - { - longlong value=args[0]->val_int(); - update_hash((void*) &value,sizeof(longlong),INT_RESULT); - break; - } - case STRING_RESULT: - { - char buffer[MAX_FIELD_WIDTH]; - String tmp(buffer,sizeof(buffer)); - String *res=args[0]->val_str(&tmp); - if (!res) // Null value - update_hash((void*) 0,0,STRING_RESULT); - else - update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); - break; - } + case REAL_RESULT: (void)native_val(); break; + case INT_RESULT: (void)native_val_int(); break; + case STRING_RESULT: (void)native_val_str(); break; } DBUG_RETURN(current_thd->fatal_error); } @@ -1938,28 +1949,12 @@ Item_func_set_user_var::val() { DBUG_ENTER("Item_func_set_user_var::val"); switch (cached_result_type) { - case REAL_RESULT: - { - double value=args[0]->val(); - update_hash((void*) &value,sizeof(value), REAL_RESULT); - return value; - } - case INT_RESULT: - { - longlong value=args[0]->val_int(); - update_hash((void*) &value,sizeof(longlong),INT_RESULT); - return value; - } + case REAL_RESULT: return native_val(); break; + case INT_RESULT: return native_val_int(); break; case STRING_RESULT: { - char buffer[MAX_FIELD_WIDTH]; - String tmp(buffer,sizeof(buffer)); - String *res=args[0]->val_str(&tmp); - if (!res) // Null value - update_hash((void*) 0,0,STRING_RESULT); - else - update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); - return atof(res->c_ptr()); + String *res= native_val_str(); + return !res ? 0 : atof(res->c_ptr()); } } DBUG_RETURN(args[0]->val()); @@ -1970,28 +1965,12 @@ Item_func_set_user_var::val_int() { DBUG_ENTER("Item_func_set_user_var::val_int"); switch (cached_result_type) { - case REAL_RESULT: - { - double value=args[0]->val(); - update_hash((void*) &value,sizeof(value), REAL_RESULT); - return (longlong)value; - } - case INT_RESULT: - { - longlong value=args[0]->val_int(); - update_hash((void*) &value,sizeof(longlong),INT_RESULT); - return value; - } + case REAL_RESULT: return (longlong)native_val(); break; + case INT_RESULT: return native_val_int(); break; case STRING_RESULT: { - char buffer[MAX_FIELD_WIDTH]; - String tmp(buffer,sizeof(buffer)); - String *res=args[0]->val_str(&tmp); - if (!res) // Null value - update_hash((void*) 0,0,STRING_RESULT); - else - update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); - return strtoull(res->c_ptr(),NULL,10); + String *res= native_val_str(); + return !res ? 0 : strtoull(res->c_ptr(),NULL,10); } } DBUG_RETURN(args[0]->val_int()); @@ -2002,33 +1981,11 @@ Item_func_set_user_var::val_str(String *str) { DBUG_ENTER("Item_func_set_user_var::val_str"); switch (cached_result_type) { - case REAL_RESULT: - { - double value=args[0]->val(); - update_hash((void*) &value,sizeof(value), REAL_RESULT); - str->set(value,decimals); - return str; + case REAL_RESULT: str->set(native_val(),decimals); break; + case INT_RESULT: str->set(native_val_int(),decimals); break; + case STRING_RESULT: str= native_val_str(str); break; } - case INT_RESULT: - { - longlong value=args[0]->val_int(); - update_hash((void*) &value,sizeof(longlong),INT_RESULT); - str->set(value,decimals); - return str; - } - case STRING_RESULT: - { - char buffer[MAX_FIELD_WIDTH]; - String tmp(buffer,sizeof(buffer)); - String *res=args[0]->val_str(&tmp); - if (!res) // Null value - update_hash((void*) 0,0,STRING_RESULT); - else - update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); - return res; - } - } - DBUG_RETURN(args[0]->val_str(str)); + DBUG_RETURN(str); } diff --git a/sql/item_func.h b/sql/item_func.h index bccd0ca7adb..4dada28f87b 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -889,6 +889,11 @@ class Item_func_set_user_var :public Item_func LEX_STRING name; user_var_entry *entry; + double native_val(); + longlong native_val_int(); + String *native_val_str(String *str); + String *native_val_str(); + public: Item_func_set_user_var(LEX_STRING a,Item *b): Item_func(b), name(a) {} double val(); From 7aae6ba45d70c8886f8c8274199d82b4e5a4b7d3 Mon Sep 17 00:00:00 2001 From: "greg@mysql.com" <> Date: Tue, 30 Sep 2003 23:14:07 -0400 Subject: [PATCH 52/81] New build directory files - NetWare only, as used in 4.0.15 --- netware/BUILD/compile-netware-max | 23 ++++++++++++++++ netware/BUILD/compile-netware-max-debug | 23 ++++++++++++++++ netware/BUILD/compile-netware-src | 36 +++++++++++++++++++++++++ netware/BUILD/knetware.imp | 2 ++ netware/BUILD/openssl.imp | 9 +++++++ 5 files changed, 93 insertions(+) create mode 100644 netware/BUILD/compile-netware-max create mode 100644 netware/BUILD/compile-netware-max-debug create mode 100644 netware/BUILD/compile-netware-src create mode 100644 netware/BUILD/knetware.imp create mode 100644 netware/BUILD/openssl.imp diff --git a/netware/BUILD/compile-netware-max b/netware/BUILD/compile-netware-max new file mode 100644 index 00000000000..ec737d4615c --- /dev/null +++ b/netware/BUILD/compile-netware-max @@ -0,0 +1,23 @@ +#! /bin/sh + +# debug +#set -x + +# stop on errors +set -e + + +path=`dirname $0` +. $path/compile-netware-START + +suffix="max" + +extra_configs=" \ + --with-innodb \ + --with-embedded-server \ + --with-openssl \ + " + +. $path/compile-netware-END + + diff --git a/netware/BUILD/compile-netware-max-debug b/netware/BUILD/compile-netware-max-debug new file mode 100644 index 00000000000..ea3553ae6e1 --- /dev/null +++ b/netware/BUILD/compile-netware-max-debug @@ -0,0 +1,23 @@ +#! /bin/sh + +# debug +#set -x + +# stop on errors +set -e + +path=`dirname $0` +. $path/compile-netware-START + +suffix="max-debug" + +extra_configs=" \ + --with-innodb \ + --with-debug=full \ + --with-embedded-server \ + --with-openssl \ + " + +. $path/compile-netware-END + + diff --git a/netware/BUILD/compile-netware-src b/netware/BUILD/compile-netware-src new file mode 100644 index 00000000000..df7f6fcdd1a --- /dev/null +++ b/netware/BUILD/compile-netware-src @@ -0,0 +1,36 @@ +#! /bin/sh + +# debug +#set -x + +# stop on errors +set -e + +if test ! -r ./sql/mysqld.cc +then + echo "you must start from the top source directory" + exit 1 +fi + +path=`dirname $0` + +# clean +if test -e "Makefile"; then + make -k clean; + make -k distclean; +fi + +# remove other files +rm -f NEW-RPMS/* +rm -f */.deps/*.P +rm -rf Makefile.in.bk + +# zip source +files=`pwd | sed -e "s/.*\\\(mysql-.*\)/\1/"` +file=`pwd | sed -e "s/.*\\mysql-\(.*\)/mysql-src-\1-pc-netware-i686/"` +cd .. +if test -e "$file.zip"; then rm -f $file.zip; fi +zip -r $file.zip $files -x \*.zip -x \*.tar.gz +if test -e "./$files/$file.zip"; then mv -f ./$files/$file.zip ./$files/$file.zip.old; fi +mv -f $file.zip ./$files/$file.zip + diff --git a/netware/BUILD/knetware.imp b/netware/BUILD/knetware.imp new file mode 100644 index 00000000000..d9a9372b34f --- /dev/null +++ b/netware/BUILD/knetware.imp @@ -0,0 +1,2 @@ +kYieldIfTimeSliceUp + diff --git a/netware/BUILD/openssl.imp b/netware/BUILD/openssl.imp new file mode 100644 index 00000000000..8972ff5d58c --- /dev/null +++ b/netware/BUILD/openssl.imp @@ -0,0 +1,9 @@ +WS2_32_shutdown +WS2_32_closesocket +WSASetLastError +WS2_32_recv +WSASetLastError +WS2_32_send +WSAGetLastError +GetProcessSwitchCount +RunningProcess From 761c7906361acdf5f660aa99754a7fab5884c88c Mon Sep 17 00:00:00 2001 From: "vva@eagle.mysql.r18.ru" <> Date: Wed, 1 Oct 2003 12:00:08 -0400 Subject: [PATCH 53/81] turn Item_func_set_user_var ::native_val, ::native_val_int and native_val_str into inline --- sql/item_func.cc | 32 -------------------------------- sql/item_func.h | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/sql/item_func.cc b/sql/item_func.cc index 2105df6156c..4e1cc3865ba 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1899,38 +1899,6 @@ void Item_func_set_user_var::update_hash(void *ptr, uint length, return; } -double Item_func_set_user_var::native_val() -{ - double value=args[0]->val(); - update_hash((void*) &value,sizeof(value), REAL_RESULT); - return value; -} - -longlong Item_func_set_user_var::native_val_int() -{ - longlong value=args[0]->val_int(); - update_hash((void*) &value,sizeof(longlong),INT_RESULT); - return value; -} - -String *Item_func_set_user_var::native_val_str(String *str) -{ - char buffer[MAX_FIELD_WIDTH]; - String *res=args[0]->val_str(str); - if (!res) // Null value - update_hash((void*) 0,0,STRING_RESULT); - else - update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); - return res; -} - -String *Item_func_set_user_var::native_val_str() -{ - char buffer[MAX_FIELD_WIDTH]; - String tmp(buffer,sizeof(buffer)); - return native_val_str(&tmp); -} - bool Item_func_set_user_var::update() { diff --git a/sql/item_func.h b/sql/item_func.h index 4dada28f87b..ffc587c3cf3 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -889,10 +889,37 @@ class Item_func_set_user_var :public Item_func LEX_STRING name; user_var_entry *entry; - double native_val(); - longlong native_val_int(); - String *native_val_str(String *str); - String *native_val_str(); + double native_val() + { + double value=args[0]->val(); + update_hash((void*) &value,sizeof(value), REAL_RESULT); + return value; + } + + longlong native_val_int() + { + longlong value=args[0]->val_int(); + update_hash((void*) &value,sizeof(longlong),INT_RESULT); + return value; + } + + String *native_val_str(String *str) + { + char buffer[MAX_FIELD_WIDTH]; + String *res=args[0]->val_str(str); + if (!res) // Null value + update_hash((void*) 0,0,STRING_RESULT); + else + update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); + return res; + } + + String *native_val_str() + { + char buffer[MAX_FIELD_WIDTH]; + String tmp(buffer,sizeof(buffer)); + return native_val_str(&tmp); + } public: Item_func_set_user_var(LEX_STRING a,Item *b): Item_func(b), name(a) {} From 301a30cbddce94e0ade9259dcaba49213a83e0a5 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Wed, 1 Oct 2003 18:40:27 +0200 Subject: [PATCH 54/81] Follow-up of an IRC discussion today. Declaring ignore_log_space_limit volatile, and a comment to explain why. --- sql/slave.h | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/sql/slave.h b/sql/slave.h index f61891acc91..2b1af08fb7a 100644 --- a/sql/slave.h +++ b/sql/slave.h @@ -170,10 +170,32 @@ typedef struct st_relay_log_info /* Handling of the relay_log_space_limit optional constraint. ignore_log_space_limit is used to resolve a deadlock between I/O and SQL - threads, it makes the I/O thread temporarily forget about the constraint + threads, the SQL thread sets it to unblock the I/O thread and make it + temporarily forget about the constraint. It is declared volatile because we + have this loop in the I/O thread (slave.cc): + while (rli->log_space_limit < rli->log_space_total && + !(slave_killed=io_slave_killed(thd,mi)) && + !rli->ignore_log_space_limit) + pthread_cond_wait(&rli->log_space_cond, &rli->log_space_lock); + According to Monty, on some systems pthread_cond_wait() could be inline, + and so the loop be optimized by the compiler, so rli->ignore_log_space_limit + could be considered constant and the loop never ends, even if the SQL thread + has set rli->ignore_log_space_limit to 1 (and called + pthread_cond_broadcast()) to break the loop in the I/O thread. + By declaring it volatile, we are sure that the variable will not be + considered constant and that the loop can be broken. + This is the same for all bool variables used by a thread to inform another + thread that something has changed: thd->killed, rli->abort_slave, + MYSQL_LOG::log_type; they are all volatile. + Quoting: + while (a>0) { wait_for_condition } + here a should be volatile ? + serg: in most system no, but on some yes + on what systems ? + On any system where pthread_mutex is a macro. */ ulonglong log_space_limit,log_space_total; - bool ignore_log_space_limit; + volatile bool ignore_log_space_limit; /* InnoDB internally stores the master log position it has processed From 9f4d29c3f35796a8e6e195b8e081361388b6b9f4 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Thu, 2 Oct 2003 16:25:47 +0200 Subject: [PATCH 55/81] Reverting changeset 1.1590 --- sql/slave.h | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/sql/slave.h b/sql/slave.h index 2b1af08fb7a..778ddf2ec72 100644 --- a/sql/slave.h +++ b/sql/slave.h @@ -171,31 +171,10 @@ typedef struct st_relay_log_info Handling of the relay_log_space_limit optional constraint. ignore_log_space_limit is used to resolve a deadlock between I/O and SQL threads, the SQL thread sets it to unblock the I/O thread and make it - temporarily forget about the constraint. It is declared volatile because we - have this loop in the I/O thread (slave.cc): - while (rli->log_space_limit < rli->log_space_total && - !(slave_killed=io_slave_killed(thd,mi)) && - !rli->ignore_log_space_limit) - pthread_cond_wait(&rli->log_space_cond, &rli->log_space_lock); - According to Monty, on some systems pthread_cond_wait() could be inline, - and so the loop be optimized by the compiler, so rli->ignore_log_space_limit - could be considered constant and the loop never ends, even if the SQL thread - has set rli->ignore_log_space_limit to 1 (and called - pthread_cond_broadcast()) to break the loop in the I/O thread. - By declaring it volatile, we are sure that the variable will not be - considered constant and that the loop can be broken. - This is the same for all bool variables used by a thread to inform another - thread that something has changed: thd->killed, rli->abort_slave, - MYSQL_LOG::log_type; they are all volatile. - Quoting: - while (a>0) { wait_for_condition } - here a should be volatile ? - serg: in most system no, but on some yes - on what systems ? - On any system where pthread_mutex is a macro. + temporarily forget about the constraint. */ ulonglong log_space_limit,log_space_total; - volatile bool ignore_log_space_limit; + bool ignore_log_space_limit; /* InnoDB internally stores the master log position it has processed From 989ca397b22f5296b71ad02ad8ae39d112b5de73 Mon Sep 17 00:00:00 2001 From: "monty@mishka.mysql.fi" <> Date: Fri, 3 Oct 2003 00:40:27 +0300 Subject: [PATCH 56/81] Optimized code for setting user variables with := and fixed some bugs in old code (Bug #1194) Use forced close of socket to make mysqld shutdown faster when used under valgrind --- mysql-test/mysql-test-run.sh | 4 +- mysql-test/r/user_var.result | 33 ++++- mysql-test/t/user_var.test | 19 ++- sql/item_func.cc | 244 ++++++++++++++++++++--------------- sql/item_func.h | 40 +----- sql/log.cc | 6 +- sql/mysqld.cc | 12 +- sql/sql_class.h | 5 + 8 files changed, 207 insertions(+), 156 deletions(-) diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 498c7ccf5ed..93efb4a8cb6 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -337,8 +337,8 @@ while test $# -gt 0; do ;; --valgrind) VALGRIND="valgrind --alignment=8 --leak-check=yes --num-callers=16" - EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-safemalloc" - EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-safemalloc" + EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-safemalloc --skip-bdb" + EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-safemalloc --skip-bdb" SLEEP_TIME_AFTER_RESTART=10 SLEEP_TIME_FOR_DELETE=120 USE_RUNNING_SERVER="" diff --git a/mysql-test/r/user_var.result b/mysql-test/r/user_var.result index d94ab6f57c3..d7c41d5dbc4 100644 --- a/mysql-test/r/user_var.result +++ b/mysql-test/r/user_var.result @@ -30,6 +30,7 @@ explain select * from t1 where i=@vv1; table type possible_keys key key_len ref rows Extra t1 ref i i 4 const 1 Using where drop table t1,t2; +set @a=0,@b=0; select @a:=10, @b:=1, @a > @b, @a < @b; @a:=10 @b:=1 @a > @b @a < @b 10 1 1 0 @@ -38,18 +39,18 @@ select @a:="10", @b:="1", @a > @b, @a < @b; 10 1 1 0 select @a:=10, @b:=2, @a > @b, @a < @b; @a:=10 @b:=2 @a > @b @a < @b -10 2 1 0 +10 2 0 1 select @a:="10", @b:="2", @a > @b, @a < @b; @a:="10" @b:="2" @a > @b @a < @b -10 2 0 1 +10 2 1 0 select @a:=1; @a:=1 1 select @a, @a:=1; @a @a:=1 1 1 -create table t1 (id int); -insert into t1 values (1); +create table t1 (id int, d double, c char(10)); +insert into t1 values (1,2.0, "test"); select @c:=0; @c:=0 0 @@ -70,7 +71,29 @@ select @c:=0; select @c:=@c+1; @c:=@c+1 1 +select @d,(@d:=id),@d from t1; +@d (@d:=id) @d +NULL 1 1 +select @e,(@e:=d),@e from t1; +@e (@e:=d) @e +NULL 2 2 +select @f,(@f:=c),@f from t1; +@f (@f:=c) @f +NULL test test +set @g=1; +select @g,(@g:=c),@g from t1; +@g (@g:=c) @g +1 test test +select @c, @d, @e, @f; +@c @d @e @f +1 1 2 test +select @d:=id, @e:=id, @f:=id, @g:=@id from t1; +@d:=id @e:=id @f:=id @g:=@id +1 1 1 NULL +select @c, @d, @e, @f, @g; +@c @d @e @f @g +1 1 1 1 NULL drop table t1; select @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b, @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b; @a:=10 @b:=2 @a>@b @a:="10" @b:="2" @a>@b @a:=10 @b:=2 @a>@b @a:="10" @b:="2" @a>@b -10 2 1 10 2 0 10 2 1 10 2 0 +10 2 1 10 2 1 10 2 1 10 2 1 diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test index 1e466c149bb..56528405a2a 100644 --- a/mysql-test/t/user_var.test +++ b/mysql-test/t/user_var.test @@ -19,8 +19,11 @@ explain select * from t1 where i=@vv1; drop table t1,t2; # Check types of variables +set @a=0,@b=0; select @a:=10, @b:=1, @a > @b, @a < @b; +# Note that here a and b will be avaluated as number select @a:="10", @b:="1", @a > @b, @a < @b; +# Note that here a and b will be avaluated as strings select @a:=10, @b:=2, @a > @b, @a < @b; select @a:="10", @b:="2", @a > @b, @a < @b; @@ -28,8 +31,8 @@ select @a:="10", @b:="2", @a > @b, @a < @b; select @a:=1; select @a, @a:=1; -create table t1 (id int); -insert into t1 values (1); +create table t1 (id int, d double, c char(10)); +insert into t1 values (1,2.0, "test"); select @c:=0; update t1 SET id=(@c:=@c+1); select @c; @@ -38,7 +41,15 @@ update t1 set id=(@c:=@c+1); select @c; select @c:=0; select @c:=@c+1; +select @d,(@d:=id),@d from t1; +select @e,(@e:=d),@e from t1; +select @f,(@f:=c),@f from t1; +set @g=1; +select @g,(@g:=c),@g from t1; +select @c, @d, @e, @f; +select @d:=id, @e:=id, @f:=id, @g:=@id from t1; +select @c, @d, @e, @f, @g; drop table t1; -# just fof fun :) -select @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b, @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b; \ No newline at end of file +# just for fun :) +select @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b, @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b; diff --git a/sql/item_func.cc b/sql/item_func.cc index 4e1cc3865ba..fd6d17d0cf2 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1835,8 +1835,8 @@ bool Item_func_set_user_var::fix_fields(THD *thd,TABLE_LIST *tables) if (Item_func::fix_fields(thd,tables) || !(entry= get_variable(&thd->user_vars, name, 1))) return 1; - entry->type= cached_result_type; - entry->update_query_id=thd->query_id; + entry->update_query_id= thd->query_id; + cached_result_type= args[0]->result_type(); return 0; } @@ -1847,10 +1847,10 @@ Item_func_set_user_var::fix_length_and_dec() maybe_null=args[0]->maybe_null; max_length=args[0]->max_length; decimals=args[0]->decimals; - cached_result_type=args[0]->result_type(); } -void Item_func_set_user_var::update_hash(void *ptr, uint length, + +bool Item_func_set_user_var::update_hash(const void *ptr, uint length, Item_result type) { if ((null_value=args[0]->null_value)) @@ -1863,6 +1863,8 @@ void Item_func_set_user_var::update_hash(void *ptr, uint length, } else { + if (type == STRING_RESULT) + length++; // Store strings with end \0 if (length <= extra_size) { /* Save value in value struct */ @@ -1887,73 +1889,151 @@ void Item_func_set_user_var::update_hash(void *ptr, uint length, goto err; } } + if (type == STRING_RESULT) + { + length--; // Fix length change above + entry->value[length]= 0; // Store end \0 + } memcpy(entry->value,ptr,length); entry->length= length; entry->type=type; } - return; + return 0; err: current_thd->fatal_error=1; // Probably end of memory null_value=1; - return; + return 1; // Error } + +/* Get the value of a variable as a double */ + +double user_var_entry::val(my_bool *null_value) +{ + if ((*null_value= (value == 0))) + return 0.0; + + switch (type) { + case REAL_RESULT: + return *(double*) value; + case INT_RESULT: + return (double) *(longlong*) value; + case STRING_RESULT: + return atof(value); // This is null terminated + } + return 0.0; // Impossible +} + + +/* Get the value of a variable as an integer */ + +longlong user_var_entry::val_int(my_bool *null_value) +{ + if ((*null_value= (value == 0))) + return LL(0); + + switch (type) { + case REAL_RESULT: + return (longlong) *(double*) value; + case INT_RESULT: + return *(longlong*) value; + case STRING_RESULT: + return strtoull(value,NULL,10); // String is null terminated + } + return LL(0); // Impossible +} + + +/* Get the value of a variable as a string */ + +String *user_var_entry::val_str(my_bool *null_value, String *str, + uint decimals) +{ + if ((*null_value= (value == 0))) + return (String*) 0; + + switch (type) { + case REAL_RESULT: + str->set(*(double*) value, decimals); + break; + case INT_RESULT: + str->set(*(longlong*) value); + break; + case STRING_RESULT: + if (str->copy(value, length)) + str= 0; // EOM error + } + return(str); +} + + +/* + This functions is invoked on SET @variable or @variable:= expression. + + SYNOPSIS + Item_func_set_user_var::update() + + NOTES + We have to store the expression as such in the variable, independent of + the value method used by the user + + RETURN + 0 Ok + 1 EOM Error + +*/ + + bool Item_func_set_user_var::update() { + bool res; DBUG_ENTER("Item_func_set_user_var::update"); - switch (cached_result_type) { - case REAL_RESULT: (void)native_val(); break; - case INT_RESULT: (void)native_val_int(); break; - case STRING_RESULT: (void)native_val_str(); break; - } - DBUG_RETURN(current_thd->fatal_error); -} + LINT_INIT(res); - -double -Item_func_set_user_var::val() -{ - DBUG_ENTER("Item_func_set_user_var::val"); switch (cached_result_type) { - case REAL_RESULT: return native_val(); break; - case INT_RESULT: return native_val_int(); break; - case STRING_RESULT: + case REAL_RESULT: { - String *res= native_val_str(); - return !res ? 0 : atof(res->c_ptr()); + double value=args[0]->val(); + res= update_hash((void*) &value,sizeof(value), REAL_RESULT); + break; } - } - DBUG_RETURN(args[0]->val()); -} - -longlong -Item_func_set_user_var::val_int() -{ - DBUG_ENTER("Item_func_set_user_var::val_int"); - switch (cached_result_type) { - case REAL_RESULT: return (longlong)native_val(); break; - case INT_RESULT: return native_val_int(); break; - case STRING_RESULT: + case INT_RESULT: { - String *res= native_val_str(); - return !res ? 0 : strtoull(res->c_ptr(),NULL,10); + longlong value=args[0]->val_int(); + res= update_hash((void*) &value,sizeof(longlong), INT_RESULT); + break; } + case STRING_RESULT: + String *tmp; + tmp=args[0]->val_str(&value); + if (!tmp) // Null value + res= update_hash((void*) 0,0,STRING_RESULT); + else + res= update_hash((void*) tmp->ptr(),tmp->length(),STRING_RESULT); + break; } - DBUG_RETURN(args[0]->val_int()); + DBUG_RETURN(res); } -String * -Item_func_set_user_var::val_str(String *str) + +double Item_func_set_user_var::val() { - DBUG_ENTER("Item_func_set_user_var::val_str"); - switch (cached_result_type) { - case REAL_RESULT: str->set(native_val(),decimals); break; - case INT_RESULT: str->set(native_val_int(),decimals); break; - case STRING_RESULT: str= native_val_str(str); break; - } - DBUG_RETURN(str); + update(); // Store expression + return entry->val(&null_value); +} + +longlong Item_func_set_user_var::val_int() +{ + update(); // Store expression + return entry->val_int(&null_value); +} + +String *Item_func_set_user_var::val_str(String *str) +{ + update(); // Store expression + return entry->val_str(&null_value, str, decimals); } @@ -1967,75 +2047,30 @@ void Item_func_set_user_var::print(String *str) } -user_var_entry *Item_func_get_user_var::get_entry() -{ - if (!var_entry || ! var_entry->value) - { - null_value=1; - return 0; - } - null_value=0; - return var_entry; -} - String * Item_func_get_user_var::val_str(String *str) { DBUG_ENTER("Item_func_get_user_var::val_str"); - user_var_entry *entry=get_entry(); - if (!entry) - return NULL; - switch (entry->type) { - case REAL_RESULT: - str->set(*(double*) entry->value,decimals); - break; - case INT_RESULT: - str->set(*(longlong*) entry->value); - break; - case STRING_RESULT: - if (str->copy(entry->value, entry->length-1)) - { - null_value=1; - return NULL; - } - break; - } - DBUG_RETURN(str); + if (!var_entry) + return (String*) 0; // No such variable + DBUG_RETURN(var_entry->val_str(&null_value, str, decimals)); } double Item_func_get_user_var::val() { - user_var_entry *entry=get_entry(); - if (!entry) - return 0.0; - switch (entry->type) { - case REAL_RESULT: - return *(double*) entry->value; - case INT_RESULT: - return (double) *(longlong*) entry->value; - case STRING_RESULT: - return atof(entry->value); // This is null terminated - } - return 0.0; // Impossible + if (!var_entry) + return 0.0; // No such variable + return (var_entry->val(&null_value)); } longlong Item_func_get_user_var::val_int() { - user_var_entry *entry=get_entry(); - if (!entry) - return LL(0); - switch (entry->type) { - case REAL_RESULT: - return (longlong) *(double*) entry->value; - case INT_RESULT: - return *(longlong*) entry->value; - case STRING_RESULT: - return strtoull(entry->value,NULL,10); // String is null terminated - } - return LL(0); // Impossible + if (!var_entry) + return LL(0); // No such variable + return (var_entry->val_int(&null_value)); } @@ -2045,12 +2080,15 @@ void Item_func_get_user_var::fix_length_and_dec() maybe_null=1; decimals=NOT_FIXED_DEC; max_length=MAX_BLOB_WIDTH; - var_entry= get_variable(&thd->user_vars, name, 0); + if (!(var_entry= get_variable(&thd->user_vars, name, 0))) + null_value= 1; } bool Item_func_get_user_var::const_item() const -{ return var_entry && current_thd->query_id != var_entry->update_query_id; } +{ + return var_entry && current_thd->query_id != var_entry->update_query_id; +} enum Item_result Item_func_get_user_var::result_type() const diff --git a/sql/item_func.h b/sql/item_func.h index ffc587c3cf3..09aba9694dd 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -888,45 +888,16 @@ class Item_func_set_user_var :public Item_func enum Item_result cached_result_type; LEX_STRING name; user_var_entry *entry; - - double native_val() - { - double value=args[0]->val(); - update_hash((void*) &value,sizeof(value), REAL_RESULT); - return value; - } - - longlong native_val_int() - { - longlong value=args[0]->val_int(); - update_hash((void*) &value,sizeof(longlong),INT_RESULT); - return value; - } - - String *native_val_str(String *str) - { - char buffer[MAX_FIELD_WIDTH]; - String *res=args[0]->val_str(str); - if (!res) // Null value - update_hash((void*) 0,0,STRING_RESULT); - else - update_hash(res->c_ptr(),res->length()+1,STRING_RESULT); - return res; - } - - String *native_val_str() - { - char buffer[MAX_FIELD_WIDTH]; - String tmp(buffer,sizeof(buffer)); - return native_val_str(&tmp); - } + char buffer[MAX_FIELD_WIDTH]; + String value; public: - Item_func_set_user_var(LEX_STRING a,Item *b): Item_func(b), name(a) {} + Item_func_set_user_var(LEX_STRING a,Item *b): + Item_func(b), name(a), value(buffer,sizeof(buffer)) {} double val(); longlong val_int(); String *val_str(String *str); - void update_hash(void *ptr, uint length, enum Item_result type); + bool update_hash(const void *ptr, uint length, enum Item_result type); bool update(); enum Item_result result_type () const { return cached_result_type; } bool fix_fields(THD *thd,struct st_table_list *tables); @@ -945,7 +916,6 @@ class Item_func_get_user_var :public Item_func public: Item_func_get_user_var(LEX_STRING a): Item_func(), name(a) {} - user_var_entry *get_entry(); double val(); longlong val_int(); String *val_str(String* str); diff --git a/sql/log.cc b/sql/log.cc index 6307ac0c11e..33ca82aa14f 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1315,9 +1315,9 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache, bool commit_or_rollback) /* Now this Query_log_event has artificial log_pos 0. It must be adjusted to reflect the real position in the log. Not doing it would confuse the - slave: it would prevent this one from knowing where he is in the master's - binlog, which would result in wrong positions being shown to the user, - MASTER_POS_WAIT undue waiting etc. + slave: it would prevent this one from knowing where he is in the + master's binlog, which would result in wrong positions being shown to + the user, MASTER_POS_WAIT undue waiting etc. */ qinfo.set_log_pos(this); if (qinfo.write(&log_file)) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index bcf115feccc..1bb51ea8e91 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -55,7 +55,9 @@ char pstack_file_name[80]; #endif /* __linux__ */ -#if defined(HAVE_DEC_3_2_THREADS) || defined(SIGNALS_DONT_BREAK_READ) +/* We have HAVE_purify below as this speeds up the shutdown of MySQL */ + +#if defined(HAVE_DEC_3_2_THREADS) || defined(SIGNALS_DONT_BREAK_READ) || defined(HAVE_purify) && defined(__linux__) #define HAVE_CLOSE_SERVER_SOCK 1 #endif @@ -534,12 +536,14 @@ static void close_connections(void) struct timespec abstime; int error; LINT_INIT(error); + DBUG_PRINT("info",("Waiting for select_thread")); + #ifndef DONT_USE_THR_ALARM if (pthread_kill(select_thread,THR_CLIENT_ALARM)) break; // allready dead #endif set_timespec(abstime, 2); - for (uint tmp=0 ; tmp < 10 ; tmp++) + for (uint tmp=0 ; tmp < 10 && select_thread_in_use; tmp++) { error=pthread_cond_timedwait(&COND_thread_count,&LOCK_thread_count, &abstime); @@ -700,8 +704,8 @@ static void close_server_sock() VOID(shutdown(tmp_sock,2)); #if defined(__NETWARE__) /* - The following code is disabled for normal systems as it causes MySQL - AIX 4.3 during shutdown (not tested, but likely) + The following code is disabled for normal systems as it may cause MySQL + to hang on AIX 4.3 during shutdown */ DBUG_PRINT("info",("calling closesocket on unix/IP socket")); VOID(closesocket(tmp_sock)); diff --git a/sql/sql_class.h b/sql/sql_class.h index 8aa3d48bc35..2ed9cb7b877 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -783,8 +783,13 @@ class user_var_entry char *value; ulong length, update_query_id; Item_result type; + + double val(my_bool *null_value); + longlong val_int(my_bool *null_value); + String *val_str(my_bool *null_value, String *str, uint decimals); }; + /* Class for unique (removing of duplicates) */ class Unique :public Sql_alloc From 1ba7e941a6fc39b3370e248a7597c0f8e058975c Mon Sep 17 00:00:00 2001 From: "paul@ice.snake.net" <> Date: Fri, 3 Oct 2003 11:42:37 -0500 Subject: [PATCH 57/81] Minor edits. --- BitKeeper/etc/logging_ok | 1 + man/mysqlaccess.1 | 8 ++++---- man/mysqldump.1 | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 9fc395e6813..4c1777f1434 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -80,6 +80,7 @@ nick@mysql.com nick@nick.leippe.com paul@central.snake.net paul@ice.local +paul@ice.snake.net paul@teton.kitebird.com pem@mysql.com peter@linux.local diff --git a/man/mysqlaccess.1 b/man/mysqlaccess.1 index fc7c185e050..95e392b1194 100644 --- a/man/mysqlaccess.1 +++ b/man/mysqlaccess.1 @@ -90,10 +90,10 @@ copy grant\-rules from temporary tables to grant\-tables .BR \-\-rollback undo the last changes to the grant\-tables. .SH NOTE - + At least the user and the db must be given (even with wildcards) - + If no host is given, `localhost' is assumed - + Wilcards (*,?,%,_) are allowed for host, user and db, but be sure - to escape them from your shell!! (ie type \* or '*') +At least the user and the db must be given (even with wildcards) +If no host is given, `localhost' is assumed +Wildcards (*,?,%,_) are allowed for host, user and db, but be sure +to escape them from your shell!! (i.e., type \\* or '*') .SH "SEE ALSO" isamchk (1), isamlog (1), diff --git a/man/mysqldump.1 b/man/mysqldump.1 index af50366f24c..6907fcc8777 100644 --- a/man/mysqldump.1 +++ b/man/mysqldump.1 @@ -64,7 +64,7 @@ supports by executing .TP .BR \-A | \-\-all\-databases Dump all the databases. This will be same as -.BR\-\-databases +.BR \-\-databases with all databases selected. .TP .BR \-a | \-\-all From 52ae1609ebfd4bd8f0cec4f6c2e53b45889a7834 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Fri, 3 Oct 2003 22:13:01 +0200 Subject: [PATCH 58/81] When the I/O thread was stopped while copying a long transaction, and restarted, Rotate_log_event::exec_event() believed that the relay log was corrupted. Fixed it by moving the test for corruption to Start_log_event::exec_event(). Changed Rotate_log_event::exec_event() to not increment positions when the event is seen in the middle of a transaction. I did a separate commit in 4.1 (so this should not be merged to 4.0) because code is a bit different in 4.1. A test to see if the slave detects when the master died while writing a transaction to the binlog (uses a forged truncated binlog I made). --- mysql-test/r/rpl_trunc_binlog.result | 14 ++++++ mysql-test/std_data/trunc_binlog.001 | Bin 0 -> 119 bytes mysql-test/t/rpl_trunc_binlog.test | 22 +++++++++ sql/log_event.cc | 66 +++++++++++++-------------- 4 files changed, 69 insertions(+), 33 deletions(-) create mode 100644 mysql-test/r/rpl_trunc_binlog.result create mode 100644 mysql-test/std_data/trunc_binlog.001 create mode 100644 mysql-test/t/rpl_trunc_binlog.test diff --git a/mysql-test/r/rpl_trunc_binlog.result b/mysql-test/r/rpl_trunc_binlog.result new file mode 100644 index 00000000000..6d2158eedfe --- /dev/null +++ b/mysql-test/r/rpl_trunc_binlog.result @@ -0,0 +1,14 @@ +slave stop; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +slave start; +stop slave; +flush logs; +reset slave; +start slave; +show slave status; +Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space +127.0.0.1 root MASTER_PORT 1 master-bin.002 4 slave-relay-bin.002 161 master-bin.001 Yes No 0 there is an unfinished transaction in the relay log (could find neither COMMIT nor ROLLBACK in the relay log); it could be that the master died while writing the transaction to its binary log. Now the slave is rolling back the transaction. 0 79 317 +reset master; diff --git a/mysql-test/std_data/trunc_binlog.001 b/mysql-test/std_data/trunc_binlog.001 new file mode 100644 index 0000000000000000000000000000000000000000..2c2b4ec6ce4c40c23d347e46132170d2736db674 GIT binary patch literal 119 zcmeyDl$p1Ecdb1mBLf42HxRP`F#`iLgNdGjo}rm;N@`MRx^7N>I#?Jl0WxMk5Ho>{ Z(g0$AuySUoCZNG3sl_D>POk2regKU)5sm-= literal 0 HcmV?d00001 diff --git a/mysql-test/t/rpl_trunc_binlog.test b/mysql-test/t/rpl_trunc_binlog.test new file mode 100644 index 00000000000..efdc3012471 --- /dev/null +++ b/mysql-test/t/rpl_trunc_binlog.test @@ -0,0 +1,22 @@ +# We are testing if a binlog which contains BEGIN but not COMMIT (the master did +# while writing the transaction to the binlog) triggers an error on slave. +# So we use such a truncated binlog and simulate that the master restarted after +# this. + +source include/master-slave.inc; + +connection slave; +stop slave; +connection master; +flush logs; +system mv -f var/log/master-bin.001 var/log/master-bin.002; +system cp std_data/trunc_binlog.001 var/log/master-bin.001; +connection slave; +reset slave; +start slave; +# can't sync_with_master so we must sleep +sleep 3; +--replace_result $MASTER_MYPORT MASTER_PORT +show slave status; +connection master; +reset master; diff --git a/sql/log_event.cc b/sql/log_event.cc index 292e371e4dd..18d1624dfde 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2091,6 +2091,23 @@ int Start_log_event::exec_event(struct st_relay_log_info* rli) */ close_temporary_tables(thd); cleanup_load_tmpdir(); + /* + As a transaction NEVER spans on 2 or more binlogs: + if we have an active transaction at this point, the master died while + writing the transaction to the binary log, i.e. while flushing the binlog + cache to the binlog. As the write was started, the transaction had been + committed on the master, so we lack of information to replay this + transaction on the slave; all we can do is stop with error. + */ + if (rli->inside_transaction) + { + slave_print_error(rli, 0, + "there is an unfinished transaction in the relay log \ +(could find neither COMMIT nor ROLLBACK in the relay log); it could be that \ +the master died while writing the transaction to its binary log. Now the slave \ +is rolling back the transaction."); + return(1); + } break; /* Now the older formats; in that case load_tmpdir is cleaned up by the I/O @@ -2166,51 +2183,34 @@ int Stop_log_event::exec_event(struct st_relay_log_info* rli) We can't rotate the slave as this will cause infinitive rotations in a A -> B -> A setup. - NOTES - As a transaction NEVER spans on 2 or more binlogs: - if we have an active transaction at this point, the master died while - writing the transaction to the binary log, i.e. while flushing the binlog - cache to the binlog. As the write was started, the transaction had been - committed on the master, so we lack of information to replay this - transaction on the slave; all we can do is stop with error. - If we didn't detect it, then positions would start to become garbage (as we - are incrementing rli->relay_log_pos whereas we are in a transaction: the new - rli->relay_log_pos will be - relay_log_pos of the BEGIN + size of the Rotate event = garbage. - - Since MySQL 4.0.14, the master ALWAYS sends a Rotate event when it starts - sending the next binlog, so we are sure to receive a Rotate event just - after the end of the "dead master"'s binlog; so this exec_event() is the - right place to catch the problem. If we would wait until - Start_log_event::exec_event() it would be too late, rli->relay_log_pos would - already be garbage. - RETURN VALUES 0 ok */ int Rotate_log_event::exec_event(struct st_relay_log_info* rli) { - char* log_name = rli->master_log_name; DBUG_ENTER("Rotate_log_event::exec_event"); pthread_mutex_lock(&rli->data_lock); - - if (rli->inside_transaction) + /* + If we are in a transaction: the only normal case is when the I/O thread was + copying a big transaction, then it was stopped and restarted: we have this + in the relay log: + BEGIN + ... + ROTATE (a fake one) + ... + COMMIT or ROLLBACK + In that case, we don't want to touch the coordinates which correspond to the + beginning of the transaction. + */ + if (!rli->inside_transaction) { - slave_print_error(rli, 0, - "there is an unfinished transaction in the relay log \ -(could find neither COMMIT nor ROLLBACK in the relay log); it could be that \ -the master died while writing the transaction to its binary log. Now the slave \ -is rolling back the transaction."); - pthread_mutex_unlock(&rli->data_lock); - DBUG_RETURN(1); + memcpy(rli->master_log_name, new_log_ident, ident_len+1); + rli->master_log_pos= pos; + DBUG_PRINT("info", ("master_log_pos: %d", (ulong) rli->master_log_pos)); } - - memcpy(log_name, new_log_ident, ident_len+1); - rli->master_log_pos = pos; rli->relay_log_pos += get_event_len(); - DBUG_PRINT("info", ("master_log_pos: %d", (ulong) rli->master_log_pos)); pthread_mutex_unlock(&rli->data_lock); pthread_cond_broadcast(&rli->data_cond); flush_relay_log_info(rli); From 795e14871d79398d79db94ed13026a3dc854b0bf Mon Sep 17 00:00:00 2001 From: "vva@eagle.mysql.r18.ru" <> Date: Fri, 3 Oct 2003 17:54:32 -0400 Subject: [PATCH 59/81] Fixed bug #1323 (varchar fields becoming char fields adter create ... select) --- mysql-test/r/create.result | 2 +- sql/sql_select.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index e6192eb6ccb..7b784e3c3ee 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -78,7 +78,7 @@ Field Type Null Key Default Extra x varchar(50) YES NULL describe t2; Field Type Null Key Default Extra -x char(50) YES NULL +x varchar(50) YES NULL drop table t2; create table t2 select now() as a , curtime() as b, curdate() as c , 1+1 as d , 1.0 + 1 as e , 33333333333333333 + 3 as f; describe t2; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 53c41482a36..bffe3cd7968 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -3706,6 +3706,8 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, new_field->field_name=item->name; if (org_field->maybe_null()) new_field->flags&= ~NOT_NULL_FLAG; // Because of outer join + if (org_field->type()==FIELD_TYPE_VAR_STRING) + table->db_create_options|= HA_OPTION_PACK_RECORD; } return new_field; } From 62de13dca3930ceef4909c9313de46d5d2ef0ca8 Mon Sep 17 00:00:00 2001 From: "paul@ice.snake.net" <> Date: Sat, 4 Oct 2003 17:41:17 -0500 Subject: [PATCH 60/81] Ride hobby horse. --- mysql-test/mysql-test-run.sh | 6 +++--- scripts/mysql_install_db.sh | 2 +- support-files/my-small.cnf.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 93efb4a8cb6..b452023dcb9 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -1041,8 +1041,8 @@ EOF mysql_start () { -# We should not start the deamon here as we don't know the argumens -# for the test. Better to let the test start the deamon +# We should not start the daemon here as we don't know the argumens +# for the test. Better to let the test start the daemon # $ECHO "Starting MySQL daemon" # start_master @@ -1364,7 +1364,7 @@ then mysql_install_db start_manager -# Do not automagically start deamons if we are in gdb or running only one test +# Do not automagically start daemons if we are in gdb or running only one test # case if [ -z "$DO_GDB" ] && [ -z "$DO_DDD" ] then diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index 5b8fa4d4113..d66c33c16b1 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -129,7 +129,7 @@ then fi echo "WARNING: The host '$hostname' could not be looked up with resolveip." echo "This probably means that your libc libraries are not 100 % compatible" - echo "with this binary MySQL version. The MySQL deamon, mysqld, should work" + echo "with this binary MySQL version. The MySQL daemon, mysqld, should work" echo "normally with the exception that host name resolving will not work." echo "This means that you should use IP addresses instead of hostnames" echo "when specifying MySQL privileges !" diff --git a/support-files/my-small.cnf.sh b/support-files/my-small.cnf.sh index f9e30da78ac..3c4cafa688f 100644 --- a/support-files/my-small.cnf.sh +++ b/support-files/my-small.cnf.sh @@ -1,7 +1,7 @@ # Example mysql config file for small systems. # # This is for a system with little memory (<= 64M) where MySQL is only used -# from time to time and it's important that the mysqld deamon +# from time to time and it's important that the mysqld daemon # doesn't use much resources. # # You can copy this file to From da57c25159306ea4998324a5830090dacb2679ee Mon Sep 17 00:00:00 2001 From: "heikki@hundin.mysql.fi" <> Date: Mon, 6 Oct 2003 10:46:22 +0300 Subject: [PATCH 61/81] row0mysql.c: Fix bug: if one used the rename trick of ibman section 15.1 to recover a temp table, InnoDB asserted because it tried to lock the data dictionary twice --- innobase/row/row0mysql.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 51231de4d77..03e938baf25 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -1217,7 +1217,9 @@ row_mysql_lock_data_dictionary( /*===========================*/ trx_t* trx) /* in: transaction */ { - ut_a(trx->dict_operation_lock_mode == 0); + ut_ad(trx->dict_operation_lock_mode == 0); /* This is allowed to fail + in a rename #sql... to + rsql... */ /* Serialize data dictionary operations with dictionary mutex: no deadlocks or lock waits can occur then in these operations */ @@ -1236,7 +1238,9 @@ row_mysql_unlock_data_dictionary( /*=============================*/ trx_t* trx) /* in: transaction */ { - ut_a(trx->dict_operation_lock_mode == RW_X_LATCH); + ut_ad(trx->dict_operation_lock_mode == RW_X_LATCH); /* This is allowed + to fail in a rename #sql... to + rsql... */ /* Serialize data dictionary operations with dictionary mutex: no deadlocks can occur then in these operations */ @@ -2190,6 +2194,9 @@ row_rename_table_for_mysql( mem_heap_t* heap = NULL; char** constraints_to_drop = NULL; ulint n_constraints_to_drop = 0; + ibool recovering_temp_table = FALSE; + ulint namelen; + ulint keywordlen; ulint len; ulint i; char buf[10000]; @@ -2226,10 +2233,23 @@ row_rename_table_for_mysql( trx->op_info = (char *) "renaming table"; trx_start_if_not_started(trx); + namelen = ut_strlen(new_name); + + keywordlen = ut_strlen("_recover_innodb_tmp_table"); + + if (namelen >= keywordlen + && 0 == ut_memcmp(new_name + namelen - keywordlen, + (char*)"_recover_innodb_tmp_table", keywordlen)) { + + recovering_temp_table = TRUE; + } + /* Serialize data dictionary operations with dictionary mutex: no deadlocks can occur then in these operations */ - row_mysql_lock_data_dictionary(trx); + if (!recovering_temp_table) { + row_mysql_lock_data_dictionary(trx); + } table = dict_table_get_low(old_name); @@ -2396,8 +2416,10 @@ row_rename_table_for_mysql( } } } -funct_exit: - row_mysql_unlock_data_dictionary(trx); +funct_exit: + if (!recovering_temp_table) { + row_mysql_unlock_data_dictionary(trx); + } if (graph) { que_graph_free(graph); From 216c0a90cd6054eda74b39f42e13ea6a70473b16 Mon Sep 17 00:00:00 2001 From: "heikki@hundin.mysql.fi" <> Date: Mon, 6 Oct 2003 10:50:12 +0300 Subject: [PATCH 62/81] row0mysql.c: Remove unintentional changes in previous push --- innobase/row/row0mysql.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 03e938baf25..468404268f4 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -1217,9 +1217,7 @@ row_mysql_lock_data_dictionary( /*===========================*/ trx_t* trx) /* in: transaction */ { - ut_ad(trx->dict_operation_lock_mode == 0); /* This is allowed to fail - in a rename #sql... to - rsql... */ + ut_a(trx->dict_operation_lock_mode == 0); /* Serialize data dictionary operations with dictionary mutex: no deadlocks or lock waits can occur then in these operations */ @@ -1238,9 +1236,7 @@ row_mysql_unlock_data_dictionary( /*=============================*/ trx_t* trx) /* in: transaction */ { - ut_ad(trx->dict_operation_lock_mode == RW_X_LATCH); /* This is allowed - to fail in a rename #sql... to - rsql... */ + ut_a(trx->dict_operation_lock_mode == RW_X_LATCH); /* Serialize data dictionary operations with dictionary mutex: no deadlocks can occur then in these operations */ From 9df504d277ce14971700d12160d03c1f1cff1123 Mon Sep 17 00:00:00 2001 From: "ram@gw.mysql.r18.ru" <> Date: Mon, 6 Oct 2003 15:47:17 +0500 Subject: [PATCH 63/81] Fix for the bug #1336 mysql.cc assumes DATABASE() doesn't return NULL --- client/mysql.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/mysql.cc b/client/mysql.cc index 2fa131b854a..fd63c0dc18e 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -2328,7 +2328,7 @@ com_status(String *buffer __attribute__((unused)), (result=mysql_use_result(&mysql))) { MYSQL_ROW cur=mysql_fetch_row(result); - tee_fprintf(stdout, "Current database:\t%s\n",cur[0]); + tee_fprintf(stdout, "Current database:\t%s\n", cur[0] ? cur[0] : ""); tee_fprintf(stdout, "Current user:\t\t%s\n",cur[1]); (void) mysql_fetch_row(result); // Read eof } From 0a241aa2ed118709e07626ce8dac52eddc1208ea Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Mon, 6 Oct 2003 20:31:35 +0300 Subject: [PATCH 64/81] Portability fix --- extra/resolveip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/resolveip.c b/extra/resolveip.c index 133f6ddeb07..004f312dc7c 100644 --- a/extra/resolveip.c +++ b/extra/resolveip.c @@ -37,7 +37,7 @@ extern int h_errno; #endif #ifndef HAVE_IN_ADDR_T -#define in_addr_t u_long +#define in_addr_t ulong #endif From 446d40e880c0e6ab6ac56b0082d4883ef5c7d467 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Tue, 7 Oct 2003 00:23:29 +0300 Subject: [PATCH 65/81] After merge fixes --- extra/resolveip.c | 1 + mysql-test/mysql-test-run.sh | 2 +- mysql-test/r/rpl_trunc_binlog.result | 2 +- sql/log_event.cc | 10 +++++----- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/extra/resolveip.c b/extra/resolveip.c index f3c09b88e22..6d05152e20b 100644 --- a/extra/resolveip.c +++ b/extra/resolveip.c @@ -40,6 +40,7 @@ extern int h_errno; #define in_addr_t ulong #endif +static my_bool silent; static struct my_option my_long_options[] = { diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index b452023dcb9..577f396440c 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -1041,7 +1041,7 @@ EOF mysql_start () { -# We should not start the daemon here as we don't know the argumens +# We should not start the daemon here as we don't know the arguments # for the test. Better to let the test start the daemon # $ECHO "Starting MySQL daemon" diff --git a/mysql-test/r/rpl_trunc_binlog.result b/mysql-test/r/rpl_trunc_binlog.result index 6d2158eedfe..a006437207a 100644 --- a/mysql-test/r/rpl_trunc_binlog.result +++ b/mysql-test/r/rpl_trunc_binlog.result @@ -10,5 +10,5 @@ reset slave; start slave; show slave status; Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space -127.0.0.1 root MASTER_PORT 1 master-bin.002 4 slave-relay-bin.002 161 master-bin.001 Yes No 0 there is an unfinished transaction in the relay log (could find neither COMMIT nor ROLLBACK in the relay log); it could be that the master died while writing the transaction to its binary log. Now the slave is rolling back the transaction. 0 79 317 +127.0.0.1 root MASTER_PORT 1 master-bin.002 4 slave-relay-bin.002 161 master-bin.001 Yes No 0 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log. 0 79 317 reset master; diff --git a/sql/log_event.cc b/sql/log_event.cc index 18d1624dfde..3e9064a78ea 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2102,10 +2102,10 @@ int Start_log_event::exec_event(struct st_relay_log_info* rli) if (rli->inside_transaction) { slave_print_error(rli, 0, - "there is an unfinished transaction in the relay log \ -(could find neither COMMIT nor ROLLBACK in the relay log); it could be that \ -the master died while writing the transaction to its binary log. Now the slave \ -is rolling back the transaction."); + "\ +Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. \ +Probably cause is that the master died while writing the transaction to it's \ +binary log."); return(1); } break; @@ -2208,7 +2208,7 @@ int Rotate_log_event::exec_event(struct st_relay_log_info* rli) { memcpy(rli->master_log_name, new_log_ident, ident_len+1); rli->master_log_pos= pos; - DBUG_PRINT("info", ("master_log_pos: %d", (ulong) rli->master_log_pos)); + DBUG_PRINT("info", ("master_log_pos: %lu", (ulong) rli->master_log_pos)); } rli->relay_log_pos += get_event_len(); pthread_mutex_unlock(&rli->data_lock); From 0091fa2e3266da6a17b0615a4696c25a4d36d664 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Tue, 7 Oct 2003 14:04:59 +0300 Subject: [PATCH 66/81] Fixed bug in sub select after last merge --- sql/item_subselect.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 937d6f61913..0f0ad2e0765 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -1098,7 +1098,11 @@ int subselect_indexsubquery_engine::exec() null_finding= 1; /* Check if there exists a row with a null value in the index */ if ((error= safe_index_read(tab))) + { + if (error < 0) + error= 0; // Key not found break; + } } } } From b82b76f4803816a5d2245c173fcd1ec5033f6494 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Tue, 7 Oct 2003 15:44:31 +0300 Subject: [PATCH 67/81] Simple cleanups --- client/mysqlbinlog.cc | 10 +++++++++- mysql-test/mysql-test-run.sh | 14 ++++++++------ scripts/Makefile.am | 1 - scripts/mysql_install_db.sh | 2 +- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 84dcc4a7395..8e108e20299 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -40,6 +40,7 @@ static FILE *result_file; #ifndef DBUG_OFF static const char* default_dbug_option = "d:t:o,/tmp/mysqlbinlog.trace"; #endif +static const char *load_default_groups[]= { "mysqlbinlog","client",0 }; void sql_print_error(const char *format, ...); @@ -278,7 +279,7 @@ static void die(const char* fmt, ...) static void print_version() { - printf("%s Ver 2.3 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE); + printf("%s Ver 2.4 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE); } @@ -374,6 +375,7 @@ static int parse_args(int *argc, char*** argv) int ho_error; result_file = stdout; + load_defaults("my",load_default_groups,argc,argv); if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option))) exit(ho_error); @@ -743,12 +745,16 @@ void free_tmpdir(MY_TMPDIR *tmpdir) int main(int argc, char** argv) { + static char **defaults_argv; MY_INIT(argv[0]); + parse_args(&argc, (char***)&argv); + defaults_argv=argv; if (!argc) { usage(); + free_defaults(defaults_argv); return -1; } @@ -778,6 +784,8 @@ int main(int argc, char** argv) my_fclose(result_file, MYF(0)); if (use_remote) mysql_close(mysql); + free_defaults(defaults_argv); + my_end(0); return 0; } diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 577f396440c..6cba5eecddd 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -429,14 +429,14 @@ if [ x$SOURCE_DIST = x1 ] ; then MYSQL_TEST="$BASEDIR/client/mysqltest" fi if [ -f "$BASEDIR/client/.libs/mysqldump" ] ; then - MYSQL_DUMP="$BASEDIR/client/.libs/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" + MYSQL_DUMP="$BASEDIR/client/.libs/mysqldump" else - MYSQL_DUMP="$BASEDIR/client/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" + MYSQL_DUMP="$BASEDIR/client/mysqldump" fi if [ -f "$BASEDIR/client/.libs/mysqlbinlog" ] ; then - MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog --local-load=$MYSQL_TMP_DIR" + MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog" else - MYSQL_BINLOG="$BASEDIR/client/mysqlbinlog --local-load=$MYSQL_TMP_DIR" + MYSQL_BINLOG="$BASEDIR/client/mysqlbinlog" fi if [ -n "$STRACE_CLIENT" ]; then MYSQL_TEST="strace -o $MYSQL_TEST_DIR/var/log/mysqltest.strace $MYSQL_TEST" @@ -459,8 +459,8 @@ else MYSQLD="$VALGRIND $BASEDIR/bin/mysqld" fi MYSQL_TEST="$BASEDIR/bin/mysqltest" - MYSQL_DUMP="$BASEDIR/bin/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK" - MYSQL_BINLOG="$BASEDIR/bin/mysqlbinlog --local-load=$MYSQL_TMP_DIR" + MYSQL_DUMP="$BASEDIR/bin/mysqldump" + MYSQL_BINLOG="$BASEDIR/bin/mysqlbinlog" MYSQLADMIN="$BASEDIR/bin/mysqladmin" WAIT_PID="$BASEDIR/bin/mysql_waitpid" MYSQL_MANAGER="$BASEDIR/bin/mysqlmanager" @@ -478,6 +478,8 @@ else fi fi +MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK" +MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR" export MYSQL_DUMP export MYSQL_BINLOG diff --git a/scripts/Makefile.am b/scripts/Makefile.am index adb88290d9b..17b98fe45c3 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -66,7 +66,6 @@ pkgdata_DATA = make_binary_distribution # failures with it. CLEANFILES = @server_scripts@ \ make_binary_distribution \ - make_win_src_distribution \ msql2mysql \ mysql_config \ mysql_fix_privilege_tables \ diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index d66c33c16b1..5a6b11fb19b 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -136,7 +136,7 @@ then fi fi -if test "$ip_only" -eq 1 +if test "$ip_only" ="1" then ip=`echo "$resolved" | awk '/ /{print $6}'` hostname=$ip From ed5d059202d2a2052e77eb974a20ad337abe0016 Mon Sep 17 00:00:00 2001 From: "guilhem@mysql.com" <> Date: Tue, 7 Oct 2003 20:41:06 +0200 Subject: [PATCH 68/81] Fix for a test failure with the standard (no-BDB) binary: as the test is meaningful only if the slave supports transactions, we require this. As in 4.0 the slave runs with --skip-innodb, we test for BDB. --- mysql-test/t/rpl_trunc_binlog.test | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mysql-test/t/rpl_trunc_binlog.test b/mysql-test/t/rpl_trunc_binlog.test index efdc3012471..11ec0026560 100644 --- a/mysql-test/t/rpl_trunc_binlog.test +++ b/mysql-test/t/rpl_trunc_binlog.test @@ -6,6 +6,10 @@ source include/master-slave.inc; connection slave; +# If we are not supporting transactions in the slave, the unfinished transaction +# won't cause any error, so we need to skip the test. In the 4.0 testsuite, the +# slave always runs without InnoDB, so we check for BDB. +source include/have_bdb.inc; stop slave; connection master; flush logs; From 528b082705aabeaec4e561163b6232307c3b1b38 Mon Sep 17 00:00:00 2001 From: "guilhem@gbichot2" <> Date: Tue, 7 Oct 2003 23:15:13 +0200 Subject: [PATCH 69/81] mysql_real_connect picks the Unix login when the user "" is used. This makes the test non-repeatable when running as root. So I change to not use the "" user, but a random string which will always result in the @localhost user being selected by the server. --- mysql-test/t/rpl_temporary.test | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mysql-test/t/rpl_temporary.test b/mysql-test/t/rpl_temporary.test index 79dba60964d..f1373d7ef23 100644 --- a/mysql-test/t/rpl_temporary.test +++ b/mysql-test/t/rpl_temporary.test @@ -19,7 +19,10 @@ connection master; connect (con1,localhost,root,,); connect (con2,localhost,root,,); -connect (con3,localhost,,,); +# We want to connect as an unprivileged user. But if we use user="" then this +# will pick the Unix login, which will cause problems if you're running the test +# as root. +connect (con3,localhost,zedjzlcsjhd,,); # We are going to use SET PSEUDO_THREAD_ID in this test; # check that it requires the SUPER privilege. From a278a77475c755d341c7693405d0ecdf1c61ce46 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 8 Oct 2003 01:30:10 +0300 Subject: [PATCH 70/81] Fix for option 'R' (connect to remote server) in mysqlbinlog --- client/mysqlbinlog.cc | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 8e108e20299..a50a89f330b 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -45,17 +45,15 @@ static const char *load_default_groups[]= { "mysqlbinlog","client",0 }; void sql_print_error(const char *format, ...); static bool one_database = 0; -static bool force_opt= 0; -static const char* database; -static bool short_form = 0; +static const char* database= 0; +static my_bool force_opt= 0, short_form= 0, remote_opt= 0; static ulonglong offset = 0; static const char* host = 0; static int port = MYSQL_PORT; -static const char* sock= MYSQL_UNIX_ADDR; +static const char* sock= 0; static const char* user = 0; static const char* pass = ""; static ulonglong position = 0; -static bool use_remote = 0; static short binlog_flags = 0; static MYSQL* mysql = NULL; @@ -238,6 +236,9 @@ static struct my_option my_long_options[] = 0, 0}, {"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"remote", 'R', "Connect to remote MySQL server", + (gptr*) &remote_opt, (gptr*) &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, + 0, 0}, {"short-form", 's', "Just show the queries, no extra info.", (gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -342,22 +343,15 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case 'd': one_database = 1; break; - case 'h': - use_remote = 1; - break; - case 'P': - use_remote = 1; - break; case 'p': - use_remote = 1; pass = my_strdup(argument, MYF(0)); break; case 'r': if (!(result_file = my_fopen(argument, O_WRONLY | O_BINARY, MYF(MY_WME)))) exit(1); break; - case 'u': - use_remote = 1; + case 'R': + remote_opt= 1; break; case 'V': print_version(); @@ -396,7 +390,7 @@ static MYSQL* safe_connect() static void dump_log_entries(const char* logname) { - if (use_remote) + if (remote_opt) dump_remote_log_entries(logname); else dump_local_log_entries(logname); @@ -758,7 +752,7 @@ int main(int argc, char** argv) return -1; } - if (use_remote) + if (remote_opt) mysql = safe_connect(); MY_TMPDIR tmpdir; @@ -782,7 +776,7 @@ int main(int argc, char** argv) free_tmpdir(&tmpdir); if (result_file != stdout) my_fclose(result_file, MYF(0)); - if (use_remote) + if (remote_opt) mysql_close(mysql); free_defaults(defaults_argv); my_end(0); From d00d9110ba3627fce91a1a08c5c4bba93d236010 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 8 Oct 2003 10:23:54 +0300 Subject: [PATCH 71/81] Fixed test case that my last patch to mysqlbinlog broke. Changed --remote to --read-from-remote-server (mysqlbinlog) --- client/mysqlbinlog.cc | 2 +- mysql-test/t/mysqlbinlog.test | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index a50a89f330b..298521b5aa7 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -236,7 +236,7 @@ static struct my_option my_long_options[] = 0, 0}, {"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, - {"remote", 'R', "Connect to remote MySQL server", + {"read-from-remote-server", 'R', "Read binary logs from a MySQL server", (gptr*) &remote_opt, (gptr*) &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"short-form", 's', "Just show the queries, no extra info.", diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test index 22b63146652..c5e1be37b01 100644 --- a/mysql-test/t/mysqlbinlog.test +++ b/mysql-test/t/mysqlbinlog.test @@ -76,28 +76,28 @@ select "--- Remote --" as ""; # This is broken now # By the way it seems that remote version fetches all events with name >= master-bin.001 --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.001 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.001 # This is broken too --disable_query_log select "--- Broken LOAD DATA --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 # And this too ! (altough it is documented) --disable_query_log select "--- --database --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.001 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.001 # Strangely but this works --disable_query_log select "--- --position --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 # clean up drop table t1; From d9ff66510249cfa267c2c0f167bf174f91c4df5a Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 8 Oct 2003 12:01:58 +0300 Subject: [PATCH 72/81] Fixes after merge --- client/mysqltest.c | 9 +- mysql-test/mysql-test-run.sh | 1 + mysql-test/r/distinct.result | 4 +- mysql-test/r/drop_temp_table.result | 10 +-- mysql-test/r/join_outer.result | 2 +- mysql-test/r/mysqldump.result | 3 + mysql-test/r/null_key.result | 4 +- mysql-test/r/order_by.result | 6 +- mysql-test/r/rpl_alter.result | 22 ++--- mysql-test/r/rpl_loaddata.result | 4 +- mysql-test/r/rpl_loaddata_rule_m.result | 7 +- mysql-test/r/rpl_trunc_binlog.result | 8 +- mysql-test/r/select_safe.result | 2 +- .../{trunc_binlog.001 => trunc_binlog.000001} | Bin mysql-test/t/insert.test | 10 +-- mysql-test/t/mysqlbinlog.test | 18 ++-- mysql-test/t/rpl000009.test | 82 +++++++++++------- mysql-test/t/rpl_alter.test | 22 ++--- mysql-test/t/rpl_loaddata_rule_m.test | 11 ++- mysql-test/t/rpl_trunc_binlog.test | 12 +-- sql-common/client.c | 4 - sql/item_subselect.cc | 1 - sql/repl_failsafe.cc | 7 +- sql/slave.cc | 42 +++++---- sql/sql_insert.cc | 13 +-- 25 files changed, 172 insertions(+), 132 deletions(-) rename mysql-test/std_data/{trunc_binlog.001 => trunc_binlog.000001} (100%) diff --git a/client/mysqltest.c b/client/mysqltest.c index 479c368aaa1..6a7f4ab7cac 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -125,6 +125,7 @@ static int block_stack[BLOCK_STACK_DEPTH]; static int block_ok_stack[BLOCK_STACK_DEPTH]; static uint global_expected_errno[MAX_EXPECTED_ERRORS], global_expected_errors; +static CHARSET_INFO *charset_info= &my_charset_latin1; static int embedded_server_arg_count=0; static char *embedded_server_args[MAX_SERVER_ARGS]; @@ -716,7 +717,7 @@ int do_wait_for_slave_to_stop(struct st_query* q __attribute__((unused))) MYSQL* mysql = &cur_con->mysql; for (;;) { - MYSQL_RES* res; + MYSQL_RES *res; MYSQL_ROW row; int done; LINT_INIT(res); @@ -770,9 +771,7 @@ int do_server_op(struct st_query* q,const char* op) if (!*p) die("Missing server name in server_%s\n",op); while (*p && !my_isspace(charset_info,*p)) - { - *com_p++=*p++; - } + *com_p++= *p++; *com_p++=' '; com_p=int10_to_str(manager_wait_timeout,com_p,10); *com_p++ = '\n'; @@ -864,7 +863,7 @@ int do_exec(struct st_query* q) FILE *res_file; char *cmd= q->first_argument; - while (*cmd && isspace(*cmd)) + while (*cmd && my_isspace(charset_info, *cmd)) cmd++; if (!*cmd) die("Missing argument in exec\n"); diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index c4e97d0c92b..b7e39549411 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -437,6 +437,7 @@ if [ x$SOURCE_DIST = x1 ] ; then MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog" else MYSQL_BINLOG="$BASEDIR/client/mysqlbinlog" + fi if [ -n "$STRACE_CLIENT" ]; then MYSQL_TEST="strace -o $MYSQL_TEST_DIR/var/log/mysqltest.strace $MYSQL_TEST" fi diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index 5e713f59100..d9beed25edf 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -303,9 +303,9 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index id id 8 NULL 1 Using index; Distinct 1 SIMPLE t3 index id id 8 NULL 1 Using index; Distinct 1 SIMPLE j_lj_t2 index id id 4 NULL 2 Using where; Using index; Distinct -1 SIMPLE t2_lj index id id 8 NULL 1 Using where; Using index; Distinct +1 SIMPLE t2_lj ref id id 4 test.j_lj_t2.id 1 Using where; Using index; Distinct 1 SIMPLE j_lj_t3 index id id 4 NULL 2 Using where; Using index; Distinct -1 SIMPLE t3_lj index id id 8 NULL 1 Using where; Using index; Distinct +1 SIMPLE t3_lj ref id id 4 test.j_lj_t3.id 1 Using where; Using index; Distinct SELECT DISTINCT t1.id from diff --git a/mysql-test/r/drop_temp_table.result b/mysql-test/r/drop_temp_table.result index 6b18b54335d..78efc9d90e2 100644 --- a/mysql-test/r/drop_temp_table.result +++ b/mysql-test/r/drop_temp_table.result @@ -10,9 +10,9 @@ get_lock("a",10) 1 show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info -master-bin.001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 -master-bin.001 79 Query 1 79 use `test`; create database `drop-temp+table-test` -master-bin.001 152 Query 1 152 use `drop-temp+table-test`; create temporary table `table:name` (a int) -master-bin.001 246 Query 1 246 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE `drop-temp+table-test`.`table:name` -master-bin.001 365 Query 1 365 use `drop-temp+table-test`; DO RELEASE_LOCK("a") +master-bin.000001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 +master-bin.000001 79 Query 1 79 use `test`; create database `drop-temp+table-test` +master-bin.000001 152 Query 1 152 use `drop-temp+table-test`; create temporary table `table:name` (a int) +master-bin.000001 246 Query 1 246 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE `drop-temp+table-test`.`table:name` +master-bin.000001 365 Query 1 365 use `drop-temp+table-test`; DO RELEASE_LOCK("a") drop database `drop-temp+table-test`; diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result index e852d266664..3a1f68fb6c1 100644 --- a/mysql-test/r/join_outer.result +++ b/mysql-test/r/join_outer.result @@ -614,7 +614,7 @@ INSERT INTO t2 VALUES (1,1); explain SELECT * from t1 left join t2 on t1.id=t2.id where t2.id IS NULL; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 -1 SIMPLE t2 ref id id 4 t1.id 1 Using where; Using index; Not exists +1 SIMPLE t2 ref id id 4 test.t1.id 1 Using where; Using index; Not exists SELECT * from t1 left join t2 on t1.id=t2.id where t2.id IS NULL; id name id idx 2 no NULL NULL diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 085cf2788f9..cf1ef55ca69 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -4,6 +4,8 @@ INSERT INTO t1 VALUES (1), (2); +DROP TABLE IF EXISTS t1; +LOCK TABLES t1 WRITE; 1 @@ -12,6 +14,7 @@ INSERT INTO t1 VALUES (1), (2); 2
+UNLOCK TABLES;
DROP TABLE t1; diff --git a/mysql-test/r/null_key.result b/mysql-test/r/null_key.result index 9aaea0d800b..bacd95d852e 100644 --- a/mysql-test/r/null_key.result +++ b/mysql-test/r/null_key.result @@ -153,12 +153,12 @@ a b 7 NULL explain select * from t1 where (a = 7 or a is null) and (b=7 or b is null); id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 range a,b a 10 NULL 3 Using where; Using index +1 SIMPLE t1 ref_or_null a,b a 5 const 4 Using where; Using index select * from t1 where (a = 7 or a is null) and (b=7 or b is null); a b -NULL 7 7 NULL 7 7 +NULL 7 explain select * from t1 where (a = 7 or a is null) and (a = 7 or a is null); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref_or_null a a 5 const 5 Using where; Using index diff --git a/mysql-test/r/order_by.result b/mysql-test/r/order_by.result index 80fe0c266f8..db747e3a7eb 100644 --- a/mysql-test/r/order_by.result +++ b/mysql-test/r/order_by.result @@ -470,8 +470,8 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 eq_ref PRIMARY PRIMARY 2 test.t2.uid 1 Using where; Using index EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t1.gid,t3.skr; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 6 Using index -1 SIMPLE t3 eq_ref PRIMARY PRIMARY 2 test.t1.gid 1 Using where +1 SIMPLE t3 ALL PRIMARY NULL NULL NULL 6 Using temporary; Using filesort +1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.uid 1 Using where; Using index EXPLAIN SELECT t1.gid, t2.sid, t3.uid from t2, t1, t3 where t2.gid = t1.gid and t2.uid = t3.uid order by t3.uid, t1.gid; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 6 Using index; Using temporary; Using filesort @@ -480,7 +480,7 @@ id select_type table type possible_keys key key_len ref rows Extra EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t3.skr,t1.gid; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 ALL PRIMARY NULL NULL NULL 6 Using temporary; Using filesort -1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.uid 1 Using where +1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.uid 1 Using where; Using index EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.skr = t3.uid order by t1.gid,t3.skr; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using temporary; Using filesort diff --git a/mysql-test/r/rpl_alter.result b/mysql-test/r/rpl_alter.result index e7abc3b3b48..6ef5ce3462a 100644 --- a/mysql-test/r/rpl_alter.result +++ b/mysql-test/r/rpl_alter.result @@ -4,18 +4,18 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -drop database if exists test_$1; -create database test_$1; -create table test_$1.t1 ( n int); -alter table test_$1.t1 add m int; -insert into test_$1.t1 values (1,2); -create table test_$1.t2 (n int); -insert into test_$1.t2 values (45); -rename table test_$1.t2 to test_$1.t3, test_$1.t1 to test_$1.t2; -select * from test_$1.t2; +drop database if exists mysqltest; +create database mysqltest; +create table mysqltest.t1 ( n int); +alter table mysqltest.t1 add m int; +insert into mysqltest.t1 values (1,2); +create table mysqltest.t2 (n int); +insert into mysqltest.t2 values (45); +rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2; +select * from mysqltest.t2; n m 1 2 -select * from test_$1.t3; +select * from mysqltest.t3; n 45 -drop database test_$1; +drop database mysqltest; diff --git a/mysql-test/r/rpl_loaddata.result b/mysql-test/r/rpl_loaddata.result index 83968eef14f..2dd5dc5ec08 100644 --- a/mysql-test/r/rpl_loaddata.result +++ b/mysql-test/r/rpl_loaddata.result @@ -61,8 +61,8 @@ unique(day)); load data infile '../../std_data/rpl_loaddata2.dat' into table t2 fields terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by '\n##\n' starting by '>' ignore 1 lines; -Duplicate entry '2003-03-22' for key 1 +ERROR 23000: Duplicate entry '2003-03-22' for key 1 show master status; File Position Binlog_do_db Binlog_ignore_db -master-bin.001 491 +master-bin.000001 491 drop table t2; diff --git a/mysql-test/r/rpl_loaddata_rule_m.result b/mysql-test/r/rpl_loaddata_rule_m.result index c98b3fb358f..ed0c96bbfe1 100644 --- a/mysql-test/r/rpl_loaddata_rule_m.result +++ b/mysql-test/r/rpl_loaddata_rule_m.result @@ -4,11 +4,12 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; +drop database if exists mysqltest; reset master; -create database test2; +create database mysqltest; create table t1(a int, b int, unique(b)); -use test2; +use mysqltest; load data infile '../../std_data/rpl_loaddata.dat' into table test.t1; show binlog events from 79; Log_name Pos Event_type Server_id Orig_log_pos Info -drop database test2; +drop database mysqltest; diff --git a/mysql-test/r/rpl_trunc_binlog.result b/mysql-test/r/rpl_trunc_binlog.result index a006437207a..44d3eeb2ba3 100644 --- a/mysql-test/r/rpl_trunc_binlog.result +++ b/mysql-test/r/rpl_trunc_binlog.result @@ -1,14 +1,14 @@ -slave stop; +stop slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; -slave start; +start slave; stop slave; flush logs; reset slave; start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space -127.0.0.1 root MASTER_PORT 1 master-bin.002 4 slave-relay-bin.002 161 master-bin.001 Yes No 0 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log. 0 79 317 +Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key +127.0.0.1 root MASTER_PORT 1 master-bin.000002 4 slave-relay-bin.000002 123 master-bin.000001 Yes No 0 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log. 0 79 326 None 0 No reset master; diff --git a/mysql-test/r/select_safe.result b/mysql-test/r/select_safe.result index ea8f2332c3a..6bffdd85aa4 100644 --- a/mysql-test/r/select_safe.result +++ b/mysql-test/r/select_safe.result @@ -70,7 +70,7 @@ insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(nu explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL b NULL NULL NULL 21 -1 SIMPLE t2 ref b b 21 t1.b 6 Using where +1 SIMPLE t2 ref b b 21 test.t1.b 6 Using where set MAX_SEEKS_FOR_KEY=1; explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; id select_type table type possible_keys key key_len ref rows Extra diff --git a/mysql-test/std_data/trunc_binlog.001 b/mysql-test/std_data/trunc_binlog.000001 similarity index 100% rename from mysql-test/std_data/trunc_binlog.001 rename to mysql-test/std_data/trunc_binlog.000001 diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test index ae0a87895e1..62d277bfad5 100644 --- a/mysql-test/t/insert.test +++ b/mysql-test/t/insert.test @@ -80,10 +80,10 @@ drop table t1,t2; # --disable_warnings -drop database if exists test_$1; +drop database if exists mysqltest; --enable_warnings -create database test_$1; -use test_$1; +create database mysqltest; +use mysqltest; create table t1 (c int); -insert into test_$1.t1 set test_$1.t1.c = '1'; -drop database test_$1; +insert into mysqltest.t1 set mysqltest.t1.c = '1'; +drop database mysqltest; diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test index 22b63146652..3a24efd9f39 100644 --- a/mysql-test/t/mysqlbinlog.test +++ b/mysql-test/t/mysqlbinlog.test @@ -39,28 +39,28 @@ select "--- Local --" as ""; # --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.001 +--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001 # this should not fail but shouldn't produce any working statements --disable_query_log select "--- Broken LOAD DATA --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.002 +--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000002 # this should show almost nothing --disable_query_log select "--- --database --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --database=nottest $MYSQL_TEST_DIR/var/log/master-bin.001 +--exec $MYSQL_BINLOG --short-form --database=nottest $MYSQL_TEST_DIR/var/log/master-bin.000001 # this test for position option --disable_query_log select "--- --position --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --position=27 $MYSQL_TEST_DIR/var/log/master-bin.002 +--exec $MYSQL_BINLOG --short-form --position=27 $MYSQL_TEST_DIR/var/log/master-bin.000002 # These are tests for remote binlog. # They should return the same as previous test. @@ -74,30 +74,30 @@ select "--- Remote --" as ""; --enable_query_log # This is broken now -# By the way it seems that remote version fetches all events with name >= master-bin.001 +# By the way it seems that remote version fetches all events with name >= master-bin.000001 --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.001 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 # This is broken too --disable_query_log select "--- Broken LOAD DATA --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 # And this too ! (altough it is documented) --disable_query_log select "--- --database --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.001 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --database=nottest master-bin.000001 # Strangely but this works --disable_query_log select "--- --position --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 # clean up drop table t1; diff --git a/mysql-test/t/rpl000009.test b/mysql-test/t/rpl000009.test index 4db62540e7b..cd318efa2b6 100644 --- a/mysql-test/t/rpl000009.test +++ b/mysql-test/t/rpl000009.test @@ -3,9 +3,15 @@ source include/master-slave.inc; --disable_warnings -drop database if exists mysqltest2; -create database mysqltest2; drop database if exists mysqltest; +drop database if exists mysqltest2; +drop database if exists mysqltest3; +connection slave; +drop database if exists mysqltest; +drop database if exists mysqltest2; +drop database if exists mysqltest3; +connection master; +create database mysqltest2; create database mysqltest; --enable_warnings @@ -60,38 +66,42 @@ sync_with_master; # This should show that the slave is empty at this point show databases; -# Create foo and foo2 on slave; we expect that LOAD DATA FROM MASTER will -# neither touch database foo nor foo2. -create database foo; -create table foo.t1(n int, s char(20)); -insert into foo.t1 values (1, 'original foo.t1'); -create table foo.t3(n int, s char(20)); -insert into foo.t3 values (1, 'original foo.t3'); -create database foo2; -create table foo2.t1(n int, s char(20)); -insert into foo2.t1 values (1, 'original foo2.t1'); -# Create bar, and bar.t1, to check that it gets replaced, -# and bar.t3 to check that it is not touched (there is no bar.t3 on master) -create database bar; -create table bar.t1(n int, s char(20)); -insert into bar.t1 values (1, 'original bar.t1'); -create table bar.t3(n int, s char(20)); -insert into bar.t3 values (1, 'original bar.t3'); +# Create mysqltest2 and mysqltest3 on slave; we expect that LOAD DATA FROM +# MASTER will neither touch database mysqltest nor mysqltest3 +create database mysqltest2; +create table mysqltest2.t1(n int, s char(20)); +insert into mysqltest2.t1 values (1, 'original foo.t1'); +create table mysqltest2.t3(n int, s char(20)); +insert into mysqltest2.t3 values (1, 'original foo.t3'); +create database mysqltest3; +create table mysqltest3.t1(n int, s char(20)); +insert into mysqltest3.t1 values (1, 'original foo2.t1'); + +# Create mysqltest, and mysqltest.t1, to check that it gets replaced, +# and mysqltest.t3 to check that it is not touched (there is no +# mysqltest.t3 on master) +create database mysqltest; +create table mysqltest.t1(n int, s char(20)); +insert into mysqltest.t1 values (1, 'original bar.t1'); +create table mysqltest.t3(n int, s char(20)); +insert into mysqltest.t3 values (1, 'original bar.t3'); load data from master; # Now let's check if we have the right tables and the right data in them show databases; use mysqltest2; -# LOAD DATA FROM MASTER uses only replicate_*_db rules to decide which databases -# have to be copied. So it thinks "foo" has to be copied. Before 4.0.16 it would -# first drop "foo", then create "foo". This "drop" is a bug; in that case t3 -# would disappear. -# So here the effect of this bug (BUG#1248) would be to leave an empty "foo" on -# the slave. + +# LOAD DATA FROM MASTER uses only replicate_*_db rules to decide which +# databases have to be copied. So it thinks "mysqltest" has to be +# copied. Before 4.0.16 it would first drop "mysqltest", then create +# "mysqltest". This "drop" is a bug; in that case t3 would disappear. So +# here the effect of this bug (BUG#1248) would be to leave an empty +# "mysqltest" on the slave. + show tables; # should be t1 & t3 select * from t1; # should be slave's original -use foo2; +use mysqltest3; show tables; # should be t1 select * from t1; # should be slave's original use mysqltest; @@ -111,19 +121,24 @@ select * from mysqltest.t1; # Check that LOAD DATA FROM MASTER reports the error if it can't drop a # table to be overwritten. # DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX -# insert into bar.t1 values(10, 'should be there'); +# insert into mysqltest.t1 values(10, 'should be there'); # flush tables; -# system chmod 500 var/slave-data/bar/; +# system chmod 500 var/slave-data/mysqltest/; # --error 6 # load data from master; # should fail (errno 13) -# system chmod 700 var/slave-data/bar/; -# select * from bar.t1; # should contain the row (10, ...) +# system chmod 700 var/slave-data/mysqltest/; +# select * from mysqltest.t1; # should contain the row (10, ...) # Check that LOAD TABLE FROM MASTER fails if the table exists on slave --error 1050 -load table bar.t1 from master; -drop table bar.t1; +load table mysqltest.t1 from master; +drop table mysqltest.t1; +load table mysqltest.t1 from master; + +# Check what happens when requestion not existing table +# +--error 1188 load table bar.t1 from master; # as LOAD DATA FROM MASTER failed it did not restart slave threads @@ -137,5 +152,6 @@ drop database mysqltest2; save_master_pos; connection slave; sync_with_master; -drop database mysqltest; +# These has to be droped on slave as they are not replicated drop database mysqltest2; +drop database mysqltest3; diff --git a/mysql-test/t/rpl_alter.test b/mysql-test/t/rpl_alter.test index 6b8cf773150..a913f01cd81 100644 --- a/mysql-test/t/rpl_alter.test +++ b/mysql-test/t/rpl_alter.test @@ -1,22 +1,22 @@ source include/master-slave.inc; --disable_warnings -drop database if exists test_$1; +drop database if exists mysqltest; --enable_warnings -create database test_$1; +create database mysqltest; -create table test_$1.t1 ( n int); -alter table test_$1.t1 add m int; -insert into test_$1.t1 values (1,2); -create table test_$1.t2 (n int); -insert into test_$1.t2 values (45); -rename table test_$1.t2 to test_$1.t3, test_$1.t1 to test_$1.t2; +create table mysqltest.t1 ( n int); +alter table mysqltest.t1 add m int; +insert into mysqltest.t1 values (1,2); +create table mysqltest.t2 (n int); +insert into mysqltest.t2 values (45); +rename table mysqltest.t2 to mysqltest.t3, mysqltest.t1 to mysqltest.t2; save_master_pos; connection slave; sync_with_master; -select * from test_$1.t2; -select * from test_$1.t3; +select * from mysqltest.t2; +select * from mysqltest.t3; connection master; -drop database test_$1; +drop database mysqltest; save_master_pos; connection slave; sync_with_master; diff --git a/mysql-test/t/rpl_loaddata_rule_m.test b/mysql-test/t/rpl_loaddata_rule_m.test index 18f295f8ce2..ec3a9259e32 100644 --- a/mysql-test/t/rpl_loaddata_rule_m.test +++ b/mysql-test/t/rpl_loaddata_rule_m.test @@ -3,6 +3,11 @@ # This is for BUG#1100 (LOAD DATA INFILE was half-logged). source include/master-slave.inc; + +--disable_warnings +drop database if exists mysqltest; +--enable_warnings + connection slave; reset master; @@ -10,9 +15,9 @@ reset master; connection master; # 'test' is the current database -create database test2; +create database mysqltest; create table t1(a int, b int, unique(b)); -use test2; +use mysqltest; load data infile '../../std_data/rpl_loaddata.dat' into table test.t1; show binlog events from 79; # should be nothing -drop database test2; +drop database mysqltest; diff --git a/mysql-test/t/rpl_trunc_binlog.test b/mysql-test/t/rpl_trunc_binlog.test index efdc3012471..1f224423c97 100644 --- a/mysql-test/t/rpl_trunc_binlog.test +++ b/mysql-test/t/rpl_trunc_binlog.test @@ -1,7 +1,7 @@ -# We are testing if a binlog which contains BEGIN but not COMMIT (the master did -# while writing the transaction to the binlog) triggers an error on slave. -# So we use such a truncated binlog and simulate that the master restarted after -# this. +# We are testing if a binlog which contains BEGIN but not COMMIT (the +# master did while writing the transaction to the binlog) triggers an +# error on slave. So we use such a truncated binlog and simulate that +# the master restarted after this. source include/master-slave.inc; @@ -9,8 +9,8 @@ connection slave; stop slave; connection master; flush logs; -system mv -f var/log/master-bin.001 var/log/master-bin.002; -system cp std_data/trunc_binlog.001 var/log/master-bin.001; +system mv -f var/log/master-bin.000001 var/log/master-bin.000002; +system cp std_data/trunc_binlog.000001 var/log/master-bin.000001; connection slave; reset slave; start slave; diff --git a/sql-common/client.c b/sql-common/client.c index cedfac67328..80a5a719376 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -1317,10 +1317,6 @@ mysql_init(MYSQL *mysql) #ifndef TO_BE_DELETED mysql->rpl_pivot = 1; #endif -#if defined(SIGPIPE) && defined(THREAD) && !defined(__WIN__) && !defined(MYSQL_SERVER) - if (!((mysql)->client_flag & CLIENT_IGNORE_SIGPIPE)) - (void) signal(SIGPIPE,pipe_sig_handler); -#endif /* Only enable LOAD DATA INFILE by default if configured with diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 3d6fd4c316d..fd024daca08 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -1096,7 +1096,6 @@ int subselect_indexsubquery_engine::exec() /* Check if there exists a row with a null value in the index */ if ((error= (safe_index_read(tab) == 1))) break; - } } } } diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc index 2fe8946410f..aba887be070 100644 --- a/sql/repl_failsafe.cc +++ b/sql/repl_failsafe.cc @@ -755,6 +755,8 @@ int load_master_data(THD* thd) int error = 0; const char* errmsg=0; int restart_thread_mask; + HA_CREATE_INFO create_info; + mysql_init(&mysql); /* @@ -858,7 +860,10 @@ int load_master_data(THD* thd) continue; } - if (mysql_create_db(thd, db, HA_LEX_CREATE_IF_NOT_EXISTS, 1)) + bzero((char*) &create_info, sizeof(create_info)); + create_info.options= HA_LEX_CREATE_IF_NOT_EXISTS; + + if (mysql_create_db(thd, db, &create_info, 1)) { send_error(thd, 0, 0); cleanup_mysql_results(db_res, cur_table_res - 1, table_res); diff --git a/sql/slave.cc b/sql/slave.cc index a221abec2b5..d1a8fe51f33 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -1125,12 +1125,13 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db, handler *file; ulong save_options; NET *net= &mysql->net; - + DBUG_ENTER("create_table_from_dump"); + packet_len= my_net_read(net); // read create table statement if (packet_len == packet_error) { send_error(thd, ER_MASTER_NET_READ); - return 1; + DBUG_RETURN(1); } if (net->read_pos[0] == 255) // error from master { @@ -1139,7 +1140,7 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db, CLIENT_PROTOCOL_41) ? 3+SQLSTATE_LENGTH+1 : 3); net_printf(thd, ER_MASTER, err_msg); - return 1; + DBUG_RETURN(1); } thd->command = COM_TABLE_DUMP; thd->query_length= packet_len; @@ -1148,12 +1149,23 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db, { sql_print_error("create_table_from_dump: out of memory"); net_printf(thd, ER_GET_ERRNO, "Out of memory"); - return 1; + DBUG_RETURN(1); } thd->query= query; thd->query_error = 0; thd->net.no_send_ok = 1; + bzero((char*) &tables,sizeof(tables)); + tables.db = (char*)db; + tables.alias= tables.real_name= (char*)table_name; + /* Drop the table if 'overwrite' is true */ + if (overwrite && mysql_rm_table(thd,&tables,1,0)) /* drop if exists */ + { + send_error(thd); + sql_print_error("create_table_from_dump: failed to drop the table"); + goto err; + } + /* Create the table. We do not want to log the "create table" statement */ save_options = thd->options; thd->options &= ~(ulong) (OPTION_BIN_LOG); @@ -1207,7 +1219,7 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db, err: close_thread_tables(thd); thd->net.no_send_ok = 0; - return error; + DBUG_RETURN(error); } @@ -3431,15 +3443,15 @@ int queue_event(MASTER_INFO* mi,const char* buf, ulong event_len) case STOP_EVENT: /* We needn't write this event to the relay log. Indeed, it just indicates a - master server shutdown. The only thing this does is cleaning. But cleaning - is already done on a per-master-thread basis (as the master server is - shutting down cleanly, it has written all DROP TEMPORARY TABLE and DO - RELEASE_LOCK; prepared statements' deletion are TODO). + master server shutdown. The only thing this does is cleaning. But + cleaning is already done on a per-master-thread basis (as the master + server is shutting down cleanly, it has written all DROP TEMPORARY TABLE + and DO RELEASE_LOCK; prepared statements' deletion are TODO). - We don't even increment mi->master_log_pos, because we may be just after a - Rotate event. Btw, in a few milliseconds we are going to have a Start - event from the next binlog (unless the master is presently running without - --log-bin). + We don't even increment mi->master_log_pos, because we may be just after + a Rotate event. Btw, in a few milliseconds we are going to have a Start + event from the next binlog (unless the master is presently running + without --log-bin). */ goto err; case ROTATE_EVENT: @@ -3465,8 +3477,8 @@ int queue_event(MASTER_INFO* mi,const char* buf, ulong event_len) /* If this event is originating from this server, don't queue it. We don't check this for 3.23 events because it's simpler like this; 3.23 - will be filtered anyway by the SQL slave thread which also tests the server - id (we must also keep this test in the SQL thread, in case somebody + will be filtered anyway by the SQL slave thread which also tests the + server id (we must also keep this test in the SQL thread, in case somebody upgrades a 4.0 slave which has a not-filtered relay log). ANY event coming from ourselves can be ignored: it is obvious for queries; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index d523d868514..f4127265ce6 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1438,15 +1438,17 @@ bool select_insert::send_data(List &values) void select_insert::send_error(uint errcode,const char *err) { + DBUG_ENTER("select_insert::send_error"); + //TODO error should be sent at the query processing end ::send_error(thd,errcode,err); table->file->extra(HA_EXTRA_NO_CACHE); table->file->activate_all_index(thd); - /* - If at least one row has been inserted/modified and will stay in the table - (the table doesn't have transactions) (example: we got a duplicate key - error while inserting into a MyISAM table) we must write to the binlog (and - the error code will make the slave stop). + /* + If at least one row has been inserted/modified and will stay in the table + (the table doesn't have transactions) (example: we got a duplicate key + error while inserting into a MyISAM table) we must write to the binlog (and + the error code will make the slave stop). */ if ((info.copied || info.deleted) && !table->file->has_transactions()) { @@ -1465,6 +1467,7 @@ void select_insert::send_error(uint errcode,const char *err) if (info.copied || info.deleted) query_cache_invalidate3(thd, table, 1); ha_rollback_stmt(thd); + DBUG_VOID_RETURN; } From 237903067694aa952ef7360e3300fd79f624bdc8 Mon Sep 17 00:00:00 2001 From: "lenz@kallisto.local" <> Date: Wed, 8 Oct 2003 13:06:47 +0200 Subject: [PATCH 73/81] - added missing link line that seemed to have gone lost during the last 4.0->4.1 merge (mysqltest needs to be linked with a C++ compiler) --- libmysqld/examples/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libmysqld/examples/Makefile.am b/libmysqld/examples/Makefile.am index c2292a6b48d..fe56926039d 100644 --- a/libmysqld/examples/Makefile.am +++ b/libmysqld/examples/Makefile.am @@ -13,6 +13,8 @@ INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include -I$(srcdir) \ LIBS = @LIBS@ @WRAPLIBS@ @CLIENT_LIBS@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysqld.a @innodb_system_libs@ @bdb_libs_with_path@ @LIBDL@ $(CXXLDFLAGS) +mysqltest_LINK = $(CXXLINK) + mysqltest_SOURCES = mysqltest.c mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \ From ce9c9845a119d6c0140067bef94be5ec47c7e90e Mon Sep 17 00:00:00 2001 From: "lenz@kallisto.local" <> Date: Wed, 8 Oct 2003 13:26:29 +0200 Subject: [PATCH 74/81] - portability fix: replaced "uint" with "unsigned int" --- include/mysql_com.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mysql_com.h b/include/mysql_com.h index d5a70e4dfe8..be8db185737 100644 --- a/include/mysql_com.h +++ b/include/mysql_com.h @@ -317,9 +317,9 @@ extern unsigned long net_buffer_length; void randominit(struct rand_struct *, unsigned long seed1, unsigned long seed2); double my_rnd(struct rand_struct *); -void create_random_string(char *to, uint length, struct rand_struct *rand_st); +void create_random_string(char *to, unsigned int length, struct rand_struct *rand_st); -void hash_password(unsigned long *to, const char *password, uint password_len); +void hash_password(unsigned long *to, const char *password, unsigned int password_len); void make_scrambled_password_323(char *to, const char *password); void scramble_323(char *to, const char *message, const char *password); my_bool check_scramble_323(const char *, const char *message, From 9e57c12b5a0d623a72be968f8cbd2ad769a84a29 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 8 Oct 2003 18:53:31 +0300 Subject: [PATCH 75/81] Fixed bug in error handling of CREATE ... SELECT More tests cases After merge fixes --- mysql-test/r/ansi.result | 17 +++++----- mysql-test/r/create.result | 10 ++++++ mysql-test/r/insert_select.result | 5 +++ mysql-test/r/rpl000009.result | 55 +++++++++++++++++++------------ mysql-test/t/ansi-master.opt | 1 - mysql-test/t/ansi.test | 10 +++--- mysql-test/t/create.test | 13 ++++++++ mysql-test/t/insert_select.test | 1 + mysql-test/t/mysqlbinlog.test | 4 +-- sql/mysql_priv.h | 2 +- sql/set_var.cc | 3 +- sql/sql_class.cc | 16 +++++---- sql/sql_class.h | 5 +-- sql/sql_insert.cc | 11 ++++++- sql/sql_select.cc | 23 +++++++++---- 15 files changed, 121 insertions(+), 55 deletions(-) delete mode 100644 mysql-test/t/ansi-master.opt diff --git a/mysql-test/r/ansi.result b/mysql-test/r/ansi.result index 6ec909f84bb..0b86634f67b 100644 --- a/mysql-test/r/ansi.result +++ b/mysql-test/r/ansi.result @@ -1,4 +1,12 @@ drop table if exists t1; +set sql_mode="MySQL40"; +select @@sql_mode; +@@sql_mode +NO_FIELD_OPTIONS,MYSQL40 +set @@sql_mode="ANSI"; +select @@sql_mode; +@@sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI SELECT 'A' || 'B'; 'A' || 'B' AB @@ -8,11 +16,4 @@ id NULL 1 1.1 a SELECT id FROM t1 GROUP BY id2; ERROR 42000: 'test.t1.id' isn't in GROUP BY drop table t1; -set sql_mode="MySQL40"; -select @@sql_mode; -@@sql_mode -NO_FIELD_OPTIONS,MYSQL40 -set sql_mode="ANSI"; -select @@sql_mode; -@@sql_mode -REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI +SET @@SQL_MODE=""; diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 8eff870e855..277ae9e0b8d 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -129,6 +129,16 @@ ERROR 42S21: Duplicate column name 'b' drop table if exists t1,t2; Warnings: Note 1051 Unknown table 't2' +CREATE TABLE t1 (a int not null); +INSERT INTO t1 values (1),(2),(1); +CREATE TABLE t2 (primary key(a)) SELECT * FROM t1; +ERROR 23000: Duplicate entry '1' for key 1 +SELECT * from t2; +ERROR 42S02: Table 'test.t2' doesn't exist +DROP TABLE t1; +DROP TABLE IF EXISTS t2; +Warnings: +Note 1051 Unknown table 't2' create table t1 (a int not null, b int, primary key(a), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b), key (b)); show create table t1; Table Create Table diff --git a/mysql-test/r/insert_select.result b/mysql-test/r/insert_select.result index 7b8e3c46200..8eecccf6fec 100644 --- a/mysql-test/r/insert_select.result +++ b/mysql-test/r/insert_select.result @@ -74,7 +74,12 @@ insert into t1 select * from t2; ERROR 23000: Duplicate entry '2' for key 1 show binlog events; Log_name Pos Event_type Server_id Orig_log_pos Info +master-bin.000001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3 master-bin.000001 79 Query 1 79 use `test`; insert into t1 select * from t2 +select * from t1; +a +1 +2 drop table t1, t2; create table t1 (a int not null); create table t2 (a int not null); diff --git a/mysql-test/r/rpl000009.result b/mysql-test/r/rpl000009.result index fc55de7246c..1f78a505280 100644 --- a/mysql-test/r/rpl000009.result +++ b/mysql-test/r/rpl000009.result @@ -4,9 +4,13 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -drop database if exists mysqltest2; -create database mysqltest2; drop database if exists mysqltest; +drop database if exists mysqltest2; +drop database if exists mysqltest3; +drop database if exists mysqltest; +drop database if exists mysqltest2; +drop database if exists mysqltest3; +create database mysqltest2; create database mysqltest; create database mysqltest2; create table mysqltest2.foo (n int); @@ -46,45 +50,43 @@ show databases; Database mysql test -create database foo; -create table foo.t1(n int, s char(20)); -insert into foo.t1 values (1, 'original foo.t1'); -create table foo.t3(n int, s char(20)); -insert into foo.t3 values (1, 'original foo.t3'); -create database foo2; -create table foo2.t1(n int, s char(20)); -insert into foo2.t1 values (1, 'original foo2.t1'); -create database bar; -create table bar.t1(n int, s char(20)); -insert into bar.t1 values (1, 'original bar.t1'); -create table bar.t3(n int, s char(20)); -insert into bar.t3 values (1, 'original bar.t3'); +create database mysqltest2; +create table mysqltest2.t1(n int, s char(20)); +insert into mysqltest2.t1 values (1, 'original foo.t1'); +create table mysqltest2.t3(n int, s char(20)); +insert into mysqltest2.t3 values (1, 'original foo.t3'); +create database mysqltest3; +create table mysqltest3.t1(n int, s char(20)); +insert into mysqltest3.t1 values (1, 'original foo2.t1'); +create database mysqltest; +create table mysqltest.t1(n int, s char(20)); +insert into mysqltest.t1 values (1, 'original bar.t1'); +create table mysqltest.t3(n int, s char(20)); +insert into mysqltest.t3 values (1, 'original bar.t3'); load data from master; -Warnings: -Note 1008 Can't drop database 'mysqltest'; database doesn't exist -Note 1008 Can't drop database 'mysqltest2'; database doesn't exist show databases; Database mysql mysqltest mysqltest2 +mysqltest3 test use mysqltest2; show tables; Tables_in_mysqltest2 -use mysqltest; t1 t3 select * from t1; n s 1 original foo.t1 -use foo2; +use mysqltest3; show tables; -Tables_in_foo2 +Tables_in_mysqltest3 t1 select * from t1; n s 1 original foo2.t1 +use mysqltest; show tables; Tables_in_mysqltest t1 @@ -100,6 +102,9 @@ n s 11 eleven test 12 twelve test 13 thirteen test +select * from mysqltest.t3; +n s +1 original bar.t3 insert into mysqltest.t1 values (4, 'four test'); select * from mysqltest.t1; n s @@ -107,5 +112,13 @@ n s 2 two test 3 three test 4 four test +load table mysqltest.t1 from master; +ERROR 42S01: Table 't1' already exists +drop table mysqltest.t1; +load table mysqltest.t1 from master; +load table bar.t1 from master; +ERROR HY000: Error from master: 'Table 'bar.t1' doesn't exist' drop database mysqltest; drop database mysqltest2; +drop database mysqltest2; +drop database mysqltest3; diff --git a/mysql-test/t/ansi-master.opt b/mysql-test/t/ansi-master.opt deleted file mode 100644 index 6bf7a4f30e2..00000000000 --- a/mysql-test/t/ansi-master.opt +++ /dev/null @@ -1 +0,0 @@ ---ansi diff --git a/mysql-test/t/ansi.test b/mysql-test/t/ansi.test index f4aef5c3f8e..faf20f1e57e 100644 --- a/mysql-test/t/ansi.test +++ b/mysql-test/t/ansi.test @@ -6,6 +6,11 @@ drop table if exists t1; --enable_warnings +set sql_mode="MySQL40"; +select @@sql_mode; +set @@sql_mode="ANSI"; +select @@sql_mode; + # Test some functions that works different in ansi mode SELECT 'A' || 'B'; @@ -18,7 +23,4 @@ SELECT id,NULL,1,1.1,'a' FROM t1 GROUP BY id; SELECT id FROM t1 GROUP BY id2; drop table t1; -set sql_mode="MySQL40"; -select @@sql_mode; -set sql_mode="ANSI"; -select @@sql_mode; +SET @@SQL_MODE=""; diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 0b86b67fdbf..d57fd3bb193 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -110,6 +110,19 @@ drop table if exists t2; create table t2 (b int) select a as b, a+1 as b from t1; drop table if exists t1,t2; +# +# Test CREATE ... SELECT when insert fails +# + +CREATE TABLE t1 (a int not null); +INSERT INTO t1 values (1),(2),(1); +--error 1062 +CREATE TABLE t2 (primary key(a)) SELECT * FROM t1; +--error 1146 +SELECT * from t2; +DROP TABLE t1; +DROP TABLE IF EXISTS t2; + # # Test of primary key with 32 index # diff --git a/mysql-test/t/insert_select.test b/mysql-test/t/insert_select.test index 556b1ac9c8f..4effed9b6de 100644 --- a/mysql-test/t/insert_select.test +++ b/mysql-test/t/insert_select.test @@ -86,6 +86,7 @@ insert into t1 select * from t2; let $VERSION=`select version()`; --replace_result $VERSION VERSION show binlog events; +select * from t1; drop table t1, t2; # diff --git a/mysql-test/t/mysqlbinlog.test b/mysql-test/t/mysqlbinlog.test index 3a24efd9f39..956afb3e7ca 100644 --- a/mysql-test/t/mysqlbinlog.test +++ b/mysql-test/t/mysqlbinlog.test @@ -83,7 +83,7 @@ select "--- Remote --" as ""; select "--- Broken LOAD DATA --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 # And this too ! (altough it is documented) --disable_query_log @@ -97,7 +97,7 @@ select "--- --database --" as ""; select "--- --position --" as ""; --enable_query_log --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR ---exec $MYSQL_BINLOG --short-form --read-from-remote-server --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.002 +--exec $MYSQL_BINLOG --short-form --read-from-remote-server --position=27 --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 # clean up drop table t1; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 316810b1910..afbda2b4ad1 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -733,7 +733,7 @@ extern void yyerror(const char*); extern time_t start_time; extern char *mysql_data_home,server_version[SERVER_VERSION_LENGTH], - mysql_real_data_home[], *opt_mysql_tmpdir; + mysql_real_data_home[], *opt_mysql_tmpdir, mysql_charsets_dir[]; #define mysql_tmpdir (my_tmpdir(&mysql_tmpdir_list)) extern MY_TMPDIR mysql_tmpdir_list; extern const char *command_name[]; diff --git a/sql/set_var.cc b/sql/set_var.cc index a5024363545..eb456b0745f 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -509,8 +509,9 @@ struct show_var_st init_vars[]= { {sys_character_set_server.name, (char*) &sys_character_set_server,SHOW_SYS}, {sys_charset_system.name, (char*) &sys_charset_system, SHOW_SYS}, {sys_character_set_database.name, (char*) &sys_character_set_database,SHOW_SYS}, - {sys_character_set_client.name,(char*) &sys_character_set_client,SHOW_SYS}, + {sys_character_set_client.name,(char*) &sys_character_set_client, SHOW_SYS}, {sys_character_set_connection.name,(char*) &sys_character_set_connection,SHOW_SYS}, + {"character-sets-dir", mysql_charsets_dir, SHOW_CHAR}, {sys_character_set_results.name,(char*) &sys_character_set_results, SHOW_SYS}, {sys_collation_connection.name,(char*) &sys_collation_connection, SHOW_SYS}, {sys_collation_database.name,(char*) &sys_collation_database, SHOW_SYS}, diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 6a2e42e9bb1..cdca7454698 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -576,10 +576,14 @@ select_result::select_result() thd=current_thd; } -static String - default_line_term("\n",default_charset_info), - default_escaped("\\",default_charset_info), - default_field_term("\t",default_charset_info); +void select_result::send_error(uint errcode,const char *err) +{ + ::send_error(thd, errcode, err); +} + +static String default_line_term("\n",default_charset_info); +static String default_escaped("\\",default_charset_info); +static String default_field_term("\t",default_charset_info); sql_exchange::sql_exchange(char *name,bool flag) :file_name(name), opt_enclosed(0), dumpfile(flag), skip_lines(0) @@ -884,7 +888,7 @@ err: void select_export::send_error(uint errcode, const char *err) { - my_message(errcode, err, MYF(0));; + ::send_error(thd,errcode,err); (void) end_io_cache(&cache); (void) my_close(file,MYF(0)); file= -1; @@ -994,7 +998,7 @@ err: void select_dump::send_error(uint errcode,const char *err) { - my_message(errcode, err, MYF(0)); + ::send_error(thd,errcode,err); (void) end_io_cache(&cache); (void) my_close(file,MYF(0)); (void) my_delete(path,MYF(0)); // Delete file on error diff --git a/sql/sql_class.h b/sql/sql_class.h index 0596e514c1a..5e5d0335e9d 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -763,10 +763,7 @@ public: virtual bool send_fields(List &list,uint flag)=0; virtual bool send_data(List &items)=0; virtual bool initialize_tables (JOIN *join=0) { return 0; } - virtual void send_error(uint errcode,const char *err) - { - my_message(errcode, err, MYF(0)); - } + virtual void send_error(uint errcode,const char *err); virtual bool send_eof()=0; virtual void abort() {} }; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index f4127265ce6..0ad66beec2e 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1440,8 +1440,17 @@ void select_insert::send_error(uint errcode,const char *err) { DBUG_ENTER("select_insert::send_error"); - //TODO error should be sent at the query processing end + /* TODO error should be sent at the query processing end */ ::send_error(thd,errcode,err); + + if (!table) + { + /* + This can only happen when using CREATE ... SELECT and the table was not + created becasue of an syntax error + */ + DBUG_VOID_RETURN; + } table->file->extra(HA_EXTRA_NO_CACHE); table->file->activate_all_index(thd); /* diff --git a/sql/sql_select.cc b/sql/sql_select.cc index a97635c05bc..0b3ba1960c3 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -171,6 +171,8 @@ int handle_select(THD *thd, LEX *lex, select_result *result) { int res; register SELECT_LEX *select_lex = &lex->select_lex; + DBUG_ENTER("handle_select"); + fix_tables_pointers(lex->all_selects_list); if (select_lex->next_select()) res=mysql_union(thd, lex, result, &lex->unit, 0); @@ -187,16 +189,25 @@ int handle_select(THD *thd, LEX *lex, select_result *result) (ORDER*) lex->proc_list.first, select_lex->options | thd->options, result, &(lex->unit), &(lex->select_lex), 0); - if (res && result) - result->abort(); - if (res || thd->net.report_error) - { - send_error(thd, 0, NullS); + /* Don't set res if it's -1 as we may want this later */ + DBUG_PRINT("info",("res: %d report_error: %d", res, + thd->net.report_error)); + if (thd->net.report_error) res= 1; + if (res) + { + if (result) + { + result->send_error(0, NullS); + result->abort(); + } + else + send_error(thd, 0, NullS); + res= 1; // Error sent to client } delete result; - return res; + DBUG_RETURN(res); } From 8e7aa7f87595e4f359793de236ede49a11ee260e Mon Sep 17 00:00:00 2001 From: "paul@ice.snake.net" <> Date: Wed, 8 Oct 2003 12:51:10 -0500 Subject: [PATCH 76/81] Incorporate Stefan's new translations of German error messages. --- sql/share/german/errmsg.txt | 497 ++++++++++++++++++------------------ 1 file changed, 250 insertions(+), 247 deletions(-) diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt index 4fd38fdb6da..e301a7204b7 100644 --- a/sql/share/german/errmsg.txt +++ b/sql/share/german/errmsg.txt @@ -2,12 +2,15 @@ This file is public domain and comes with NO WARRANTY of any kind Dirk Munzinger (dmun@4t2.com) - Version: 07.06.2001 + 2001-06-07 Georg Richter (georg@php.net) fixed typos and translation translated new error messages 2002-12-11 + + Stefan Hinz (stefan@mysql.com) + 2003-10-01 */ character-set=latin1 @@ -19,275 +22,275 @@ character-set=latin1 "Kann Datei '%-.64s' nicht erzeugen (Fehler: %d)", "Kann Tabelle '%-.64s' nicht erzeugen (Fehler: %d)", "Kann Datenbank '%-.64s' nicht erzeugen (Fehler: %d)", -"Kann Datenbank '%-.64s' nicht erzeugen; datenbank '%-.64s' existiert bereits.", -"Kann Datenbank '%-.64s' nicht löschen; keine Datenbank '%-.64s' vorhanden.", -"Fehler beim Löschen der Datenbank. ('%-.64s' kann nicht gelöscht werden, Fehlernuumer: %d)", -"Fehler beim Löschen der Datenbank. (Verzeichnis '%-.64s' kann nicht gelöscht werden, Fehlernummer: %d)", -"Fehler beim Löschen von '%-.64s'. (Fehler: %d)", -"Datensatz in der Systemtabelle nicht lesbar.", -"Kann Status von '%-.64s' nicht ermitteln. (Fehler: %d)", -"Kann Arbeitsverzeichnis nicht ermitteln. (Fehler: %d)", -"Datei nicht sperrbar. (Fehler: %d)", -"Kann Datei '%-.64s' nicht öffnen (Fehler: %d)", +"Kann Datenbank '%-.64s' nicht erzeugen. Datenbank '%-.64s' existiert bereits", +"Kann Datenbank '%-.64s' nicht lšschen. Keine Datenbank '%-.64s' vorhanden", +"Fehler beim Lšschen der Datenbank ('%-.64s' kann nicht gelšscht werden, Fehlernuumer: %d)", +"Fehler beim Lšschen der Datenbank (Verzeichnis '%-.64s' kann nicht gelšscht werden, Fehlernummer: %d)", +"Fehler beim Lšschen von '%-.64s' (Fehler: %d)", +"Datensatz in der Systemtabelle nicht lesbar", +"Kann Status von '%-.64s' nicht ermitteln (Fehler: %d)", +"Kann Arbeitsverzeichnis nicht ermitteln (Fehler: %d)", +"Datei kann nicht gesperrt werden (Fehler: %d)", +"Datei '%-.64s' nicht šffnen (Fehler: %d)", "Kann Datei '%-.64s' nicht finden (Fehler: %d)", "Verzeichnis von '%-.64s' nicht lesbar (Fehler: %d)", "Kann nicht in das Verzeichnis '%-.64s' wechseln (Fehler: %d)", -"Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geändert", -"Festplatte voll (%-.64s). Warte bis jemand Platz schafft ...", -"Kann nicht speichern, doppelter Schlüssel in Tabelle '%-.64s'", -"Fehler beim Schließen von '%-.64s' (Fehler: %d)", +"Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geŠndert", +"Festplatte voll (%-.64s). Warte, bis jemand Platz schafft ...", +"Kann nicht speichern, Grund: doppelter SchlŸssel in Tabelle '%-.64s'", +"Fehler beim Schlie§en von '%-.64s' (Fehler: %d)", "Fehler beim Lesen der Datei '%-.64s' (Fehler: %d)", -"Fehler beim Umbenennen von '%-.64s' nach '%-.64s' (Fehler: %d)", +"Fehler beim Umbenennen von '%-.64s' in '%-.64s' (Fehler: %d)", "Fehler beim Speichern der Datei '%-.64s' (Fehler: %d)", -"'%-.64s' ist für Veränderungen gesperrt", -"Sortieren abgebrochen", -"View '%-.64s' existiert für '%-.64s' nicht", +"'%-.64s' ist fŸr €nderungen gesperrt", +"Sortiervorgang abgebrochen", +"View '%-.64s' existiert fŸr '%-.64s' nicht", "Fehler %d (Tabellenhandler)", "Diese Option gibt es nicht (Tabellenhandler)", "Kann Datensatz nicht finden", -"Falsche Information in Datei: '%-.64s'", -"Falsche Schlüssel-Datei für Tabelle '%-.64s'; versuche zu reparieren!", -"Alte Schlüssel-Datei für Tabelle '%-.64s'; repariere!", +"Falsche Information in Datei '%-.64s'", +"Falsche SchlŸssel-Datei fŸr Tabelle '%-.64s'. versuche zu reparieren", +"Alte SchlŸssel-Datei fŸr Tabelle '%-.64s'. Bitte reparieren", "'%-.64s' ist nur lesbar", -"Kein Speicher vorhanden (benötigt %d bytes). Server neu starten.", -"Kein Speicher zum Sortieren. sort_buffer_size sollte erhöht werden.", -"Unerwartetes Ende beim Lesen der Datei '%-.64s'. (Fehler: %d)", -"Zu viele Verbindungen.", -"Zuwenig Speicher.", -"Kann Hostname für diese Adresse nicht erhalten.", -"Schlechter Handshake.", -"Keine Zugriffsberechtigung für Benutzer: '%-.32s'@'%-.64s' für Datenbank '%-.64s'.", -"Keine Zugriffsberechtigung für Benutzer: '%-.32s'@'%-.64s'. (Verwendetes Passwort: %-.64s)", -"Keine Datenbank ausgewählt.", -"Unbekannter Befehl.", -"Feld '%-.64s' kann nicht NULL sein.", -"Unbekannte Datenbank '%-.64s'.", -"Tabelle '%-.64s' bereits vorhanden.", -"Unbekannte Tabelle '%-.64s'.", -"Spalte: '%-.64s' in %-.64s ist mißverständlich.", -"Der Server wird herunter gefahren...", -"Unbekanntes Tabellenfeld '%-.64s' in %-.64s.", -"'%-.64s' ist nicht in GROUP BY.", -"Gruppierung nicht möglich bei '%-.64s'.", -"Die Verwendung von sum-Funktionen und Spalten ist nicht möglich.", -"Spaltenzähler entspricht nicht dem Wertzähler.", -"Name des Bezeichners '%-.64s' ist zu lang.", +"Kein Speicher vorhanden (%d Bytes benštigt). Bitte Server neu starten", +"Kein Speicher zum Sortieren vorhanden. sort_buffer_size sollte erhšht werden", +"Unerwartetes Ende beim Lesen der Datei '%-.64s' (Fehler: %d)", +"Zu viele Verbindungen", +"Kein Speicher mehr vorhanden. PrŸfen Sie, ob mysqld oder ein anderer Prozess allen Speicher verbraucht. Wenn nicht, sollten Sie mit 'ulimit' dafŸr sorgen, dass mysqld mehr Speicher benutzen darf, oder mehr Swap-Speicher einrichten", +"Kann Hostnamen fŸr diese Adresse nicht erhalten", +"Schlechter Handshake", +"Benutzer '%-.32s'@'%-.64s' hat keine Zugriffsberechtigung fŸr Datenbank '%-.64s'", +"Benutzer '%-.32s'@'%-.64s' hat keine Zugriffsberechtigung (verwendetes Passwort: %-.64s)", +"Keine Datenbank ausgewŠhlt", +"Unbekannter Befehl", +"Feld '%-.64s' darf nicht NULL sein", +"Unbekannte Datenbank '%-.64s'", +"Tabelle '%-.64s' bereits vorhanden", +"Unbekannte Tabelle '%-.64s'", +"Spalte '%-.64s' in %-.64s ist nicht eindeutig", +"Der Server wird heruntergefahren", +"Unbekanntes Tabellenfeld '%-.64s' in %-.64s", +"'%-.64s' ist nicht in GROUP BY vorhanden", +"Gruppierung Ÿber '%-.64s' nicht mšglich", +"Die Verwendung von Summierungsfunktionen und Spalten im selben Befehl ist nicht erlaubt", +"Die Anzahl der Spalten entspricht nicht der Anzahl der Werte", +"Name des Bezeichners '%-.64s' ist zu lang", "Doppelter Spaltenname vorhanden: '%-.64s'", -"Doppelter Name für Schlüssel (Key) vorhanden: '%-.64s'", -"Doppelter Eintrag '%-.64s' für Schlüssel %d.", -"Falsche Spalten-Spezifizierung für Spalte '%-.64s'.", -"%-.64s bei '%-.64s' in Zeile %d.", -"Leere Abfrage.", -"Keine eindeutiger Tabellenname/Alias: '%-.64s'", -"Fehlerhafter Vorgabewert (Default-Wert): '%-.64s'", -"Mehrfacher Primärschlüssel (Primary Key) definiert.", -"Zuviele Schlüssel definiert. Maximal %d Schlüssel erlaubt.", -"Zuviele Teilschlüssel definiert. Maximal sind %d Teilschlüssel erlaubt.", -"Schlüssel ist zu lang. Die maximale Schlüssellänge beträgt %d.", -"In der Tabelle gibt es keine Schlüsselspalte '%-.64s'.", -"BLOB-Feld '%-.64s' kann nicht als Schlüssel verwendet werden.", -"Feldlänge für Feld '%-.64s' zu groß (max. = %d). BLOB-Feld verwenden!", -"Nur ein Auto-Feld möglich, welches als Schlüssel definiert werden muß.", -"%-.64s: Warte auf Verbindungen.\n", -"%-.64s: Normal beendet.\n", +"Doppelter Name fŸr SchlŸssel (Key) vorhanden: '%-.64s'", +"Doppelter Eintrag '%-.64s' fŸr SchlŸssel %d", +"Falsche Spaltenangaben fŸr Spalte '%-.64s'", +"%s bei '%-.80s' in Zeile %d", +"Leere Abfrage", +"Tabellenname/Alias '%-.64s' nicht eindeutig", +"Fehlerhafter Vorgabewert (DEFAULT): '%-.64s'", +"Mehrfacher PrimŠrschlŸssel (PRIMARY KEY) definiert", +"Zu viele SchlŸssel definiert. Maximal %d SchlŸssel erlaubt", +"Zu viele TeilschlŸssel definiert. Maximal sind %d TeilschlŸssel erlaubt", +"SchlŸssel ist zu lang. Die maximale SchlŸssellŠnge betrŠgt %d", +"In der Tabelle gibt es keine SchlŸsselspalte '%-.64s'", +"BLOB-Feld '%-.64s' kann beim verwendeten Tabellentyp nicht als SchlŸssel verwendet werden", +"FeldlŠnge fŸr Feld '%-.64s' zu gro§ (maximal %d). BLOB-Feld verwenden!", +"Falsche Tabellendefinition. Es darf nur ein Auto-Feld geben und dieses muss als SchlŸssel definiert werden", +"%-.64s: Bereit fŸr Verbindungen\n", +"%-.64s: Normal heruntergefahren\n", "%-.64s: Signal %d erhalten. Abbruch!\n", -"%-.64s: Shutdown ausgeführt.\n", -"%-.64s: Beendigung des Thread %ld veranlasst. Benutzer: '%-.64s'\n", -"Kann IP-Socket nicht erstellen.", -"Tabelle '%-.64s' besitzt keinen wie in CREATE INDEX verwendeten Index. Index neu anlegen.", -"Feldbegrenzer Argument ist nicht in der Form wie erwartet. Bitte im Manual nachlesen.", -"Eine feste Reihenlänge kann für BLOBs nicht verwendet werden. Verwende 'fields terminated by' stattdessen.", -"Feld '%-.64s' muß im Datenbank-Verzeichnis vorhanden und lesbar für alle sein.", -"Datei '%-.64s' bereits vorhanden.", -"Datensätze: %ld Gelöscht: %ld Ausgelassen: %ld Warnungen: %ld", -"Datensätze: %ld Duplikate: %ld", -"Falscher Unterteilschlüssel. Der verwendete Schlüsselteil ist entweder kein String, die verwendete Länge ist länger als der Teilschlüssel oder der Tabellenhandler unterstützt keine Unterteilschlüssel.", -"Mit ALTER TABLE können nicht alle Felder auf einmal gelöscht werden. Verwende DROP TABLE stattdessen.", -"Kann '%-.64s' nicht löschen (DROP). Existiert das Feld/der Schlüssel?", -"Datensätze: %ld Duplikate: %ld Warnungen: %ld", -"Die Verwendung der Zieltabelle '%-.64s' ist bei Update in FROM Teil nicht zulässig.", +"%-.64s: Heruntergefahren (shutdown)\n", +"%s: Thread %ld zwangsweise beendet. Benutzer: '%-.32s'\n", +"Kann IP-Socket nicht erzeugen", +"Tabelle '%-.64s' besitzt keinen wie den in CREATE INDEX verwendeten Index. Index neu anlegen", +"Feldbegrenzer-Argument ist nicht in der erwarteten Form. Bitte im Handbuch nachlesen", +"Eine feste ZeilenlŠnge kann fŸr BLOB-Felder nicht verwendet werden. Bitte 'fields terminated by' verwenden", +"Datei '%-.64s' muss im Datenbank-Verzeichnis vorhanden und lesbar fŸr alle sein", +"Datei '%-.64s' bereits vorhanden", +"DatensŠtze: %ld Gelšscht: %ld Ausgelassen: %ld Warnungen: %ld", +"DatensŠtze: %ld Duplikate: %ld", +"Falscher UnterteilschlŸssel. Der verwendete SchlŸsselteil ist entweder kein String, die verwendete LŠnge ist lŠnger als der TeilschlŸssel oder der Tabellenhandler unterstŸtzt keine UnterteilschlŸssel", +"Mit ALTER TABLE kšnnen nicht alle Felder auf einmal gelšscht werden. DafŸr DROP TABLE verwenden", +"Kann '%-.64s' nicht lšschen. Existiert das Feld / der SchlŸssel?", +"DatensŠtze: %ld Duplikate: %ld Warnungen: %ld", +"Die Verwendung der zu aktualisierenden Zieltabelle '%-.64s' ist in der FROM-Klausel nicht zulŠssig.", "Unbekannte Thread-ID: %lu", -"Threads %lu. ist einem anderen Besitzer zugeordnet.", -"Keine Tabellen in Verwendung.", -"Zuviele Angaben für Spalte %-.64s und SET.", -"Kann keinen eindeutigen Dateinamen für die Logdatei ermitteln %-.64s.(1-999)\n", -"Tabelle '%-.64s' mit Lese-Sperre versehen und kann nicht aktualisiert werden.", -"Tabelle '%-.64s' wurde nicht mittels LOCK TABLES gesperrt.", -"BLOB-Feld '%-.64s' kann keinen Vorgabewert (Default-Value) besitzen.", -"Unerlaubter Datenbankname '%-.64s'.", -"Unerlaubter Tabellenname '%-.64s'.", -"Die Ausführung des SELECT würde zu viele Datensätze untersuchen und wahrscheinlich sehr lange daueren. Bitte WHERE überprüfen oder gegebenenfalls SET SQL_BIG_SELECTS=1 verwenden.", -"Unbekannter Fehler.", -"Unbekannte Procedure %-.64s.", -"Falsche Parameterzahl für Procedure %-.64s.", -"Falsche Parameter in Procedure %-.64s.", -"Unbekannte Tabelle '%-.64s' in %-.64s.", -"Feld '%-.64s' wurde zweimal spezifiziert.", -"Falsche Verwendung der GROUP-Funktion.", -"Tabelle '%-.64s' verwendet eine Extension, die in dieser MySQL Version nicht verfügbar ist.", -"Eine Tabelle muß mindestens eine Spalte besitzen.", -"Tabelle '%-.64s' voll.", -"Unbekannter Zeichensatz: '%-.64s'.", -"Zuviele Tabellen. MySQL kann maximal %d Tabellen in einem Join verwenden.", -"Zuviele Felder.", -"Zuviele Spalten. Maximal sind %d Spalten erlaubt (Ohne BLOBs). Einige Felder sollten in BLOBs umgewandelt werden.", -"Thread Stack Überlauf : Verwendet: %ld von %ld Stack. Verwende 'mysqld -O thread_stack=#' um ggf. einen größeren Stack anzulegen.", -"OUTER JOIN enthält fehlerhafte Abhängigkeiten. Prüfen Sie Ihre ON Bedingungen.", -"Spalte '%-.64s' wurde mit UNIQUE oder INDEX benutzt ohne als NOT NULL definiert zu sein.", -"Kann Funktion '%-.64s' nicht laden.", -"Kann Funktion '%-.64s' nicht initialisieren; %-.80s.", -"Keine Pfade gestattet für Shared Library.", -"Funktion '%-.64s' existiert schon.", -"Kann Shared Library '%-.64s' nicht öffnen. (Fehler: %d %-.64s)", -"Kann Funktion '%-.64s' in der Library nicht finden.", -"Funktion '%-.64s' ist nicht definiert.", -"Host blockiert wegen zu vieler Verbindungsfehler. Aufheben der Blockierung mit 'mysqladmin flush-hosts'.", -"Host hat keine Berechtigung, eine Verbindung zu diesem MySQL Server herzustellen.", -"Sie benutzen MySQL als anonymer Benutzer und dürfen daher keine Passwörter ändern.", -"Sie müssen autorisiert sein zum Aktualisieren von Tabellen in der mysql Datenbank, um für andere Benutzer Passwörter ändern zu können.", -"Kann keinen passenden Datensatz in der Benutzer-Tabelle finden.", -"Datensätze gefunden: %ld Geändert: %ld Warnungen: %ld", -"Kann keinen neuen Thread erzeugen (Fehler: %d). Sollte die Speichergrenze nicht erreicht sein, bitte in der Dokumentation nach evtl. Betriebssystem abhängigen Fehlern nachlesen.", -"Spaltenzahl stimmt nicht mit der Anzahl der Werte überein in Reihe%ld", -"Kann Tabelle'%-.64s' nicht wieder öffnen", -"Unerlaubte Verwendung eines NULL-Wertes", -"Fehler '%-.64s' von regexp", -"Das Vermischen von GROUP Spalten (MIN(),MAX(),COUNT()...) mit Nicht-GROUP Spalten ist nicht erlaubt, sofern keine GROUP BY Klausel vorhanden ist.", -"Keine solche Berechtigung für User '%-.32s' auf Host '%-.64s'", -"%-.16s Befehl nicht erlaubt für User: '%-.32s'@'%-.64s' für Tabelle '%-.64s'", -"%-.16s Befehl nicht erlaubt für User: '%-.32s'@'%-.64s' in Spalte '%-.64s' in Tabelle '%-.64s'", -"Unzulässiger GRANT/REVOKE Befehl. Weiteres zum Thema Berechtigungen im Manual.", -"Das Host oder User Argument für GRANT ist zu lang", +"Sie sind nicht EigentŸmer von Thread %lu", +"Keine Tabellen verwendet", +"Zu viele Strings fŸr SET-Spalte %-.64s angegeben", +"Kann keinen eindeutigen Dateinamen fŸr die Logdatei %-.64s erzeugen (1-999)\n", +"Tabelle '%-.64s' ist mit Lesesperre versehen und kann nicht aktualisiert werden", +"Tabelle '%-.64s' wurde nicht mit LOCK TABLES gesperrt", +"BLOB-Feld '%-.64s' darf keinen Vorgabewert (DEFAULT) haben", +"Unerlaubter Datenbankname '%-.64s'", +"Unerlaubter Tabellenname '%-.64s'", +"Die AusfŸhrung des SELECT wŸrde zu viele DatensŠtze untersuchen und wahrscheinlich sehr lange dauern. Bitte WHERE-Klausel ŸberprŸfen oder gegebenenfalls SET SQL_BIG_SELECTS=1 oder SET SQL_MAX_JOIN_SIZE=# verwenden", +"Unbekannter Fehler", +"Unbekannte Prozedur '%-.64s'", +"Falsche Parameterzahl fŸr Prozedur '%-.64s'", +"Falsche Parameter fŸr Prozedur '%-.64s'", +"Unbekannte Tabelle '%-.64s' in '%-.64s'", +"Feld '%-.64s' wurde zweimal angegeben", +"Falsche Verwendung einer Gruppierungsfunktion", +"Tabelle '%-.64s' verwendet eine Extension, die in dieser MySQL-Version nicht verfŸgbar ist", +"Eine Tabelle mu§ mindestens 1 Spalte besitzen", +"Tabelle '%-.64s' ist voll", +"Unbekannter Zeichensatz: '%-.64s'", +"Zu viele Tabellen. MySQL kann in einem Join maximal %d Tabellen verwenden", +"Zu viele Spalten", +"ZeilenlŠnge zu gro§. Die maximale SpaltenlŠnge fŸr den verwendeten Tabellentyp (ohne BLOB-Felder) betrŠgt %d. Einige Felder mŸssen in BLOB oder TEXT umgewandelt werden", +"Thread-Stack-†berlauf. Benutzt: %ld von %ld Stack. 'mysqld -O thread_stack=#' verwenen, um notfalls einen grš§eren Stack anzulegen", +"OUTER JOIN enthŠlt fehlerhafte AbhŠngigkeiten. In ON verwendete Bedingungen ŸberprŸfen", +"Spalte '%-.64s' wurde mit UNIQUE oder INDEX benutzt, ist aber nicht als NOT NULL definiert", +"Kann Funktion '%-.64s' nicht laden", +"Kann Funktion '%-.64s' nicht initialisieren: %-.80s", +"Keine Pfade gestattet fŸr Shared Library", +"Funktion '%-.64s' existiert schon", +"Kann Shared Library '%-.64s' nicht šffnen (Fehler: %d %-.64s)", +"Kann Funktion '%-.64s' in der Library nicht finden", +"Funktion '%-.64s' ist nicht definiert", +"Host '%-.64s' blockiert wegen zu vieler Verbindungsfehler. Aufheben der Blockierung mit 'mysqladmin flush-hosts'", +"Host '%-.64s' hat keine Berechtigung, sich mit diesem MySQL-Server zu verbinden", +"Sie benutzen MySQL als anonymer Benutzer und dŸrfen daher keine Passwšrter Šndern", +"Sie benštigen die Berechtigung zum Aktualisieren von Tabellen in der Datenbank 'mysql', um die Passwšrter anderer Benutzer Šndern zu kšnnen", +"Kann keinen passenden Datensatz in Tabelle 'user' finden", +"DatensŠtze gefunden: %ld GeŠndert: %ld Warnungen: %ld", +"Kann keinen neuen Thread erzeugen (Fehler: %d). Sollte noch Speicher verfŸgbar sein, bitte im Handbuch wegen mšglicher Fehler im Betriebssystem nachschlagen", +"Anzahl der Spalten stimmt nicht mit der Anzahl der Werte in Zeile %ld Ÿberein", +"Kann Tabelle'%-.64s' nicht erneut šffnen", +"Unerlaubte Verwendung eines NULL-Werts", +"regexp lieferte Fehler '%-.64s'", +"Das Vermischen von GROUP-Spalten (MIN(),MAX(),COUNT()...) mit Nicht-GROUP-Spalten ist nicht zulŠssig, wenn keine GROUP BY-Klausel vorhanden ist", +"FŸr Benutzer '%-.32s' auf Host '%-.64s' gibt es keine solche Berechtigung", +"%-.16s Befehl nicht erlaubt fŸr Benutzer '%-.32s'@'%-.64s' und fŸr Tabelle '%-.64s'", +"%-.16s Befehl nicht erlaubt fŸr Benutzer '%-.32s'@'%-.64s' und Spalte '%-.64s' in Tabelle '%-.64s'", +"UnzulŠssiger GRANT- oder REVOKE-Befehl. VerfŸgbare Berechtigungen sind im Handbuch aufgefŸhrt", +"Das Host- oder User-Argument fŸr GRANT ist zu lang", "Tabelle '%-.64s.%-.64s' existiert nicht", -"Keine solche Berechtigung für User '%-.32s' auf Host '%-.64s' an Tabelle '%-.64s'", -"Der used Befehl ist mit dieser MySQL Version nicht erlaubt", -"Fehler in der Syntax", -"Verzögerter Einfüge-Thread konnte den angeforderten Lock für Tabelle %-.64s nicht erhalten", -"Zu viele Delayed Threads in Verwendung", -"Abbruch der Verbindung %ld zur Datenbank: '%-.64s' User: '%-.64s' (%-.64s)", -"Empfangenes Paket ist größer als 'max_allowed_packet'", +"Keine solche Berechtigung fŸr User '%-.32s' auf Host '%-.64s' an Tabelle '%-.64s'", +"Der verwendete Befehl ist in dieser MySQL-Version nicht zulŠssig", +"Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen (diese kann fŸr verschiedene Server-Versionen unterschiedlich sein)", +"Verzšgerter (DELAYED) EinfŸge-Thread konnte die angeforderte Sperre fŸr Tabelle '%-.64s' nicht erhalten", +"Zu viele verzšgerte (DELAYED) Threads in Verwendung", +"Abbruch der Verbindung %ld zur Datenbank '%-.64s'. Benutzer: '%-.64s' (%-.64s)", +"Empfangenes Paket ist grš§er als 'max_allowed_packet'", "Lese-Fehler bei einer Kommunikations-Pipe", -"Fehler von fcntl()", -"Empfangenes Paket ist nicht in Reihenfolge", -"Kommunikationspaket läßt sich nicht entpacken", +"fcntl() lieferte einen Fehler", +"Pakete nicht in der richtigen Reihenfolge empfangen", +"Kommunikationspaket lŠsst sich nicht entpacken", "Fehler beim Lesen eines Kommunikationspakets", -"Zeitüberschreitung beim Lesen eines Kommunikationspakets.", -"Fehler beim Schreiben eines Kommunikationspakets.", -"Zeitüberschreitung beim Schreiben eines Kommunikationspakets.", -"Ergebnis ist länger als max_allowed_packet", -"Der verwendete Tabellentyp unterstützt keine BLOB/TEXT Spalten", -"Der verwendete Tabellentyp unterstützt keine AUTO_INCREMENT Spalte", +"ZeitŸberschreitung beim Lesen eines Kommunikationspakets", +"Fehler beim Schreiben eines Kommunikationspakets", +"ZeitŸberschreitung beim Schreiben eines Kommunikationspakets", +"Ergebnis ist lŠnger als max_allowed_packet", +"Der verwendete Tabellentyp unterstŸtzt keine BLOB- und TEXT-Spalten", +"Der verwendete Tabellentyp unterstŸtzt keine AUTO_INCREMENT-Spalten", "INSERT DELAYED kann nicht auf Tabelle '%-.64s' angewendet werden, da diese mit LOCK TABLES gesperrt ist", "Falscher Spaltenname '%-.100s'", "Der verwendete Tabellen-Handler kann die Spalte '%-.64s' nicht indizieren", -"Alle Tabellen in der MERGE-Tabelle sind nicht gleich definiert", -"Schreiben in Tabelle '%-.64s' nicht möglich wegen eines Unique Constraint", -"BLOB Spalte '%-.64s' wird in der Key-Definition ohne Längenangabe verwendet", -"Alle Teile eines PRIMARY KEY müssen als NOT NULL definiert sein; Wenn NULL benötigt wird sollte ein UNIQUE Key verwendet werden", -"Ergebnis besteht aus mehr als einer Reihe", -"Dieser Tabellentyp verlangt nach einem PRIMARY KEY", -"Diese MySQL-Version ist nicht mit RAID-Unterstützung kompiliert", -"Unter Verwendung des sicheren Aktualisierungsmodus wurde versucht eine Tabelle zu aktualisieren ohne eine KEY-Spalte in der WHERE-Klausel", -"Schlüssel '%-.64s' existiert nicht in der Tabelle '%-.64s'", -"Kann Tabelle nicht öffnen", -"Der Tabellen-Handler für diese Tabelle unterstützt kein %s", -"Keine Berechtigung dieses Kommando in einer Transaktion auszuführen", -"Fehler %d wärend COMMIT", -"Fehler %d wärend ROLLBACK", -"Fehler %d wärend FLUSH_LOGS", -"Fehler %d wärend CHECKPOINT", -"Verbindungsabbruch %ld zu db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)", -"Der Tabellenhandler für die Tabelle unterstützt kein Binary Tabellendump", -"Binlog wurde beendet wärend FLUSH MASTER", -"Neuerstellung des Index der gedumpten Tabelle '%-.64s' fehlgeschlagen", +"Nicht alle Tabellen in der MERGE-Tabelle sind gleich definiert", +"Schreiben in Tabelle '%-.64s' nicht mšglich wegen einer eindeutigen BeschrŠnkung (unique constraint)", +"BLOB- oder TEXT-Spalte '%-.64s' wird in der SchlŸsseldefinition ohne SchlŸssellŠngenangabe verwendet", +"Alle Teile eines PRIMARY KEY mŸssen als NOT NULL definiert sein. Wenn NULL in einem SchlŸssel verwendet wird, muss ein UNIQUE-SchlŸssel verwendet werden", +"Ergebnis besteht aus mehr als einer Zeile", +"Dieser Tabellentyp benštigt einen PRIMARY KEY", +"Diese MySQL-Version ist nicht mit RAID-UnterstŸtzung kompiliert", +"MySQL lŠuft im sicheren Aktualisierungsmodus (safe update mode). Sie haben versucht, eine Tabelle zu aktualisieren, ohne in der WHERE-Klausel eine KEY-Spalte anzugeben", +"SchlŸssel '%-.64s' existiert in der Tabelle '%-.64s' nicht", +"Kann Tabelle nicht šffnen", +"Die Speicher-Engine fŸr diese Tabelle unterstŸtzt kein %s", +"Sie dŸrfen diesen Befehl nicht in einer Transaktion ausfŸhren", +"Fehler %d beim COMMIT", +"Fehler %d beim ROLLBACK", +"Fehler %d bei FLUSH_LOGS", +"Fehler %d bei CHECKPOINT", +"Verbindungsabbruch %ld zur Datenbank '%-.64s'. Benutzer: '%-.32s', Host: `%-.64s' (%-.64s)", +"Die Speicher-Engine fŸr die Tabelle unterstŸtzt keinen binŠren Tabellen-Dump", +"Binlog geschlossen. Kann RESET MASTER nicht ausfŸhren", +"Neuerstellung des Indizes der Dump-Tabelle '%-.64s' fehlgeschlagen", "Fehler vom Master: '%-.64s'", "Netzfehler beim Lesen vom Master", "Netzfehler beim Schreiben zum Master", "Kann keinen FULLTEXT-Index finden, der der Spaltenliste entspricht", -"Kann das aktuelle Kommando wegen aktiver Tabellensperre oder aktiver Transaktion nicht ausführen", +"Kann den angegebenen Befehl wegen einer aktiven Tabellensperre oder einer aktiven Transaktion nicht ausfŸhren", "Unbekannte Systemvariable '%-.64s'", -"Tabelle '%-.64s' ist als defekt makiert und sollte repariert werden", -"Tabelle '%-.64s' ist als defekt makiert und der letzte (automatische) Reparaturversuch schlug fehl.", -"Warnung: Das Rollback konnte bei einigen Tabellen, die nicht mittels Transaktionen geändert wurden, nicht ausgeführt werden.", -"Multi-Statement Transaktionen benötigen mehr als 'max_binlog_cache_size' Bytes An Speicher. Diese mysqld-Variable vergrössern und erneut versuchen.", -"Diese Operation kann nicht bei einem aktiven Slave durchgeführt werden. Das Kommand STOP SLAVE muss zuerst ausgeführt werden.", -"Diese Operation benötigt einen aktiven Slave. Slave konfigurieren und mittels START SLAVE aktivieren.", -"Der Server ist nicht als Slave konfigiriert. Im Konfigurations-File oder mittel CHANGE MASTER TO beheben.", -"Konnte Master-Info-Struktur nicht initialisieren; Berechtigungen von master.info prüfen.", -"Konnte keinen Slave-Thread starten. System-Resourcen überprüfen.", -"Benutzer %-.64s hat mehr als 'max_user_connections' aktive Verbindungen", -"Bei der Verwendung mit SET dürfen nur konstante Ausdrücke verwendet werden", -"Beim Warten auf einen LOCK wurde die zulässige Wartezeit überschritten.", -"Die Gesamtanzahl der LOCKS überschreitet die Grösse der Locktabelle.", -"Während einer READ UNCOMMITED Transaktion kann keine Update LOCK angefordert werden.", -"Solange ein globaler Read LOCK gesetzt ist, ist DROP DATABASE nicht zulässig.", -"Solange ein globaler Read LOCK gesetzt ist, ist CREATE DATABASE nicht zulässig.", -"Falsche Argumente für %s", -"'%-.32s'@'%-.64s' is nicht berechtigt neue Benutzer hinzuzufügen.", -"Falsche Tabellendefinition; sämtliche MERGE-Tabellen müssen in derselben Datenbank sein.", -"Beim Versuch einen Lock anzufordern ist ein Deadlock aufgetreten. Es wird versucht die Transaktion erneut zu starten.", -"Der verwendete Tabellentyp unterstützt keinen FULLTEXT-Index.", -"Foreign_Key Beschränkung konnte nicht hinzugefügt werden.", -"Hinzufügen eines Kind-Datensatzes schlug aufgrund einer Foreign-Key Beschränkung fehl.", -"Löschen eines Eltern-Datensatzes schlug aufgrund einer Foreign-Key Beschränkung fehl.", +"Tabelle '%-.64s' ist als defekt markiert und sollte repariert werden", +"Tabelle '%-.64s' ist als defekt markiert und der letzte (automatische?) Reparaturversuch schlug fehl", +"€nderungen an einigen nicht transaktionalen Tabellen konnten nicht zurŸckgerollt werden", +"Transaktionen, die aus mehreren Befehlen bestehen, benštigen mehr als 'max_binlog_cache_size' Bytes an Speicher. Diese mysqld-Variable bitte vergršssern und erneut versuchen", +"Diese Operation kann nicht bei einem aktiven Slave durchgefŸhrt werden. Bitte zuerst STOP SLAVE ausfŸhren", +"Diese Operation benštigt einen aktiven Slave. Bitte Slave konfigurieren und mittels START SLAVE aktivieren", +"Der Server ist nicht als Slave konfiguriert. Bitte in der Konfigurationsdatei oder mittels CHANGE MASTER TO beheben", +"Konnte Master-Info-Struktur nicht initialisieren. Bitte Berechtigungen von master.info prŸfen", +"Konnte keinen Slave-Thread starten. Bitte System-Ressourcen ŸberprŸfen", +"Benutzer '%-.64s' hat mehr als max_user_connections aktive Verbindungen", +"Bei SET dŸrfen nur konstante AusdrŸcke verwendet werden", +"Beim Warten auf eine Sperre wurde die zulŠssige Wartezeit Ÿberschritten. Bitte versuchen Sie, die Transaktion neu zu starten", +"Die Gesamtzahl der Sperren Ÿberschreitet die Grš§e der Sperrtabelle", +"WŠhrend einer READ UNCOMMITED-Transaktion kšnnen keine UPDATE-Sperren angefordert werden", +"DROP DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hŠlt", +"CREATE DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hŠlt", +"Falsche Argumente fŸr %s", +"'%-.32s'@'%-.64s' is nicht berechtigt, neue Benutzer hinzuzufŸgen", +"Falsche Tabellendefinition. Alle MERGE-Tabellen mŸssen sich in derselben Datenbank befinden", +"Beim Versuch, eine Sperre anzufordern, ist ein Deadlock aufgetreten. Versuchen Sie, die Transaktion erneut zu starten", +"Der verwendete Tabellentyp unterstŸtzt keine FULLTEXT-Indizes", +"FremdschlŸssel-BeschrŠnkung konnte nicht hinzugefŸgt werden", +"HinzufŸgen eines Kind-Datensatzes schlug aufgrund einer FremdschlŸssel-BeschrŠnkung fehl", +"Lšschen eines Eltern-Datensatzes schlug aufgrund einer FremdschlŸssel-BeschrŠnkung fehl", "Fehler bei der Verbindung zum Master: %-.128s", -"Beim Ausführen einer Abfrage auf dem Master trat ein Fehler auf: %-.128s.", -"Fehler beim Ausführen des Befehls %s: %-.128s.", -"Falsche Verwendung von %s und %s.", -"Die verwendeten SELECTs liefern eine unterschiedliche Anzahl von Spalten zurück.", -"Augrund eines READ LOCK Konflikts kann die Abfrage nicht ausgeführt werden.", -"Die Verwendung von transaktions- und nicht transaktionsaktionsunterstützenden Tabellen ist deaktiviert.", -"Option '%s' wird im Befehl zweimal verwendet.", -"Benutzer '%-.64s' hat Limit '%s' überschritten. (Momentaner Wert: %ld)", -"Befehl nicht zulässig. Hierfür wird die Berechtigung %-.128s benötigt.", -"Variable '%-.64s' ist eine lokale Variable und kann nicht mit SET GLOBAL verändert werden.", -"Variable '%-.64s' ist eine globale Variable und muss mit SET GLOBAL verändert werden.", -"Variable '%-.64s' besitzt keinen vorgegebenen Wert.", -"Der Variablen '%-.64s' kann nicht der Wert '%-.64s' zugewiesen werden.", -"Falscher Typ für Variable '%-.64s'", -"Variable '%-.64s' kann nur verändert, nicht aber gelesen werden.", +"Beim AusfŸhren einer Abfrage auf dem Master trat ein Fehler auf: %-.128s", +"Fehler beim AusfŸhren des Befehls %s: %-.128s", +"Falsche Verwendung von %s und %s", +"Die verwendeten SELECT-Befehle liefern eine unterschiedliche Anzahl von Spalten zurŸck", +"Augrund eines READ LOCK-Konflikts kann die Abfrage nicht ausgefŸhrt werden", +"Die gleichzeitige Verwendung von Tabellen mit und ohne TransaktionsunterstŸtzung ist deaktiviert", +"Option '%s' wird im Befehl zweimal verwendet", +"Benutzer '%-.64s' hat die RessourcenbeschrŠnkung '%s' Ÿberschritten (aktueller Wert: %ld)", +"Befehl nicht zulŠssig. HierfŸr wird die Berechtigung %-.128s benštigt", +"Variable '%-.64s' ist eine lokale Variable und kann nicht mit SET GLOBAL verŠndert werden", +"Variable '%-.64s' ist eine globale Variable und muss mit SET GLOBAL verŠndert werden", +"Variable '%-.64s' hat keinen Vorgabewert", +"Variable '%-.64s' kann nicht auf '%-.64s' gesetzt werden", +"Falscher Argumenttyp fŸr Variable '%-.64s'", +"Variable '%-.64s' kann nur verŠndert, nicht gelesen werden", "Falsche Verwendung oder Platzierung von '%s'", -"Diese MySQL-Version unterstützt momentan nicht '%s'.", -"Schwerer Fehler %d: '%-.128s vom Master beim Lesen des Binary Logs.", -"Slave SQL thread ignored the query because of replicate-*-table rules", -"Falsche Foreign-Key Definition für '%-64s': %s", -"Schlüssel- und Tabellenreferenz passen nicht zueinander.", -"Operand should contain %d column(s)", -"Unterabfrage lieferte mehr als einen Datensatz zurück.", -"Unbekannter prepared statement handler (%ld) für %s angegeben.", -"Die Hilfedatenbank ist beschädigt oder existiert nicht.", -"Zyklische Referenz in den Unterabfragen.", +"Diese MySQL-Version unterstŸtzt '%s' nicht", +"Schwerer Fehler %d: '%-.128s vom Master beim Lesen des binŠren Logs aufgetreten", +"Slave-SQL-Thread hat die Abfrage aufgrund von replicate-*-table-Regeln ignoriert", +"Falsche FremdschlŸssel-Definition fŸr '%-64s': %s", +"SchlŸssel- und Tabellenverweis passen nicht zusammen", +"KardinalitŠts-Fehler (mehr bzw. weniger als %d Spalten)", +"Unterabfrage lieferte mehr als einen Datensatz zurŸck.", +"Unbekannter Prepared-Statement-Handler (%ld) fŸr %s angegeben", +"Die Hilfe-Datenbank ist beschŠdigt oder existiert nicht", +"Zyklischer Verweis in Unterabfragen", "Spalte '%s' wird von %s nach %s umgewandelt", -"Referenz '%-.64s' wird nicht unterstützt (%s)", -"Für jede abgeleitete Tabelle muss ein eigener Alias angegeben werden.", -"Select %u wurde während der Optimierung reduziert.", -"Tabelle '%-.64s', die in einem der SELECT-Befehle verwendet wurde kann nicht in %-.32s verwendet werden", -"Client does not support authentication protocol requested by server; consider upgrading MySQL client", -"All parts of a SPATIAL KEY must be NOT NULL", -"COLLATION '%s' is not valid for CHARACTER SET '%s'", -"Slave is already running", -"Slave has already been stopped", -"Too big size of uncompressed data. The maximum size is %d. (probably, length of uncompressed data was corrupted)", -"Z_BUF_ERROR: Not enough memory available for zlib", -"Z_MEM_ERROR: Not enough room in the output buffer for zlib (probably, length of uncompressed data was corrupted)", -"Z_DATA_ERROR: Input data was corrupted for zlib", -"%d line(s) was(were) cut by group_concat()", -"Record count is fewer than the column count at row %ld"; -"Record count is more than the column count at row %ld"; -"Data truncated, NULL supplied to NOT NULL column '%s' at row %ld"; -"Data truncated, out of range for column '%s' at row %ld"; -"Data truncated for column '%s' at row %ld" -"Using storage engine %s for table '%s'", -"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", -"Can't drop one or more of the requested users" -"Can't revoke all privileges, grant for one or more of the requested users" -"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", -"Illegal mix of collations for operation '%s'", -"Variable '%-.64s' is not a variable component (Can't be used as XXXX.variable_name)", -"Unknown collation: '%-.64s'", -"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support. They can be used later when MySQL slave with SSL will be started." -"Server is running in --secure-auth mode, but '%s@%s' has a password in the old format; please change the password to the new format" -"Field or reference '%-.64s%s%-.64s%s%-.64s' of SELECT #%d was resolved in SELECT #%d", -"Wrong parameter or combination of parameters for START SLAVE UNTIL" -"It is recommended to run with --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL, otherwise you are not safe in case of unexpected slave's mysqld restart" -"SQL thread is not to be started so UNTIL options are ignored" +"Verweis '%-.64s' wird nicht unterstŸtzt (%s)", +"FŸr jede abgeleitete Tabelle muss ein eigener Alias angegeben werden", +"Select %u wurde wŠhrend der Optimierung reduziert", +"Tabelle '%-.64s', die in einem der SELECT-Befehle verwendet wurde, kann nicht in %-.32s verwendet werden", +"Client unterstŸtzt das vom Server erwartete Authentifizierungsprotokoll nicht. Bitte aktualisieren Sie Ihren MySQL-Client", +"Alle Teile eines SPATIAL KEY mŸssen als NOT NULL deklariert sein", +"COLLATION '%s' ist fŸr CHARACTER SET '%s' ungŸltig", +"Slave lŠuft bereits", +"Slave wurde bereits angehalten", +"Unkomprimierte Daten sind zu gro§. Die maximale Grš§e betrŠgt %d", +"Z_BUF_ERROR: FŸr zlib steht nicht genug Speicher zur VerfŸgung", +"Z_MEM_ERROR: Im Ausgabepuffer ist nicht genug Platz fŸr zlib vorhanden (wahrscheinlich wurde die LŠnge der unkomprimierten Daten beschŠdigt)", +"Z_DATA_ERROR: Eingabedaten fŸr zlib beschŠdigt", +"%d Zeile(n) durch group_concat() abgeschnitten", +"Anzahl der DatensŠtze in Zeile %ld geringer als Anzahl der Spalten", +"Anzahl der DatensŠtze in Zeile %ld grš§er als Anzahl der Spalten", +"Daten abgeschnitten, NULL fŸr NOT NULL-Spalte '%s' in Zeile %ld angegeben", +"Daten abgeschnitten, au§erhalb des Wertebereichs fŸr Spalte '%s' in Zeile %ld", +"Daten abgeschnitten fŸr Spalte '%s' in Zeile %ld", +"FŸr Tabelle '%s' wird Speicher-Engine %s benutzt", +"Unerlaubte Vermischung der Kollationen (%s,%s) und (%s,%s) fŸr die Operation '%s'", +"Kann einen oder mehrere der angegebenen Benutzer nicht lšschen", +"Kann nicht alle Berechtigungen widerrufen, grant for one or more of the requested users", +"Unerlaubte Vermischung der Kollationen (%s,%s), (%s,%s), (%s,%s) fŸr die Operation '%s'", +"Unerlaubte Vermischung der Kollationen fŸr die Operation '%s'", +"Variable '%-.64s' ist keine Variablen-Komponenten (kann nicht als XXXX.variablen_name verwendet werden)", +"Unbekannte Kollation: '%-.64s'", +"SSL-Parameter in CHANGE MASTER werden ignoriert, weil dieser MySQL-Slave ohne SSL-UnterstŸtzung kompiliert wurde. Sie kšnnen aber spŠter verwendet werden, wenn der MySQL-Slave mit SSL gestartet wird", +"Server lŠuft im Modus --secure-auth, aber '%s@%s' hat ein Passwort im alten Format. Bitte Passwort ins neue Format Šndern", +"Feld oder Verweis '%-.64s%s%-.64s%s%-.64s' im SELECT-Befehl Nr. %d wurde im SELECT-Befehl Nr. %d aufgelšst", +"Falscher Parameter oder falsche Kombination von Parametern fŸr START SLAVE UNTIL", +"Es wird empfohlen, mit --skip-slave-start zu starten, wenn mit START SLAVE UNTIL eine Schritt-fŸr-Schritt-Replikation ausgefŸhrt wird. Ansonsten gibt es Probleme, wenn der Slave-Server unerwartet neu startet", +"SQL-Thread soll nicht gestartet werden. Daher werden UNTIL-Optionen ignoriert" From d37a5c4dd7b3c3e143e2c5236a160b99e19392b9 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 8 Oct 2003 21:50:05 +0300 Subject: [PATCH 77/81] Indentation cleanups Remove wait_if_global_read_lock on commit as this can cause deadlocks --- BUILD/FINISH.sh | 2 +- BUILD/SETUP.sh | 4 ++-- BUILD/compile-pentium-valgrind-max | 32 +++++++++----------------- mysql-test/r/innodb.result | 1 - mysql-test/r/rpl_max_relay_size.result | 4 ++-- mysql-test/t/innodb.test | 4 +++- mysql-test/t/rpl_max_relay_size.test | 2 ++ sql/handler.cc | 3 --- sql/opt_range.cc | 10 ++++---- sql/sql_db.cc | 14 +++++------ sql/sql_parse.cc | 5 +++- sql/sql_repl.cc | 4 ++-- sql/sql_select.cc | 2 +- 13 files changed, 40 insertions(+), 47 deletions(-) diff --git a/BUILD/FINISH.sh b/BUILD/FINISH.sh index 72188b9c24b..094eb8275d6 100644 --- a/BUILD/FINISH.sh +++ b/BUILD/FINISH.sh @@ -49,7 +49,7 @@ strip sql/mysqld" fi fi -if test -z "$nonono" +if test -z "$just_print" then eval "set -x; $commands" else diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh index 4d41f514704..aa6b412d73b 100644 --- a/BUILD/SETUP.sh +++ b/BUILD/SETUP.sh @@ -4,13 +4,13 @@ then exit 1 fi -nonono= +just_print= just_configure= while test $# -gt 0 do case "$1" in -c | --just-configure ) just_configure=1; shift ;; - -n | --just-print | --print ) nonono=1; shift ;; + -n | --just-print | --print ) just_print=1; shift ;; -h | --help ) cat <transaction.all && mysql_bin_log.is_open() && my_b_tell(&thd->transaction.trans_log)) { - if (wait_if_global_read_lock(thd, 0)) - DBUG_RETURN(1); mysql_bin_log.write(thd, &thd->transaction.trans_log, 1); - start_waiting_global_read_lock(thd); reinit_io_cache(&thd->transaction.trans_log, WRITE_CACHE, (my_off_t) 0, 0, 1); thd->transaction.trans_log.end_of_file= max_binlog_cache_size; diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 5b1e2c98001..24768537e3d 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -456,7 +456,7 @@ SEL_ARG *SEL_ARG::clone(SEL_ARG *new_parent,SEL_ARG **next_arg) SEL_ARG *tmp; if (type != KEY_RANGE) { - if(!(tmp=new SEL_ARG(type))) + if (!(tmp=new SEL_ARG(type))) return 0; // out of memory tmp->prev= *next_arg; // Link into next/prev chain (*next_arg)->next=tmp; @@ -464,7 +464,7 @@ SEL_ARG *SEL_ARG::clone(SEL_ARG *new_parent,SEL_ARG **next_arg) } else { - if(!(tmp=new SEL_ARG(field,part, min_value,max_value, + if (!(tmp=new SEL_ARG(field,part, min_value,max_value, min_flag, max_flag, maybe_flag))) return 0; // out of memory tmp->parent=new_parent; @@ -920,7 +920,7 @@ get_mm_parts(PARAM *param, Field *field, Item_func::Functype type, } else { // This key may be used later - if(!(sel_arg=new SEL_ARG(SEL_ARG::MAYBE_KEY))) + if (!(sel_arg=new SEL_ARG(SEL_ARG::MAYBE_KEY))) DBUG_RETURN(0); // out of memory } sel_arg->part=(uchar) key_part->part; @@ -1488,7 +1488,7 @@ key_or(SEL_ARG *key1,SEL_ARG *key2) SEL_ARG *key2_next=key2->next; if (key2_shared) { - if(!(key2=new SEL_ARG(*key2))) + if (!(key2=new SEL_ARG(*key2))) return 0; // out of memory key2->increment_use_count(key1->use_count+1); key2->next=key2_next; // New copy of key2 @@ -2333,7 +2333,7 @@ get_quick_keys(PARAM *param,QUICK_SELECT *quick,KEY_PART *key, } /* Get range for retrieving rows in QUICK_SELECT::get_next */ - if(!(range= new QUICK_RANGE(param->min_key, + if (!(range= new QUICK_RANGE(param->min_key, (uint) (tmp_min_key - param->min_key), param->max_key, (uint) (tmp_max_key - param->max_key), diff --git a/sql/sql_db.cc b/sql/sql_db.cc index d48022f5829..cd0445b42e2 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -393,16 +393,16 @@ exit: start_waiting_global_read_lock(thd); /* If this database was the client's selected database, we silently change the - client's selected database to nothing (to have an empty SELECT DATABASE() in - the future). For this we free() thd->db and set it to 0. But we don't do + client's selected database to nothing (to have an empty SELECT DATABASE() + in the future). For this we free() thd->db and set it to 0. But we don't do free() for the slave thread. Indeed, doing a x_free() on it leads to nasty problems (i.e. long painful debugging) because in this thread, thd->db is the same as data_buf and db of the Query_log_event which is dropping the - database. So if you free() thd->db, you're freeing data_buf. You set thd->db - to 0 but not data_buf (thd->db and data_buf are two distinct pointers which - point to the same place). Then in ~Query_log_event(), we have - 'if (data_buf) free(data_buf)' - data_buf is !=0 so this makes a DOUBLE free(). + database. So if you free() thd->db, you're freeing data_buf. You set + thd->db to 0 but not data_buf (thd->db and data_buf are two distinct + pointers which point to the same place). Then in ~Query_log_event(), we + have 'if (data_buf) free(data_buf)' data_buf is !=0 so this makes a + DOUBLE free(). Side effects of this double free() are, randomly (depends on the machine), when the slave is replicating a DROP DATABASE: - garbage characters in the error message: diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index b36d4041950..e30fd0acfae 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4449,7 +4449,10 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables, { if ((options & REFRESH_READ_LOCK) && thd) { - // writing to the binlog could cause deadlocks, as we don't log UNLOCK TABLES + /* + Writing to the binlog could cause deadlocks, as we don't log + UNLOCK TABLES + */ tmp_write_to_binlog= 0; if (lock_global_read_lock(thd)) return 1; diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 7bb51989cc3..2345355922c 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -730,7 +730,7 @@ int start_slave(THD* thd , MASTER_INFO* mi, bool net_report) to p, no digits were found, error. If it contains '\0' it means conversion went ok. */ - if(p_end==p || *p_end) + if (p_end==p || *p_end) slave_errno=ER_BAD_SLAVE_UNTIL_COND; } else @@ -753,7 +753,7 @@ int start_slave(THD* thd , MASTER_INFO* mi, bool net_report) ER(ER_UNTIL_COND_IGNORED)); - if(!slave_errno) + if (!slave_errno) slave_errno = start_slave_threads(0 /*no mutex */, 1 /* wait for start */, mi, diff --git a/sql/sql_select.cc b/sql/sql_select.cc index f142db044ce..4bab97d4a46 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -5333,7 +5333,7 @@ do_select(JOIN *join,List *fields,TABLE *table,Procedure *procedure) HAVING will be chcked after processing aggregate functions, But WHERE should checkd here (we alredy have read tables) */ - if(!join->conds || join->conds->val_int()) + if (!join->conds || join->conds->val_int()) { if (!(error=(*end_select)(join,join_tab,0)) || error == -3) error=(*end_select)(join,join_tab,1); From a533d88693f43cd92e1f42ea03fcfc2316a289a6 Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 8 Oct 2003 22:05:06 +0300 Subject: [PATCH 78/81] Portability fix --- sql/mysqld.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index c6af4ad5c12..1c26d4a8b7c 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -53,6 +53,10 @@ #define IF_PURIFY(A,B) (B) #endif +#ifndef INADDR_NONE +#define INADDR_NONE -1 // Error value from inet_addr +#endif + /* stack traces are only supported on linux intel */ #if defined(__linux__) && defined(__i386__) && defined(USE_PSTACK) #define HAVE_STACK_TRACE_ON_SEGV @@ -5214,7 +5218,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), my_use_symdir=0; break; case (int) OPT_BIND_ADDRESS: - if (!argument || (my_bind_addr= (ulong) inet_addr(argument)) == INADDR_NONE) + if (!argument || + (my_bind_addr= (ulong) inet_addr(argument)) == INADDR_NONE) { struct hostent *ent; if (argument || argument[0]) From 1febfbe86a9ae7e735c5b945ede1a8ca4bc5a69f Mon Sep 17 00:00:00 2001 From: "monty@narttu.mysql.fi" <> Date: Wed, 8 Oct 2003 22:41:45 +0300 Subject: [PATCH 79/81] deleted conflicting file --- VC++Files/mysqlshutdown/MYSQL.ICO | Bin 318 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 VC++Files/mysqlshutdown/MYSQL.ICO diff --git a/VC++Files/mysqlshutdown/MYSQL.ICO b/VC++Files/mysqlshutdown/MYSQL.ICO deleted file mode 100644 index 1fe0b7115bbe95b1108cd2ef025f539cad262181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmZvUD-Hrd5JcZ5m~pGnNG`<*&;-dE{Mfn8Bxu&55QK0D6ltnvMWz)B3Y@jseC!89!*R!Xf^>Or(1!kHj<%hW7GDWsB>AX214Q+0Zs``j1a z(@j@PPTpHIC8_LJ_1=$lliIOY^&;L8mot10@Dd)vQ+0fVtLJb(3VXP9%sZG*+7-U9 Cr%L_+ From c0075fa64bd2bf33b8742288945882ade170561a Mon Sep 17 00:00:00 2001 From: "guilhem@gbichot2" <> Date: Thu, 9 Oct 2003 00:06:21 +0200 Subject: [PATCH 80/81] Final push for WL#1098: "Add a column "Timestamp_of_last_master_event_executed" in SHOW SLAVE STATUS". Finally this is adding - Slave_IO_State (a copy of the State column of SHOW PROCESSLIST for the I/O thread, so that the users, most of the time, has enough info with only SHOW SLAVE STATUS). - Seconds_behind_master. When the slave connects to the master it does SELECT UNIX_TIMESTAMP() on the master, computes the absolute difference between the master's and the slave's clock. It records the timestamp of the last event executed by the SQL thread, and does a small computation to find the number of seconds by which the slave is late. --- mysql-test/r/rpl000015.result | 14 ++-- mysql-test/r/rpl_empty_master_crash.result | 2 +- mysql-test/r/rpl_error_ignored_table.result | 4 +- mysql-test/r/rpl_flush_log_loop.result | 4 +- mysql-test/r/rpl_loaddata.result | 12 ++-- mysql-test/r/rpl_log.result | 4 +- mysql-test/r/rpl_log_pos.result | 16 ++--- mysql-test/r/rpl_max_relay_size.result | 24 +++---- mysql-test/r/rpl_redirect.result | 2 +- mysql-test/r/rpl_replicate_do.result | 4 +- mysql-test/r/rpl_reset_slave.result | 16 ++--- mysql-test/r/rpl_rotate_logs.result | 12 ++-- mysql-test/r/rpl_trunc_binlog.result | 4 +- mysql-test/r/rpl_until.result | 16 ++--- mysql-test/t/rpl000015.test | 4 ++ mysql-test/t/rpl_empty_master_crash.test | 1 + mysql-test/t/rpl_error_ignored_table.test | 1 + mysql-test/t/rpl_flush_log_loop.test | 1 + mysql-test/t/rpl_loaddata.test | 3 + mysql-test/t/rpl_log.test | 1 + mysql-test/t/rpl_log_pos.test | 4 ++ mysql-test/t/rpl_max_relay_size.test | 8 ++- mysql-test/t/rpl_openssl.test | 2 + mysql-test/t/rpl_redirect.test | 1 + mysql-test/t/rpl_replicate_do.test | 1 + mysql-test/t/rpl_reset_slave.test | 4 ++ mysql-test/t/rpl_rotate_logs.test | 3 + mysql-test/t/rpl_trunc_binlog.test | 1 + mysql-test/t/rpl_until.test | 4 ++ sql/log_event.cc | 2 + sql/slave.cc | 78 +++++++++++++++++---- sql/slave.h | 14 +++- sql/sql_repl.cc | 10 ++- 33 files changed, 190 insertions(+), 87 deletions(-) diff --git a/mysql-test/r/rpl000015.result b/mysql-test/r/rpl000015.result index 0166c49ddb2..e96fc49f09e 100644 --- a/mysql-test/r/rpl000015.result +++ b/mysql-test/r/rpl000015.result @@ -4,20 +4,20 @@ File Position Binlog_do_db Binlog_ignore_db master-bin.000001 79 reset slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master change master to master_host='127.0.0.1'; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 test MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 test MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No # change master to master_host='127.0.0.1',master_user='root', master_password='',master_port=MASTER_PORT; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 7 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No # start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 7 master-bin.000001 79 slave-relay-bin.000001 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 7 master-bin.000001 79 slave-relay-bin.000001 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No # drop table if exists t1; create table t1 (n int); insert into t1 values (10),(45),(90); diff --git a/mysql-test/r/rpl_empty_master_crash.result b/mysql-test/r/rpl_empty_master_crash.result index b44ba841e00..41c5ebe47e1 100644 --- a/mysql-test/r/rpl_empty_master_crash.result +++ b/mysql-test/r/rpl_empty_master_crash.result @@ -5,7 +5,7 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master load table t1 from master; ERROR 08S01: Error connecting to master: Master is not configured load table t1 from master; diff --git a/mysql-test/r/rpl_error_ignored_table.result b/mysql-test/r/rpl_error_ignored_table.result index 961c8fcd91d..1f537850231 100644 --- a/mysql-test/r/rpl_error_ignored_table.result +++ b/mysql-test/r/rpl_error_ignored_table.result @@ -8,8 +8,8 @@ create table t1 (a int primary key); insert into t1 values (1),(1); ERROR 23000: Duplicate entry '1' for key 1 show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 213 slave-relay-bin.000002 257 master-bin.000001 Yes Yes test.t1 0 0 213 257 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 213 slave-relay-bin.000002 257 master-bin.000001 Yes Yes test.t1 0 0 213 257 None 0 No # show tables like 't1'; Tables_in_test (t1) drop table t1; diff --git a/mysql-test/r/rpl_flush_log_loop.result b/mysql-test/r/rpl_flush_log_loop.result index 18e09f33ff7..5b71a68bace 100644 --- a/mysql-test/r/rpl_flush_log_loop.result +++ b/mysql-test/r/rpl_flush_log_loop.result @@ -13,5 +13,5 @@ master_password='',master_port=SLAVE_PORT; start slave; flush logs; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 79 relay-log.000002 4 slave-bin.000001 Yes Yes 0 0 79 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root SLAVE_PORT 60 slave-bin.000001 79 relay-log.000002 4 slave-bin.000001 Yes Yes 0 0 79 4 None 0 No # diff --git a/mysql-test/r/rpl_loaddata.result b/mysql-test/r/rpl_loaddata.result index 2dd5dc5ec08..b9546d7f381 100644 --- a/mysql-test/r/rpl_loaddata.result +++ b/mysql-test/r/rpl_loaddata.result @@ -32,8 +32,8 @@ load data infile '../../std_data/rpl_loaddata.dat' into table t1; set global sql_slave_skip_counter=1; start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 1311 slave-relay-bin.000002 1355 master-bin.000001 Yes Yes 0 0 1311 1355 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1311 slave-relay-bin.000002 1355 master-bin.000001 Yes Yes 0 0 1311 1355 None 0 No # set sql_log_bin=0; delete from t1; set sql_log_bin=1; @@ -42,8 +42,8 @@ stop slave; change master to master_user='test'; change master to master_user='root'; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 1442 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 1442 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1442 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 1442 4 None 0 No # set global sql_slave_skip_counter=1; start slave; set sql_log_bin=0; @@ -53,8 +53,8 @@ load data infile '../../std_data/rpl_loaddata.dat' into table t1; stop slave; reset slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 1 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No # reset master; create table t2 (day date,id int(9),category enum('a','b','c'),name varchar(60), unique(day)); diff --git a/mysql-test/r/rpl_log.result b/mysql-test/r/rpl_log.result index 53e152c1834..12a45a2b4ad 100644 --- a/mysql-test/r/rpl_log.result +++ b/mysql-test/r/rpl_log.result @@ -95,7 +95,7 @@ slave-bin.000002 4 Query 1 4 use `test`; create table t1 (n int) slave-bin.000002 62 Query 1 62 use `test`; insert into t1 values (1) slave-bin.000002 122 Query 1 122 use `test`; drop table t1 show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000002 276 slave-relay-bin.000003 214 master-bin.000002 Yes Yes 0 0 276 214 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000002 276 slave-relay-bin.000003 214 master-bin.000002 Yes Yes 0 0 276 214 None 0 No # show binlog events in 'slave-bin.000005' from 4; ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log diff --git a/mysql-test/r/rpl_log_pos.result b/mysql-test/r/rpl_log_pos.result index 7a796d52374..7209cc19a57 100644 --- a/mysql-test/r/rpl_log_pos.result +++ b/mysql-test/r/rpl_log_pos.result @@ -8,26 +8,26 @@ show master status; File Position Binlog_do_db Binlog_ignore_db master-bin.000001 79 show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No # stop slave; change master to master_log_pos=73; start slave; stop slave; change master to master_log_pos=73; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 73 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 73 4 None 0 No # start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 48 master-bin.000001 No Yes 0 0 73 48 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 1 master-bin.000001 73 slave-relay-bin.000001 48 master-bin.000001 No Yes 0 0 73 48 None 0 No # stop slave; change master to master_log_pos=173; start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 173 slave-relay-bin.000001 4 master-bin.000001 No Yes 0 0 173 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 1 master-bin.000001 173 slave-relay-bin.000001 4 master-bin.000001 No Yes 0 0 173 4 None 0 No # show master status; File Position Binlog_do_db Binlog_ignore_db master-bin.000001 79 diff --git a/mysql-test/r/rpl_max_relay_size.result b/mysql-test/r/rpl_max_relay_size.result index de66336b6d9..d678ad213bf 100644 --- a/mysql-test/r/rpl_max_relay_size.result +++ b/mysql-test/r/rpl_max_relay_size.result @@ -15,8 +15,8 @@ select @@global.max_relay_log_size; 4096 start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 50477 slave-relay-bin.000014 1221 master-bin.000001 Yes Yes 0 0 50477 1221 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 50477 slave-relay-bin.000014 1221 master-bin.000001 Yes Yes 0 0 50477 1221 None 0 No # stop slave; reset slave; set global max_relay_log_size=(5*4096); @@ -25,8 +25,8 @@ select @@global.max_relay_log_size; 20480 start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 50477 slave-relay-bin.000004 9457 master-bin.000001 Yes Yes 0 0 50477 9457 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 50477 slave-relay-bin.000004 9457 master-bin.000001 Yes Yes 0 0 50477 9457 None 0 No # stop slave; reset slave; set global max_relay_log_size=0; @@ -35,26 +35,26 @@ select @@global.max_relay_log_size; 0 start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 50477 slave-relay-bin.000008 1283 master-bin.000001 Yes Yes 0 0 50477 1283 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 50477 slave-relay-bin.000008 1283 master-bin.000001 Yes Yes 0 0 50477 1283 None 0 No # stop slave; reset slave; flush logs; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 1 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No # reset slave; start slave; flush logs; create table t1 (a int); show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 50535 slave-relay-bin.000009 62 master-bin.000001 Yes Yes 0 0 50535 # None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 50535 slave-relay-bin.000009 62 master-bin.000001 Yes Yes 0 0 50535 62 None 0 No # flush logs; drop table t1; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 50583 slave-relay-bin.000010 52 master-bin.000001 Yes Yes 0 0 50583 # None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 50583 slave-relay-bin.000010 52 master-bin.000001 Yes Yes 0 0 50583 52 None 0 No # flush logs; show master status; File Position Binlog_do_db Binlog_ignore_db diff --git a/mysql-test/r/rpl_redirect.result b/mysql-test/r/rpl_redirect.result index b52c4a10b38..24a0b1af541 100644 --- a/mysql-test/r/rpl_redirect.result +++ b/mysql-test/r/rpl_redirect.result @@ -5,7 +5,7 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; SHOW SLAVE STATUS; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master SHOW SLAVE HOSTS; Server_id Host Port Rpl_recovery_rank Master_id 2 127.0.0.1 SLAVE_PORT 2 1 diff --git a/mysql-test/r/rpl_replicate_do.result b/mysql-test/r/rpl_replicate_do.result index 8288bd66a9d..f7164f8a636 100644 --- a/mysql-test/r/rpl_replicate_do.result +++ b/mysql-test/r/rpl_replicate_do.result @@ -27,5 +27,5 @@ select * from t11; ERROR 42S02: Table 'test.t11' doesn't exist drop table if exists t1,t2,t11; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 1281 slave-relay-bin.000002 1325 master-bin.000001 Yes Yes test.t1 0 0 1281 1325 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 1281 slave-relay-bin.000002 1325 master-bin.000001 Yes Yes test.t1 0 0 1281 1325 None 0 No # diff --git a/mysql-test/r/rpl_reset_slave.result b/mysql-test/r/rpl_reset_slave.result index 6318e3a0ecd..401569ccbce 100644 --- a/mysql-test/r/rpl_reset_slave.result +++ b/mysql-test/r/rpl_reset_slave.result @@ -5,18 +5,18 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No # stop slave; change master to master_user='test'; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 test MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 79 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 test MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000001 4 master-bin.000001 No No 0 0 79 4 None 0 No # reset slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master + 127.0.0.1 root MASTER_PORT 1 4 slave-relay-bin.000001 4 No No 0 0 0 4 None 0 No # start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000001 79 slave-relay-bin.000002 123 master-bin.000001 Yes Yes 0 0 79 123 None 0 No # diff --git a/mysql-test/r/rpl_rotate_logs.result b/mysql-test/r/rpl_rotate_logs.result index 73e578baf75..16a0ef4cb71 100644 --- a/mysql-test/r/rpl_rotate_logs.result +++ b/mysql-test/r/rpl_rotate_logs.result @@ -15,8 +15,8 @@ insert into temp_table values ("testing temporary tables"); create table t1 (s text); insert into t1 values('Could not break slave'),('Tried hard'); show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 60 master-bin.000001 417 slave-relay-bin.000001 461 master-bin.000001 Yes Yes 0 0 417 461 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 60 master-bin.000001 417 slave-relay-bin.000001 461 master-bin.000001 Yes Yes 0 0 417 461 None 0 No # select * from t1; s Could not break slave @@ -56,8 +56,8 @@ Log_name master-bin.000003 insert into t2 values (65); show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 60 master-bin.000003 290 slave-relay-bin.000001 1088 master-bin.000003 Yes Yes 0 0 290 1088 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 60 master-bin.000003 290 slave-relay-bin.000001 1088 master-bin.000003 Yes Yes 0 0 290 1088 None 0 No # select * from t2; m 34 @@ -80,8 +80,8 @@ select * from t4; a testing temporary tables part 2 show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 60 master-bin.000004 2886 slave-relay-bin.000001 7891 master-bin.000004 Yes Yes 0 0 2886 7891 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 60 master-bin.000004 2886 slave-relay-bin.000001 7891 master-bin.000004 Yes Yes 0 0 2886 7891 None 0 No # lock tables t3 read; select count(*) from t3 where n >= 4; count(*) diff --git a/mysql-test/r/rpl_trunc_binlog.result b/mysql-test/r/rpl_trunc_binlog.result index 44d3eeb2ba3..da23034bacd 100644 --- a/mysql-test/r/rpl_trunc_binlog.result +++ b/mysql-test/r/rpl_trunc_binlog.result @@ -9,6 +9,6 @@ flush logs; reset slave; start slave; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_PORT 1 master-bin.000002 4 slave-relay-bin.000002 123 master-bin.000001 Yes No 0 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log. 0 79 326 None 0 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_PORT 1 master-bin.000002 4 slave-relay-bin.000002 123 master-bin.000001 Yes No 0 Rolling back unfinished transaction (no COMMIT or ROLLBACK) from relay log. Probably cause is that the master died while writing the transaction to it's binary log. 0 79 326 None 0 No # reset master; diff --git a/mysql-test/r/rpl_until.result b/mysql-test/r/rpl_until.result index ee5ceb28bd8..2a08659aea6 100644 --- a/mysql-test/r/rpl_until.result +++ b/mysql-test/r/rpl_until.result @@ -30,8 +30,8 @@ n 3 4 show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 332 master-bin.000001 Yes No 0 0 244 649 Master master-bin.000001 244 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 332 master-bin.000001 Yes No 0 0 244 649 Master master-bin.000001 244 No # start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291; select * from t1; n @@ -40,22 +40,22 @@ n 3 4 show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 332 master-bin.000001 Yes No 0 0 244 649 Master master-no-such-bin.000001 291 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 332 master-bin.000001 Yes No 0 0 244 649 Master master-no-such-bin.000001 291 No # start slave until relay_log_file='slave-relay-bin.000002', relay_log_pos=537; select * from t2; n 1 2 show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 537 master-bin.000001 Yes No 0 0 449 649 Relay slave-relay-bin.000002 537 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 537 master-bin.000001 Yes No 0 0 449 649 Relay slave-relay-bin.000002 537 No # start slave; stop slave; start slave until master_log_file='master-bin.000001', master_log_pos=561; show slave status; -Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key -127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 649 master-bin.000001 Yes No 0 0 561 693 Master master-bin.000001 561 No +Slave_IO_State Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Replicate_do_table Replicate_ignore_table Replicate_wild_do_table Replicate_wild_ignore_table Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space Until_condition Until_Log_File Until_Log_pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_behind_master +Waiting for master to send event 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 561 slave-relay-bin.000002 649 master-bin.000001 Yes No 0 0 561 693 Master master-bin.000001 561 No # start slave until master_log_file='master-bin', master_log_pos=561; ERROR HY000: Wrong parameter or combination of parameters for START SLAVE UNTIL start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12; diff --git a/mysql-test/t/rpl000015.test b/mysql-test/t/rpl000015.test index b5234373355..b71e8472e67 100644 --- a/mysql-test/t/rpl000015.test +++ b/mysql-test/t/rpl000015.test @@ -7,20 +7,24 @@ save_master_pos; connection slave; reset slave; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; change master to master_host='127.0.0.1'; # The following needs to be cleaned up when change master is fixed --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT +--replace_column 33 # show slave status; --replace_result $MASTER_MYPORT MASTER_PORT eval change master to master_host='127.0.0.1',master_user='root', master_password='',master_port=$MASTER_MYPORT; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; start slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; connection master; --disable_warnings diff --git a/mysql-test/t/rpl_empty_master_crash.test b/mysql-test/t/rpl_empty_master_crash.test index 9d5a7a173b0..b56bf2a059f 100644 --- a/mysql-test/t/rpl_empty_master_crash.test +++ b/mysql-test/t/rpl_empty_master_crash.test @@ -1,5 +1,6 @@ source include/master-slave.inc; +--replace_column 33 # show slave status; # diff --git a/mysql-test/t/rpl_error_ignored_table.test b/mysql-test/t/rpl_error_ignored_table.test index 686472433eb..f6ca1c56cde 100644 --- a/mysql-test/t/rpl_error_ignored_table.test +++ b/mysql-test/t/rpl_error_ignored_table.test @@ -15,6 +15,7 @@ sync_with_master; # The port number is different when doing the release build with # Do-compile, hence we have to replace the port number here accordingly --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; # check that the table has been ignored, because otherwise the test is nonsense show tables like 't1'; diff --git a/mysql-test/t/rpl_flush_log_loop.test b/mysql-test/t/rpl_flush_log_loop.test index 00fab13bac7..b469a7c571e 100644 --- a/mysql-test/t/rpl_flush_log_loop.test +++ b/mysql-test/t/rpl_flush_log_loop.test @@ -18,4 +18,5 @@ sleep 5; flush logs; sleep 5; --replace_result $SLAVE_MYPORT SLAVE_PORT +--replace_column 33 # show slave status; diff --git a/mysql-test/t/rpl_loaddata.test b/mysql-test/t/rpl_loaddata.test index 88d9a7ee03f..0121c90ccb6 100644 --- a/mysql-test/t/rpl_loaddata.test +++ b/mysql-test/t/rpl_loaddata.test @@ -72,6 +72,7 @@ set global sql_slave_skip_counter=1; start slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; # Trigger error again to test CHANGE MASTER @@ -91,6 +92,7 @@ stop slave; change master to master_user='test'; change master to master_user='root'; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; # Trigger error again to test RESET SLAVE @@ -112,6 +114,7 @@ wait_for_slave_to_stop; stop slave; reset slave; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; # Finally, see if logging is done ok on master for a failing LOAD DATA INFILE diff --git a/mysql-test/t/rpl_log.test b/mysql-test/t/rpl_log.test index 77be92f64fd..b388a5a095e 100644 --- a/mysql-test/t/rpl_log.test +++ b/mysql-test/t/rpl_log.test @@ -94,6 +94,7 @@ show binlog events in 'slave-bin.000001' from 4; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT $VERSION VERSION show binlog events in 'slave-bin.000002' from 4; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; # Need to recode the following diff --git a/mysql-test/t/rpl_log_pos.test b/mysql-test/t/rpl_log_pos.test index bc1349a959a..2e1cd3275fc 100644 --- a/mysql-test/t/rpl_log_pos.test +++ b/mysql-test/t/rpl_log_pos.test @@ -5,6 +5,7 @@ source include/master-slave.inc; show master status; sync_slave_with_master; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; stop slave; change master to master_log_pos=73; @@ -14,10 +15,12 @@ stop slave; change master to master_log_pos=73; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; start slave; sleep 5; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; stop slave; change master to master_log_pos=173; @@ -25,6 +28,7 @@ change master to master_log_pos=173; start slave; sleep 2; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; connection master; show master status; diff --git a/mysql-test/t/rpl_max_relay_size.test b/mysql-test/t/rpl_max_relay_size.test index eb38ffd3af3..4a8acc616d9 100644 --- a/mysql-test/t/rpl_max_relay_size.test +++ b/mysql-test/t/rpl_max_relay_size.test @@ -29,6 +29,7 @@ select @@global.max_relay_log_size; start slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT +--replace_column 33 # show slave status; stop slave; reset slave; @@ -37,6 +38,7 @@ select @@global.max_relay_log_size; start slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT +--replace_column 33 # show slave status; stop slave; reset slave; @@ -45,6 +47,7 @@ select @@global.max_relay_log_size; start slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT +--replace_column 33 # show slave status; # Tests below are mainly to ensure that we have not coded with wrong assumptions @@ -55,6 +58,7 @@ reset slave; # (to make sure it does not crash). flush logs; --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT +--replace_column 33 # show slave status; reset slave; @@ -70,7 +74,7 @@ save_master_pos; connection slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT ---replace_column 22 # +--replace_column 33 # show slave status; # one more rotation, to be sure Relay_log_space is correctly updated flush logs; @@ -80,7 +84,7 @@ save_master_pos; connection slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT ---replace_column 22 # +--replace_column 33 # show slave status; connection master; diff --git a/mysql-test/t/rpl_openssl.test b/mysql-test/t/rpl_openssl.test index bd658786bd7..fbc03d965f1 100644 --- a/mysql-test/t/rpl_openssl.test +++ b/mysql-test/t/rpl_openssl.test @@ -45,6 +45,7 @@ select * from t1; #checking show slave status --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT +--replace_column 33 # show slave status; #checking if replication works without ssl also performing clean up @@ -57,4 +58,5 @@ save_master_pos; connection slave; sync_with_master; --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT +--replace_column 33 # show slave status; diff --git a/mysql-test/t/rpl_redirect.test b/mysql-test/t/rpl_redirect.test index 181d200b761..2d915a37712 100644 --- a/mysql-test/t/rpl_redirect.test +++ b/mysql-test/t/rpl_redirect.test @@ -12,6 +12,7 @@ sync_with_master; #discover slaves connection master; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # SHOW SLAVE STATUS; --replace_result $SLAVE_MYPORT SLAVE_PORT SHOW SLAVE HOSTS; diff --git a/mysql-test/t/rpl_replicate_do.test b/mysql-test/t/rpl_replicate_do.test index a1ce8d8a645..485bfbedb1f 100644 --- a/mysql-test/t/rpl_replicate_do.test +++ b/mysql-test/t/rpl_replicate_do.test @@ -33,5 +33,6 @@ connection slave; sync_with_master; # show slave status, just to see of it prints replicate-do-table --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; diff --git a/mysql-test/t/rpl_reset_slave.test b/mysql-test/t/rpl_reset_slave.test index 9c58ac0c787..76d1d247958 100644 --- a/mysql-test/t/rpl_reset_slave.test +++ b/mysql-test/t/rpl_reset_slave.test @@ -9,18 +9,22 @@ save_master_pos; connection slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; stop slave; change master to master_user='test'; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; reset slave; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; start slave; sync_with_master; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; diff --git a/mysql-test/t/rpl_rotate_logs.test b/mysql-test/t/rpl_rotate_logs.test index d36f49eee5c..a5aa674bd88 100644 --- a/mysql-test/t/rpl_rotate_logs.test +++ b/mysql-test/t/rpl_rotate_logs.test @@ -55,6 +55,7 @@ create table t1 (s text); insert into t1 values('Could not break slave'),('Tried hard'); sync_slave_with_master; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; select * from t1; connection master; @@ -106,6 +107,7 @@ show binary logs; insert into t2 values (65); sync_slave_with_master; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; select * from t2; @@ -136,6 +138,7 @@ sync_with_master; select * from t4; --replace_result 3306 MASTER_PORT 9306 MASTER_PORT 3334 MASTER_PORT 3336 MASTER_PORT +--replace_column 33 # show slave status; # because of concurrent insert, the table may not be up to date # if we do not lock diff --git a/mysql-test/t/rpl_trunc_binlog.test b/mysql-test/t/rpl_trunc_binlog.test index 81ef941f9f2..28602a32abd 100644 --- a/mysql-test/t/rpl_trunc_binlog.test +++ b/mysql-test/t/rpl_trunc_binlog.test @@ -21,6 +21,7 @@ start slave; # can't sync_with_master so we must sleep sleep 3; --replace_result $MASTER_MYPORT MASTER_PORT +--replace_column 33 # show slave status; connection master; reset master; diff --git a/mysql-test/t/rpl_until.test b/mysql-test/t/rpl_until.test index 69101f8fa2c..13ce85c8c0f 100644 --- a/mysql-test/t/rpl_until.test +++ b/mysql-test/t/rpl_until.test @@ -29,6 +29,7 @@ sleep 2; # here table should be still not deleted select * from t1; --replace_result $MASTER_MYPORT MASTER_MYPORT +--replace_column 33 # show slave status; # this should fail right after start @@ -37,6 +38,7 @@ start slave until master_log_file='master-no-such-bin.000001', master_log_pos=29 select * from t1; sleep 2; --replace_result $MASTER_MYPORT MASTER_MYPORT +--replace_column 33 # show slave status; # try replicate all until second insert to t2; @@ -44,6 +46,7 @@ start slave until relay_log_file='slave-relay-bin.000002', relay_log_pos=537; sleep 2; select * from t2; --replace_result $MASTER_MYPORT MASTER_MYPORT +--replace_column 33 # show slave status; # clean up @@ -59,6 +62,7 @@ start slave until master_log_file='master-bin.000001', master_log_pos=561; sleep 2; # here the sql slave thread should be stopped --replace_result $MASTER_MYPORT MASTER_MYPORT +--replace_column 33 # show slave status; #testing various error conditions diff --git a/sql/log_event.cc b/sql/log_event.cc index 2050be0e6de..ebbd0d1b373 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -327,6 +327,8 @@ int Log_event::exec_event(struct st_relay_log_info* rli) { rli->inc_group_relay_log_pos(get_event_len(),log_pos); flush_relay_log_info(rli); + /* if this is a fake rotate, don't record the timestamp */ + rli->last_master_timestamp= (when) ? when : 0; } } return 0; diff --git a/sql/slave.cc b/sql/slave.cc index d1a8fe51f33..3e98386bbb1 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -73,7 +73,7 @@ static int safe_sleep(THD* thd, int sec, CHECK_KILLED_FUNC thread_killed, static int request_table_dump(MYSQL* mysql, const char* db, const char* table); static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db, const char* table_name, bool overwrite); -static int check_master_version(MYSQL* mysql, MASTER_INFO* mi); +static int check_master_version_and_clock(MYSQL* mysql, MASTER_INFO* mi); /* @@ -1071,7 +1071,7 @@ static int init_intvar_from_file(int* var, IO_CACHE* f, int default_val) } -static int check_master_version(MYSQL* mysql, MASTER_INFO* mi) +static int get_master_version_and_clock(MYSQL* mysql, MASTER_INFO* mi) { const char* errmsg= 0; @@ -1094,6 +1094,33 @@ static int check_master_version(MYSQL* mysql, MASTER_INFO* mi) break; } + MYSQL_RES *master_clock_res; + MYSQL_ROW master_clock_row; + time_t slave_clock; + + if (mysql_real_query(mysql, "SELECT UNIX_TIMESTAMP()", 23)) + errmsg= "\"SELECT UNIX_TIMESTAMP()\" failed on master"; + else if (!(master_clock_res= mysql_store_result(mysql))) + { + errmsg= "Could not read the result of \"SELECT UNIX_TIMESTAMP()\" on \ +master"; + } + else + { + if (!(master_clock_row= mysql_fetch_row(master_clock_res))) + errmsg= "Could not read a row from the result of \"SELECT \ +UNIX_TIMESTAMP()\" on master"; + else + { + slave_clock= time((time_t*) 0); + mi->clock_diff_with_master= (long) (slave_clock - + strtoul(master_clock_row[0], 0, 10)); + DBUG_PRINT("info",("slave_clock=%lu, master_clock=%s", + slave_clock, master_clock_row[0])); + } + mysql_free_result(master_clock_res); + } + if (errmsg) { sql_print_error(errmsg); @@ -1597,14 +1624,18 @@ void init_master_info_with_options(MASTER_INFO* mi) strmake(mi->ssl_key, master_ssl_key, sizeof(mi->ssl_key)-1); } - -void clear_last_slave_error(RELAY_LOG_INFO* rli) +static void clear_slave_error(RELAY_LOG_INFO* rli) { - //Clear the errors displayed by SHOW SLAVE STATUS - rli->last_slave_error[0]=0; - rli->last_slave_errno=0; + /* Clear the errors displayed by SHOW SLAVE STATUS */ + rli->last_slave_error[0]= 0; + rli->last_slave_errno= 0; } +void clear_slave_error_timestamp(RELAY_LOG_INFO* rli) +{ + rli->last_master_timestamp= 0; + clear_slave_error(rli); +} /* Reset UNTIL condition for RELAY_LOG_INFO @@ -1908,6 +1939,8 @@ int show_master_info(THD* thd, MASTER_INFO* mi) Protocol *protocol= thd->protocol; DBUG_ENTER("show_master_info"); + field_list.push_back(new Item_empty_string("Slave_IO_State", + 14)); field_list.push_back(new Item_empty_string("Master_Host", sizeof(mi->host))); field_list.push_back(new Item_empty_string("Master_User", @@ -1958,6 +1991,8 @@ int show_master_info(THD* thd, MASTER_INFO* mi) sizeof(mi->ssl_cipher))); field_list.push_back(new Item_empty_string("Master_SSL_Key", sizeof(mi->ssl_key))); + field_list.push_back(new Item_return_int("Seconds_behind_master", 10, + MYSQL_TYPE_LONGLONG)); if (protocol->send_fields(&field_list, 1)) DBUG_RETURN(-1); @@ -1970,6 +2005,8 @@ int show_master_info(THD* thd, MASTER_INFO* mi) pthread_mutex_lock(&mi->data_lock); pthread_mutex_lock(&mi->rli.data_lock); + + protocol->store(mi->io_thd ? mi->io_thd->proc_info : "", &my_charset_bin); protocol->store(mi->host, &my_charset_bin); protocol->store(mi->user, &my_charset_bin); protocol->store((uint32) mi->port); @@ -2025,7 +2062,15 @@ int show_master_info(THD* thd, MASTER_INFO* mi) protocol->store(mi->ssl_cert, &my_charset_bin); protocol->store(mi->ssl_cipher, &my_charset_bin); protocol->store(mi->ssl_key, &my_charset_bin); - + + if (mi->rli.last_master_timestamp) + protocol->store((ulonglong) + (long)((time_t)time((time_t*) 0) + - mi->rli.last_master_timestamp) + - mi->clock_diff_with_master); + else + protocol->store_null(); + pthread_mutex_unlock(&mi->rli.data_lock); pthread_mutex_unlock(&mi->data_lock); @@ -2068,9 +2113,10 @@ bool flush_master_info(MASTER_INFO* mi) st_relay_log_info::st_relay_log_info() :info_fd(-1), cur_log_fd(-1), save_temporary_tables(0), cur_log_old_open_count(0), group_master_log_pos(0), log_space_total(0), - ignore_log_space_limit(0), slave_skip_counter(0), abort_pos_wait(0), - slave_run_id(0), sql_thd(0), last_slave_errno(0), inited(0), abort_slave(0), - slave_running(0), until_condition(UNTIL_NONE), until_log_pos(0) + ignore_log_space_limit(0), last_master_timestamp(0), slave_skip_counter(0), + abort_pos_wait(0), slave_run_id(0), sql_thd(0), last_slave_errno(0), + inited(0), abort_slave(0), slave_running(0), until_condition(UNTIL_NONE), + until_log_pos(0) { group_relay_log_name[0]= event_relay_log_name[0]= group_master_log_name[0]= 0; last_slave_error[0]=0; until_log_name[0]= 0; @@ -2776,7 +2822,7 @@ connected: thd->slave_net = &mysql->net; thd->proc_info = "Checking master version"; - if (check_master_version(mysql, mi)) + if (get_master_version_and_clock(mysql, mi)) goto err; if (!mi->old_format) { @@ -3057,9 +3103,13 @@ slave_begin: /* Reset errors for a clean start (otherwise, if the master is idle, the SQL thread may execute no Query_log_event, so the error will remain even - though there's no problem anymore). + though there's no problem anymore). Do not reset the master timestamp + (imagine the slave has caught everything, the STOP SLAVE and START SLAVE: as + we are not sure that we are going to receive a query, we want to remember + the last master timestamp (to say how many seconds behind we are now. + But the master timestamp is reset by RESET SLAVE & CHANGE MASTER. */ - clear_last_slave_error(rli); + clear_slave_error(rli); //tell the I/O thread to take relay_log_space_limit into account from now on pthread_mutex_lock(&rli->log_space_lock); diff --git a/sql/slave.h b/sql/slave.h index 05cf7a23b0f..618b04311b9 100644 --- a/sql/slave.h +++ b/sql/slave.h @@ -213,6 +213,8 @@ typedef struct st_relay_log_info */ int event_len; + time_t last_master_timestamp; + /* Needed for problems when slave stops and we want to restart it skipping one or more events in the master log that have caused @@ -390,6 +392,16 @@ typedef struct st_master_info enum enum_binlog_formats old_format; volatile bool abort_slave, slave_running; volatile ulong slave_run_id; + /* + The difference in seconds between the clock of the master and the clock of + the slave (second - first). It must be signed as it may be <0 or >0. + clock_diff_with_master is computed when the I/O thread starts; for this the + I/O thread does a SELECT UNIX_TIMESTAMP() on the master. + "how late the slave is compared to the master" is computed like this: + clock_of_slave - last_timestamp_executed_by_SQL_thread - clock_diff_with_master + + */ + long clock_diff_with_master; st_master_info() :ssl(0), fd(-1), io_thd(0), inited(0), old_format(BINLOG_FORMAT_CURRENT), @@ -512,7 +524,7 @@ void slave_print_error(RELAY_LOG_INFO* rli, int err_code, const char* msg, ...); void end_slave(); /* clean up */ void init_master_info_with_options(MASTER_INFO* mi); void clear_until_condition(RELAY_LOG_INFO* rli); -void clear_last_slave_error(RELAY_LOG_INFO* rli); +void clear_slave_error_timestamp(RELAY_LOG_INFO* rli); int init_master_info(MASTER_INFO* mi, const char* master_info_fname, const char* slave_info_fname, bool abort_if_no_master_info_file); diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 2345355922c..5db3be7599b 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -878,7 +878,11 @@ int reset_slave(THD *thd, MASTER_INFO* mi) STATUS; before doing START SLAVE; */ init_master_info_with_options(mi); - clear_last_slave_error(&mi->rli); + /* + Reset errors, and master timestamp (the idea is that we forget about the + old master). + */ + clear_slave_error_timestamp(&mi->rli); clear_until_condition(&mi->rli); // close master_info_file, relay_log_info_file, set mi->inited=rli->inited=0 @@ -1092,8 +1096,8 @@ int change_master(THD* thd, MASTER_INFO* mi) pthread_mutex_lock(&mi->rli.data_lock); mi->rli.abort_pos_wait++; /* for MASTER_POS_WAIT() to abort */ - /* Clear the error, for a clean start. */ - clear_last_slave_error(&mi->rli); + /* Clear the errors, for a clean start, and master timestamp */ + clear_slave_error_timestamp(&mi->rli); clear_until_condition(&mi->rli); /* If we don't write new coordinates to disk now, then old will remain in From 5ac0812db22c255db741ffdf8a5e8175cde88e1b Mon Sep 17 00:00:00 2001 From: "paul@ice.snake.net" <> Date: Wed, 8 Oct 2003 18:08:51 -0500 Subject: [PATCH 81/81] errmsg.txt: Add Stefan's new translations. --- sql/share/german/errmsg.txt | 316 ++++++++++++++++++------------------ 1 file changed, 158 insertions(+), 158 deletions(-) diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt index e301a7204b7..bbace563bcb 100644 --- a/sql/share/german/errmsg.txt +++ b/sql/share/german/errmsg.txt @@ -1,17 +1,17 @@ /* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB - This file is public domain and comes with NO WARRANTY of any kind + This file is public domain and comes with NO WARRANTY of any kind - Dirk Munzinger (dmun@4t2.com) + Dirk Munzinger (dmun@4t2.com) 2001-06-07 Georg Richter (georg@php.net) fixed typos and translation translated new error messages - 2002-12-11 + 2002-12-11 Stefan Hinz (stefan@mysql.com) 2003-10-01 - */ + */ character-set=latin1 @@ -23,45 +23,45 @@ character-set=latin1 "Kann Tabelle '%-.64s' nicht erzeugen (Fehler: %d)", "Kann Datenbank '%-.64s' nicht erzeugen (Fehler: %d)", "Kann Datenbank '%-.64s' nicht erzeugen. Datenbank '%-.64s' existiert bereits", -"Kann Datenbank '%-.64s' nicht lšschen. Keine Datenbank '%-.64s' vorhanden", -"Fehler beim Lšschen der Datenbank ('%-.64s' kann nicht gelšscht werden, Fehlernuumer: %d)", -"Fehler beim Lšschen der Datenbank (Verzeichnis '%-.64s' kann nicht gelšscht werden, Fehlernummer: %d)", -"Fehler beim Lšschen von '%-.64s' (Fehler: %d)", +"Kann Datenbank '%-.64s' nicht löschen. Keine Datenbank '%-.64s' vorhanden", +"Fehler beim Löschen der Datenbank ('%-.64s' kann nicht gelöscht werden, Fehlernuumer: %d)", +"Fehler beim Löschen der Datenbank (Verzeichnis '%-.64s' kann nicht gelöscht werden, Fehlernummer: %d)", +"Fehler beim Löschen von '%-.64s' (Fehler: %d)", "Datensatz in der Systemtabelle nicht lesbar", "Kann Status von '%-.64s' nicht ermitteln (Fehler: %d)", "Kann Arbeitsverzeichnis nicht ermitteln (Fehler: %d)", "Datei kann nicht gesperrt werden (Fehler: %d)", -"Datei '%-.64s' nicht šffnen (Fehler: %d)", +"Datei '%-.64s' nicht öffnen (Fehler: %d)", "Kann Datei '%-.64s' nicht finden (Fehler: %d)", "Verzeichnis von '%-.64s' nicht lesbar (Fehler: %d)", "Kann nicht in das Verzeichnis '%-.64s' wechseln (Fehler: %d)", -"Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geŠndert", +"Datensatz hat sich seit dem letzten Zugriff auf Tabelle '%-.64s' geändert", "Festplatte voll (%-.64s). Warte, bis jemand Platz schafft ...", -"Kann nicht speichern, Grund: doppelter SchlŸssel in Tabelle '%-.64s'", -"Fehler beim Schlie§en von '%-.64s' (Fehler: %d)", +"Kann nicht speichern, Grund: doppelter Schlüssel in Tabelle '%-.64s'", +"Fehler beim Schließen von '%-.64s' (Fehler: %d)", "Fehler beim Lesen der Datei '%-.64s' (Fehler: %d)", "Fehler beim Umbenennen von '%-.64s' in '%-.64s' (Fehler: %d)", "Fehler beim Speichern der Datei '%-.64s' (Fehler: %d)", -"'%-.64s' ist fŸr €nderungen gesperrt", +"'%-.64s' ist für Änderungen gesperrt", "Sortiervorgang abgebrochen", -"View '%-.64s' existiert fŸr '%-.64s' nicht", +"View '%-.64s' existiert für '%-.64s' nicht", "Fehler %d (Tabellenhandler)", "Diese Option gibt es nicht (Tabellenhandler)", "Kann Datensatz nicht finden", "Falsche Information in Datei '%-.64s'", -"Falsche SchlŸssel-Datei fŸr Tabelle '%-.64s'. versuche zu reparieren", -"Alte SchlŸssel-Datei fŸr Tabelle '%-.64s'. Bitte reparieren", +"Falsche Schlüssel-Datei für Tabelle '%-.64s'. versuche zu reparieren", +"Alte Schlüssel-Datei für Tabelle '%-.64s'. Bitte reparieren", "'%-.64s' ist nur lesbar", -"Kein Speicher vorhanden (%d Bytes benštigt). Bitte Server neu starten", -"Kein Speicher zum Sortieren vorhanden. sort_buffer_size sollte erhšht werden", +"Kein Speicher vorhanden (%d Bytes benötigt). Bitte Server neu starten", +"Kein Speicher zum Sortieren vorhanden. sort_buffer_size sollte erhöht werden", "Unerwartetes Ende beim Lesen der Datei '%-.64s' (Fehler: %d)", "Zu viele Verbindungen", -"Kein Speicher mehr vorhanden. PrŸfen Sie, ob mysqld oder ein anderer Prozess allen Speicher verbraucht. Wenn nicht, sollten Sie mit 'ulimit' dafŸr sorgen, dass mysqld mehr Speicher benutzen darf, oder mehr Swap-Speicher einrichten", -"Kann Hostnamen fŸr diese Adresse nicht erhalten", +"Kein Speicher mehr vorhanden. Prüfen Sie, ob mysqld oder ein anderer Prozess allen Speicher verbraucht. Wenn nicht, sollten Sie mit 'ulimit' dafür sorgen, dass mysqld mehr Speicher benutzen darf, oder mehr Swap-Speicher einrichten", +"Kann Hostnamen für diese Adresse nicht erhalten", "Schlechter Handshake", -"Benutzer '%-.32s'@'%-.64s' hat keine Zugriffsberechtigung fŸr Datenbank '%-.64s'", +"Benutzer '%-.32s'@'%-.64s' hat keine Zugriffsberechtigung für Datenbank '%-.64s'", "Benutzer '%-.32s'@'%-.64s' hat keine Zugriffsberechtigung (verwendetes Passwort: %-.64s)", -"Keine Datenbank ausgewŠhlt", +"Keine Datenbank ausgewählt", "Unbekannter Befehl", "Feld '%-.64s' darf nicht NULL sein", "Unbekannte Datenbank '%-.64s'", @@ -71,27 +71,27 @@ character-set=latin1 "Der Server wird heruntergefahren", "Unbekanntes Tabellenfeld '%-.64s' in %-.64s", "'%-.64s' ist nicht in GROUP BY vorhanden", -"Gruppierung Ÿber '%-.64s' nicht mšglich", +"Gruppierung über '%-.64s' nicht möglich", "Die Verwendung von Summierungsfunktionen und Spalten im selben Befehl ist nicht erlaubt", "Die Anzahl der Spalten entspricht nicht der Anzahl der Werte", "Name des Bezeichners '%-.64s' ist zu lang", "Doppelter Spaltenname vorhanden: '%-.64s'", -"Doppelter Name fŸr SchlŸssel (Key) vorhanden: '%-.64s'", -"Doppelter Eintrag '%-.64s' fŸr SchlŸssel %d", -"Falsche Spaltenangaben fŸr Spalte '%-.64s'", +"Doppelter Name für Schlüssel (Key) vorhanden: '%-.64s'", +"Doppelter Eintrag '%-.64s' für Schlüssel %d", +"Falsche Spaltenangaben für Spalte '%-.64s'", "%s bei '%-.80s' in Zeile %d", "Leere Abfrage", "Tabellenname/Alias '%-.64s' nicht eindeutig", "Fehlerhafter Vorgabewert (DEFAULT): '%-.64s'", -"Mehrfacher PrimŠrschlŸssel (PRIMARY KEY) definiert", -"Zu viele SchlŸssel definiert. Maximal %d SchlŸssel erlaubt", -"Zu viele TeilschlŸssel definiert. Maximal sind %d TeilschlŸssel erlaubt", -"SchlŸssel ist zu lang. Die maximale SchlŸssellŠnge betrŠgt %d", -"In der Tabelle gibt es keine SchlŸsselspalte '%-.64s'", -"BLOB-Feld '%-.64s' kann beim verwendeten Tabellentyp nicht als SchlŸssel verwendet werden", -"FeldlŠnge fŸr Feld '%-.64s' zu gro§ (maximal %d). BLOB-Feld verwenden!", -"Falsche Tabellendefinition. Es darf nur ein Auto-Feld geben und dieses muss als SchlŸssel definiert werden", -"%-.64s: Bereit fŸr Verbindungen\n", +"Mehrfacher Primärschlüssel (PRIMARY KEY) definiert", +"Zu viele Schlüssel definiert. Maximal %d Schlüssel erlaubt", +"Zu viele Teilschlüssel definiert. Maximal sind %d Teilschlüssel erlaubt", +"Schlüssel ist zu lang. Die maximale Schlüssellänge beträgt %d", +"In der Tabelle gibt es keine Schlüsselspalte '%-.64s'", +"BLOB-Feld '%-.64s' kann beim verwendeten Tabellentyp nicht als Schlüssel verwendet werden", +"Feldlänge für Feld '%-.64s' zu groß (maximal %d). BLOB-Feld verwenden!", +"Falsche Tabellendefinition. Es darf nur ein Auto-Feld geben und dieses muss als Schlüssel definiert werden", +"%-.64s: Bereit für Verbindungen\n", "%-.64s: Normal heruntergefahren\n", "%-.64s: Signal %d erhalten. Abbruch!\n", "%-.64s: Heruntergefahren (shutdown)\n", @@ -99,198 +99,198 @@ character-set=latin1 "Kann IP-Socket nicht erzeugen", "Tabelle '%-.64s' besitzt keinen wie den in CREATE INDEX verwendeten Index. Index neu anlegen", "Feldbegrenzer-Argument ist nicht in der erwarteten Form. Bitte im Handbuch nachlesen", -"Eine feste ZeilenlŠnge kann fŸr BLOB-Felder nicht verwendet werden. Bitte 'fields terminated by' verwenden", -"Datei '%-.64s' muss im Datenbank-Verzeichnis vorhanden und lesbar fŸr alle sein", +"Eine feste Zeilenlänge kann für BLOB-Felder nicht verwendet werden. Bitte 'fields terminated by' verwenden", +"Datei '%-.64s' muss im Datenbank-Verzeichnis vorhanden und lesbar für alle sein", "Datei '%-.64s' bereits vorhanden", -"DatensŠtze: %ld Gelšscht: %ld Ausgelassen: %ld Warnungen: %ld", -"DatensŠtze: %ld Duplikate: %ld", -"Falscher UnterteilschlŸssel. Der verwendete SchlŸsselteil ist entweder kein String, die verwendete LŠnge ist lŠnger als der TeilschlŸssel oder der Tabellenhandler unterstŸtzt keine UnterteilschlŸssel", -"Mit ALTER TABLE kšnnen nicht alle Felder auf einmal gelšscht werden. DafŸr DROP TABLE verwenden", -"Kann '%-.64s' nicht lšschen. Existiert das Feld / der SchlŸssel?", -"DatensŠtze: %ld Duplikate: %ld Warnungen: %ld", -"Die Verwendung der zu aktualisierenden Zieltabelle '%-.64s' ist in der FROM-Klausel nicht zulŠssig.", +"Datensätze: %ld Gelöscht: %ld Ausgelassen: %ld Warnungen: %ld", +"Datensätze: %ld Duplikate: %ld", +"Falscher Unterteilschlüssel. Der verwendete Schlüsselteil ist entweder kein String, die verwendete Länge ist länger als der Teilschlüssel oder der Tabellenhandler unterstützt keine Unterteilschlüssel", +"Mit ALTER TABLE können nicht alle Felder auf einmal gelöscht werden. Dafür DROP TABLE verwenden", +"Kann '%-.64s' nicht löschen. Existiert das Feld / der Schlüssel?", +"Datensätze: %ld Duplikate: %ld Warnungen: %ld", +"Die Verwendung der zu aktualisierenden Zieltabelle '%-.64s' ist in der FROM-Klausel nicht zulässig.", "Unbekannte Thread-ID: %lu", -"Sie sind nicht EigentŸmer von Thread %lu", +"Sie sind nicht Eigentümer von Thread %lu", "Keine Tabellen verwendet", -"Zu viele Strings fŸr SET-Spalte %-.64s angegeben", -"Kann keinen eindeutigen Dateinamen fŸr die Logdatei %-.64s erzeugen (1-999)\n", +"Zu viele Strings für SET-Spalte %-.64s angegeben", +"Kann keinen eindeutigen Dateinamen für die Logdatei %-.64s erzeugen (1-999)\n", "Tabelle '%-.64s' ist mit Lesesperre versehen und kann nicht aktualisiert werden", "Tabelle '%-.64s' wurde nicht mit LOCK TABLES gesperrt", "BLOB-Feld '%-.64s' darf keinen Vorgabewert (DEFAULT) haben", "Unerlaubter Datenbankname '%-.64s'", "Unerlaubter Tabellenname '%-.64s'", -"Die AusfŸhrung des SELECT wŸrde zu viele DatensŠtze untersuchen und wahrscheinlich sehr lange dauern. Bitte WHERE-Klausel ŸberprŸfen oder gegebenenfalls SET SQL_BIG_SELECTS=1 oder SET SQL_MAX_JOIN_SIZE=# verwenden", +"Die Ausführung des SELECT würde zu viele Datensätze untersuchen und wahrscheinlich sehr lange dauern. Bitte WHERE-Klausel überprüfen oder gegebenenfalls SET SQL_BIG_SELECTS=1 oder SET SQL_MAX_JOIN_SIZE=# verwenden", "Unbekannter Fehler", "Unbekannte Prozedur '%-.64s'", -"Falsche Parameterzahl fŸr Prozedur '%-.64s'", -"Falsche Parameter fŸr Prozedur '%-.64s'", +"Falsche Parameterzahl für Prozedur '%-.64s'", +"Falsche Parameter für Prozedur '%-.64s'", "Unbekannte Tabelle '%-.64s' in '%-.64s'", "Feld '%-.64s' wurde zweimal angegeben", "Falsche Verwendung einer Gruppierungsfunktion", -"Tabelle '%-.64s' verwendet eine Extension, die in dieser MySQL-Version nicht verfŸgbar ist", -"Eine Tabelle mu§ mindestens 1 Spalte besitzen", +"Tabelle '%-.64s' verwendet eine Extension, die in dieser MySQL-Version nicht verfügbar ist", +"Eine Tabelle muß mindestens 1 Spalte besitzen", "Tabelle '%-.64s' ist voll", "Unbekannter Zeichensatz: '%-.64s'", "Zu viele Tabellen. MySQL kann in einem Join maximal %d Tabellen verwenden", "Zu viele Spalten", -"ZeilenlŠnge zu gro§. Die maximale SpaltenlŠnge fŸr den verwendeten Tabellentyp (ohne BLOB-Felder) betrŠgt %d. Einige Felder mŸssen in BLOB oder TEXT umgewandelt werden", -"Thread-Stack-†berlauf. Benutzt: %ld von %ld Stack. 'mysqld -O thread_stack=#' verwenen, um notfalls einen grš§eren Stack anzulegen", -"OUTER JOIN enthŠlt fehlerhafte AbhŠngigkeiten. In ON verwendete Bedingungen ŸberprŸfen", +"Zeilenlänge zu groß. Die maximale Spaltenlänge für den verwendeten Tabellentyp (ohne BLOB-Felder) beträgt %d. Einige Felder müssen in BLOB oder TEXT umgewandelt werden", +"Thread-Stack-Überlauf. Benutzt: %ld von %ld Stack. 'mysqld -O thread_stack=#' verwenen, um notfalls einen größeren Stack anzulegen", +"OUTER JOIN enthält fehlerhafte Abhängigkeiten. In ON verwendete Bedingungen überprüfen", "Spalte '%-.64s' wurde mit UNIQUE oder INDEX benutzt, ist aber nicht als NOT NULL definiert", "Kann Funktion '%-.64s' nicht laden", "Kann Funktion '%-.64s' nicht initialisieren: %-.80s", -"Keine Pfade gestattet fŸr Shared Library", +"Keine Pfade gestattet für Shared Library", "Funktion '%-.64s' existiert schon", -"Kann Shared Library '%-.64s' nicht šffnen (Fehler: %d %-.64s)", +"Kann Shared Library '%-.64s' nicht öffnen (Fehler: %d %-.64s)", "Kann Funktion '%-.64s' in der Library nicht finden", "Funktion '%-.64s' ist nicht definiert", "Host '%-.64s' blockiert wegen zu vieler Verbindungsfehler. Aufheben der Blockierung mit 'mysqladmin flush-hosts'", "Host '%-.64s' hat keine Berechtigung, sich mit diesem MySQL-Server zu verbinden", -"Sie benutzen MySQL als anonymer Benutzer und dŸrfen daher keine Passwšrter Šndern", -"Sie benštigen die Berechtigung zum Aktualisieren von Tabellen in der Datenbank 'mysql', um die Passwšrter anderer Benutzer Šndern zu kšnnen", +"Sie benutzen MySQL als anonymer Benutzer und dürfen daher keine Passwörter ändern", +"Sie benötigen die Berechtigung zum Aktualisieren von Tabellen in der Datenbank 'mysql', um die Passwörter anderer Benutzer ändern zu können", "Kann keinen passenden Datensatz in Tabelle 'user' finden", -"DatensŠtze gefunden: %ld GeŠndert: %ld Warnungen: %ld", -"Kann keinen neuen Thread erzeugen (Fehler: %d). Sollte noch Speicher verfŸgbar sein, bitte im Handbuch wegen mšglicher Fehler im Betriebssystem nachschlagen", -"Anzahl der Spalten stimmt nicht mit der Anzahl der Werte in Zeile %ld Ÿberein", -"Kann Tabelle'%-.64s' nicht erneut šffnen", +"Datensätze gefunden: %ld Geändert: %ld Warnungen: %ld", +"Kann keinen neuen Thread erzeugen (Fehler: %d). Sollte noch Speicher verfügbar sein, bitte im Handbuch wegen möglicher Fehler im Betriebssystem nachschlagen", +"Anzahl der Spalten stimmt nicht mit der Anzahl der Werte in Zeile %ld überein", +"Kann Tabelle'%-.64s' nicht erneut öffnen", "Unerlaubte Verwendung eines NULL-Werts", "regexp lieferte Fehler '%-.64s'", -"Das Vermischen von GROUP-Spalten (MIN(),MAX(),COUNT()...) mit Nicht-GROUP-Spalten ist nicht zulŠssig, wenn keine GROUP BY-Klausel vorhanden ist", -"FŸr Benutzer '%-.32s' auf Host '%-.64s' gibt es keine solche Berechtigung", -"%-.16s Befehl nicht erlaubt fŸr Benutzer '%-.32s'@'%-.64s' und fŸr Tabelle '%-.64s'", -"%-.16s Befehl nicht erlaubt fŸr Benutzer '%-.32s'@'%-.64s' und Spalte '%-.64s' in Tabelle '%-.64s'", -"UnzulŠssiger GRANT- oder REVOKE-Befehl. VerfŸgbare Berechtigungen sind im Handbuch aufgefŸhrt", -"Das Host- oder User-Argument fŸr GRANT ist zu lang", +"Das Vermischen von GROUP-Spalten (MIN(),MAX(),COUNT()...) mit Nicht-GROUP-Spalten ist nicht zulässig, wenn keine GROUP BY-Klausel vorhanden ist", +"Für Benutzer '%-.32s' auf Host '%-.64s' gibt es keine solche Berechtigung", +"%-.16s Befehl nicht erlaubt für Benutzer '%-.32s'@'%-.64s' und für Tabelle '%-.64s'", +"%-.16s Befehl nicht erlaubt für Benutzer '%-.32s'@'%-.64s' und Spalte '%-.64s' in Tabelle '%-.64s'", +"Unzulässiger GRANT- oder REVOKE-Befehl. Verfügbare Berechtigungen sind im Handbuch aufgeführt", +"Das Host- oder User-Argument für GRANT ist zu lang", "Tabelle '%-.64s.%-.64s' existiert nicht", -"Keine solche Berechtigung fŸr User '%-.32s' auf Host '%-.64s' an Tabelle '%-.64s'", -"Der verwendete Befehl ist in dieser MySQL-Version nicht zulŠssig", -"Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen (diese kann fŸr verschiedene Server-Versionen unterschiedlich sein)", -"Verzšgerter (DELAYED) EinfŸge-Thread konnte die angeforderte Sperre fŸr Tabelle '%-.64s' nicht erhalten", -"Zu viele verzšgerte (DELAYED) Threads in Verwendung", +"Keine solche Berechtigung für User '%-.32s' auf Host '%-.64s' an Tabelle '%-.64s'", +"Der verwendete Befehl ist in dieser MySQL-Version nicht zulässig", +"Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen (diese kann für verschiedene Server-Versionen unterschiedlich sein)", +"Verzögerter (DELAYED) Einfüge-Thread konnte die angeforderte Sperre für Tabelle '%-.64s' nicht erhalten", +"Zu viele verzögerte (DELAYED) Threads in Verwendung", "Abbruch der Verbindung %ld zur Datenbank '%-.64s'. Benutzer: '%-.64s' (%-.64s)", -"Empfangenes Paket ist grš§er als 'max_allowed_packet'", +"Empfangenes Paket ist größer als 'max_allowed_packet'", "Lese-Fehler bei einer Kommunikations-Pipe", "fcntl() lieferte einen Fehler", "Pakete nicht in der richtigen Reihenfolge empfangen", -"Kommunikationspaket lŠsst sich nicht entpacken", +"Kommunikationspaket lässt sich nicht entpacken", "Fehler beim Lesen eines Kommunikationspakets", -"ZeitŸberschreitung beim Lesen eines Kommunikationspakets", +"Zeitüberschreitung beim Lesen eines Kommunikationspakets", "Fehler beim Schreiben eines Kommunikationspakets", -"ZeitŸberschreitung beim Schreiben eines Kommunikationspakets", -"Ergebnis ist lŠnger als max_allowed_packet", -"Der verwendete Tabellentyp unterstŸtzt keine BLOB- und TEXT-Spalten", -"Der verwendete Tabellentyp unterstŸtzt keine AUTO_INCREMENT-Spalten", +"Zeitüberschreitung beim Schreiben eines Kommunikationspakets", +"Ergebnis ist länger als max_allowed_packet", +"Der verwendete Tabellentyp unterstützt keine BLOB- und TEXT-Spalten", +"Der verwendete Tabellentyp unterstützt keine AUTO_INCREMENT-Spalten", "INSERT DELAYED kann nicht auf Tabelle '%-.64s' angewendet werden, da diese mit LOCK TABLES gesperrt ist", "Falscher Spaltenname '%-.100s'", "Der verwendete Tabellen-Handler kann die Spalte '%-.64s' nicht indizieren", "Nicht alle Tabellen in der MERGE-Tabelle sind gleich definiert", -"Schreiben in Tabelle '%-.64s' nicht mšglich wegen einer eindeutigen BeschrŠnkung (unique constraint)", -"BLOB- oder TEXT-Spalte '%-.64s' wird in der SchlŸsseldefinition ohne SchlŸssellŠngenangabe verwendet", -"Alle Teile eines PRIMARY KEY mŸssen als NOT NULL definiert sein. Wenn NULL in einem SchlŸssel verwendet wird, muss ein UNIQUE-SchlŸssel verwendet werden", +"Schreiben in Tabelle '%-.64s' nicht möglich wegen einer eindeutigen Beschränkung (unique constraint)", +"BLOB- oder TEXT-Spalte '%-.64s' wird in der Schlüsseldefinition ohne Schlüssellängenangabe verwendet", +"Alle Teile eines PRIMARY KEY müssen als NOT NULL definiert sein. Wenn NULL in einem Schlüssel verwendet wird, muss ein UNIQUE-Schlüssel verwendet werden", "Ergebnis besteht aus mehr als einer Zeile", -"Dieser Tabellentyp benštigt einen PRIMARY KEY", -"Diese MySQL-Version ist nicht mit RAID-UnterstŸtzung kompiliert", -"MySQL lŠuft im sicheren Aktualisierungsmodus (safe update mode). Sie haben versucht, eine Tabelle zu aktualisieren, ohne in der WHERE-Klausel eine KEY-Spalte anzugeben", -"SchlŸssel '%-.64s' existiert in der Tabelle '%-.64s' nicht", -"Kann Tabelle nicht šffnen", -"Die Speicher-Engine fŸr diese Tabelle unterstŸtzt kein %s", -"Sie dŸrfen diesen Befehl nicht in einer Transaktion ausfŸhren", +"Dieser Tabellentyp benötigt einen PRIMARY KEY", +"Diese MySQL-Version ist nicht mit RAID-Unterstützung kompiliert", +"MySQL läuft im sicheren Aktualisierungsmodus (safe update mode). Sie haben versucht, eine Tabelle zu aktualisieren, ohne in der WHERE-Klausel eine KEY-Spalte anzugeben", +"Schlüssel '%-.64s' existiert in der Tabelle '%-.64s' nicht", +"Kann Tabelle nicht öffnen", +"Die Speicher-Engine für diese Tabelle unterstützt kein %s", +"Sie dürfen diesen Befehl nicht in einer Transaktion ausführen", "Fehler %d beim COMMIT", "Fehler %d beim ROLLBACK", "Fehler %d bei FLUSH_LOGS", "Fehler %d bei CHECKPOINT", "Verbindungsabbruch %ld zur Datenbank '%-.64s'. Benutzer: '%-.32s', Host: `%-.64s' (%-.64s)", -"Die Speicher-Engine fŸr die Tabelle unterstŸtzt keinen binŠren Tabellen-Dump", -"Binlog geschlossen. Kann RESET MASTER nicht ausfŸhren", +"Die Speicher-Engine für die Tabelle unterstützt keinen binären Tabellen-Dump", +"Binlog geschlossen. Kann RESET MASTER nicht ausführen", "Neuerstellung des Indizes der Dump-Tabelle '%-.64s' fehlgeschlagen", "Fehler vom Master: '%-.64s'", "Netzfehler beim Lesen vom Master", "Netzfehler beim Schreiben zum Master", "Kann keinen FULLTEXT-Index finden, der der Spaltenliste entspricht", -"Kann den angegebenen Befehl wegen einer aktiven Tabellensperre oder einer aktiven Transaktion nicht ausfŸhren", +"Kann den angegebenen Befehl wegen einer aktiven Tabellensperre oder einer aktiven Transaktion nicht ausführen", "Unbekannte Systemvariable '%-.64s'", "Tabelle '%-.64s' ist als defekt markiert und sollte repariert werden", "Tabelle '%-.64s' ist als defekt markiert und der letzte (automatische?) Reparaturversuch schlug fehl", -"€nderungen an einigen nicht transaktionalen Tabellen konnten nicht zurŸckgerollt werden", -"Transaktionen, die aus mehreren Befehlen bestehen, benštigen mehr als 'max_binlog_cache_size' Bytes an Speicher. Diese mysqld-Variable bitte vergršssern und erneut versuchen", -"Diese Operation kann nicht bei einem aktiven Slave durchgefŸhrt werden. Bitte zuerst STOP SLAVE ausfŸhren", -"Diese Operation benštigt einen aktiven Slave. Bitte Slave konfigurieren und mittels START SLAVE aktivieren", +"Änderungen an einigen nicht transaktionalen Tabellen konnten nicht zurückgerollt werden", +"Transaktionen, die aus mehreren Befehlen bestehen, benötigen mehr als 'max_binlog_cache_size' Bytes an Speicher. Diese mysqld-Variable bitte vergrössern und erneut versuchen", +"Diese Operation kann nicht bei einem aktiven Slave durchgeführt werden. Bitte zuerst STOP SLAVE ausführen", +"Diese Operation benötigt einen aktiven Slave. Bitte Slave konfigurieren und mittels START SLAVE aktivieren", "Der Server ist nicht als Slave konfiguriert. Bitte in der Konfigurationsdatei oder mittels CHANGE MASTER TO beheben", -"Konnte Master-Info-Struktur nicht initialisieren. Bitte Berechtigungen von master.info prŸfen", -"Konnte keinen Slave-Thread starten. Bitte System-Ressourcen ŸberprŸfen", +"Konnte Master-Info-Struktur nicht initialisieren. Bitte Berechtigungen von master.info prüfen", +"Konnte keinen Slave-Thread starten. Bitte System-Ressourcen überprüfen", "Benutzer '%-.64s' hat mehr als max_user_connections aktive Verbindungen", -"Bei SET dŸrfen nur konstante AusdrŸcke verwendet werden", -"Beim Warten auf eine Sperre wurde die zulŠssige Wartezeit Ÿberschritten. Bitte versuchen Sie, die Transaktion neu zu starten", -"Die Gesamtzahl der Sperren Ÿberschreitet die Grš§e der Sperrtabelle", -"WŠhrend einer READ UNCOMMITED-Transaktion kšnnen keine UPDATE-Sperren angefordert werden", -"DROP DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hŠlt", -"CREATE DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hŠlt", -"Falsche Argumente fŸr %s", -"'%-.32s'@'%-.64s' is nicht berechtigt, neue Benutzer hinzuzufŸgen", -"Falsche Tabellendefinition. Alle MERGE-Tabellen mŸssen sich in derselben Datenbank befinden", +"Bei SET dürfen nur konstante Ausdrücke verwendet werden", +"Beim Warten auf eine Sperre wurde die zulässige Wartezeit überschritten. Bitte versuchen Sie, die Transaktion neu zu starten", +"Die Gesamtzahl der Sperren überschreitet die Größe der Sperrtabelle", +"Während einer READ UNCOMMITED-Transaktion können keine UPDATE-Sperren angefordert werden", +"DROP DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hält", +"CREATE DATABASE ist nicht erlaubt, solange der Thread eine globale Lesesperre hält", +"Falsche Argumente für %s", +"'%-.32s'@'%-.64s' is nicht berechtigt, neue Benutzer hinzuzufügen", +"Falsche Tabellendefinition. Alle MERGE-Tabellen müssen sich in derselben Datenbank befinden", "Beim Versuch, eine Sperre anzufordern, ist ein Deadlock aufgetreten. Versuchen Sie, die Transaktion erneut zu starten", -"Der verwendete Tabellentyp unterstŸtzt keine FULLTEXT-Indizes", -"FremdschlŸssel-BeschrŠnkung konnte nicht hinzugefŸgt werden", -"HinzufŸgen eines Kind-Datensatzes schlug aufgrund einer FremdschlŸssel-BeschrŠnkung fehl", -"Lšschen eines Eltern-Datensatzes schlug aufgrund einer FremdschlŸssel-BeschrŠnkung fehl", +"Der verwendete Tabellentyp unterstützt keine FULLTEXT-Indizes", +"Fremdschlüssel-Beschränkung konnte nicht hinzugefügt werden", +"Hinzufügen eines Kind-Datensatzes schlug aufgrund einer Fremdschlüssel-Beschränkung fehl", +"Löschen eines Eltern-Datensatzes schlug aufgrund einer Fremdschlüssel-Beschränkung fehl", "Fehler bei der Verbindung zum Master: %-.128s", -"Beim AusfŸhren einer Abfrage auf dem Master trat ein Fehler auf: %-.128s", -"Fehler beim AusfŸhren des Befehls %s: %-.128s", +"Beim Ausführen einer Abfrage auf dem Master trat ein Fehler auf: %-.128s", +"Fehler beim Ausführen des Befehls %s: %-.128s", "Falsche Verwendung von %s und %s", -"Die verwendeten SELECT-Befehle liefern eine unterschiedliche Anzahl von Spalten zurŸck", -"Augrund eines READ LOCK-Konflikts kann die Abfrage nicht ausgefŸhrt werden", -"Die gleichzeitige Verwendung von Tabellen mit und ohne TransaktionsunterstŸtzung ist deaktiviert", +"Die verwendeten SELECT-Befehle liefern eine unterschiedliche Anzahl von Spalten zurück", +"Augrund eines READ LOCK-Konflikts kann die Abfrage nicht ausgeführt werden", +"Die gleichzeitige Verwendung von Tabellen mit und ohne Transaktionsunterstützung ist deaktiviert", "Option '%s' wird im Befehl zweimal verwendet", -"Benutzer '%-.64s' hat die RessourcenbeschrŠnkung '%s' Ÿberschritten (aktueller Wert: %ld)", -"Befehl nicht zulŠssig. HierfŸr wird die Berechtigung %-.128s benštigt", -"Variable '%-.64s' ist eine lokale Variable und kann nicht mit SET GLOBAL verŠndert werden", -"Variable '%-.64s' ist eine globale Variable und muss mit SET GLOBAL verŠndert werden", +"Benutzer '%-.64s' hat die Ressourcenbeschränkung '%s' überschritten (aktueller Wert: %ld)", +"Befehl nicht zulässig. Hierfür wird die Berechtigung %-.128s benötigt", +"Variable '%-.64s' ist eine lokale Variable und kann nicht mit SET GLOBAL verändert werden", +"Variable '%-.64s' ist eine globale Variable und muss mit SET GLOBAL verändert werden", "Variable '%-.64s' hat keinen Vorgabewert", "Variable '%-.64s' kann nicht auf '%-.64s' gesetzt werden", -"Falscher Argumenttyp fŸr Variable '%-.64s'", -"Variable '%-.64s' kann nur verŠndert, nicht gelesen werden", +"Falscher Argumenttyp für Variable '%-.64s'", +"Variable '%-.64s' kann nur verändert, nicht gelesen werden", "Falsche Verwendung oder Platzierung von '%s'", -"Diese MySQL-Version unterstŸtzt '%s' nicht", -"Schwerer Fehler %d: '%-.128s vom Master beim Lesen des binŠren Logs aufgetreten", +"Diese MySQL-Version unterstützt '%s' nicht", +"Schwerer Fehler %d: '%-.128s vom Master beim Lesen des binären Logs aufgetreten", "Slave-SQL-Thread hat die Abfrage aufgrund von replicate-*-table-Regeln ignoriert", -"Falsche FremdschlŸssel-Definition fŸr '%-64s': %s", -"SchlŸssel- und Tabellenverweis passen nicht zusammen", -"KardinalitŠts-Fehler (mehr bzw. weniger als %d Spalten)", -"Unterabfrage lieferte mehr als einen Datensatz zurŸck.", -"Unbekannter Prepared-Statement-Handler (%ld) fŸr %s angegeben", -"Die Hilfe-Datenbank ist beschŠdigt oder existiert nicht", +"Falsche Fremdschlüssel-Definition für '%-64s': %s", +"Schlüssel- und Tabellenverweis passen nicht zusammen", +"Operand solle %d Spalte(n) enthalten", +"Unterabfrage lieferte mehr als einen Datensatz zurück", +"Unbekannter Prepared-Statement-Handler (%ld) für %s angegeben", +"Die Hilfe-Datenbank ist beschädigt oder existiert nicht", "Zyklischer Verweis in Unterabfragen", "Spalte '%s' wird von %s nach %s umgewandelt", -"Verweis '%-.64s' wird nicht unterstŸtzt (%s)", -"FŸr jede abgeleitete Tabelle muss ein eigener Alias angegeben werden", -"Select %u wurde wŠhrend der Optimierung reduziert", +"Verweis '%-.64s' wird nicht unterstützt (%s)", +"Für jede abgeleitete Tabelle muss ein eigener Alias angegeben werden", +"Select %u wurde während der Optimierung reduziert", "Tabelle '%-.64s', die in einem der SELECT-Befehle verwendet wurde, kann nicht in %-.32s verwendet werden", -"Client unterstŸtzt das vom Server erwartete Authentifizierungsprotokoll nicht. Bitte aktualisieren Sie Ihren MySQL-Client", -"Alle Teile eines SPATIAL KEY mŸssen als NOT NULL deklariert sein", -"COLLATION '%s' ist fŸr CHARACTER SET '%s' ungŸltig", -"Slave lŠuft bereits", +"Client unterstützt das vom Server erwartete Authentifizierungsprotokoll nicht. Bitte aktualisieren Sie Ihren MySQL-Client", +"Alle Teile eines SPATIAL KEY müssen als NOT NULL deklariert sein", +"COLLATION '%s' ist für CHARACTER SET '%s' ungültig", +"Slave läuft bereits", "Slave wurde bereits angehalten", -"Unkomprimierte Daten sind zu gro§. Die maximale Grš§e betrŠgt %d", -"Z_BUF_ERROR: FŸr zlib steht nicht genug Speicher zur VerfŸgung", -"Z_MEM_ERROR: Im Ausgabepuffer ist nicht genug Platz fŸr zlib vorhanden (wahrscheinlich wurde die LŠnge der unkomprimierten Daten beschŠdigt)", -"Z_DATA_ERROR: Eingabedaten fŸr zlib beschŠdigt", +"Unkomprimierte Daten sind zu groß. Die maximale Größe beträgt %d", +"Z_BUF_ERROR: Für zlib steht nicht genug Speicher zur Verfügung", +"Z_MEM_ERROR: Im Ausgabepuffer ist nicht genug Platz für zlib vorhanden (wahrscheinlich wurde die Länge der unkomprimierten Daten beschädigt)", +"Z_DATA_ERROR: Eingabedaten für zlib beschädigt", "%d Zeile(n) durch group_concat() abgeschnitten", -"Anzahl der DatensŠtze in Zeile %ld geringer als Anzahl der Spalten", -"Anzahl der DatensŠtze in Zeile %ld grš§er als Anzahl der Spalten", -"Daten abgeschnitten, NULL fŸr NOT NULL-Spalte '%s' in Zeile %ld angegeben", -"Daten abgeschnitten, au§erhalb des Wertebereichs fŸr Spalte '%s' in Zeile %ld", -"Daten abgeschnitten fŸr Spalte '%s' in Zeile %ld", -"FŸr Tabelle '%s' wird Speicher-Engine %s benutzt", -"Unerlaubte Vermischung der Kollationen (%s,%s) und (%s,%s) fŸr die Operation '%s'", -"Kann einen oder mehrere der angegebenen Benutzer nicht lšschen", +"Anzahl der Datensätze in Zeile %ld geringer als Anzahl der Spalten", +"Anzahl der Datensätze in Zeile %ld größer als Anzahl der Spalten", +"Daten abgeschnitten, NULL für NOT NULL-Spalte '%s' in Zeile %ld angegeben", +"Daten abgeschnitten, außerhalb des Wertebereichs für Spalte '%s' in Zeile %ld", +"Daten abgeschnitten für Spalte '%s' in Zeile %ld", +"Für Tabelle '%s' wird Speicher-Engine %s benutzt", +"Unerlaubte Vermischung der Kollationen (%s,%s) und (%s,%s) für die Operation '%s'", +"Kann einen oder mehrere der angegebenen Benutzer nicht löschen", "Kann nicht alle Berechtigungen widerrufen, grant for one or more of the requested users", -"Unerlaubte Vermischung der Kollationen (%s,%s), (%s,%s), (%s,%s) fŸr die Operation '%s'", -"Unerlaubte Vermischung der Kollationen fŸr die Operation '%s'", +"Unerlaubte Vermischung der Kollationen (%s,%s), (%s,%s), (%s,%s) für die Operation '%s'", +"Unerlaubte Vermischung der Kollationen für die Operation '%s'", "Variable '%-.64s' ist keine Variablen-Komponenten (kann nicht als XXXX.variablen_name verwendet werden)", "Unbekannte Kollation: '%-.64s'", -"SSL-Parameter in CHANGE MASTER werden ignoriert, weil dieser MySQL-Slave ohne SSL-UnterstŸtzung kompiliert wurde. Sie kšnnen aber spŠter verwendet werden, wenn der MySQL-Slave mit SSL gestartet wird", -"Server lŠuft im Modus --secure-auth, aber '%s@%s' hat ein Passwort im alten Format. Bitte Passwort ins neue Format Šndern", -"Feld oder Verweis '%-.64s%s%-.64s%s%-.64s' im SELECT-Befehl Nr. %d wurde im SELECT-Befehl Nr. %d aufgelšst", -"Falscher Parameter oder falsche Kombination von Parametern fŸr START SLAVE UNTIL", -"Es wird empfohlen, mit --skip-slave-start zu starten, wenn mit START SLAVE UNTIL eine Schritt-fŸr-Schritt-Replikation ausgefŸhrt wird. Ansonsten gibt es Probleme, wenn der Slave-Server unerwartet neu startet", +"SSL-Parameter in CHANGE MASTER werden ignoriert, weil dieser MySQL-Slave ohne SSL-Unterstützung kompiliert wurde. Sie können aber später verwendet werden, wenn der MySQL-Slave mit SSL gestartet wird", +"Server läuft im Modus --secure-auth, aber '%s@%s' hat ein Passwort im alten Format. Bitte Passwort ins neue Format ändern", +"Feld oder Verweis '%-.64s%s%-.64s%s%-.64s' im SELECT-Befehl Nr. %d wurde im SELECT-Befehl Nr. %d aufgelöst", +"Falscher Parameter oder falsche Kombination von Parametern für START SLAVE UNTIL", +"Es wird empfohlen, mit --skip-slave-start zu starten, wenn mit START SLAVE UNTIL eine Schritt-für-Schritt-Replikation ausgeführt wird. Ansonsten gibt es Probleme, wenn der Slave-Server unerwartet neu startet", "SQL-Thread soll nicht gestartet werden. Daher werden UNTIL-Optionen ignoriert"