Below is the list of changes that have just been committed into a local
6.0 repository of knielsen. When knielsen does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2008-03-07 08:52:21+01:00, knielsen@ymer.(none) +5 -0
After-merge fixes.
mysql-test/r/rpl_locktrans_innodb.result@stripped, 2008-03-07 08:52:16+01:00, knielsen@ymer.(none) +1 -0
After-merge fix.
mysql-test/r/rpl_locktrans_myisam.result@stripped, 2008-03-07 08:52:16+01:00, knielsen@ymer.(none) +1 -0
After-merge fix.
sql-common/client.c@stripped, 2008-03-07 08:52:17+01:00, knielsen@ymer.(none) +19 -36
After-merge fix.
sql/ha_ndbcluster.cc@stripped, 2008-03-07 08:52:17+01:00, knielsen@ymer.(none) +8 -0
After-merge fix.
sql/rpl_mi.cc@stripped, 2008-03-07 08:52:17+01:00, knielsen@ymer.(none) +4 -1
After-merge fix.
diff -Nrup a/mysql-test/r/rpl_locktrans_innodb.result b/mysql-test/r/rpl_locktrans_innodb.result
--- a/mysql-test/r/rpl_locktrans_innodb.result 2008-02-07 13:21:53 +01:00
+++ b/mysql-test/r/rpl_locktrans_innodb.result 2008-03-07 08:52:16 +01:00
@@ -968,3 +968,4 @@ Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
+Master_Bind 0.0.0.0
diff -Nrup a/mysql-test/r/rpl_locktrans_myisam.result b/mysql-test/r/rpl_locktrans_myisam.result
--- a/mysql-test/r/rpl_locktrans_myisam.result 2008-02-07 13:21:59 +01:00
+++ b/mysql-test/r/rpl_locktrans_myisam.result 2008-03-07 08:52:16 +01:00
@@ -440,3 +440,4 @@ Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
+Master_Bind 0.0.0.0
diff -Nrup a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
--- a/sql/ha_ndbcluster.cc 2008-02-26 17:37:39 +01:00
+++ b/sql/ha_ndbcluster.cc 2008-03-07 08:52:17 +01:00
@@ -10484,6 +10484,14 @@ int ha_ndbcluster::multi_range_start_ret
bool any_real_read= FALSE;
/*
+ Need to put this check here (rather than in multi_range_read_init()),
+ as it seems the m_read_before_write_removal_possible flag is not
+ set until _after_ multi_range_read_init() has been called.
+ */
+ if (m_read_before_write_removal_possible && likely(starting_range == 0))
+ check_read_before_write_removal();
+
+ /*
ToDo: I think there is a bug here in that we may well exceed maximum
keyinfo size for huge number of ranges.
We need to check for this, and break into multiple execute()'s in this
diff -Nrup a/sql/rpl_mi.cc b/sql/rpl_mi.cc
--- a/sql/rpl_mi.cc 2008-02-20 15:07:00 +01:00
+++ b/sql/rpl_mi.cc 2008-03-07 08:52:17 +01:00
@@ -36,9 +36,12 @@ Master_info::Master_info()
slave_running(0), ssl_verify_server_cert(0), slave_run_id(0),
heartbeat_period(0), received_heartbeats(0)
{
- host[0] = 0; user[0] = 0; password[0] = 0; bind_addr[0] = 0;
+ host[0] = 0; user[0] = 0; password[0] = 0;
ssl_ca[0]= 0; ssl_capath[0]= 0; ssl_cert[0]= 0;
ssl_cipher[0]= 0; ssl_key[0]= 0;
+
+ DBUG_ASSERT(sizeof(bind_addr) >= 8);
+ strcpy(bind_addr, "0.0.0.0");
master_server_id= (uint32)ULONG_MAX;
master_epoch= 0;
diff -Nrup a/sql-common/client.c b/sql-common/client.c
--- a/sql-common/client.c 2008-02-20 22:17:30 +01:00
+++ b/sql-common/client.c 2008-03-07 08:52:17 +01:00
@@ -2041,45 +2041,28 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,cons
- check error codes
- don't use socket for localhost if this option is given
*/
- struct sockaddr_in IPaddr;
- in_addr_t bind_addr;
- bind_addr = inet_addr(mysql->options.bind_name);
- if (bind_addr == INADDR_NONE)
+ struct addrinfo *cli_lst;
+ gai_errno= getaddrinfo(mysql->options.bind_name, NULL,
+ &hints, &cli_lst);
+ if (gai_errno != 0)
{
- int tmp_errno;
- struct hostent tmp_hostent,*hp;
- char buff2[GETHOSTBYNAME_BUFF_SIZE];
- hp = my_gethostbyname_r(mysql->options.bind_name, &tmp_hostent,
- buff2, sizeof(buff2), &tmp_errno);
- if (!hp)
- {
- my_gethostbyname_r_free();
- set_mysql_extended_error(mysql, CR_UNKNOWN_HOST, unknown_sqlstate,
- ER(CR_UNKNOWN_HOST),
- mysql->options.bind_name, tmp_errno);
- closesocket(sock);
- freeaddrinfo(res_lst);
- goto error;
- }
- bzero(&bind_addr,sizeof(bind_addr));
- memcpy(&bind_addr, hp->h_addr,
- min(sizeof(IPaddr.sin_addr), (size_t) hp->h_length));
- my_gethostbyname_r_free();
+ set_mysql_extended_error(mysql, CR_UNKNOWN_HOST, unknown_sqlstate,
+ ER(CR_UNKNOWN_HOST),
+ mysql->options.bind_name, gai_errno);
+ closesocket(sock);
+ freeaddrinfo(res_lst);
+ goto error;
}
- if (bind_addr != INADDR_NONE) {
- bzero((char*) &IPaddr, sizeof(IPaddr));
- IPaddr.sin_family = AF_INET;
- IPaddr.sin_addr.s_addr = bind_addr;
- IPaddr.sin_port = 0;
- if (bind(sock, (struct sockaddr *) &IPaddr, sizeof(IPaddr))) {
- set_mysql_extended_error(mysql, CR_IPSOCK_ERROR, unknown_sqlstate,
- ER(CR_IPSOCK_ERROR),
- mysql->options.bind_name, errno);
- closesocket(sock);
- freeaddrinfo(res_lst);
- goto error;
- }
+
+ if (bind(sock, cli_lst->ai_addr, cli_lst->ai_addrlen)) {
+ set_mysql_extended_error(mysql, CR_IPSOCK_ERROR, unknown_sqlstate,
+ ER(CR_IPSOCK_ERROR), errno);
+ freeaddrinfo(cli_lst);
+ closesocket(sock);
+ freeaddrinfo(res_lst);
+ goto error;
}
+ freeaddrinfo(cli_lst);
}
net->vio= vio_new(sock, VIO_TYPE_TCPIP, VIO_BUFFERED_READ);
| Thread |
|---|
| • bk commit into 6.0 tree (knielsen:1.2553) | knielsen | 7 Mar |