summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <joreland@mysql.com>2005-02-24 20:57:32 +0100
committerunknown <joreland@mysql.com>2005-02-24 20:57:32 +0100
commit2f7fde4877b127e318b89ecf3ea9c5c9fefac86e (patch)
treea914f76139555e36611d008dfdd6ddd07fd463c0
parent1c2ea24efa893d197e1dee68f08d8ce4c7f992b3 (diff)
parentc7fefed4b88871b495bb893fcec8a9baabb2990c (diff)
downloadmariadb-git-2f7fde4877b127e318b89ecf3ea9c5c9fefac86e.tar.gz
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into mysql.com:/home/jonas/src/mysql-5.0-ndb sql/ha_ndbcluster.cc: Auto merged sql/sql_parse.cc: Auto merged
-rwxr-xr-xBuild-tools/Bootstrap2
-rw-r--r--VC++Files/libmysqld/libmysqld.dsp2
-rw-r--r--mysql-test/r/ndb_condition_pushdown.result16
-rw-r--r--mysql-test/r/sp.result9
-rw-r--r--mysql-test/t/ndb_condition_pushdown.test16
-rw-r--r--ndb/src/ndbapi/NdbDictionaryImpl.hpp13
-rw-r--r--ndb/src/ndbapi/NdbOperationInt.cpp20
-rw-r--r--ndb/src/ndbapi/NdbScanFilter.cpp4
-rw-r--r--sql/ha_ndbcluster.cc14
-rw-r--r--sql/mysqld.cc7
-rw-r--r--sql/protocol.cc4
-rw-r--r--sql/sql_map.cc3
-rw-r--r--sql/sql_parse.cc6
-rw-r--r--sql/sql_select.cc4
14 files changed, 83 insertions, 37 deletions
diff --git a/Build-tools/Bootstrap b/Build-tools/Bootstrap
index 8b769dca3c4..64f865362ca 100755
--- a/Build-tools/Bootstrap
+++ b/Build-tools/Bootstrap
@@ -278,7 +278,7 @@ if (defined $opt_changelog)
unless ($opt_skip_manual)
{
&logger("Updating manual files");
- foreach $file qw/internals manual reservedwords/
+ foreach $file qw/internals manual reservedwords errmsg-table cl-errmsg-table/
{
system ("bk cat $opt_docdir/Docs/$file.texi > $target_dir/Docs/$file.texi") == 0
or &abort("Could not update $file.texi in $target_dir/Docs/!");
diff --git a/VC++Files/libmysqld/libmysqld.dsp b/VC++Files/libmysqld/libmysqld.dsp
index bb31a8ada43..c5c40b07dfd 100644
--- a/VC++Files/libmysqld/libmysqld.dsp
+++ b/VC++Files/libmysqld/libmysqld.dsp
@@ -344,7 +344,7 @@ SOURCE=..\mysys\my_alloc.c
# End Source File
# Begin Source File
-SOURCE=..\mysys\my_decimal.cpp
+SOURCE=..\sql\my_decimal.cpp
# End Source File
# Begin Source File
diff --git a/mysql-test/r/ndb_condition_pushdown.result b/mysql-test/r/ndb_condition_pushdown.result
index ffa7ccfac10..6990e442899 100644
--- a/mysql-test/r/ndb_condition_pushdown.result
+++ b/mysql-test/r/ndb_condition_pushdown.result
@@ -235,13 +235,17 @@ auto
4
select auto from t1 where
string like "b%" and
-vstring like "b%"
+vstring like "b%" and
+bin like concat(0xBB, '%') and
+vbin like concat(0xBB, '%')
order by auto;
auto
2
select auto from t1 where
string not like "b%" and
-vstring not like "b%"
+vstring not like "b%" and
+bin not like concat(0xBB, '%') and
+vbin not like concat(0xBB, '%')
order by auto;
auto
1
@@ -637,13 +641,17 @@ auto
4
select auto from t1 where
string like "b%" and
-vstring like "b%"
+vstring like "b%" and
+bin like concat(0xBB, '%') and
+vbin like concat(0xBB, '%')
order by auto;
auto
2
select auto from t1 where
string not like "b%" and
-vstring not like "b%"
+vstring not like "b%" and
+bin not like concat(0xBB, '%') and
+vbin not like concat(0xBB, '%')
order by auto;
auto
1
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index f3a42d75258..f2b99b7074a 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -656,7 +656,6 @@ delete from t1|
drop table if exists t3|
create table t3 ( s char(16), d int)|
call into_test4()|
-Warnings:
select * from t3|
s d
into4 NULL
@@ -1344,9 +1343,7 @@ end if;
insert into t4 values (2, rc, t3);
end|
call bug1863(10)|
-Warnings:
call bug1863(10)|
-Warnings:
select * from t4|
f1 rc t3
2 0 NULL
@@ -1643,9 +1640,7 @@ begin
end|
call bug4579_1()|
call bug4579_1()|
-Warnings:
call bug4579_1()|
-Warnings:
drop procedure bug4579_1|
drop procedure bug4579_2|
drop table t3|
@@ -2118,12 +2113,16 @@ var
call bug7743("OneWord")|
var
NULL
+Warnings:
+Warning 1329 No data to FETCH
call bug7743("anotherword")|
var
2
call bug7743("AnotherWord")|
var
NULL
+Warnings:
+Warning 1329 No data to FETCH
drop procedure bug7743|
drop table t4|
delete from t3|
diff --git a/mysql-test/t/ndb_condition_pushdown.test b/mysql-test/t/ndb_condition_pushdown.test
index d2ff4a2b995..5fd9def3327 100644
--- a/mysql-test/t/ndb_condition_pushdown.test
+++ b/mysql-test/t/ndb_condition_pushdown.test
@@ -236,12 +236,16 @@ order by auto;
# Test LIKE/NOT LIKE
select auto from t1 where
string like "b%" and
-vstring like "b%"
+vstring like "b%" and
+bin like concat(0xBB, '%') and
+vbin like concat(0xBB, '%')
order by auto;
select auto from t1 where
string not like "b%" and
-vstring not like "b%"
+vstring not like "b%" and
+bin not like concat(0xBB, '%') and
+vbin not like concat(0xBB, '%')
order by auto;
# Various tests
@@ -586,12 +590,16 @@ order by auto;
# Test LIKE/NOT LIKE
select auto from t1 where
string like "b%" and
-vstring like "b%"
+vstring like "b%" and
+bin like concat(0xBB, '%') and
+vbin like concat(0xBB, '%')
order by auto;
select auto from t1 where
string not like "b%" and
-vstring not like "b%"
+vstring not like "b%" and
+bin not like concat(0xBB, '%') and
+vbin not like concat(0xBB, '%')
order by auto;
# Various tests
diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.hpp b/ndb/src/ndbapi/NdbDictionaryImpl.hpp
index b42c5416d83..59a5956715a 100644
--- a/ndb/src/ndbapi/NdbDictionaryImpl.hpp
+++ b/ndb/src/ndbapi/NdbDictionaryImpl.hpp
@@ -76,8 +76,10 @@ public:
Uint32 m_attrSize; // element size (size when arraySize==1)
Uint32 m_arraySize; // length or length+2 for Var* types
Uint32 m_keyInfoPos;
+ // TODO: use bits in attr desc 2
bool getInterpretableType() const ;
bool getCharType() const;
+ bool getStringType() const;
bool getBlobType() const;
/**
@@ -468,6 +470,17 @@ NdbColumnImpl::getCharType() const {
m_type == NdbDictionary::Column::Text ||
m_type == NdbDictionary::Column::Longvarchar);
}
+
+inline
+bool
+NdbColumnImpl::getStringType() const {
+ return (m_type == NdbDictionary::Column::Char ||
+ m_type == NdbDictionary::Column::Varchar ||
+ m_type == NdbDictionary::Column::Longvarchar ||
+ m_type == NdbDictionary::Column::Binary ||
+ m_type == NdbDictionary::Column::Varbinary ||
+ m_type == NdbDictionary::Column::Longvarbinary);
+}
inline
bool
diff --git a/ndb/src/ndbapi/NdbOperationInt.cpp b/ndb/src/ndbapi/NdbOperationInt.cpp
index 5b98f090395..acfc80b3b69 100644
--- a/ndb/src/ndbapi/NdbOperationInt.cpp
+++ b/ndb/src/ndbapi/NdbOperationInt.cpp
@@ -1014,8 +1014,14 @@ NdbOperation::branch_col(Uint32 type,
Uint32 ColId, const void * val, Uint32 len,
bool nopad, Uint32 Label){
+ DBUG_ENTER("NdbOperation::branch_col");
+ DBUG_PRINT("enter", ("type=%u col=%u val=0x%x len=%u label=%u",
+ type, ColId, val, len, Label));
+ if (val != NULL)
+ DBUG_DUMP("value", (char*)val, len);
+
if (initial_interpreterCheck() == -1)
- return -1;
+ DBUG_RETURN(-1);
Interpreter::BinaryCondition c = (Interpreter::BinaryCondition)type;
@@ -1029,26 +1035,26 @@ NdbOperation::branch_col(Uint32 type,
if (val == NULL)
len = 0;
else {
- if (! col->getCharType()) {
+ if (! col->getStringType()) {
// prevent assert in NdbSqlUtil on length error
Uint32 sizeInBytes = col->m_attrSize * col->m_arraySize;
if (len != 0 && len != sizeInBytes)
{
setErrorCodeAbort(4209);
- return -1;
+ DBUG_RETURN(-1);
}
len = sizeInBytes;
}
}
if (insertATTRINFO(Interpreter::BranchCol(c, 0, 0, false)) == -1)
- return -1;
+ DBUG_RETURN(-1);
if (insertBranch(Label) == -1)
- return -1;
+ DBUG_RETURN(-1);
if (insertATTRINFO(Interpreter::BranchCol_2(ColId, len)))
- return -1;
+ DBUG_RETURN(-1);
Uint32 len2 = Interpreter::mod4(len);
if(len2 == len){
@@ -1065,7 +1071,7 @@ NdbOperation::branch_col(Uint32 type,
}
theErrorLine++;
- return 0;
+ DBUG_RETURN(0);
}
int
diff --git a/ndb/src/ndbapi/NdbScanFilter.cpp b/ndb/src/ndbapi/NdbScanFilter.cpp
index bc3505d7abd..b39fd10fe95 100644
--- a/ndb/src/ndbapi/NdbScanFilter.cpp
+++ b/ndb/src/ndbapi/NdbScanFilter.cpp
@@ -405,8 +405,8 @@ NdbScanFilterImpl::cond_col_const(Interpreter::BinaryCondition op,
return -1;
}
- (m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel);
- return 0;
+ int ret = (m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel);
+ return ret;
}
int
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 7a0d55fb1f8..35bbeca9cc0 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -5697,8 +5697,11 @@ extern "C" pthread_handler_decl(ndb_util_thread_func,
continue;
}
+ /* Round tim e from millisceonds to seconds */
+ uint wait_secs= ((ndb_cache_check_time+999)/1000);
+ DBUG_PRINT("ndb_util_thread", ("wait_secs: %d", wait_secs));
/* Set new time to wake up */
- set_timespec(abstime, ndb_cache_check_time);
+ set_timespec(abstime, wait_secs);
/* Lock mutex and fill list with pointers to all open tables */
NDB_SHARE *share;
@@ -5707,7 +5710,6 @@ extern "C" pthread_handler_decl(ndb_util_thread_func,
{
share= (NDB_SHARE *)hash_element(&ndbcluster_open_tables, i);
share->use_count++; /* Make sure the table can't be closed */
-
DBUG_PRINT("ndb_util_thread",
("Found open table[%d]: %s, use_count: %d",
i, share->table_name, share->use_count));
@@ -6620,7 +6622,9 @@ ha_ndbcluster::build_scan_filter_predicate(Ndb_cond * &cond,
}
case(Item_func::LIKE_FUNC): {
if (!value || !field) break;
- if (value->qualification.value_type != Item::STRING_ITEM) break;
+ if ((value->qualification.value_type != Item::STRING_ITEM) &&
+ (value->qualification.value_type != Item::VARBIN_ITEM))
+ break;
// Save value in right format for the field type
value->save_in_field(field);
DBUG_PRINT("info", ("Generating LIKE filter: like(%d,%s,%d)",
@@ -6636,7 +6640,9 @@ ha_ndbcluster::build_scan_filter_predicate(Ndb_cond * &cond,
}
case(Item_func::NOTLIKE_FUNC): {
if (!value || !field) break;
- if (value->qualification.value_type != Item::STRING_ITEM) break;
+ if ((value->qualification.value_type != Item::STRING_ITEM) &&
+ (value->qualification.value_type != Item::VARBIN_ITEM))
+ break;
// Save value in right format for the field type
value->save_in_field(field);
DBUG_PRINT("info", ("Generating NOTLIKE filter: notlike(%d,%s,%d)",
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 7827affd3e6..bec82d4bc48 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -4691,10 +4691,9 @@ Disable with --skip-ndbcluster (will save memory).",
(gptr*) &opt_ndb_optimized_node_selection,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{ "ndb-cache-check-time", OPT_NDB_CACHE_CHECK_TIME,
- "A dedicated thread is created to update cached commit count value"
- " at the given interval.",
- (gptr*) &opt_ndb_cache_check_time, (gptr*) &opt_ndb_cache_check_time,
- 0, GET_ULONG, REQUIRED_ARG, 0, 0, LONG_TIMEOUT, 0, 1, 0},
+ "A dedicated thread is created to, at the given millisecons interval, invalidate the query cache if another MySQL server in the cluster has changed the data in the database.",
+ (gptr*) &opt_ndb_cache_check_time, (gptr*) &opt_ndb_cache_check_time, 0, GET_ULONG, REQUIRED_ARG,
+ 0, 0, LONG_TIMEOUT, 0, 1, 0},
#endif
{"new", 'n', "Use very new possible 'unsafe' functions.",
(gptr*) &global_system_variables.new_mode,
diff --git a/sql/protocol.cc b/sql/protocol.cc
index f31462ddad1..e14262fdbe0 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -359,7 +359,9 @@ send_eof(THD *thd, bool no_flush)
if (thd->client_capabilities & CLIENT_PROTOCOL_41)
{
uchar buff[5];
- uint tmp= min(thd->total_warn_count, 65535);
+ /* Don't send warn count during SP execution, as the warn_list
+ is cleared between substatements, and mysqltest gets confused */
+ uint tmp= (thd->spcont ? 0 : min(thd->total_warn_count, 65535));
buff[0]=254;
int2store(buff+1, tmp);
/*
diff --git a/sql/sql_map.cc b/sql/sql_map.cc
index e557840957e..4bb3482c7e6 100644
--- a/sql/sql_map.cc
+++ b/sql/sql_map.cc
@@ -19,9 +19,8 @@
#pragma implementation // gcc: Class implementation
#endif
-#include <sys/stat.h>
-
#include "mysql_priv.h"
+#include <sys/stat.h>
#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
#endif
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 1e22d7c9f83..d767a74ae8f 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -4189,6 +4189,12 @@ unsent_create_error:
thd->row_count_func= 0;
res= sp->execute_procedure(thd, &lex->value_list);
+ /* If warnings have been cleared, we have to clear total_warn_count
+ * too, otherwise the clients get confused.
+ */
+ if (thd->warn_list.is_empty())
+ thd->total_warn_count= 0;
+
thd->variables.select_limit= select_limit;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
sp_restore_security_context(thd, sp, &save_ctx);
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 4c494e85300..fe7f4fbd5d8 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -11418,8 +11418,8 @@ find_order_in_list(THD *thd, Item **ref_pointer_array, TABLE_LIST *tables,
in is field of view table => check that references on translation
table are same
*/
- ((*select_item)->type() == Item::Item::REF_ITEM &&
- view_ref->type() == Item::Item::REF_ITEM &&
+ ((*select_item)->type() == Item::REF_ITEM &&
+ view_ref->type() == Item::REF_ITEM &&
((Item_ref *) (*select_item))->ref ==
((Item_ref *) view_ref)->ref)))
/*