diff --git a/dbcon/mysql/ha_calpont_impl.cpp b/dbcon/mysql/ha_calpont_impl.cpp index 1202ad241..d87fc135e 100755 --- a/dbcon/mysql/ha_calpont_impl.cpp +++ b/dbcon/mysql/ha_calpont_impl.cpp @@ -20,6 +20,7 @@ * $Id: ha_calpont_impl.cpp 9642 2013-06-24 14:57:42Z rdempsey $ */ +//#define DEBUG_WALK_COND #include #ifndef _MSC_VER #include @@ -2294,6 +2295,70 @@ void calgetversion_deinit(UDF_INIT* initid) { } +#ifdef _MSC_VER +__declspec(dllexport) +#endif +const char* calgetsqlcount(UDF_INIT* initid, UDF_ARGS* args, + char* result, unsigned long* length, + char* is_null, char* error) +{ + sm::cpsm_conhdl_t* hndl; + THD* thd = current_thd; + if (!thd->infinidb_vtable.cal_conn_info) + thd->infinidb_vtable.cal_conn_info = (void*)(new cal_connection_info()); + cal_connection_info* ci = reinterpret_cast(thd->infinidb_vtable.cal_conn_info); + idbassert(ci != 0); + + MessageQueueClient* mqc = 0; + mqc = new MessageQueueClient("ExeMgr1"); + + ByteStream msg; + ByteStream::quadbyte runningSql, waitingSql; + ByteStream::quadbyte qb = 5; + msg << qb; + mqc->write(msg); + + //get ExeMgr response + msg.restart(); + msg = mqc->read(); + if (msg.length() == 0) + { + memcpy(result, "Lost connection to ExeMgr", *length); + return result; + } + msg >> runningSql; + msg >> waitingSql; + delete mqc; + + char ans[128]; + sprintf(ans, "Running SQL statements %d, Waiting SQL statments %d", runningSql, waitingSql); + *length = strlen(ans); + memcpy(result, ans, *length); + return result; +} + +#ifdef _MSC_VER +__declspec(dllexport) +#endif +my_bool calgetsqlcount_init(UDF_INIT* initid, UDF_ARGS* args, char* message) +{ + if (args->arg_count != 0) + { + strcpy(message,"CALGETSQLCOUNT() takes no arguments"); + return 1; + } + + return 0; +} + +#ifdef _MSC_VER +__declspec(dllexport) +#endif +void calgetsqlcount_deinit(UDF_INIT* initid) +{ +} + + } //extern "C" int ha_calpont_impl_open(const char *name, int mode, uint32_t test_if_locked) diff --git a/dbcon/mysql/install_calpont_mysql.sh b/dbcon/mysql/install_calpont_mysql.sh index b8e152654..5b2b981df 100755 --- a/dbcon/mysql/install_calpont_mysql.sh +++ b/dbcon/mysql/install_calpont_mysql.sh @@ -69,6 +69,7 @@ CREATE FUNCTION caldroppartitionsbyvalue RETURNS STRING SONAME 'libcalmysql.so'; CREATE FUNCTION caldisablepartitionsbyvalue RETURNS STRING SONAME 'libcalmysql.so'; CREATE FUNCTION calenablepartitionsbyvalue RETURNS STRING SONAME 'libcalmysql.so'; CREATE FUNCTION calshowpartitionsbyvalue RETURNS STRING SONAME 'libcalmysql.so'; +CREATE FUNCTION calgetsqlcount RETURNS STRING SONAME 'libcalmysql.so'; CREATE FUNCTION idbpm RETURNS INTEGER soname 'libcalmysql.so'; CREATE FUNCTION idbdbroot RETURNS INTEGER soname 'libcalmysql.so'; CREATE FUNCTION idbsegment RETURNS INTEGER soname 'libcalmysql.so'; diff --git a/utils/winport/win_setup_mysql_part2.sql b/utils/winport/win_setup_mysql_part2.sql index 7c35c5304..894e1583d 100644 --- a/utils/winport/win_setup_mysql_part2.sql +++ b/utils/winport/win_setup_mysql_part2.sql @@ -8,6 +8,7 @@ CREATE FUNCTION calgetversion RETURNS STRING SONAME 'libcalmysql.dll'; CREATE FUNCTION calonlinealter RETURNS INTEGER SONAME 'libcalmysql.dll'; CREATE FUNCTION calviewtablelock RETURNS STRING SONAME 'libcalmysql.dll'; CREATE FUNCTION calcleartablelock RETURNS STRING SONAME 'libcalmysql.dll'; +CREATE FUNCTION calgetsqlcount RETURNS STRING SONAME 'libcalmysql.dll'; create database if not exists calpontsys; use calpontsys;