diff options
author | unknown <joreland@mysql.com> | 2005-02-24 20:57:32 +0100 |
---|---|---|
committer | unknown <joreland@mysql.com> | 2005-02-24 20:57:32 +0100 |
commit | 2f7fde4877b127e318b89ecf3ea9c5c9fefac86e (patch) | |
tree | a914f76139555e36611d008dfdd6ddd07fd463c0 | |
parent | 1c2ea24efa893d197e1dee68f08d8ce4c7f992b3 (diff) | |
parent | c7fefed4b88871b495bb893fcec8a9baabb2990c (diff) | |
download | mariadb-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-x | Build-tools/Bootstrap | 2 | ||||
-rw-r--r-- | VC++Files/libmysqld/libmysqld.dsp | 2 | ||||
-rw-r--r-- | mysql-test/r/ndb_condition_pushdown.result | 16 | ||||
-rw-r--r-- | mysql-test/r/sp.result | 9 | ||||
-rw-r--r-- | mysql-test/t/ndb_condition_pushdown.test | 16 | ||||
-rw-r--r-- | ndb/src/ndbapi/NdbDictionaryImpl.hpp | 13 | ||||
-rw-r--r-- | ndb/src/ndbapi/NdbOperationInt.cpp | 20 | ||||
-rw-r--r-- | ndb/src/ndbapi/NdbScanFilter.cpp | 4 | ||||
-rw-r--r-- | sql/ha_ndbcluster.cc | 14 | ||||
-rw-r--r-- | sql/mysqld.cc | 7 | ||||
-rw-r--r-- | sql/protocol.cc | 4 | ||||
-rw-r--r-- | sql/sql_map.cc | 3 | ||||
-rw-r--r-- | sql/sql_parse.cc | 6 | ||||
-rw-r--r-- | sql/sql_select.cc | 4 |
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))) /* |