summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-07-25 08:49:26 +0200
committerunknown <msvensson@neptunus.(none)>2006-07-25 08:49:26 +0200
commit8e12b66bd047719b0d36f9352747b43c05ca6206 (patch)
tree499f93b3752f7ffbff3d0421a76293331747caf4
parent477e0b1345db67e634f9f12f07b72b1df8dc79d2 (diff)
parent3e2dfa97050e5d0246c5e5aa2915272c61030ded (diff)
downloadmariadb-git-8e12b66bd047719b0d36f9352747b43c05ca6206.tar.gz
Merge neptunus.(none):/home/msvensson/mysql/mysql-5.1
into neptunus.(none):/home/msvensson/mysql/mysql-5.1-new-maint mysql-test/mysql-test-run.pl: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged
-rw-r--r--mysql-test/r/federated.result16
-rw-r--r--mysql-test/t/federated.test20
-rwxr-xr-xnetware/BUILD/mwasmnlm5
-rwxr-xr-xnetware/BUILD/mwccnlm5
-rwxr-xr-xnetware/BUILD/mwldnlm5
-rw-r--r--sql-common/client.c7
-rw-r--r--sql/ha_federated.cc50
-rw-r--r--sql/item_cmpfunc.cc2
-rw-r--r--tests/Makefile.am6
9 files changed, 84 insertions, 32 deletions
diff --git a/mysql-test/r/federated.result b/mysql-test/r/federated.result
index 1b9d02a64d0..b7b3af7d60a 100644
--- a/mysql-test/r/federated.result
+++ b/mysql-test/r/federated.result
@@ -1603,6 +1603,22 @@ fld_cid fld_name fld_parentid fld_delt
5 Torkel 0 0
DROP TABLE federated.t1;
DROP TABLE federated.bug_17377_table;
+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;
create table federated.t1 (a int, b int, c int);
drop table if exists federated.t1;
diff --git a/mysql-test/t/federated.test b/mysql-test/t/federated.test
index 77ca38b9587..7f7b2a4261b 100644
--- a/mysql-test/t/federated.test
+++ b/mysql-test/t/federated.test
@@ -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
@@ -1377,6 +1396,7 @@ connection master;
# for ON INSERT triggers only. Tests for other types of triggers reside
# in ndb_trigger.test.
#
+connection slave;
--disable_warnings
drop table if exists federated.t1;
--enable_warnings
diff --git a/netware/BUILD/mwasmnlm b/netware/BUILD/mwasmnlm
index 381f84ec0c8..11fc2bc3842 100755
--- a/netware/BUILD/mwasmnlm
+++ b/netware/BUILD/mwasmnlm
@@ -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'
diff --git a/netware/BUILD/mwccnlm b/netware/BUILD/mwccnlm
index cb2d62fe8cf..e6840e781f8 100755
--- a/netware/BUILD/mwccnlm
+++ b/netware/BUILD/mwccnlm
@@ -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'
diff --git a/netware/BUILD/mwldnlm b/netware/BUILD/mwldnlm
index 28566fc5cb1..cc8c9e63c6e 100755
--- a/netware/BUILD/mwldnlm
+++ b/netware/BUILD/mwldnlm
@@ -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'
diff --git a/sql-common/client.c b/sql-common/client.c
index 8c0420a27ba..83169db1a06 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -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;
diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc
index ea1100938d7..7fb5bf12016 100644
--- a/sql/ha_federated.cc
+++ b/sql/ha_federated.cc
@@ -1775,7 +1775,7 @@ int ha_federated::repair(THD* thd, HA_CHECK_OPT* check_opt)
it.
Keep in mind that the server can do updates based on ordering if an ORDER BY
- clause was used. Consecutive ordering is not guarenteed.
+ clause was used. Consecutive ordering is not guaranteed.
Currently new_data will not have an updated auto_increament record, or
and updated timestamp field. You can do these for federated by doing these:
if (table->timestamp_on_update_now)
@@ -1801,22 +1801,16 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
this.
*/
bool has_a_primary_key= test(table->s->primary_key != MAX_KEY);
- /*
+ /*
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),
- &my_charset_bin);
+ /* 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,
sizeof(update_buffer),
@@ -1826,11 +1820,10 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
sizeof(where_buffer),
&my_charset_bin);
DBUG_ENTER("ha_federated::update_row");
- /*
+ /*
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
*/
@@ -1854,21 +1847,22 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
{
if (bitmap_is_set(table->write_set, (*field)->field_index))
{
+ update_string.append((*field)->field_name);
+ update_string.append(FEDERATED_EQ);
+
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);
- update_string.append(FEDERATED_EQ);
- update_string.append(new_field_value);
update_string.append(FEDERATED_COMMA);
- new_field_value.length(0);
}
if (bitmap_is_set(table->read_set, (*field)->field_index))
@@ -1879,11 +1873,11 @@ int ha_federated::update_row(const byte *old_data, byte *new_data)
else
{
where_string.append(FEDERATED_EQ);
- (*field)->val_str(&old_field_value,
+ (*field)->val_str(&field_value,
(char*) (old_data + (*field)->offset()));
- (*field)->quote_data(&old_field_value);
- where_string.append(old_field_value);
- old_field_value.length(0);
+ (*field)->quote_data(&field_value);
+ where_string.append(field_value);
+ field_value.length(0);
}
where_string.append(FEDERATED_AND);
}
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index c9c12b154c4..9a3f43c7f05 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -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;
}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8ee64f8179c..fd7bc5a532e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -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)