summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <knielsen@rt.int.sifira.dk>2006-07-04 12:08:58 +0200
committerunknown <knielsen@rt.int.sifira.dk>2006-07-04 12:08:58 +0200
commit520cd485395d058da51fbc89ed5ac2c75701920a (patch)
tree7f1051963c806c7b8e99a152c1969c44d6f2b7a7
parent3e085bd882a7283d43423c82d412ce276ff4ddcb (diff)
parentce3e4de964f656d2f35a953a88eea6e3ce20ca28 (diff)
downloadmariadb-git-520cd485395d058da51fbc89ed5ac2c75701920a.tar.gz
Merge mysqldev@production:my/mysql-5.0-release
into rt.int.sifira.dk:/usr/local/mysql/tmp-5.0 include/my_sys.h: Auto merged mysql-test/r/key.result: Auto merged mysql-test/t/key.test: Auto merged sql/table.cc: Auto merged sql/handler.h: Auto merged sql/sql_update.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged
-rw-r--r--VC++Files/sql/mysqld.vcproj4
-rw-r--r--include/my_sys.h2
-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_ndbcluster.cc3
-rw-r--r--sql/handler.h1
-rw-r--r--sql/item_cmpfunc.cc2
-rw-r--r--sql/sql_update.cc25
-rw-r--r--tests/Makefile.am6
11 files changed, 54 insertions, 11 deletions
diff --git a/VC++Files/sql/mysqld.vcproj b/VC++Files/sql/mysqld.vcproj
index c9675f3fd8a..36e1b1ea3ac 100644
--- a/VC++Files/sql/mysqld.vcproj
+++ b/VC++Files/sql/mysqld.vcproj
@@ -85,7 +85,7 @@
InlineFunctionExpansion="1"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="../bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
- PreprocessorDefinitions="__NT__;NDEBUG;DBUG_OFF;USE_SYMDIR;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
+ PreprocessorDefinitions="USE_SYMDIR;NDEBUG;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
@@ -145,7 +145,7 @@
InlineFunctionExpansion="1"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="../bdb/build_win32,../include,../regex,../extra/yassl/include,../zlib"
- PreprocessorDefinitions="NDEBUG;__NT__;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
+ PreprocessorDefinitions="__NT__;NDEBUG;DBUG_OFF;HAVE_INNOBASE_DB;HAVE_BERKELEY_DB;HAVE_ARCHIVE_DB;HAVE_BLACKHOLE_DB;HAVE_EXAMPLE_DB;HAVE_FEDERATED_DB;MYSQL_SERVER;_WINDOWS;_CONSOLE;HAVE_DLOPEN"
StringPooling="TRUE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
diff --git a/include/my_sys.h b/include/my_sys.h
index b00b59c4779..9b283ace029 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -597,7 +597,7 @@ extern gptr _my_memdup(const byte *from,uint length,
const char *sFile, uint uLine,myf MyFlag);
extern my_string _my_strdup(const char *from, const char *sFile, uint uLine,
myf MyFlag);
-extern char *_my_strdup_with_length(const byte *from, uint length,
+extern char *_my_strdup_with_length(const char *from, uint length,
const char *sFile, uint uLine,
myf MyFlag);
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 56a5862c90e..31e85475f08 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -1514,6 +1514,7 @@ mysql_ssl_set(MYSQL *mysql __attribute__((unused)) ,
*/
#ifdef HAVE_OPENSSL
+
static void
mysql_ssl_free(MYSQL *mysql __attribute__((unused)))
{
@@ -1538,6 +1539,7 @@ mysql_ssl_free(MYSQL *mysql __attribute__((unused)))
DBUG_VOID_RETURN;
}
+#endif /* HAVE_OPENSSL */
/*
Return the SSL cipher (if any) used for current
@@ -1553,8 +1555,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);
}
@@ -1573,6 +1577,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_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 18c220f3f88..f539b83276e 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -4584,7 +4584,8 @@ ha_ndbcluster::ha_ndbcluster(TABLE *table_arg):
HA_NO_PREFIX_CHAR_KEYS |
HA_NEED_READ_RANGE_BUFFER |
HA_CAN_GEOMETRY |
- HA_CAN_BIT_FIELD),
+ HA_CAN_BIT_FIELD |
+ HA_PARTIAL_COLUMN_READ),
m_share(0),
m_use_write(FALSE),
m_ignore_dup_key(FALSE),
diff --git a/sql/handler.h b/sql/handler.h
index 6efb6e9e470..d6ffcb0e1d3 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -57,6 +57,7 @@
see mi_rsame/heap_rsame/myrg_rsame
*/
#define HA_READ_RND_SAME (1 << 0)
+#define HA_PARTIAL_COLUMN_READ (1 << 1) /* read may not return all columns */
#define HA_TABLE_SCAN_ON_INDEX (1 << 2) /* No separate data/index file */
#define HA_REC_NOT_IN_SEQ (1 << 3) /* ha_info don't return recnumber;
It returns a position to ha_r_rnd */
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index ffacddd534a..98453899375 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -3303,7 +3303,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/sql/sql_update.cc b/sql/sql_update.cc
index c2b7624c9e7..5237b3a1c05 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -120,6 +120,7 @@ int mysql_update(THD *thd,
bool using_limit= limit != HA_POS_ERROR;
bool safe_update= thd->options & OPTION_SAFE_UPDATES;
bool used_key_is_modified, transactional_table;
+ bool can_compare_record;
int res;
int error;
uint used_index= MAX_KEY;
@@ -433,6 +434,13 @@ int mysql_update(THD *thd,
(MODE_STRICT_TRANS_TABLES |
MODE_STRICT_ALL_TABLES)));
+ /*
+ We can use compare_record() to optimize away updates if
+ the table handler is returning all columns
+ */
+ can_compare_record= !(table->file->table_flags() &
+ HA_PARTIAL_COLUMN_READ);
+
while (!(error=info.read_record(&info)) && !thd->killed)
{
if (!(select && select->skip_record()))
@@ -445,7 +453,7 @@ int mysql_update(THD *thd,
found++;
- if (compare_record(table, query_id))
+ if (!can_compare_record || compare_record(table, query_id))
{
if ((res= table_list->view_check_option(thd, ignore)) !=
VIEW_CHECK_OK)
@@ -1248,8 +1256,15 @@ bool multi_update::send_data(List<Item> &not_used_values)
uint offset= cur_table->shared;
table->file->position(table->record[0]);
+ /*
+ We can use compare_record() to optimize away updates if
+ the table handler is returning all columns
+ */
if (table == table_to_update)
{
+ bool can_compare_record;
+ can_compare_record= !(table->file->table_flags() &
+ HA_PARTIAL_COLUMN_READ);
table->status|= STATUS_UPDATED;
store_record(table,record[1]);
if (fill_record_n_invoke_before_triggers(thd, *fields_for_table[offset],
@@ -1259,7 +1274,7 @@ bool multi_update::send_data(List<Item> &not_used_values)
DBUG_RETURN(1);
found++;
- if (compare_record(table, thd->query_id))
+ if (!can_compare_record || compare_record(table, thd->query_id))
{
int error;
if ((error= cur_table->view_check_option(thd, ignore)) !=
@@ -1376,6 +1391,7 @@ int multi_update::do_updates(bool from_send_error)
for (cur_table= update_tables; cur_table; cur_table= cur_table->next_local)
{
byte *ref_pos;
+ bool can_compare_record;
table = cur_table->table;
if (table == table_to_update)
@@ -1402,6 +1418,9 @@ int multi_update::do_updates(bool from_send_error)
if ((local_error = tmp_table->file->ha_rnd_init(1)))
goto err;
+ can_compare_record= !(table->file->table_flags() &
+ HA_PARTIAL_COLUMN_READ);
+
ref_pos= (byte*) tmp_table->field[0]->ptr;
for (;;)
{
@@ -1431,7 +1450,7 @@ int multi_update::do_updates(bool from_send_error)
TRG_ACTION_BEFORE, TRUE))
goto err2;
- if (compare_record(table, thd->query_id))
+ if (!can_compare_record || compare_record(table, thd->query_id))
{
if ((local_error=table->file->update_row(table->record[1],
table->record[0])))
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ebe97393045..ab747d6e4ec 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -42,8 +42,14 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
LIBS = @CLIENT_LIBS@
LDADD = @CLIENT_EXTRA_LDFLAGS@ \
$(top_builddir)/libmysql/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)