diff --git a/configure.in b/configure.in index 08b739c5782..d7a081ed6c5 100644 --- a/configure.in +++ b/configure.in @@ -2273,7 +2273,7 @@ AC_ARG_WITH([mysqlmanager], [if test "x${withval}" != "xno"; then tools_dirs="$tools_dirs server-tools" fi], - [if test "x${with_server}" == "xyes"; then + [if test "x${with_server}" = "xyes"; then tools_dirs="$tools_dirs server-tools" fi] ) diff --git a/extra/yassl/include/lock.hpp b/extra/yassl/include/lock.hpp index 11a623879d4..f5231528821 100644 --- a/extra/yassl/include/lock.hpp +++ b/extra/yassl/include/lock.hpp @@ -31,7 +31,7 @@ namespace yaSSL { #ifdef MULTI_THREADED - #ifdef WIN32 + #ifdef _WIN32 #include class Mutex { @@ -50,7 +50,7 @@ namespace yaSSL { ~Lock(); }; }; - #else // WIN32 + #else // _WIN32 #include class Mutex { @@ -71,7 +71,7 @@ namespace yaSSL { }; }; - #endif // WIN32 + #endif // _WIN32 #else // MULTI_THREADED (WE'RE SINGLE) class Mutex { diff --git a/extra/yassl/include/socket_wrapper.hpp b/extra/yassl/include/socket_wrapper.hpp index a103cca1b37..38a9ce3bd25 100644 --- a/extra/yassl/include/socket_wrapper.hpp +++ b/extra/yassl/include/socket_wrapper.hpp @@ -31,7 +31,7 @@ #include -#ifdef WIN32 +#ifdef _WIN32 #include #else #include @@ -47,7 +47,7 @@ namespace yaSSL { typedef unsigned int uint; -#ifdef WIN32 +#ifdef _WIN32 typedef SOCKET socket_t; #else typedef int socket_t; diff --git a/extra/yassl/mySTL/helpers.hpp b/extra/yassl/mySTL/helpers.hpp index 5f9b4beaa40..8d2061fc4f1 100644 --- a/extra/yassl/mySTL/helpers.hpp +++ b/extra/yassl/mySTL/helpers.hpp @@ -31,32 +31,39 @@ #include // placement new + #ifdef __IBMCPP__ /* - Workaround for the lack of operator new(size_t, void*) - in IBM VA C++ 6.0 + Workaround for the lack of operator new(size_t, void*) + in IBM VA C++ 6.0 */ -struct Dummy {}; -inline void *operator new(size_t size, Dummy *d) { return (void*) d; } -typedef Dummy *yassl_pointer; + struct Dummy {}; + + inline void* operator new(size_t size, Dummy* d) + { + return static_cast(d); + } + + typedef Dummy* yassl_pointer; #else -typedef void *yassl_pointer; + typedef void* yassl_pointer; #endif + namespace mySTL { template inline void construct(T* p, const T2& value) { - new ((yassl_pointer) p) T(value); + new (reinterpret_cast(p)) T(value); } template inline void construct(T* p) { - new (static_cast(p)) T(); + new (reinterpret_cast(p)) T(); } diff --git a/extra/yassl/src/lock.cpp b/extra/yassl/src/lock.cpp index b8f6212ad3f..8a0b66ead42 100644 --- a/extra/yassl/src/lock.cpp +++ b/extra/yassl/src/lock.cpp @@ -29,7 +29,7 @@ namespace yaSSL { #ifdef MULTI_THREADED - #ifdef WIN32 + #ifdef _WIN32 Mutex::Mutex() { @@ -54,7 +54,7 @@ namespace yaSSL { LeaveCriticalSection(&mutex_.cs_); } - #else // WIN32 + #else // _WIN32 Mutex::Mutex() { @@ -80,7 +80,7 @@ namespace yaSSL { } - #endif // WIN32 + #endif // _WIN32 #endif // MULTI_THREADED diff --git a/extra/yassl/src/log.cpp b/extra/yassl/src/log.cpp index 538b80b8280..38633cd1210 100644 --- a/extra/yassl/src/log.cpp +++ b/extra/yassl/src/log.cpp @@ -78,8 +78,8 @@ namespace yaSSL { } - #if defined(WIN32) || defined(__MACH__) || defined(__hpux__) - typedef int socklen_t; + #if defined(_WIN32) || defined(__MACH__) || defined(__hpux__) + typedef int socklen_t; #endif diff --git a/extra/yassl/src/socket_wrapper.cpp b/extra/yassl/src/socket_wrapper.cpp index 1be6a715980..00f9c8d170c 100644 --- a/extra/yassl/src/socket_wrapper.cpp +++ b/extra/yassl/src/socket_wrapper.cpp @@ -28,7 +28,7 @@ #include "socket_wrapper.hpp" -#ifndef WIN32 +#ifndef _WIN32 #include #include #include @@ -36,19 +36,19 @@ #include #include #include -#endif // WIN32 +#endif // _WIN32 #ifdef __sun #include #endif -#ifdef WIN32 +#ifdef _WIN32 const int SOCKET_EINVAL = WSAEINVAL; const int SOCKET_EWOULDBLOCK = WSAEWOULDBLOCK; #else const int SOCKET_EINVAL = EINVAL; const int SOCKET_EWOULDBLOCK = EWOULDBLOCK; -#endif // WIN32 +#endif // _WIN32 namespace yaSSL { @@ -80,7 +80,7 @@ Socket::~Socket() void Socket::closeSocket() { if (socket_ != INVALID_SOCKET) { -#ifdef WIN32 +#ifdef _WIN32 closesocket(socket_); #else close(socket_); @@ -94,7 +94,7 @@ uint Socket::get_ready() const { unsigned long ready = 0; -#ifdef WIN32 +#ifdef _WIN32 ioctlsocket(socket_, FIONREAD, &ready); #else ioctl(socket_, FIONREAD, &ready); @@ -145,7 +145,7 @@ void Socket::shutDown(int how) int Socket::get_lastError() { -#ifdef WIN32 +#ifdef _WIN32 return WSAGetLastError(); #else return errno; @@ -155,7 +155,7 @@ int Socket::get_lastError() void Socket::set_lastError(int errorCode) { -#ifdef WIN32 +#ifdef _WIN32 WSASetLastError(errorCode); #else errno = errorCode; diff --git a/extra/yassl/src/ssl.cpp b/extra/yassl/src/ssl.cpp index a82afcd4aad..d37c44049b2 100644 --- a/extra/yassl/src/ssl.cpp +++ b/extra/yassl/src/ssl.cpp @@ -32,11 +32,11 @@ /* see man pages for function descriptions */ +#include "runtime.hpp" #include "openssl/ssl.h" #include "handshake.hpp" #include "yassl_int.hpp" #include -#include "runtime.hpp" namespace yaSSL { diff --git a/extra/yassl/src/timer.cpp b/extra/yassl/src/timer.cpp index 547c31205c6..cfa1319ae80 100644 --- a/extra/yassl/src/timer.cpp +++ b/extra/yassl/src/timer.cpp @@ -27,7 +27,7 @@ namespace yaSSL { -#ifdef WIN32 +#ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include @@ -54,7 +54,7 @@ namespace yaSSL { return static_cast(timer()); } -#else // WIN32 +#else // _WIN32 #include @@ -77,5 +77,5 @@ namespace yaSSL { } -#endif // WIN32 +#endif // _WIN32 } // namespace yaSSL diff --git a/extra/yassl/taocrypt/include/misc.hpp b/extra/yassl/taocrypt/include/misc.hpp index 812cdd93879..187d5cc6769 100644 --- a/extra/yassl/taocrypt/include/misc.hpp +++ b/extra/yassl/taocrypt/include/misc.hpp @@ -30,15 +30,10 @@ #include "types.hpp" #include "type_traits.hpp" -/* -namespace GCC_ABI { - extern "C" int __cxa_pure_virtual(); -} */ + namespace TaoCrypt { -// using GCC_ABI::__cxa_pure_virtual; - // library allocation struct new_t {}; // TaoCrypt New type extern new_t tc; // pass in parameter @@ -75,7 +70,7 @@ void tcArrayDelete(T* ptr) // to resolve compiler generated operator delete on base classes with -// virtual destructors, make sure doesn't get called +// virtual destructors (when on stack), make sure doesn't get called class virtual_base { public: static void operator delete(void*) { assert(0); } @@ -742,8 +737,6 @@ unsigned int BytePrecision(unsigned long value); unsigned int BitPrecision(unsigned long); unsigned long Crop(unsigned long value, unsigned int size); -void CallNewHandler(); - } // namespace diff --git a/extra/yassl/taocrypt/include/random.hpp b/extra/yassl/taocrypt/include/random.hpp index 5fdda8da47a..62f49a8716f 100644 --- a/extra/yassl/taocrypt/include/random.hpp +++ b/extra/yassl/taocrypt/include/random.hpp @@ -42,7 +42,7 @@ public: void GenerateSeed(byte*, word32 sz); Error GetError() const { return error_; } private: -#if defined(WIN32) +#if defined(_WIN32) #if defined(_WIN64) typedef unsigned __int64 ProviderHandle; // type HCRYPTPROV, avoid #include diff --git a/extra/yassl/taocrypt/include/types.hpp b/extra/yassl/taocrypt/include/types.hpp index 9c5d3e4b194..d497d45e1da 100644 --- a/extra/yassl/taocrypt/include/types.hpp +++ b/extra/yassl/taocrypt/include/types.hpp @@ -80,16 +80,14 @@ typedef unsigned int word32; #else #define TAOCRYPT_NATIVE_DWORD_AVAILABLE #ifdef WORD64_AVAILABLE - #define TAOCRYPT_SLOW_WORD64 - // define this if your CPU is not64-bit to use alternative code - // that avoids word64 - typedef word16 hword; - typedef word32 word; - typedef word64 dword; + #define TAOCRYPT_SLOW_WORD64 + typedef word16 hword; + typedef word32 word; + typedef word64 dword; #else - typedef byte hword; - typedef word16 word; - typedef word32 dword; + typedef byte hword; + typedef word16 word; + typedef word32 dword; #endif #endif diff --git a/extra/yassl/taocrypt/src/asn.cpp b/extra/yassl/taocrypt/src/asn.cpp index 720fe7cd532..8f8d2ba52da 100644 --- a/extra/yassl/taocrypt/src/asn.cpp +++ b/extra/yassl/taocrypt/src/asn.cpp @@ -22,7 +22,6 @@ /* asn.cpp implements ASN1 BER, PublicKey, and x509v3 decoding */ - #include "runtime.hpp" #include "asn.hpp" #include "file.hpp" diff --git a/extra/yassl/taocrypt/src/integer.cpp b/extra/yassl/taocrypt/src/integer.cpp index 0f06b9805dd..ebfefb027b3 100644 --- a/extra/yassl/taocrypt/src/integer.cpp +++ b/extra/yassl/taocrypt/src/integer.cpp @@ -23,6 +23,7 @@ /* based on Wei Dai's integer.cpp from CryptoPP */ +#include "runtime.hpp" #include "integer.hpp" #include "modarith.hpp" #include "asn.hpp" @@ -34,6 +35,21 @@ #endif +#if defined(_MSC_VER) && defined(_WIN64) // 64 bit X overflow intrinsic + #ifdef __ia64__ + #define myUMULH __UMULH + #elif __x86_64__ + #define myUMULH __umulh + #else + #error unknown 64bit windows + #endif + +extern "C" word myUMULH(word, word); + +#pragma intrinsic (myUMULH) +#endif + + #ifdef SSE2_INTRINSICS_AVAILABLE #ifdef __GNUC__ #include @@ -73,16 +89,15 @@ CPP_TYPENAME AllocatorBase::pointer AlignedAllocator::allocate( { void* p; #ifdef TAOCRYPT_MM_MALLOC_AVAILABLE - while (!(p = _mm_malloc(sizeof(T)*n, 16))) + p = _mm_malloc(sizeof(T)*n, 16); #elif defined(TAOCRYPT_MEMALIGN_AVAILABLE) - while (!(p = memalign(16, sizeof(T)*n))) + p = memalign(16, sizeof(T)*n); #elif defined(TAOCRYPT_MALLOC_ALIGNMENT_IS_16) - while (!(p = malloc(sizeof(T)*n))) + p = malloc(sizeof(T)*n); #else - while (!(p = (byte *)malloc(sizeof(T)*n + 8))) + p = (byte *)malloc(sizeof(T)*n + 8); // assume malloc alignment is at least 8 #endif - CallNewHandler(); #ifdef TAOCRYPT_NO_ALIGNED_ALLOC assert(m_pBlock == 0); @@ -156,8 +171,14 @@ DWord() {} static DWord Multiply(word a, word b) { DWord r; + #ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE r.whole_ = (dword)a * b; + + #elif defined(_MSC_VER) + r.halfs_.low = a*b; + r.halfs_.high = myUMULH(a,b); + #elif defined(__alpha__) r.halfs_.low = a*b; #ifdef __GNUC__ @@ -166,22 +187,27 @@ DWord() {} #elif defined(__DECCXX) r.halfs_.high = asm("umulh %a0, %a1, %v0", a, b); #else - #error can not implement multiply overflow + #error unknown alpha compiler #endif + #elif defined(__ia64__) r.halfs_.low = a*b; __asm__("xmpy.hu %0=%1,%2" : "=f" (r.halfs_.high) : "f" (a), "f" (b)); + #elif defined(_ARCH_PPC64) r.halfs_.low = a*b; __asm__("mulhdu %0,%1,%2" : "=r" (r.halfs_.high) : "r" (a), "r" (b) : "cc"); + #elif defined(__x86_64__) __asm__("mulq %3" : "=d" (r.halfs_.high), "=a" (r.halfs_.low) : "a" (a), "rm" (b) : "cc"); + #elif defined(__mips64) __asm__("dmultu %2,%3" : "=h" (r.halfs_.high), "=l" (r.halfs_.low) : "r" (a), "r" (b)); + #elif defined(_M_IX86) // for testing word64 t = (word64)a * b; @@ -190,6 +216,7 @@ DWord() {} #else #error can not implement DWord #endif + return r; } @@ -3936,5 +3963,6 @@ template hword DivideThreeWordsByTwo(hword*, hword, hword, Word*); template word DivideThreeWordsByTwo(word*, word, word, DWord*); #endif + } // namespace diff --git a/extra/yassl/taocrypt/src/misc.cpp b/extra/yassl/taocrypt/src/misc.cpp index 3ec4502ed57..6a801a9995a 100644 --- a/extra/yassl/taocrypt/src/misc.cpp +++ b/extra/yassl/taocrypt/src/misc.cpp @@ -64,10 +64,6 @@ void* operator new[](size_t sz); void operator delete[](void* ptr); */ -/* namespace GCC_ABI { - extern "C" int __cxa_pure_virtual() { assert(0); return 0; } -} */ - namespace TaoCrypt { @@ -135,17 +131,5 @@ unsigned long Crop(unsigned long value, unsigned int size) } -#if !(defined(_MSC_VER) && (_MSC_VER < 1300)) && \ - !(defined(__HP_aCC) && (__HP_aCC <= 36300)) -using std::new_handler; -using std::set_new_handler; -#endif - -void CallNewHandler() -{ - abort(); -} - - } // namespace diff --git a/extra/yassl/taocrypt/src/random.cpp b/extra/yassl/taocrypt/src/random.cpp index 921e710540d..69fb180720a 100644 --- a/extra/yassl/taocrypt/src/random.cpp +++ b/extra/yassl/taocrypt/src/random.cpp @@ -26,7 +26,7 @@ #include "random.hpp" -#if defined(WIN32) +#if defined(_WIN32) #define _WIN32_WINNT 0x0400 #include #include @@ -34,7 +34,7 @@ #include #include #include -#endif // WIN32 +#endif // _WIN32 namespace TaoCrypt { @@ -64,7 +64,7 @@ byte RandomNumberGenerator::GenerateByte() } -#if defined(WIN32) +#if defined(_WIN32) OS_Seed::OS_Seed() { @@ -87,7 +87,7 @@ void OS_Seed::GenerateSeed(byte* output, word32 sz) } -#else // WIN32 +#else // _WIN32 OS_Seed::OS_Seed() @@ -122,7 +122,7 @@ void OS_Seed::GenerateSeed(byte* output, word32 sz) } } -#endif // WIN32 +#endif // _WIN32 diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 38eb1d6a3ae..c6090bc663d 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -823,3 +823,15 @@ GRANT SELECT ON *.* TO 'user4'@'localhost' drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost; use test; drop database mysqltest; +create procedure p1 () modifies sql data set @a = 5; +create procedure p2 () set @a = 5; +select sql_data_access from information_schema.routines +where specific_name like 'p%'; +sql_data_access +MODIFIES SQL DATA +CONTAINS SQL +drop procedure p1; +drop procedure p2; +show create database information_schema; +Database Create Database +information_schema CREATE DATABASE `information_schema` /*!40100 DEFAULT CHARACTER SET utf8 */ diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 1c0321ac658..bd2825822a1 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -2699,3 +2699,6 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where DROP TABLE t1,t2; +select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0; +x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0 +16 16 2 2 diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 7302b3e5e58..e03bea5899a 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -542,3 +542,18 @@ connection default; drop user user1@localhost, user2@localhost, user3@localhost, user4@localhost; use test; drop database mysqltest; + +# +# Bug #11055 information_schema: routines.sql_data_access has wrong value +# +create procedure p1 () modifies sql data set @a = 5; +create procedure p2 () set @a = 5; +select sql_data_access from information_schema.routines +where specific_name like 'p%'; +drop procedure p1; +drop procedure p2; + +# +# Bug #9434 SHOW CREATE DATABASE information_schema; +# +show create database information_schema; diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 372325c4cbd..2558a3aeaeb 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -2271,3 +2271,8 @@ EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a; DROP TABLE t1,t2; +# +# Bug #10650 +# + +select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0; diff --git a/mysys/charset.c b/mysys/charset.c index 534a6aa998e..cbd9ba16b4c 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -97,7 +97,7 @@ static my_bool init_state_maps(CHARSET_INFO *cs) /* Special handling of hex and binary strings */ state_map[(uchar)'x']= state_map[(uchar)'X']= (uchar) MY_LEX_IDENT_OR_HEX; - state_map[(uchar)'b']= state_map[(uchar)'b']= (uchar) MY_LEX_IDENT_OR_BIN; + state_map[(uchar)'b']= state_map[(uchar)'B']= (uchar) MY_LEX_IDENT_OR_BIN; state_map[(uchar)'n']= state_map[(uchar)'N']= (uchar) MY_LEX_IDENT_OR_NCHAR; return 0; } diff --git a/ndb/src/common/mgmcommon/ConfigRetriever.cpp b/ndb/src/common/mgmcommon/ConfigRetriever.cpp index 648f3b4a52c..eca886c8586 100644 --- a/ndb/src/common/mgmcommon/ConfigRetriever.cpp +++ b/ndb/src/common/mgmcommon/ConfigRetriever.cpp @@ -139,8 +139,6 @@ ConfigRetriever::getConfig(NdbMgmHandle m_handle){ return 0; } - ndb_mgm_disconnect(m_handle); - return conf; } diff --git a/ndb/src/common/transporter/TransporterRegistry.cpp b/ndb/src/common/transporter/TransporterRegistry.cpp index e636766560b..3776bce7452 100644 --- a/ndb/src/common/transporter/TransporterRegistry.cpp +++ b/ndb/src/common/transporter/TransporterRegistry.cpp @@ -1208,7 +1208,7 @@ TransporterRegistry::report_connect(NodeId node_id) void TransporterRegistry::report_disconnect(NodeId node_id, int errnum) { - DBUG_ENTER("TransporterRegistry::report_connect"); + DBUG_ENTER("TransporterRegistry::report_disconnect"); DBUG_PRINT("info",("performStates[%d]=DISCONNECTED",node_id)); performStates[node_id] = DISCONNECTED; reportDisconnect(callbackObj, node_id, errnum); diff --git a/ndb/src/kernel/main.cpp b/ndb/src/kernel/main.cpp index 543757153d3..f679646e14a 100644 --- a/ndb/src/kernel/main.cpp +++ b/ndb/src/kernel/main.cpp @@ -101,6 +101,12 @@ int main(int argc, char** argv) */ catchsigs(true); + /** + * We no longer need the mgm connection in this process + * (as we are the angel, not ndb) + */ + theConfig->closeConfiguration(); + int status = 0; while(waitpid(child, &status, 0) != child); if(WIFEXITED(status)){ diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 8af416f0ce8..052873640c6 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -114,6 +114,14 @@ enum enum_sp_data_access SP_MODIFIES_SQL_DATA }; +const LEX_STRING sp_data_access_name[]= +{ + { (char*) STRING_WITH_LEN("") }, + { (char*) STRING_WITH_LEN("CONTAINS SQL") }, + { (char*) STRING_WITH_LEN("NO SQL") }, + { (char*) STRING_WITH_LEN("READS SQL DATA") }, + { (char*) STRING_WITH_LEN("MODIFIES SQL DATA") } +}; #define DERIVED_SUBQUERY 1 #define DERIVED_VIEW 2 diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 68c6d1a8030..aaa34dc4cb7 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -448,25 +448,32 @@ bool mysqld_show_create_db(THD *thd, char *dbname, DBUG_RETURN(TRUE); } #endif - - (void) sprintf(path,"%s/%s",mysql_data_home, dbname); - length=unpack_dirname(path,path); // Convert if not unix - found_libchar= 0; - if (length && path[length-1] == FN_LIBCHAR) + if (!my_strcasecmp(system_charset_info, dbname, + information_schema_name.str)) { - found_libchar= 1; - path[length-1]=0; // remove ending '\' + dbname= information_schema_name.str; + create.default_table_charset= system_charset_info; } - if (access(path,F_OK)) + else { - my_error(ER_BAD_DB_ERROR, MYF(0), dbname); - DBUG_RETURN(TRUE); + (void) sprintf(path,"%s/%s",mysql_data_home, dbname); + length=unpack_dirname(path,path); // Convert if not unix + found_libchar= 0; + if (length && path[length-1] == FN_LIBCHAR) + { + found_libchar= 1; + path[length-1]=0; // remove ending '\' + } + if (access(path,F_OK)) + { + my_error(ER_BAD_DB_ERROR, MYF(0), dbname); + DBUG_RETURN(TRUE); + } + if (found_libchar) + path[length-1]= FN_LIBCHAR; + strmov(path+length, MY_DB_OPT_FILE); + load_db_opt(thd, path, &create); } - if (found_libchar) - path[length-1]= FN_LIBCHAR; - strmov(path+length, MY_DB_OPT_FILE); - load_db_opt(thd, path, &create); - List field_list; field_list.push_back(new Item_empty_string("Database",NAME_LEN)); field_list.push_back(new Item_empty_string("Create Database",1024)); @@ -2645,6 +2652,7 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, restore_record(table, s->default_values); if (!wild || !wild[0] || !wild_compare(sp_name, wild, 0)) { + int enum_idx= proc_table->field[5]->val_int(); table->field[3]->store(sp_name, strlen(sp_name), cs); get_field(thd->mem_root, proc_table->field[3], &tmp_string); table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs); @@ -2666,10 +2674,8 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, table->field[10]->store("SQL", 3, cs); get_field(thd->mem_root, proc_table->field[6], &tmp_string); table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs); - if (proc_table->field[5]->val_int() == SP_CONTAINS_SQL) - { - table->field[12]->store("CONTAINS SQL", 12 , cs); - } + table->field[12]->store(sp_data_access_name[enum_idx].str, + sp_data_access_name[enum_idx].length , cs); get_field(thd->mem_root, proc_table->field[7], &tmp_string); table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs); bzero((char *)&time, sizeof(time)); diff --git a/sql/structs.h b/sql/structs.h index 8f053f20776..03176b47360 100644 --- a/sql/structs.h +++ b/sql/structs.h @@ -20,6 +20,8 @@ struct st_table; class Field; +#define STRING_WITH_LEN(X) X, (sizeof(X)-1) + typedef struct st_lex_string { char *str;