From 3bdfe4485999445061a3edc6308c0c6eaf6476b7 Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Wed, 19 Jan 2005 12:23:24 -0800 Subject: [PATCH 1/6] Warn when mysqld starts up with lower_case_table_names=2 but datadir is on a case-sensitive filesystem. (Bug #7887) --- sql/mysqld.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d1fef3519bf..b21b84a34e7 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2913,6 +2913,17 @@ You should consider changing lower_case_table_names to 1 or 2", lower_case_table_names= 2; } } + else if (lower_case_table_names == 2 && + (test_if_case_insensitive(mysql_real_data_home) == 0)) + { + if (global_system_variables.log_warnings) + sql_print_warning("\ +You have forced lower_case_table_names to 2 through a command-line \ +option, even though your file system '%s' is case sensitive. This means \ +that you can create a table that you can then no longer access. \ +You should consider changing lower_case_table_names to 0.", + mysql_real_data_home); + } select_thread=pthread_self(); select_thread_in_use=1; From 9675b0698f911b2f9120a99ef959202908b40244 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Thu, 20 Jan 2005 16:25:38 +0100 Subject: [PATCH 2/6] - renamed client_test -> mysql_client_test - renamed the tests that use the embedded server (client_test -> mysql_client_test_embedded, mysqltest -> mysql_test_embedded and changed some Makefiles and scripts so they are installed in $bindir (required to be able to run the test suite against the embedded server) --- .bzrignore | 2 ++ libmysql/libmysql.c | 2 +- libmysqld/examples/Makefile.am | 17 +++++++++-------- scripts/make_binary_distribution.sh | 4 +++- tests/Makefile.am | 6 +++--- tests/{client_test.c => mysql_client_test.c} | 0 6 files changed, 18 insertions(+), 13 deletions(-) rename tests/{client_test.c => mysql_client_test.c} (100%) diff --git a/.bzrignore b/.bzrignore index 54a8c8fd03a..40b7668cb64 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1002,3 +1002,5 @@ vio/test-ssl vio/test-sslclient vio/test-sslserver vio/viotest-ssl +tests/mysql_client_test +tests/mysql_client_test diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 206fd8f77b4..3d84059e981 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -2978,7 +2978,7 @@ static my_bool int_is_null_false= 0; values and mysql_stmt_execute() the statement. See also: mysql_stmt_send_long_data() for sending long text/blob - data in pieces, examples in tests/client_test.c. + data in pieces, examples in tests/mysql_client_test.c. Next steps you might want to make: - execute statement with mysql_stmt_execute(), - reset statement using mysql_stmt_reset() or reprepare it with diff --git a/libmysqld/examples/Makefile.am b/libmysqld/examples/Makefile.am index 5b0a86e679c..c6759d99aab 100644 --- a/libmysqld/examples/Makefile.am +++ b/libmysqld/examples/Makefile.am @@ -1,6 +1,7 @@ -noinst_PROGRAMS = mysqltest mysql client_test -client_sources = $(mysqltest_SOURCES) $(mysql_SOURCES) -tests_sources= $(client_test_SOURCES) +noinst_PROGRAMS = mysql +bin_PROGRAMS = mysqltest_embedded mysql_client_test_embedded +client_sources = $(mysqltest_embedded_SOURCES) $(mysql_SOURCES) +tests_sources= $(mysql_client_test_SOURCES) link_sources: for f in $(client_sources); do \ @@ -19,16 +20,16 @@ INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include -I$(srcdir) \ LIBS = @LIBS@ @WRAPLIBS@ @CLIENT_LIBS@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysqld.a @innodb_system_libs@ @LIBDL@ $(CXXLDFLAGS) -mysqltest_LINK = $(CXXLINK) -mysqltest_SOURCES = mysqltest.c -mysqltest_LDADD = $(LDADD) $(top_builddir)/regex/libregex.a +mysqltest_embedded_LINK = $(CXXLINK) +mysqltest_embedded_SOURCES = mysqltest.c +mysqltest_embedded_LDADD = $(LDADD) $(top_builddir)/regex/libregex.a mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \ my_readline.h sql_string.h completion_hash.h mysql_LDADD = @readline_link@ @TERMCAP_LIB@ $(LDADD) -client_test_LINK = $(CXXLINK) -client_test_SOURCES = client_test.c +mysql_client_test_embedded_LINK = $(CXXLINK) +mysql_client_test_embedded_SOURCES = mysql_client_test.c clean: rm -f $(client_sources) diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh index 281ef9bd469..22b51168c23 100644 --- a/scripts/make_binary_distribution.sh +++ b/scripts/make_binary_distribution.sh @@ -127,6 +127,8 @@ else client/.libs/mysqltest client/.libs/mysqlcheck \ client/.libs/mysqlbinlog client/.libs/mysqlmanagerc \ client/.libs/mysqlmanager-pwgen tools/.libs/mysqlmanager \ + tests/.libs/mysql_client_test libmysqld/examples/mysql_client_test_embedded \ + libmysqld/examples/mysqltest_embedded \ "; fi @@ -187,7 +189,7 @@ fi if [ $BASE_SYSTEM != "netware" ] ; then if [ -d tests ] ; then - $CP tests/client_test tests/*.res tests/*.tst tests/*.pl $BASE/tests + $CP tests/*.res tests/*.tst tests/*.pl $BASE/tests fi if [ -d man ] ; then $CP man/*.1 $BASE/man/man1 diff --git a/tests/Makefile.am b/tests/Makefile.am index df16ee789a5..de4fbb2a4f2 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -26,7 +26,7 @@ EXTRA_DIST = auto_increment.res auto_increment.tst \ pmail.pl mail_to_db.pl table_types.pl \ udf_test udf_test.res myisam-big-rows.tst -bin_PROGRAMS = client_test +bin_PROGRAMS = mysql_client_test noinst_PROGRAMS = insert_test select_test thread_test # @@ -35,8 +35,8 @@ noinst_PROGRAMS = insert_test select_test thread_test INCLUDES = -I$(top_srcdir)/include $(openssl_includes) LIBS = @CLIENT_LIBS@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysql/libmysqlclient.la -client_test_LDADD= $(LDADD) $(CXXLDFLAGS) -client_test_SOURCES= client_test.c +mysql_client_test_LDADD= $(LDADD) $(CXXLDFLAGS) +mysql_client_test_SOURCES= mysql_client_test.c insert_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) select_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) diff --git a/tests/client_test.c b/tests/mysql_client_test.c similarity index 100% rename from tests/client_test.c rename to tests/mysql_client_test.c From e456b6c08603ac62807ebd63d333841126b8ff01 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Thu, 20 Jan 2005 17:00:30 +0100 Subject: [PATCH 3/6] - fixed one missing occasion from the mysql_client_test renaming --- libmysqld/examples/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmysqld/examples/Makefile.am b/libmysqld/examples/Makefile.am index c6759d99aab..51a7252440a 100644 --- a/libmysqld/examples/Makefile.am +++ b/libmysqld/examples/Makefile.am @@ -1,7 +1,7 @@ noinst_PROGRAMS = mysql bin_PROGRAMS = mysqltest_embedded mysql_client_test_embedded client_sources = $(mysqltest_embedded_SOURCES) $(mysql_SOURCES) -tests_sources= $(mysql_client_test_SOURCES) +tests_sources= $(mysql_client_test_embedded_SOURCES) link_sources: for f in $(client_sources); do \ From 777595bd61324905c265bc5c4da61062f786708d Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Mon, 24 Jan 2005 16:56:17 +0100 Subject: [PATCH 4/6] mysql_client_test.test, mysql-test-run.sh: Let MYSQL_CLIENT_TEST be set with command line from mysql-test-run script mysql-test-run.sh: Renamed client_test to mysql_client_test Support --embedded-server test on installed server mysql_client_test.test: Renamed client_test to mysql_client_test Use env var CLIENT_TEST with full name, it differs when run with --embedded-server Rename: mysql-test/t/client_test.test -> mysql-test/t/mysql_client_test.test --- mysql-test/mysql-test-run.sh | 42 ++++++++++++++++++++++------- mysql-test/t/client_test.test | 4 --- mysql-test/t/mysql_client_test.test | 3 +++ 3 files changed, 35 insertions(+), 14 deletions(-) delete mode 100644 mysql-test/t/client_test.test create mode 100644 mysql-test/t/mysql_client_test.test diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 722da516d9b..990adbcf4b8 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -493,13 +493,13 @@ DASH72=`$ECHO '-------------------------------------------------------'|$CUT -c # on binary, use what is installed if [ x$SOURCE_DIST = x1 ] ; then if [ "x$USE_EMBEDDED_SERVER" = "x1" ] ; then - if [ -f "$BASEDIR/libmysqld/examples/mysqltest" ] ; then - MYSQL_TEST="$VALGRIND $BASEDIR/libmysqld/examples/mysqltest" + if [ -f "$BASEDIR/libmysqld/examples/mysqltest_embedded" ] ; then + MYSQL_TEST="$VALGRIND $BASEDIR/libmysqld/examples/mysqltest_embedded" else - echo "Fatal error: Cannot find embedded server 'mysqltest'" 1>&2 + echo "Fatal error: Cannot find embedded server 'mysqltest_embedded'" 1>&2 exit 1 fi - TESTS_BINDIR="$BASEDIR/libmysqld/examples" + MYSQL_CLIENT_TEST="$BASEDIR/libmysqld/examples/mysql_client_test_embedded" else MYSQLD="$VALGRIND $BASEDIR/sql/mysqld" if [ -f "$BASEDIR/client/.libs/lt-mysqltest" ] ; then @@ -509,7 +509,7 @@ if [ x$SOURCE_DIST = x1 ] ; then else MYSQL_TEST="$BASEDIR/client/mysqltest" fi - TESTS_BINDIR="$BASEDIR/tests" + MYSQL_CLIENT_TEST="$BASEDIR/tests/mysql_client_test" fi if [ -f "$BASEDIR/client/.libs/mysqldump" ] ; then MYSQL_DUMP="$BASEDIR/client/.libs/mysqldump" @@ -538,6 +538,14 @@ if [ x$SOURCE_DIST = x1 ] ; then MYSQL_FIX_SYSTEM_TABLES="$BASEDIR/scripts/mysql_fix_privilege_tables" NDB_TOOLS_DIR="$BASEDIR/ndb/tools" else + + # We have a binary installation. Note that this can be both from + # unpacking a MySQL AB binary distribution (created using + # "scripts/make_binary_distribution", and from a "make install". + # Unfortunately the structure differs a bit, for a "make install" + # currently all binaries are in "bin", for a MySQL AB packaging + # some are in "tests". + if test -x "$BASEDIR/libexec/mysqld" then MYSQLD="$VALGRIND $BASEDIR/libexec/mysqld" @@ -545,8 +553,6 @@ else MYSQLD="$VALGRIND $BASEDIR/bin/mysqld" fi CLIENT_BINDIR="$BASEDIR/bin" - TESTS_BINDIR="$BASEDIR/tests" - MYSQL_TEST="$CLIENT_BINDIR/mysqltest" MYSQL_DUMP="$CLIENT_BINDIR/mysqldump" MYSQL_BINLOG="$CLIENT_BINDIR/mysqlbinlog" MYSQLADMIN="$CLIENT_BINDIR/mysqladmin" @@ -565,7 +571,23 @@ else else LANGUAGE="$BASEDIR/share/english/" CHARSETSDIR="$BASEDIR/share/charsets" - fi + fi + if [ "x$USE_EMBEDDED_SERVER" = "x1" ] ; then + if [ -f "$CLIENT_BINDIR/mysqltest_embedded" ] ; then + MYSQL_TEST="$VALGRIND $CLIENT_BINDIR/mysqltest_embedded" + else + echo "Fatal error: Cannot find embedded server 'mysqltest_embedded'" 1>&2 + exit 1 + fi + if [ -d "$BASEDIR/tests/mysql_client_test_embedded" ] ; then + MYSQL_CLIENT_TEST="$TESTS_BINDIR/mysql_client_test_embedded" + else + MYSQL_CLIENT_TEST="$CLIENT_BINDIR/mysql_client_test_embedded" + fi + else + MYSQL_TEST="$CLIENT_BINDIR/mysqltest" + MYSQL_CLIENT_TEST="$CLIENT_BINDIR/mysql_client_test" + fi fi if [ -z "$MASTER_MYSQLD" ] @@ -599,13 +621,13 @@ then EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --user=root" fi - +MYSQL_CLIENT_TEST="$MYSQL_CLIENT_TEST --no-defaults --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent" MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT" MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR $EXTRA_MYSQLBINLOG_OPT" MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose" MYSQL="$MYSQL --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD" export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES -export CLIENT_BINDIR TESTS_BINDIR CHARSETSDIR +export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR export NDB_TOOLS_DIR MYSQL_TEST_ARGS="--no-defaults --socket=$MASTER_MYSOCK --database=$DB \ diff --git a/mysql-test/t/client_test.test b/mysql-test/t/client_test.test deleted file mode 100644 index 29e7c23ab35..00000000000 --- a/mysql-test/t/client_test.test +++ /dev/null @@ -1,4 +0,0 @@ -# Skip when testing the embedded server ---source include/not_embedded.inc ---disable_result_log ---exec $TESTS_BINDIR/client_test --no-defaults --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent diff --git a/mysql-test/t/mysql_client_test.test b/mysql-test/t/mysql_client_test.test new file mode 100644 index 00000000000..86aecf43cbd --- /dev/null +++ b/mysql-test/t/mysql_client_test.test @@ -0,0 +1,3 @@ +# We run with different binaries for normal and --embedded-server +--disable_result_log +--exec $MYSQL_CLIENT_TEST From 878e99e65d7176c4fbf4f42b5f29d8ade7b71611 Mon Sep 17 00:00:00 2001 From: "kent@mysql.com" <> Date: Mon, 24 Jan 2005 17:10:03 +0100 Subject: [PATCH 5/6] my_global.h: Bug#7145 Added cast to doublestore() and ARM --- include/my_global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/my_global.h b/include/my_global.h index ff59f7bfc55..f54a18649c5 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -1072,7 +1072,7 @@ do { doubleget_union _tmp; \ #define float4store(V,M) memcpy_fixed((byte*) V,(byte*) (&M),sizeof(float)) #if defined(__FLOAT_WORD_ORDER) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN) -#define doublestore(T,V) do { *(T)= ((byte *) &V)[4];\ +#define doublestore(T,V) do { *(((char*)T)+0)=(char) ((byte *) &V)[4];\ *(((char*)T)+1)=(char) ((byte *) &V)[5];\ *(((char*)T)+2)=(char) ((byte *) &V)[6];\ *(((char*)T)+3)=(char) ((byte *) &V)[7];\ From fa1098618e506b09464a0c4b70c08b01a246cc66 Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Mon, 24 Jan 2005 12:31:14 -0800 Subject: [PATCH 6/6] Set lower_case_file_system when it is being tested to check if lower_case_tables_names=2 is sensible. Related to Bug #7887. --- sql/mysqld.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index b21b84a34e7..425911570ef 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2914,7 +2914,8 @@ You should consider changing lower_case_table_names to 1 or 2", } } else if (lower_case_table_names == 2 && - (test_if_case_insensitive(mysql_real_data_home) == 0)) + !(lower_case_file_system= + (test_if_case_insensitive(mysql_real_data_home) == 1))) { if (global_system_variables.log_warnings) sql_print_warning("\