From 9a29f1f7a55944d00dfb4187f650ca8c9fd25af4 Mon Sep 17 00:00:00 2001 From: "tim@cane.mysql.fi" <> Date: Thu, 21 Dec 2000 11:54:08 +0200 Subject: [PATCH 1/3] Compatibility fix for BSDi. BSDi uses size_t * for the optlen arg to getsockopt, while other Unixes use socklen_t *. --- acconfig.h | 3 +++ configure.in | 5 +++++ libmysql/libmysql.c | 2 +- sql/mini_client.cc | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/acconfig.h b/acconfig.h index e1373fa17f0..3b9874b2e6a 100644 --- a/acconfig.h +++ b/acconfig.h @@ -186,6 +186,9 @@ /* Define as the base type of the last arg to accept */ #undef SOCKET_SIZE_TYPE +/* Last argument to get/setsockopt */ +#undef SOCKOPT_OPTLEN_TYPE + #undef SPEED_T_IN_SYS_TYPES #undef SPRINTF_RETURNS_PTR #undef SPRINTF_RETURNS_INT diff --git a/configure.in b/configure.in index cfd8e8e20f6..3ad2ef4b860 100644 --- a/configure.in +++ b/configure.in @@ -1175,6 +1175,11 @@ AC_C_BIGENDIAN #---START: Used in for client configure # Check base type of last arg to accept MYSQL_TYPE_ACCEPT +case "$SYSTEM_TYPE" in +*bsdi* ) AC_DEFINE_UNQUOTED(SOCKOPT_OPTLEN_TYPE, size_t);; +* ) AC_DEFINE_UNQUOTED(SOCKOPT_OPTLEN_TYPE, size_socket);; +esac + #---END: # Find where the stack goes MYSQL_STACK_DIRECTION diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 9f71273b119..979ef6a4945 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -125,7 +125,7 @@ static int connect2(my_socket s, const struct sockaddr *name, uint namelen, return connect(s, (struct sockaddr*) name, namelen); #else int flags, res, s_err; - size_socket s_err_size = sizeof(uint); + SOCKOPT_OPTLEN_TYPE s_err_size = sizeof(uint); fd_set sfds; struct timeval tv; time_t start_time, now_time; diff --git a/sql/mini_client.cc b/sql/mini_client.cc index 11b0b111ec4..12c8a740398 100644 --- a/sql/mini_client.cc +++ b/sql/mini_client.cc @@ -233,7 +233,7 @@ static int mc_sock_connect(my_socket s, const struct sockaddr *name, return connect(s, (struct sockaddr*) name, namelen); #else int flags, res, s_err; - size_socket s_err_size = sizeof(uint); + SOCKOPT_OPTLEN_TYPE s_err_size = sizeof(uint); fd_set sfds; struct timeval tv; From 57b5476aeb4bb23281cf31e89413e643547085de Mon Sep 17 00:00:00 2001 From: "tim@cane.mysql.fi" <> Date: Thu, 21 Dec 2000 11:56:43 +0200 Subject: [PATCH 2/3] Makefile bug fixes. --- libmysql/Makefile.am | 1 + libmysql/Makefile.shared | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libmysql/Makefile.am b/libmysql/Makefile.am index 7df01aa4e52..7b6472ecaba 100644 --- a/libmysql/Makefile.am +++ b/libmysql/Makefile.am @@ -28,6 +28,7 @@ include $(srcdir)/Makefile.shared libmysqlclient_la_SOURCES = $(target_sources) libmysqlclient_la_LIBADD = $(target_libadd) libmysqlclient_la_LDFLAGS = $(target_ldflags) +EXTRA_DIST = Makefile.shared # This is called from the toplevel makefile link_sources: diff --git a/libmysql/Makefile.shared b/libmysql/Makefile.shared index 240a520aa14..795a64ba138 100644 --- a/libmysql/Makefile.shared +++ b/libmysql/Makefile.shared @@ -39,7 +39,7 @@ mystringsobjects = strmov.lo strxmov.lo strnmov.lo strmake.lo strend.lo \ int2str.lo str2int.lo strinstr.lo strcont.lo \ strcend.lo \ bchange.lo bmove.lo bmove_upp.lo longlong2str.lo \ - strtoull.lo strtoll.lo llstr.lo strto.lo \ + strtoull.lo strtoll.lo llstr.lo \ ctype.lo $(LTCHARSET_OBJS) mystringsextra= strto.c ctype_autoconf.c dbugobjects = dbug.lo # IT IS IN SAFEMALLOC.C sanity.lo From 6ea697884728f9b05cc8604154788dbf7d108406 Mon Sep 17 00:00:00 2001 From: "tim@cane.mysql.fi" <> Date: Thu, 21 Dec 2000 11:58:02 +0200 Subject: [PATCH 3/3] Test replace on all table types. Test delete from BDB table using hidden primary key. --- mysql-test/r/delete.result | 0 mysql-test/r/replace.result | 0 mysql-test/t/delete.test | 8 ++++++++ mysql-test/t/replace.test | 21 +++++++++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 mysql-test/r/delete.result create mode 100644 mysql-test/r/replace.result create mode 100644 mysql-test/t/delete.test create mode 100644 mysql-test/t/replace.test diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mysql-test/r/replace.result b/mysql-test/r/replace.result new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test new file mode 100644 index 00000000000..85802354b2c --- /dev/null +++ b/mysql-test/t/delete.test @@ -0,0 +1,8 @@ +drop table if exists t1; + +# test delete using hidden_primary_key +create table t1 (a int) type=bdb; +insert into t1 values (1), (2); +delete from t1 where a = 1; + +drop table t1; diff --git a/mysql-test/t/replace.test b/mysql-test/t/replace.test new file mode 100644 index 00000000000..4000ee1b4e2 --- /dev/null +++ b/mysql-test/t/replace.test @@ -0,0 +1,21 @@ +# +# Test of REPLACE with ISAM and MyISAM and BDB +# + +drop table if exists t1; + +CREATE TABLE t1 ( + gesuchnr int(11) DEFAULT '0' NOT NULL, + benutzer_id int(11) DEFAULT '0' NOT NULL, + PRIMARY KEY (gesuchnr,benutzer_id) +) type=ISAM; + +replace into t1 (gesuchnr,benutzer_id) values (1,1); +replace into t1 (gesuchnr,benutzer_id) values (1,1); +alter table t1 type=myisam; +replace into t1 (gesuchnr,benutzer_id) values (1,1); +alter table t1 type=bdb; +replace into t1 (gesuchnr,benutzer_id) values (1,1); +alter table t1 type=heap; +replace into t1 (gesuchnr,benutzer_id) values (1,1); +drop table t1;