Commit 18a76a95 authored by ingo/mydev@chilla.local's avatar ingo/mydev@chilla.local

Merge chilla.local:/home/mydev/mysql-5.0-mmerge

into  chilla.local:/home/mydev/mysql-5.1-amain
parents acb73b1e f631765a
......@@ -1717,6 +1717,22 @@ id c1 c2
9 abc ppc
drop table federated.t1, federated.t2;
drop table federated.t1, federated.t2;
create table t1 (id int not null auto_increment primary key, val int);
create table t1
(id int not null auto_increment primary key, val int) engine=federated
connection='mysql://root@127.0.0.1:SLAVE_PORT/test/t1';
insert into t1 values (1,0),(2,0);
update t1 set val = NULL where id = 1;
select * from t1;
id val
1 NULL
2 0
select * from t1;
id val
1 NULL
2 0
drop table t1;
drop table t1;
DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated;
DROP TABLE IF EXISTS federated.t1;
......
......@@ -1366,6 +1366,25 @@ drop table federated.t1, federated.t2;
connection master;
--enable_parsing
#
# Bug #16494: Updates that set a column to NULL fail sometimes
#
connection slave;
create table t1 (id int not null auto_increment primary key, val int);
connection master;
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval create table t1
(id int not null auto_increment primary key, val int) engine=federated
connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
insert into t1 values (1,0),(2,0);
update t1 set val = NULL where id = 1;
select * from t1;
connection slave;
select * from t1;
drop table t1;
connection master;
drop table t1;
#
# Additional test for bug#18437 "Wrong values inserted with a before
# update trigger on NDB table". SQL-layer didn't properly inform
......
......@@ -5,4 +5,7 @@ set -e
args=" $*"
wine --debugmsg -all -- mwasmnlm $args
# NOTE: Option 'pipefail' is not standard sh
set -o pipefail
wine --debugmsg -all -- mwasmnlm $args | \
perl -pe 's/\r//g; s/^\e.*\e(\[J|>)?//; s/[[^:print:]]//g'
......@@ -7,4 +7,7 @@ set -e
# convert it to "-I../include"
args=" "`echo $* | sed -e 's/-I.\/../-I../g'`
wine --debugmsg -all -- mwccnlm $args
# NOTE: Option 'pipefail' is not standard sh
set -o pipefail
wine --debugmsg -all -- mwccnlm $args | \
perl -pe 's/\r//g; s/^\e.*\e(\[J|>)?//; s/[[^:print:]]//g'
......@@ -5,4 +5,7 @@ set -e
args=" $*"
wine --debugmsg -all -- mwldnlm $args
# NOTE: Option 'pipefail' is not standard sh
set -o pipefail
wine --debugmsg -all -- mwldnlm $args | \
perl -pe 's/\r//g; s/^\e.*\e(\[J|>)?//; s/[[^:print:]]//g'
......@@ -1509,6 +1509,7 @@ mysql_ssl_set(MYSQL *mysql __attribute__((unused)) ,
*/
#ifdef HAVE_OPENSSL
static void
mysql_ssl_free(MYSQL *mysql __attribute__((unused)))
{
......@@ -1533,6 +1534,7 @@ mysql_ssl_free(MYSQL *mysql __attribute__((unused)))
DBUG_VOID_RETURN;
}
#endif /* HAVE_OPENSSL */
/*
Return the SSL cipher (if any) used for current
......@@ -1548,8 +1550,10 @@ const char * STDCALL
mysql_get_ssl_cipher(MYSQL *mysql)
{
DBUG_ENTER("mysql_get_ssl_cipher");
#ifdef HAVE_OPENSSL
if (mysql->net.vio && mysql->net.vio->ssl_arg)
DBUG_RETURN(SSL_get_cipher_name((SSL*)mysql->net.vio->ssl_arg));
#endif /* HAVE_OPENSSL */
DBUG_RETURN(NULL);
}
......@@ -1568,6 +1572,9 @@ mysql_get_ssl_cipher(MYSQL *mysql)
1 Failed to validate server
*/
#ifdef HAVE_OPENSSL
static int ssl_verify_server_cert(Vio *vio, const char* server_hostname)
{
SSL *ssl;
......
......@@ -1804,18 +1804,12 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
/*
buffers for following strings
*/
char old_field_value_buffer[STRING_BUFFER_USUAL_SIZE];
char new_field_value_buffer[STRING_BUFFER_USUAL_SIZE];
char field_value_buffer[STRING_BUFFER_USUAL_SIZE];
char update_buffer[FEDERATED_QUERY_BUFFER_SIZE];
char where_buffer[FEDERATED_QUERY_BUFFER_SIZE];
/* stores the value to be replaced of the field were are updating */
String old_field_value(old_field_value_buffer,
sizeof(old_field_value_buffer),
&my_charset_bin);
/* stores the new value of the field */
String new_field_value(new_field_value_buffer,
sizeof(new_field_value_buffer),
/* Work area for field values */
String field_value(field_value_buffer, sizeof(field_value_buffer),
&my_charset_bin);
/* stores the update query */
String update_string(update_buffer,
......@@ -1829,8 +1823,7 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
/*
set string lengths to 0 to avoid misc chars in string
*/
old_field_value.length(0);
new_field_value.length(0);
field_value.length(0);
update_string.length(0);
where_string.length(0);
......@@ -1844,8 +1837,8 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
In this loop, we want to match column names to values being inserted
(while building INSERT statement).
Iterate through table->field (new data) and share->old_filed (old_data)
using the same index to created an SQL UPDATE statement, new data is
Iterate through table->field (new data) and share->old_field (old_data)
using the same index to create an SQL UPDATE statement. New data is
used to create SET field=value and old data is used to create WHERE
field=oldvalue
*/
......@@ -1855,13 +1848,15 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
if (bitmap_is_set(table->write_set, (*field)->field_index))
{
if ((*field)->is_null())
new_field_value.append(FEDERATED_NULL);
update_string.append(FEDERATED_NULL);
else
{
my_bitmap_map *old_map= tmp_use_all_columns(table, table->read_set);
/* otherwise = */
(*field)->val_str(&new_field_value);
(*field)->quote_data(&new_field_value);
(*field)->val_str(&field_value);
(*field)->quote_data(&field_value);
update_string.append(field_value);
field_value.length(0);
tmp_restore_column_map(table->read_set, old_map);
}
update_string.append((*field)->field_name);
......
......@@ -3318,7 +3318,7 @@ longlong Item_func_regex::val_int()
}
}
null_value=0;
return my_regexec(&preg,res->c_ptr(),0,(my_regmatch_t*) 0,0) ? 0 : 1;
return my_regexec(&preg,res->c_ptr_safe(),0,(my_regmatch_t*) 0,0) ? 0 : 1;
}
......
......@@ -50,8 +50,14 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
LIBS = @CLIENT_LIBS@
LDADD = @CLIENT_EXTRA_LDFLAGS@ \
$(LIBMYSQLCLIENT_LA)
if HAVE_NETWARE
mysql_client_test_LDADD= $(LDADD) $(CXXLDFLAGS)
mysql_client_test_SOURCES= mysql_client_test.c $(yassl_dummy_link_fix) \
../mysys/my_memmem.c
else
mysql_client_test_LDADD= $(LDADD) $(CXXLDFLAGS) -L../mysys -lmysys
mysql_client_test_SOURCES= mysql_client_test.c $(yassl_dummy_link_fix)
endif
insert_test_SOURCES= insert_test.c $(yassl_dummy_link_fix)
select_test_SOURCES= select_test.c $(yassl_dummy_link_fix)
insert_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment