summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore1
-rwxr-xr-xBUILD/compile-pentium-valgrind-max24
-rw-r--r--SSL/cacert.pem22
-rw-r--r--SSL/client-cert.pem40
-rw-r--r--SSL/server-cert.pem40
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/.fgl37
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.cdf192
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Component Definitions/Default.fgl42
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/File Groups/Clients and Tools.fgl35
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fdf82
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/File Groups/Default.fgl4
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/File Groups/Development.fgl191
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/File Groups/Documentation.fgl99
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/File Groups/Grant Tables.fgl36
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/File Groups/Servers.fgl184
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/MySQL 3.23.XX-GPL.ipr51
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Registry Entries/Default.rge4
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.dbgbin28458 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.inobin58611 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.insbin57122 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.obsbin65611 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.rul641
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt24
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMPbin15694 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Shell Objects/Default.shl12
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/String Tables/0009-English/value.shl23
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/String Tables/Default.shl74
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Build.tsb56
-rw-r--r--VC++Files/InstallShield/3.23.XX-gpl/Text Substitutions/Setup.tsb76
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Component Definitions/.fgl37
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.cdf192
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Component Definitions/Default.fgl42
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/File Groups/Clients and Tools.fgl35
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fdf82
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/File Groups/Default.fgl4
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/File Groups/Development.fgl190
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/File Groups/Documentation.fgl98
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/File Groups/Grant Tables.fgl36
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/File Groups/Servers.fgl183
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/MySQL 3.23.com.ipr51
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Registry Entries/Default.rge4
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbgbin28458 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.inobin58611 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.insbin57122 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obsbin65611 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.rul641
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt24
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMPbin15694 -> 0 bytes
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Shell Objects/Default.shl12
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/String Tables/0009-English/value.shl23
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/String Tables/Default.shl74
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Build.tsb56
-rw-r--r--VC++Files/InstallShield/3.23.XXcom/Text Substitutions/Setup.tsb76
-rwxr-xr-xVC++Files/InstallShield/4.0.XX-classic/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt4
-rwxr-xr-xVC++Files/InstallShield/4.0.XX-classic/String Tables/0009-English/value.shl14
-rwxr-xr-xVC++Files/InstallShield/4.0.XX-gpl/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt4
-rwxr-xr-xVC++Files/InstallShield/4.0.XX-gpl/String Tables/0009-English/value.shl14
-rwxr-xr-xVC++Files/InstallShield/4.0.XX-pro/Setup Files/Compressed Files/Language Independent/OS Independent/infolist.txt4
-rwxr-xr-xVC++Files/InstallShield/4.0.XX-pro/String Tables/0009-English/value.shl14
-rwxr-xr-xVC++Files/libmysql/libmysql.def94
-rw-r--r--VC++Files/libmysqltest/myTest-package.dsp92
-rw-r--r--VC++Files/mysqlshutdown/mysql.icobin0 -> 318 bytes
-rw-r--r--VC++Files/mysqlshutdown/mysqlshutdown.c396
-rw-r--r--VC++Files/mysqlshutdown/mysqlshutdown.rc4
-rw-r--r--VC++Files/mysqlwatch/mysqlwatch.c1490
-rw-r--r--VC++Files/thr_test/thr_test.c500
-rw-r--r--acinclude.m43
-rw-r--r--client/mysql.cc8
-rw-r--r--client/mysqlbinlog.cc169
-rw-r--r--client/mysqltest.c42
-rw-r--r--configure.in4
-rw-r--r--extra/comp_err.c4
-rw-r--r--extra/resolveip.c3
-rw-r--r--heap/hp_test2.c4
-rw-r--r--include/my_global.h10
-rw-r--r--include/mysql.h11
-rw-r--r--innobase/row/row0sel.c5
-rw-r--r--isam/test2.c4
-rw-r--r--libmysql/libmysql.c9
-rw-r--r--libmysql/libmysql.def1
-rw-r--r--man/mysqlaccess.18
-rw-r--r--man/mysqldump.12
-rw-r--r--myisam/mi_check.c35
-rw-r--r--myisam/mi_dynrec.c18
-rw-r--r--myisam/mi_packrec.c4
-rw-r--r--myisam/mi_test2.c4
-rw-r--r--myisam/myisamdef.h2
-rw-r--r--mysql-test/mysql-test-run.sh21
-rw-r--r--mysql-test/r/ansi.result17
-rw-r--r--mysql-test/r/create.result12
-rw-r--r--mysql-test/r/distinct.result4
-rw-r--r--mysql-test/r/drop_temp_table.result18
-rw-r--r--mysql-test/r/ins000001.result13
-rw-r--r--mysql-test/r/insert.result22
-rw-r--r--mysql-test/r/insert_select.result5
-rw-r--r--mysql-test/r/join_outer.result2
-rw-r--r--mysql-test/r/mysqlbinlog.result83
-rw-r--r--mysql-test/r/null_key.result4
-rw-r--r--mysql-test/r/order_by.result8
-rw-r--r--mysql-test/r/rpl000009.result47
-rw-r--r--mysql-test/r/rpl_alter.result22
-rw-r--r--mysql-test/r/rpl_loaddata.result13
-rw-r--r--mysql-test/r/rpl_loaddata_rule_m.result7
-rw-r--r--mysql-test/r/rpl_trunc_binlog.result14
-rw-r--r--mysql-test/r/select.result1221
-rw-r--r--mysql-test/r/select_safe.result2
-rw-r--r--mysql-test/r/user_var.result59
-rw-r--r--mysql-test/std_data/rpl_loaddata2.dat2
-rw-r--r--mysql-test/std_data/trunc_binlog.000001bin0 -> 119 bytes
-rw-r--r--mysql-test/t/ansi-master.opt1
-rw-r--r--mysql-test/t/ansi.test10
-rw-r--r--mysql-test/t/create.test13
-rw-r--r--mysql-test/t/drop_temp_table.test19
-rw-r--r--mysql-test/t/ins000001.test12
-rw-r--r--mysql-test/t/insert.test23
-rw-r--r--mysql-test/t/insert_select.test1
-rw-r--r--mysql-test/t/mysqlbinlog-master.opt1
-rw-r--r--mysql-test/t/mysqlbinlog.test103
-rw-r--r--mysql-test/t/rpl000009.test75
-rw-r--r--mysql-test/t/rpl_alter.test22
-rw-r--r--mysql-test/t/rpl_loaddata.test15
-rw-r--r--mysql-test/t/rpl_loaddata_rule_m.test11
-rw-r--r--mysql-test/t/rpl_trunc_binlog.test26
-rw-r--r--mysql-test/t/select.test6
-rw-r--r--mysql-test/t/user_var.test30
-rw-r--r--mysys/default.c18
-rw-r--r--mysys/mf_dirname.c36
-rw-r--r--mytest-old.c169
-rw-r--r--[-rwxr-xr-x]netware/BUILD/compile-netware-max0
-rw-r--r--[-rwxr-xr-x]netware/BUILD/compile-netware-max-debug0
-rw-r--r--[-rwxr-xr-x]netware/BUILD/compile-netware-src0
-rw-r--r--scripts/Makefile.am5
-rwxr-xr-xscripts/make_win_src_distribution.sh61
-rw-r--r--scripts/mysql_config.sh22
-rw-r--r--scripts/mysql_install_db.sh10
-rw-r--r--sql-bench/as3ap.sh3
-rw-r--r--sql-bench/bench-count-distinct.sh3
-rw-r--r--sql-bench/bench-init.pl.sh23
-rw-r--r--sql-bench/copy-db.sh3
-rw-r--r--sql-bench/crash-me.sh24
-rw-r--r--sql-bench/innotest1.sh3
-rw-r--r--sql-bench/innotest1a.sh3
-rw-r--r--sql-bench/innotest1b.sh3
-rw-r--r--sql-bench/innotest2.sh3
-rw-r--r--sql-bench/innotest2a.sh3
-rw-r--r--sql-bench/innotest2b.sh3
-rw-r--r--sql-bench/run-all-tests.sh3
-rw-r--r--sql-bench/server-cfg.sh1
-rw-r--r--sql-bench/test-ATIS.sh3
-rw-r--r--sql-bench/test-alter-table.sh5
-rw-r--r--sql-bench/test-big-tables.sh3
-rw-r--r--sql-bench/test-connect.sh3
-rw-r--r--sql-bench/test-create.sh3
-rw-r--r--sql-bench/test-insert.sh3
-rw-r--r--sql-bench/test-select.sh8
-rw-r--r--sql-bench/test-transactions.sh3
-rw-r--r--sql-bench/test-wisconsin.sh3
-rw-r--r--sql-common/client.c4
-rw-r--r--sql/des_key_file.cc8
-rw-r--r--sql/item_func.cc243
-rw-r--r--sql/item_func.h5
-rw-r--r--sql/item_strfunc.cc34
-rw-r--r--sql/log.cc8
-rw-r--r--sql/log_event.cc48
-rw-r--r--sql/mysql_priv.h6
-rw-r--r--sql/mysqld.cc12
-rw-r--r--sql/repl_failsafe.cc19
-rw-r--r--sql/set_var.cc3
-rw-r--r--sql/slave.cc76
-rw-r--r--sql/slave.h7
-rw-r--r--sql/sql_base.cc14
-rw-r--r--sql/sql_class.cc16
-rw-r--r--sql/sql_class.h10
-rw-r--r--sql/sql_insert.cc24
-rw-r--r--sql/sql_load.cc44
-rw-r--r--sql/sql_parse.cc7
-rw-r--r--sql/sql_select.cc94
-rw-r--r--support-files/my-small.cnf.sh2
-rw-r--r--support-files/mysql.server.sh25
-rwxr-xr-xtests/mail_to_db.pl4
180 files changed, 3078 insertions, 6862 deletions
diff --git a/.bzrignore b/.bzrignore
index c2e7d0878e4..3dc7f26cfbe 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -274,6 +274,7 @@ extra/resolveip
fcns.c
fcns.h
gmon.out
+hardcopy.0
heap/hp_test1
heap/hp_test2
help.c
diff --git a/BUILD/compile-pentium-valgrind-max b/BUILD/compile-pentium-valgrind-max
index 20876d67472..f752af86d1c 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 --without-isam --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.
+********************************************************************************
+"
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-----
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=<WINDIR>
-subdir1=<PROGRAMFILES>
-subdir2=<TARGETDIR>
-subdir3=USERDEFINED
-
-[<WINDIR>]
-DISPLAYTEXT=Windows Operating System
-TYPE=TEXTSUBFIXED
-subdir0=<WINDIR>\<WINSYSDIR>
-
-[<WINDIR>\<WINSYSDIR>]
-DISPLAYTEXT=Windows System Folder
-TYPE=TEXTSUBFIXED
-
-[<PROGRAMFILES>]
-DISPLAYTEXT=Program Files Folder
-TYPE=TEXTSUBFIXED
-subdir0=<PROGRAMFILES>\<COMMONFILES>
-
-[<PROGRAMFILES>\<COMMONFILES>]
-DISPLAYTEXT=Common Files Folder
-TYPE=TEXTSUBFIXED
-
-[<TARGETDIR>]
-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=<TARGETDIR>
-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=<TARGETDIR>
-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=<TARGETDIR>
-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=<TARGETDIR>
-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=<TARGETDIR>
-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 @@
-[<PROGRAMFILES>\<COMMONFILES>]
-DISPLAYTEXT=Common Files Folder
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[<WINDIR>\<WINSYSDIR>]
-DISPLAYTEXT=Windows System Folder
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[USERDEFINED]
-DISPLAYTEXT=Script-defined Folders
-TYPE=USERSTART
-fulldirectory=
-
-[<PROGRAMFILES>]
-DISPLAYTEXT=Program Files Folder
-SubDir0=<PROGRAMFILES>\<COMMONFILES>
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[<TARGETDIR>]
-DISPLAYTEXT=General Application Destination
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[<WINDIR>]
-DISPLAYTEXT=Windows Operating System
-SubDir0=<WINDIR>\<WINSYSDIR>
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[TopDir]
-SubDir0=<WINDIR>
-SubDir1=<PROGRAMFILES>
-SubDir2=<TARGETDIR>
-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 0c6d4e6b708..00000000000
--- a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.dbg
+++ /dev/null
Binary files differ
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 204d8ea0f36..00000000000
--- a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ino
+++ /dev/null
Binary files differ
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 759009b5c84..00000000000
--- a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.ins
+++ /dev/null
Binary files differ
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 5fcfcb62c4e..00000000000
--- a/VC++Files/InstallShield/3.23.XX-gpl/Script Files/Setup.obs
+++ /dev/null
Binary files differ
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 3229d50c9bf..00000000000
--- a/VC++Files/InstallShield/3.23.XX-gpl/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP
+++ /dev/null
Binary files differ
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=<FOLDER_STARTUP>
-Group0=Main
-Group1=Startup
-Folder0=<FOLDER_DESKTOP>
-Folder1=<FOLDER_STARTMENU>
-Folder2=<FOLDER_PROGRAMS>
-
-[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 @@
-[<HKUS>]
-Value=
-KeyType=4
-
-[<HKCR>]
-Value=
-KeyType=4
-
-[<PROGRAMFILES>]
-Value=
-KeyType=4
-
-[<WINSYSDIR>]
-Value=
-KeyType=4
-
-[<COMMONFILES>]
-Value=
-KeyType=4
-
-[<WINDIR>]
-Value=
-KeyType=4
-
-[Data]
-Key0=<PROGRAMFILES>
-Key1=<COMMONFILES>
-Key2=<WINDIR>
-Key3=<WINSYSDIR>
-Key4=<HKLM>
-Key5=<HKCU>
-Key6=<HKCC>
-Key7=<HKDD>
-Key8=<HKUS>
-Key9=<HKCR>
-
-[General]
-Type=TEXTSUB
-Version=1.00.000
-
-[<HKLM>]
-Value=
-KeyType=4
-
-[<HKCU>]
-Value=
-KeyType=4
-
-[<HKCC>]
-Value=
-KeyType=4
-
-[<HKDD>]
-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 @@
-[<SRCDIR>]
-Value=
-KeyType=4
-
-[<HKUS>]
-Value=
-KeyType=4
-
-[<HKCR>]
-Value=
-KeyType=4
-
-[<PROGRAMFILES>]
-Value=
-KeyType=4
-
-[<TARGETDIR>]
-Value=
-KeyType=4
-
-[<WINSYSDIR>]
-Value=
-KeyType=4
-
-[<COMMONFILES>]
-Value=
-KeyType=4
-
-[<WINDIR>]
-Value=
-KeyType=4
-
-[Data]
-Key0=<PROGRAMFILES>
-Key1=<COMMONFILES>
-Key2=<WINDIR>
-Key3=<WINSYSDIR>
-Key4=<TARGETDIR>
-Key5=<SUPPORTDIR>
-Key10=<HKDD>
-Key6=<SRCDIR>
-Key11=<HKUS>
-Key7=<HKLM>
-Key12=<HKCR>
-Key8=<HKCU>
-Key13=<SHELL_OBJECT_FOLDER>
-Key9=<HKCC>
-
-[<SUPPORTDIR>]
-Value=
-KeyType=4
-
-[<SHELL_OBJECT_FOLDER>]
-Value=
-KeyType=4
-
-[General]
-Type=TEXTSUB
-Version=1.00.000
-
-[<HKLM>]
-Value=
-KeyType=4
-
-[<HKCU>]
-Value=
-KeyType=4
-
-[<HKCC>]
-Value=
-KeyType=4
-
-[<HKDD>]
-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=<WINDIR>
-subdir1=<PROGRAMFILES>
-subdir2=<TARGETDIR>
-subdir3=USERDEFINED
-
-[<WINDIR>]
-DISPLAYTEXT=Windows Operating System
-TYPE=TEXTSUBFIXED
-subdir0=<WINDIR>\<WINSYSDIR>
-
-[<WINDIR>\<WINSYSDIR>]
-DISPLAYTEXT=Windows System Folder
-TYPE=TEXTSUBFIXED
-
-[<PROGRAMFILES>]
-DISPLAYTEXT=Program Files Folder
-TYPE=TEXTSUBFIXED
-subdir0=<PROGRAMFILES>\<COMMONFILES>
-
-[<PROGRAMFILES>\<COMMONFILES>]
-DISPLAYTEXT=Common Files Folder
-TYPE=TEXTSUBFIXED
-
-[<TARGETDIR>]
-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=<TARGETDIR>
-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=<TARGETDIR>
-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=<TARGETDIR>
-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=<TARGETDIR>
-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=<TARGETDIR>
-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 @@
-[<PROGRAMFILES>\<COMMONFILES>]
-DISPLAYTEXT=Common Files Folder
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[<WINDIR>\<WINSYSDIR>]
-DISPLAYTEXT=Windows System Folder
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[USERDEFINED]
-DISPLAYTEXT=Script-defined Folders
-TYPE=USERSTART
-fulldirectory=
-
-[<PROGRAMFILES>]
-DISPLAYTEXT=Program Files Folder
-SubDir0=<PROGRAMFILES>\<COMMONFILES>
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[<TARGETDIR>]
-DISPLAYTEXT=General Application Destination
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[<WINDIR>]
-DISPLAYTEXT=Windows Operating System
-SubDir0=<WINDIR>\<WINSYSDIR>
-TYPE=TEXTSUBFIXED
-fulldirectory=
-
-[TopDir]
-SubDir0=<WINDIR>
-SubDir1=<PROGRAMFILES>
-SubDir2=<TARGETDIR>
-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 0c6d4e6b708..00000000000
--- a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.dbg
+++ /dev/null
Binary files differ
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 204d8ea0f36..00000000000
--- a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ino
+++ /dev/null
Binary files differ
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 759009b5c84..00000000000
--- a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.ins
+++ /dev/null
Binary files differ
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 5fcfcb62c4e..00000000000
--- a/VC++Files/InstallShield/3.23.XXcom/Script Files/Setup.obs
+++ /dev/null
Binary files differ
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 3229d50c9bf..00000000000
--- a/VC++Files/InstallShield/3.23.XXcom/Setup Files/Uncompressed Files/Language Independent/OS Independent/SETUP.BMP
+++ /dev/null
Binary files differ
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=<FOLDER_STARTUP>
-Group0=Main
-Group1=Startup
-Folder0=<FOLDER_DESKTOP>
-Folder1=<FOLDER_STARTMENU>
-Folder2=<FOLDER_PROGRAMS>
-
-[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 @@
-[<HKCR>]
-KeyType=4
-Value=
-
-[<HKUS>]
-KeyType=4
-Value=
-
-[<PROGRAMFILES>]
-KeyType=4
-Value=
-
-[<WINSYSDIR>]
-KeyType=4
-Value=
-
-[<COMMONFILES>]
-KeyType=4
-Value=
-
-[<WINDIR>]
-KeyType=4
-Value=
-
-[Data]
-Key0=<PROGRAMFILES>
-Key1=<COMMONFILES>
-Key2=<WINDIR>
-Key3=<WINSYSDIR>
-Key4=<HKLM>
-Key5=<HKCU>
-Key6=<HKCC>
-Key7=<HKDD>
-Key8=<HKUS>
-Key9=<HKCR>
-
-[General]
-Type=TEXTSUB
-Version=1.00.000
-
-[<HKCU>]
-KeyType=4
-Value=
-
-[<HKLM>]
-KeyType=4
-Value=
-
-[<HKDD>]
-KeyType=4
-Value=
-
-[<HKCC>]
-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 @@
-[<HKCR>]
-KeyType=4
-Value=
-
-[<HKUS>]
-KeyType=4
-Value=
-
-[<SRCDIR>]
-KeyType=4
-Value=
-
-[<PROGRAMFILES>]
-KeyType=4
-Value=
-
-[<TARGETDIR>]
-KeyType=4
-Value=
-
-[<WINSYSDIR>]
-KeyType=4
-Value=
-
-[<COMMONFILES>]
-KeyType=4
-Value=
-
-[<WINDIR>]
-KeyType=4
-Value=
-
-[Data]
-Key0=<PROGRAMFILES>
-Key1=<COMMONFILES>
-Key2=<WINDIR>
-Key3=<WINSYSDIR>
-Key4=<TARGETDIR>
-Key10=<HKDD>
-Key5=<SUPPORTDIR>
-Key11=<HKUS>
-Key6=<SRCDIR>
-Key12=<HKCR>
-Key7=<HKLM>
-Key13=<SHELL_OBJECT_FOLDER>
-Key8=<HKCU>
-Key9=<HKCC>
-
-[<SHELL_OBJECT_FOLDER>]
-KeyType=4
-Value=
-
-[<SUPPORTDIR>]
-KeyType=4
-Value=
-
-[General]
-Type=TEXTSUB
-Version=1.00.000
-
-[<HKCU>]
-KeyType=4
-Value=
-
-[<HKLM>]
-KeyType=4
-Value=
-
-[<HKDD>]
-KeyType=4
-Value=
-
-[<HKCC>]
-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/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-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/VC++Files/mysqlshutdown/mysql.ico b/VC++Files/mysqlshutdown/mysql.ico
new file mode 100644
index 00000000000..1fe0b7115bb
--- /dev/null
+++ b/VC++Files/mysqlshutdown/mysql.ico
Binary files differ
diff --git a/VC++Files/mysqlshutdown/mysqlshutdown.c b/VC++Files/mysqlshutdown/mysqlshutdown.c
index e770149604d..ccaf4a00eda 100644
--- a/VC++Files/mysqlshutdown/mysqlshutdown.c
+++ b/VC++Files/mysqlshutdown/mysqlshutdown.c
@@ -1,198 +1,198 @@
-/****************************************************************************
- MySqlShutdown - shutdown MySQL on system shutdown (Win95/98)
- ----------------------------------------------------------------------------
- Revision History :
- Version Author Date Description
- 001.00 Irena 21-12-99
-*****************************************************************************/
-#include <windows.h>
-
-//-----------------------------------------------------------------------
-// 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 ------------------------------------------
-
-
+/****************************************************************************
+ MySqlShutdown - shutdown MySQL on system shutdown (Win95/98)
+ ----------------------------------------------------------------------------
+ Revision History :
+ Version Author Date Description
+ 001.00 Irena 21-12-99
+*****************************************************************************/
+#include <windows.h>
+
+//-----------------------------------------------------------------------
+// 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
index 01babed1c98..6837f863a81 100644
--- a/VC++Files/mysqlshutdown/mysqlshutdown.rc
+++ b/VC++Files/mysqlshutdown/mysqlshutdown.rc
@@ -1,2 +1,2 @@
-MySql ICON DISCARDABLE "MYSQL.ICO"
-
+MySql ICON DISCARDABLE "MYSQL.ICO"
+
diff --git a/VC++Files/mysqlwatch/mysqlwatch.c b/VC++Files/mysqlwatch/mysqlwatch.c
index 2aba6814869..2a1f62b4394 100644
--- a/VC++Files/mysqlwatch/mysqlwatch.c
+++ b/VC++Files/mysqlwatch/mysqlwatch.c
@@ -1,745 +1,745 @@
-/****************************************************************************
- MySqlWatch - WinNT service program MySQL
- - Re-start MySql server in case of failure
-*****************************************************************************/
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <process.h>
-#include <tchar.h>
-
-
-// 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 <params> 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 ----------------------------------------
+/****************************************************************************
+ MySqlWatch - WinNT service program MySQL
+ - Re-start MySql server in case of failure
+*****************************************************************************/
+#include <windows.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <process.h>
+#include <tchar.h>
+
+
+// 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 <params> 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
index d66b24bc0fc..3427eed8441 100644
--- a/VC++Files/thr_test/thr_test.c
+++ b/VC++Files/thr_test/thr_test.c
@@ -1,250 +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 <windows.h>
-#include <process.h>
-#include <stdio.h>
-
-#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;
-}
+/* 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 <windows.h>
+#include <process.h>
+#include <stdio.h>
+
+#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/acinclude.m4 b/acinclude.m4
index 577adba5769..15a6abc38d4 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -879,9 +879,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/client/mysql.cc b/client/mysql.cc
index e63ee1d2d75..c93875a55fc 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -44,7 +44,7 @@
#include <locale.h>
#endif
-const char *VER= "14.1";
+const char *VER= "14.2";
/* Don't try to make a nice table if the data is too big */
#define MAX_COLUMN_LENGTH 1024
@@ -860,7 +860,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);
@@ -2643,7 +2645,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
}
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc
index 942c55f3078..68b7da78bbf 100644
--- a/client/mysqlbinlog.cc
+++ b/client/mysqlbinlog.cc
@@ -20,7 +20,6 @@
#include <time.h>
#include <assert.h>
#include "log_event.h"
-#include "include/my_sys.h"
#define BIN_LOG_HEADER_SIZE 4
#define PROBE_HEADER_LEN (EVENT_LEN_OFFSET+4)
@@ -41,21 +40,20 @@ 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, ...);
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 = "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* 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;
static const char* dirname_for_local_load= 0;
@@ -73,34 +71,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;
- char *tmp;
- if (!(tmp= my_malloc(full_len + 9 + 1,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);
-
- 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)
{
@@ -112,7 +83,6 @@ class Load_log_processor
}
public:
-
Load_log_processor()
{
init_dynamic_array(&file_names,sizeof(Create_file_log_event*),
@@ -125,26 +95,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()
{
@@ -168,6 +122,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;
@@ -177,11 +133,18 @@ 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)
{
- if (ae->file_id >= file_names.elements)
+ 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);
+ else
{
/*
There is no Create_file event (a bad binlog or a big
@@ -190,14 +153,58 @@ 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);
}
};
+
+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,strlen(tmp));
+ return tmp;
+}
+
+
Load_log_processor load_processor;
static struct my_option my_long_options[] =
@@ -228,6 +235,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},
+ {"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.",
(gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
@@ -269,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);
}
@@ -332,22 +342,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();
@@ -365,6 +368,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);
@@ -385,7 +389,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);
@@ -613,10 +617,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);
@@ -664,16 +669,20 @@ Create_file event for file_id: %u\n",exv->file_id);
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;
}
- if (use_remote)
+ if (remote_opt)
mysql = safe_connect();
MY_TMPDIR tmpdir;
@@ -696,8 +705,10 @@ 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);
return 0;
}
diff --git a/client/mysqltest.c b/client/mysqltest.c
index fd8cf7ecc8b..6a7f4ab7cac 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -42,7 +42,7 @@
**********************************************************************/
-#define MTEST_VERSION "1.30"
+#define MTEST_VERSION "2.0"
#include <my_global.h>
#include <mysql_embed.h>
@@ -78,6 +78,7 @@
#ifndef MYSQL_MANAGER_PORT
#define MYSQL_MANAGER_PORT 23546
#endif
+#define MAX_SERVER_ARGS 20
/*
Sometimes in a test the client starts before
@@ -122,11 +123,20 @@ 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 CHARSET_INFO *charset_info= &my_charset_latin1;
+
+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
+};
+
DYNAMIC_ARRAY q_lines;
#include "sslopt-vars.h"
@@ -343,18 +353,8 @@ void mysql_disable_rpl_parse(MYSQL* mysql __attribute__((unused))) {}
int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; }
my_bool 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)
{
@@ -717,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);
@@ -771,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';
@@ -881,8 +879,12 @@ 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 (glob_replace)
+ free_replace();
+
if (record)
{
if (!q->record_file[0] && !result_file)
diff --git a/configure.in b/configure.in
index eb8daea18d4..f098a3d39a8 100644
--- a/configure.in
+++ b/configure.in
@@ -1015,7 +1015,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"
@@ -2425,7 +2425,7 @@ do
AC_DEFINE(USE_MB_IDENT)
;;
*)
- AC_MSG_ERROR([Charset $cs not available. (Available are: $CHARSETS_AVAILABLE).
+ AC_MSG_ERROR([Charset '$cs' not available. (Available are: $CHARSETS_AVAILABLE).
See the Installation chapter in the Reference Manual.]);
esac
done
diff --git a/extra/comp_err.c b/extra/comp_err.c
index 07369aa565e..6c7fad6a270 100644
--- a/extra/comp_err.c
+++ b/extra/comp_err.c
@@ -63,7 +63,7 @@ int main(int argc,char *argv[])
return(1);
}
- VOID(count_rows(from,'"','}')); /* Calculate start-info */
+ VOID(count_rows(from,'"','{')); /* Calculate start-info */
if (!charset_name[0])
{
fprintf(stderr,"Character set is not specified in '%s'\n",*argv);
@@ -127,7 +127,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/extra/resolveip.c b/extra/resolveip.c
index a9e5f16e576..12e6977c2ba 100644
--- a/extra/resolveip.c
+++ b/extra/resolveip.c
@@ -37,10 +37,9 @@ extern int h_errno;
#endif
#ifndef HAVE_IN_ADDR_T
-#define in_addr_t u_long
+#define in_addr_t ulong
#endif
-
static my_bool silent;
static struct my_option my_long_options[] =
diff --git a/heap/hp_test2.c b/heap/hp_test2.c
index 09ade212fa6..97fe1471ca1 100644
--- a/heap/hp_test2.c
+++ b/heap/hp_test2.c
@@ -249,12 +249,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/include/my_global.h b/include/my_global.h
index 0e576730ca3..637b8d4b371 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -1130,4 +1130,14 @@ typedef union {
#define statistic_add(V,C,L) (V)+=(C)
#endif
+#ifdef HAVE_OPENSSL
+#include <openssl/opensslv.h>
+#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/include/mysql.h b/include/mysql.h
index 5441910efa9..a8ced90f414 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -409,11 +409,12 @@ 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);
-unsigned long STDCALL mysql_get_server_version(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);
+unsigned long STDCALL mysql_get_client_version(void);
+const char * STDCALL mysql_get_host_info(MYSQL *mysql);
+unsigned long STDCALL mysql_get_server_version(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/innobase/row/row0sel.c b/innobase/row/row0sel.c
index eced7628096..e6022abe105 100644
--- a/innobase/row/row0sel.c
+++ b/innobase/row/row0sel.c
@@ -2895,6 +2895,8 @@ row_search_for_mysql(
mtr_start(&mtr);
+ mtr_start(&mtr);
+
/*-------------------------------------------------------------*/
/* PHASE 2: Try fast adaptive hash index search if possible */
@@ -2904,8 +2906,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)) {
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/libmysql/libmysql.c b/libmysql/libmysql.c
index 0e937a6e0c9..08ea9deb11e 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -132,8 +132,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
@@ -1188,6 +1188,11 @@ mysql_get_client_info(void)
return (char*) MYSQL_SERVER_VERSION;
}
+ulong STDCALL mysql_get_client_version(void)
+{
+ return MYSQL_VERSION_ID;
+}
+
my_bool STDCALL mysql_eof(MYSQL_RES *res)
{
return res->eof;
diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def
index 51869eacc4b..1abc924e9c0 100644
--- a/libmysql/libmysql.def
+++ b/libmysql/libmysql.def
@@ -62,6 +62,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/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
diff --git a/myisam/mi_check.c b/myisam/mi_check.c
index cb2b56d93de..ceac8f6356c 100644
--- a/myisam/mi_check.c
+++ b/myisam/mi_check.c
@@ -185,21 +185,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("");
@@ -1025,6 +1037,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));
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/mi_test2.c b/myisam/mi_test2.c
index 8dc279b6d97..5c066075e49 100644
--- a/myisam/mi_test2.c
+++ b/myisam/mi_test2.c
@@ -335,12 +335,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/myisamdef.h b/myisam/myisamdef.h
index 83e28a42797..9844bb7b36d 100644
--- a/myisam/myisamdef.h
+++ b/myisam/myisamdef.h
@@ -212,7 +212,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;
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh
index 0f45b8af1b0..b7e39549411 100644
--- a/mysql-test/mysql-test-run.sh
+++ b/mysql-test/mysql-test-run.sh
@@ -429,9 +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"
+ 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"
@@ -454,7 +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_DUMP="$BASEDIR/bin/mysqldump"
+ MYSQL_BINLOG="$BASEDIR/bin/mysqlbinlog"
MYSQLADMIN="$BASEDIR/bin/mysqladmin"
WAIT_PID="$BASEDIR/bin/mysql_waitpid"
MYSQL_MANAGER="$BASEDIR/bin/mysqlmanager"
@@ -472,7 +478,10 @@ 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
if [ -z "$MASTER_MYSQLD" ]
then
@@ -1034,8 +1043,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 arguments
+# for the test. Better to let the test start the daemon
# $ECHO "Starting MySQL daemon"
# start_master
@@ -1360,7 +1369,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/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 06ddd5e2280..277ae9e0b8d 100644
--- a/mysql-test/r/create.result
+++ b/mysql-test/r/create.result
@@ -86,7 +86,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;
@@ -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/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
new file mode 100644
index 00000000000..78efc9d90e2
--- /dev/null
+++ b/mysql-test/r/drop_temp_table.result
@@ -0,0 +1,18 @@
+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.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/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 b84c846b132..23eef0b3c59 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);
@@ -70,9 +70,19 @@ id
0
2
drop table t1;
-drop database if exists test_$1;
-create database test_$1;
-use test_$1;
+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 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/r/insert_select.result b/mysql-test/r/insert_select.result
index 82d5ee872a2..8eecccf6fec 100644
--- a/mysql-test/r/insert_select.result
+++ b/mysql-test/r/insert_select.result
@@ -75,6 +75,11 @@ 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/join_outer.result b/mysql-test/r/join_outer.result
index b060fdfb85c..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 index id id 8 NULL 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/mysqlbinlog.result b/mysql-test/r/mysqlbinlog.result
new file mode 100644
index 00000000000..eeac31ba40b
--- /dev/null
+++ b/mysql-test/r/mysqlbinlog.result
@@ -0,0 +1,83 @@
+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);
+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 '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;
+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/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 79ccf833f40..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
@@ -479,8 +479,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 t3.skr,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
-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, 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/rpl000009.result b/mysql-test/r/rpl000009.result
index d0faf0435e3..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 mysqltest;
drop database if exists mysqltest2;
-create database 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,24 +50,48 @@ show databases;
Database
mysql
test
+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
+t1
+t3
+select * from t1;
+n s
+1 original foo.t1
+use mysqltest3;
+show tables;
+Tables_in_mysqltest3
+t1
+select * from t1;
+n s
+1 original foo2.t1
use mysqltest;
show tables;
Tables_in_mysqltest
t1
t2
+t3
select * from mysqltest.t1;
n s
1 one test
@@ -74,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
@@ -81,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/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 d722cb295ce..2dd5dc5ec08 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.000001 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 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
+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;
+ERROR 23000: Duplicate entry '2003-03-22' for key 1
+show master status;
+File Position Binlog_do_db Binlog_ignore_db
+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
new file mode 100644
index 00000000000..44d3eeb2ba3
--- /dev/null
+++ b/mysql-test/r/rpl_trunc_binlog.result
@@ -0,0 +1,14 @@
+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;
+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 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.result b/mysql-test/r/select.result
index 46888acb73c..fca4a0549d3 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;
@@ -2498,18 +1289,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/r/select_safe.result b/mysql-test/r/select_safe.result
index 4930d20f702..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 ALL b NULL NULL NULL 16 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/r/user_var.result b/mysql-test/r/user_var.result
index b7c64551dc0..612c1f53bcf 100644
--- a/mysql-test/r/user_var.result
+++ b/mysql-test/r/user_var.result
@@ -34,6 +34,7 @@ explain select * from t1 where i=@vv1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE 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
@@ -42,7 +43,61 @@ 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, d double, c char(10));
+insert into t1 values (1,2.0, "test");
+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
+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 1 10 2 1 10 2 1
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/std_data/trunc_binlog.000001 b/mysql-test/std_data/trunc_binlog.000001
new file mode 100644
index 00000000000..2c2b4ec6ce4
--- /dev/null
+++ b/mysql-test/std_data/trunc_binlog.000001
Binary files differ
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
@@ -111,6 +111,19 @@ 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/drop_temp_table.test b/mysql-test/t/drop_temp_table.test
new file mode 100644
index 00000000000..1a7d8796bb3
--- /dev/null
+++ b/mysql-test/t/drop_temp_table.test
@@ -0,0 +1,19 @@
+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);
+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;
+drop database `drop-temp+table-test`;
diff --git a/mysql-test/t/ins000001.test b/mysql-test/t/ins000001.test
deleted file mode 100644
index afcd27ebfca..00000000000
--- a/mysql-test/t/ins000001.test
+++ /dev/null
@@ -1,12 +0,0 @@
-use test;
---disable_warnings
-drop table if exists t1,t2;
---enable_warnings
-
-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 9cc0bf8c46c..62d277bfad5 100644
--- a/mysql-test/t/insert.test
+++ b/mysql-test/t/insert.test
@@ -3,7 +3,7 @@
#
--disable_warnings
-drop table if exists t1;
+drop table if exists t1,t2;
--enable_warnings
create table t1 (a int not null);
@@ -65,14 +65,25 @@ 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
#
--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/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-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..956afb3e7ca
--- /dev/null
+++ b/mysql-test/t/mysqlbinlog.test
@@ -0,0 +1,103 @@
+# We are using .opt file since we need small binlog size
+--disable_warnings
+drop table if exists t1,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.
+#
+
+--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
+--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.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.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.000002
+
+# 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.000001
+--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.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 --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
+select "--- --database --" 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 --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 --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/mysql-test/t/rpl000009.test b/mysql-test/t/rpl000009.test
index ffec20c793e..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 mysqltest;
drop database if exists mysqltest2;
-create database 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,16 +66,49 @@ sync_with_master;
# This should show that the slave is empty at this point
show databases;
+# 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;
-show tables;
+
+# 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 mysqltest3;
+show tables; # should be t1
+select * from t1; # should be slave's original
use mysqltest;
-show tables;
+show tables; # should contain master's copied t1&t2, slave's original t3
select * from mysqltest.t1;
select * from mysqltest.t2;
+select * from mysqltest.t3;
# Now let's see if replication works
connection master;
@@ -79,6 +118,33 @@ connection slave;
sync_with_master;
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 mysqltest.t1 values(10, 'should be there');
+# flush tables;
+# system chmod 500 var/slave-data/mysqltest/;
+# --error 6
+# load data from master; # should fail (errno 13)
+# 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 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
+# DISABLED FOR NOW
+# start slave;
+
# Now time for cleanup
connection master;
drop database mysqltest;
@@ -86,3 +152,6 @@ drop database mysqltest2;
save_master_pos;
connection slave;
sync_with_master;
+# 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.test b/mysql-test/t/rpl_loaddata.test
index 478d4b75a36..88d9a7ee03f 100644
--- a/mysql-test/t/rpl_loaddata.test
+++ b/mysql-test/t/rpl_loaddata.test
@@ -113,3 +113,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/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
new file mode 100644
index 00000000000..81ef941f9f2
--- /dev/null
+++ b/mysql-test/t/rpl_trunc_binlog.test
@@ -0,0 +1,26 @@
+# 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;
+# 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;
+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;
+# 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/mysql-test/t/select.test b/mysql-test/t/select.test
index 4593eeb0691..d727befe661 100644
--- a/mysql-test/t/select.test
+++ b/mysql-test/t/select.test
@@ -42,6 +42,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','');
@@ -1241,6 +1242,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
@@ -1366,6 +1368,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);
@@ -1376,6 +1379,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.
diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test
index 947c944c79e..8fe48641fed 100644
--- a/mysql-test/t/user_var.test
+++ b/mysql-test/t/user_var.test
@@ -26,7 +26,37 @@ 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;
+
+# Fixed bug #1194
+select @a:=1;
+select @a, @a:=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;
+select @c:=0;
+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 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/mysys/default.c b/mysys/default.c
index 8bdf8d4f741..15eb358df22 100644
--- a/mysys/default.c
+++ b/mysys/default.c
@@ -374,9 +374,20 @@ static int search_default_file(DYNAMIC_ARRAY *args, MEM_ROOT *alloc,
char *value_end;
for (value++ ; my_isspace(&my_charset_latin1,*value); value++) ;
value_end=strend(value);
+ /*
+ We don't have to test for value_end >= value as we know there is
+ an '=' before
+ */
for ( ; my_isspace(&my_charset_latin1,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;
@@ -384,6 +395,7 @@ 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 != value_end-1)
@@ -404,6 +416,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;
diff --git a/mysys/mf_dirname.c b/mysys/mf_dirname.c
index 320917c8f3e..3de82c05b87 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.
-
- Returns pointer to end \0
- */
+/*
+ Convert directory name to use under this system
+
+ 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 */
diff --git a/mytest-old.c b/mytest-old.c
new file mode 100644
index 00000000000..8b4029f5e1e
--- /dev/null
+++ b/mytest-old.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 <windows.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <mysql.h>
+
+#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/netware/BUILD/compile-netware-max b/netware/BUILD/compile-netware-max
index ec737d4615c..ec737d4615c 100755..100644
--- a/netware/BUILD/compile-netware-max
+++ b/netware/BUILD/compile-netware-max
diff --git a/netware/BUILD/compile-netware-max-debug b/netware/BUILD/compile-netware-max-debug
index ea3553ae6e1..ea3553ae6e1 100755..100644
--- a/netware/BUILD/compile-netware-max-debug
+++ b/netware/BUILD/compile-netware-max-debug
diff --git a/netware/BUILD/compile-netware-src b/netware/BUILD/compile-netware-src
index df7f6fcdd1a..df7f6fcdd1a 100755..100644
--- a/netware/BUILD/compile-netware-src
+++ b/netware/BUILD/compile-netware-src
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 7ccf35b9580..4782c763447 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -17,7 +17,6 @@
## Process this file with automake to create Makefile.in
bin_SCRIPTS = @server_scripts@ \
- make_win_src_distribution \
msql2mysql \
mysql_config \
mysql_fix_privilege_tables \
@@ -34,6 +33,7 @@ bin_SCRIPTS = @server_scripts@ \
mysql_explain_log \
mysql_tableinfo \
mysqld_multi \
+ make_win_src_distribution \
mysql_create_system_tables
EXTRA_SCRIPTS = make_binary_distribution.sh \
@@ -69,7 +69,6 @@ dist_pkgdata_DATA = fill_help_tables.sql mysql_fix_privilege_tables.sql
# failures with it.
CLEANFILES = @server_scripts@ \
make_binary_distribution \
- make_win_src_distribution \
msql2mysql \
mysql_config \
mysql_fix_privilege_tables \
@@ -83,6 +82,7 @@ CLEANFILES = @server_scripts@ \
mysqlhotcopy \
mysqldumpslow \
mysqld_multi \
+ make_win_src_distribution \
fill_help_tables \
mysql_create_system_tables
@@ -119,6 +119,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/make_win_src_distribution.sh b/scripts/make_win_src_distribution.sh
index 02eb5366b01..2f1b7b2939a 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
-
- 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
- }
+unix_to_dos()
+{
+ for arg do
+ print_debug "Replacing LF -> CRLF from '$arg'"
-fi
+ cat $arg | awk '{sub(/$/,"\r");print}' > $arg.tmp
+ rm -f $arg
+ mv $arg.tmp $arg
+ done
+}
#
@@ -169,6 +148,28 @@ find $BASE \( -name "*.dsp" -o -name "*.dsw" \) -and -not -path \*SCCS\* -print
)
#
+# 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
#
diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh
index e8cc9322eaf..52284104636 100644
--- a/scripts/mysql_config.sh
+++ b/scripts/mysql_config.sh
@@ -84,18 +84,27 @@ port='@MYSQL_TCP_PORT@'
ldflags='@LDFLAGS@'
client_libs='@CLIENT_LIBS@'
-libs="$ldflags -L'$pkglibdir' -lmysqlclient $client_libs"
-libs=`echo $libs | sed -e 's; +;;'`
-libs_r="$ldflags -L'$pkglibdir' -lmysqlclient_r $client_libs"
-libs_r=`echo $libs_r | 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 <<EOF
Usage: $0 [OPTIONS]
Options:
--cflags [$cflags]
+ --include [$include]
--libs [$libs]
--libs_r [$libs_r]
--socket [$socket]
@@ -111,6 +120,7 @@ if test $# -le 0; then usage; fi
while test $# -gt 0; do
case $1 in
--cflags) echo "$cflags" ;;
+ --include) echo "$include" ;;
--libs) echo "$libs" ;;
--libs_r) echo "$libs_r" ;;
--socket) echo "$socket" ;;
diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh
index 65731c2bcb7..adaac0f3102 100644
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
@@ -143,7 +143,7 @@ fi
hostname=`@HOSTNAME@`
# Check if hostname is valid
-if test "$windows" -eq 0 -a "$in_rpm" -eq 0 -a $force -eq 0
+if test "$windows" = 0 -a "$in_rpm" = 0 -a $force = 0
then
resolved=`$bindir/resolveip $hostname 2>&1`
if [ $? -ne 0 ]
@@ -160,14 +160,14 @@ 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 !"
fi
fi
-if test "$ip_only" = 1
+if test "$ip_only" ="1"
then
ip=`echo "$resolved" | awk '/ /{print $6}'`
hostname=$ip
@@ -207,7 +207,7 @@ if (
) | eval "$mysqld $defaults $mysqld_opt --bootstrap --skip-grant-tables \
--basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb $args"
then
- if test "$in_rpm" -eq 0 -a "$windows" -eq 0
+ if test "$in_rpm" = 0 -a "$windows" = 0
then
echo ""
echo "To start mysqld at boot time you have to copy support-files/mysql.server"
@@ -231,7 +231,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/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 b7d2b962e13..1ac5f29723b 100644
--- a/sql-bench/bench-init.pl.sh
+++ b/sql-bench/bench-init.pl.sh
@@ -31,8 +31,9 @@
# $server Object for current server
# $limits Hash reference to limits for benchmark
-$benchmark_version="2.14";
+$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/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-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 f338792e9ef..2ca54000065 100644
--- a/sql-bench/test-alter-table.sh
+++ b/sql-bench/test-alter-table.sh
@@ -20,16 +20,17 @@
#
##################### Standard benchmark inits ##############################
+use Cwd;
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
-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 fa8c4e98b54..f83d0fd13be 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 a5de042cab1..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,
@@ -356,7 +357,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 +372,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/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 = "";
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/des_key_file.cc b/sql/des_key_file.cc
index 5b25819b657..c6b4c5f2c34 100644
--- a/sql/des_key_file.cc
+++ b/sql/des_key_file.cc
@@ -79,16 +79,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_func.cc b/sql/item_func.cc
index 0f9ee512be1..bc7c95d8929 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -2105,13 +2105,13 @@ bool Item_func_set_user_var::fix_fields(THD *thd, TABLE_LIST *tables,
if (Item_func::fix_fields(thd, tables, ref) ||
!(entry= get_variable(&thd->user_vars, name, 1)))
return 1;
- entry->type= cached_result_type;
/*
Remember the last query which updated it, this way a query can later know
if this variable is a constant item in the query (it is if update_query_id
is different from query_id).
*/
- entry->update_query_id=thd->query_id;
+ entry->update_query_id= thd->query_id;
+ cached_result_type= args[0]->result_type();
return 0;
}
@@ -2122,10 +2122,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(void *ptr, uint length,
Item_result type,
CHARSET_INFO *cs,
Derivation dv)
@@ -2141,6 +2141,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 */
@@ -2165,35 +2167,135 @@ 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;
entry->collation.set(cs, dv);
}
- return;
+ return 0;
err:
current_thd->fatal_error(); // Probably end of memory
- null_value=1;
- return;
+ null_value= 1;
+ return 1;
+}
+
+
+/* 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, &my_charset_bin);
+ break;
+ case INT_RESULT:
+ str->set(*(longlong*) value, &my_charset_bin);
+ break;
+ case STRING_RESULT:
+ if (str->copy(value, length, collation.collation))
+ 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");
+ LINT_INIT(res);
+
switch (cached_result_type) {
case REAL_RESULT:
- (void) val();
+ {
+ double value=args[0]->val();
+ res= update_hash((void*) &value,sizeof(value), REAL_RESULT,
+ &my_charset_bin, DERIVATION_NONE);
break;
+ }
case INT_RESULT:
- (void) val_int();
+ {
+ longlong value=args[0]->val_int();
+ res= update_hash((void*) &value, sizeof(longlong), INT_RESULT,
+ &my_charset_bin, DERIVATION_NONE);
break;
+ }
+ break;
case STRING_RESULT:
{
- char buffer[MAX_FIELD_WIDTH];
- String tmp(buffer,sizeof(buffer),&my_charset_bin);
- (void) val_str(&tmp);
+ String *tmp;
+ tmp=args[0]->val_str(&value);
+ if (!tmp) // Null value
+ res= update_hash((void*) 0, 0, STRING_RESULT, &my_charset_bin,
+ DERIVATION_NONE);
+ else
+ res= update_hash((void*) tmp->ptr(), tmp->length(), STRING_RESULT,
+ tmp->charset(), args[0]->collation.derivation);
break;
}
case ROW_RESULT:
@@ -2202,44 +2304,32 @@ Item_func_set_user_var::update()
DBUG_ASSERT(0);
break;
}
- return current_thd->is_fatal_error;
+ DBUG_RETURN(res);
}
-double
-Item_func_set_user_var::val()
+double Item_func_set_user_var::val()
{
- double value=args[0]->val();
- update_hash((void*) &value,sizeof(value), REAL_RESULT,
- &my_charset_bin, DERIVATION_NONE);
- return value;
+ update(); // Store expression
+ return entry->val(&null_value);
}
-longlong
-Item_func_set_user_var::val_int()
+longlong Item_func_set_user_var::val_int()
{
- longlong value=args[0]->val_int();
- update_hash((void*) &value, sizeof(longlong), INT_RESULT,
- &my_charset_bin, DERIVATION_NONE);
- return value;
+ update(); // Store expression
+ return entry->val_int(&null_value);
}
-String *
-Item_func_set_user_var::val_str(String *str)
+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, &my_charset_bin, DERIVATION_NONE);
- else
- update_hash((void*) res->ptr(), res->length(), STRING_RESULT,
- res->charset(), args[0]->collation.derivation);
- return res;
+ update(); // Store expression
+ return entry->val_str(&null_value, str, decimals);
}
void Item_func_set_user_var::print(String *str)
{
- str->append('(');
+ str->append("(@@",3);
str->append(name.str,name.length);
str->append(":=",2);
args[0]->print(str);
@@ -2247,89 +2337,29 @@ 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)
{
- user_var_entry *entry=get_entry();
- if (!entry)
- return NULL;
- switch (entry->type) {
- case REAL_RESULT:
- str->set(*(double*) entry->value,decimals, &my_charset_bin);
- break;
- case INT_RESULT:
- str->set(*(longlong*) entry->value, &my_charset_bin);
- break;
- case STRING_RESULT:
- if (str->copy(entry->value, entry->length, entry->collation.collation))
- {
- null_value=1;
- return NULL;
- }
- break;
- case ROW_RESULT:
- default:
- // This case should never be choosen
- DBUG_ASSERT(0);
- break;
- }
- return str;
+ DBUG_ENTER("Item_func_get_user_var::val_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
- case ROW_RESULT:
- default:
- // This case should never be choosen
- DBUG_ASSERT(0);
- return 0;
- }
- 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
- case ROW_RESULT:
- default:
- // This case should never be choosen
- DBUG_ASSERT(0);
- return 0;
- }
- return LL(0); // Impossible
+ if (!var_entry)
+ return LL(0); // No such variable
+ return (var_entry->val_int(&null_value));
}
@@ -2348,7 +2378,8 @@ void Item_func_get_user_var::fix_length_and_dec()
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;
if (!(opt_bin_log && is_update_query(thd->lex.sql_command)))
return;
diff --git a/sql/item_func.h b/sql/item_func.h
index 86cf19d92f3..8086e65786d 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -898,6 +898,8 @@ class Item_func_set_user_var :public Item_func
enum Item_result cached_result_type;
LEX_STRING name;
user_var_entry *entry;
+ char buffer[MAX_FIELD_WIDTH];
+ String value;
public:
Item_func_set_user_var(LEX_STRING a,Item *b)
@@ -906,7 +908,7 @@ public:
double val();
longlong val_int();
String *val_str(String *str);
- void update_hash(void *ptr, uint length, enum Item_result type,
+ bool update_hash(void *ptr, uint length, enum Item_result type,
CHARSET_INFO *cs, Derivation dv);
bool update();
enum Item_result result_type () const { return cached_result_type; }
@@ -925,7 +927,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/item_strfunc.cc b/sql/item_strfunc.cc
index 86efde096c5..c8ee64dc707 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -350,7 +350,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="********";
@@ -390,9 +390,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);
}
/*
@@ -413,12 +413,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;
@@ -432,8 +432,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);
@@ -467,20 +467,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/log.cc b/sql/log.cc
index 41184615508..27c7c64f9c8 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -983,7 +983,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,
@@ -1463,9 +1463,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/log_event.cc b/sql/log_event.cc
index b5fd78c06a9..2050be0e6de 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -121,14 +121,10 @@ static inline char* slave_load_file_stem(char*buf, uint file_id,
/*
- cleanup_load_tmpdir()
-
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.
+ SYNOPSIS
+ cleanup_load_tmpdir()
*/
#if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
@@ -137,15 +133,28 @@ static void cleanup_load_tmpdir()
MY_DIR *dirp;
FILEINFO *file;
uint i;
- char fname[FN_REFLEN];
+ char fname[FN_REFLEN], prefbuf[31], *p;
if (!(dirp=my_dir(slave_load_tmpdir,MYF(MY_WME))))
return;
+ /*
+ 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));
@@ -1096,11 +1105,10 @@ int Start_log_event::exec_event(struct st_relay_log_info* rli)
*/
if (thd->options & OPTION_BEGIN)
{
- 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.");
+ slave_print_error(rli, 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.");
return(1);
}
break;
@@ -1882,8 +1890,8 @@ int Rotate_log_event::exec_event(struct st_relay_log_info* rli)
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.
+ In that case, we don't want to touch the coordinates which correspond to
+ the beginning of the transaction.
*/
if (!(thd->options & OPTION_BEGIN))
{
@@ -3065,6 +3073,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));
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index d6e6256c388..afbda2b4ad1 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -537,11 +537,11 @@ Field *find_field_in_table(THD *thd,TABLE *table,const char *name,uint length,
#include <openssl/des.h>
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];
@@ -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/mysqld.cc b/sql/mysqld.cc
index 17b4dad9d1c..c6af4ad5c12 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -60,7 +60,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
@@ -517,12 +519,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);
@@ -682,8 +686,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/repl_failsafe.cc b/sql/repl_failsafe.cc
index 7c943d4ae53..aba887be070 100644
--- a/sql/repl_failsafe.cc
+++ b/sql/repl_failsafe.cc
@@ -734,7 +734,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;
@@ -754,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);
/*
@@ -836,8 +839,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
@@ -847,14 +853,17 @@ 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))
+ 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/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/slave.cc b/sql/slave.cc
index 641707aab2f..d1a8fe51f33 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, MYSQL *mysql, const char* db,
- const char* table_name);
+ const char* table_name, bool overwrite);
static int check_master_version(MYSQL* mysql, MASTER_INFO* mi);
@@ -1102,12 +1102,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, MYSQL *mysql, const char* db,
- const char* table_name)
+ const char* table_name, bool overwrite)
{
ulong packet_len;
char *query;
+ char* save_db;
Vio* save_vio;
HA_CHECK_OPT check_opt;
TABLE_LIST tables;
@@ -1115,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
{
@@ -1129,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;
@@ -1138,18 +1149,29 @@ 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;
- /* we do not want to log create table statement */
+ 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);
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
@@ -1158,11 +1180,8 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, 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,0,0); // Send error from open_ltable
@@ -1172,10 +1191,11 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, 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, 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;
}
@@ -1190,6 +1210,7 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, 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)
@@ -1198,12 +1219,12 @@ 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);
}
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;
@@ -1235,8 +1256,9 @@ 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, db_name, table_name))
- goto err; // create_table_from_dump will have sent the error already
+ if (create_table_from_dump(thd, mysql, db_name,
+ table_name, overwrite))
+ goto err; // create_table_from_dump have sent the error already
error = 0;
err:
@@ -3421,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:
@@ -3455,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/slave.h b/sql/slave.h
index b52648005d3..05cf7a23b0f 100644
--- a/sql/slave.h
+++ b/sql/slave.h
@@ -199,7 +199,8 @@ 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.
*/
ulonglong log_space_limit,log_space_total;
bool ignore_log_space_limit;
@@ -478,9 +479,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);
void table_rule_ent_hash_to_str(String* s, HASH* h);
void table_rule_ent_dynamic_array_to_str(String* s, DYNAMIC_ARRAY* a);
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index 4b4e4e7eb8e..a926c6e66fe 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -499,15 +499,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);
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 4fb12523086..5e5d0335e9d 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -763,10 +763,7 @@ public:
virtual bool send_fields(List<Item> &list,uint flag)=0;
virtual bool send_data(List<Item> &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() {}
};
@@ -1034,9 +1031,14 @@ class user_var_entry
char *value;
ulong length, update_query_id, used_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);
DTCollation collation;
};
+
/* Class for unique (removing of duplicates) */
class Unique :public Sql_alloc
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index d523d868514..0ad66beec2e 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -1438,15 +1438,26 @@ bool select_insert::send_data(List<Item> &values)
void select_insert::send_error(uint errcode,const char *err)
{
- //TODO error should be sent at the query processing end
+ DBUG_ENTER("select_insert::send_error");
+
+ /* 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);
- /*
- 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 +1476,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;
}
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index 60e0a7c7e94..0a5c544c2e7 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -308,22 +308,31 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
#ifndef EMBEDDED_LIBRARY
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);
}
@@ -355,7 +364,12 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
}
else
{
- read_info.end_io_cache(); // make sure last block gets logged
+ /*
+ 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)
{
Execute_load_log_event e(thd, db, log_delayed);
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index aa91e307095..b36d4041950 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1987,9 +1987,12 @@ mysql_execute_command(THD *thd)
break;
}
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);
}
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index fa10af54da9..f142db044ce 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);
}
@@ -2574,7 +2585,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 */
@@ -2639,7 +2650,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
*/
@@ -2801,29 +2812,50 @@ 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;
+ ha_rows rnd_records= s->found_records;
+ /* Estimate cost of reading table. */
+ 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
+ {
+ 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
+ {
+ /* 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));
+ /*
+ 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 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*rnd_records <
best + record_count/(double) TIME_FOR_COMPARE*records))
@@ -4453,6 +4485,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;
}
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
diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh
index ed973b61e57..dec77a15dc5 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() {
@@ -119,6 +109,19 @@ else
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
#
@@ -178,7 +181,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."
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;