Merge lp:~linuxjedi/drizzle/drizzle-bug-621603 into lp:~drizzle-trunk/drizzle/development

Proposed by Andrew Hutchings
Status: Merged
Merged at revision: 1751
Proposed branch: lp:~linuxjedi/drizzle/drizzle-bug-621603
Merge into: lp:~drizzle-trunk/drizzle/development
Diff against target: 851 lines (+391/-15)
18 files modified
drizzled/session.cc (+2/-0)
drizzled/statistics_variables.h (+1/-0)
drizzled/status_helper.cc (+1/-1)
plugin/drizzle_protocol/drizzle_protocol.cc (+113/-0)
plugin/drizzle_protocol/drizzle_protocol.h (+6/-0)
plugin/drizzle_protocol/plugin.ini (+1/-1)
plugin/drizzle_protocol/table_function.h (+57/-0)
plugin/information_schema_dictionary/tests/r/tables.result (+8/-0)
plugin/mysql_protocol/mysql_protocol.cc (+111/-1)
plugin/mysql_protocol/mysql_protocol.h (+7/-0)
plugin/mysql_protocol/plugin.ini (+1/-1)
plugin/mysql_protocol/table_function.h (+52/-0)
plugin/schema_dictionary/tests/r/data_dictionary.result (+17/-1)
plugin/session_dictionary/processlist.cc (+2/-2)
plugin/session_dictionary/tests/r/data_dictionary.result (+2/-2)
tests/r/create.result (+4/-4)
tests/r/data_dictionary_like_info.result (+1/-1)
tests/r/information_schema.result (+5/-1)
To merge this branch: bzr merge lp:~linuxjedi/drizzle/drizzle-bug-621603
Reviewer Review Type Date Requested Status
Andrew Hutchings Needs Fixing
Drizzle Merge Team Pending
Review via email: mp+33308@code.launchpad.net

Description of the change

Fixes for:

Bug#621603: Connections status variable very wrong
Bug#621947: show processlist filldown

To post a comment you must log in.
Revision history for this message
Brian Aker (brianaker) wrote :

How can we make "connections" be protocol specific?

Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

Interesting question. Well, I guess the obvious thing to do would be to have each protocol plugin have a sysvar. Unfortunately to me it looks like plugin specific sysvars are broken. So...

Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

(sorry, I meant status variables)

Revision history for this message
Monty Taylor (mordred) wrote :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 08/23/2010 12:12 AM, Andrew Hutchings wrote:
> Interesting question. Well, I guess the obvious thing to do would be
> to have each protocol plugin have a sysvar. Unfortunately to me it
> looks like plugin specific sysvars are broken. So...

Aroo???
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkxyIRcACgkQ2Jv7/VK1RgGC5QCg3w+39GE/EsuzddOxf9jPBq/2
yx8AnAh3suPZN8aFGDcBFgmFj9Rjt12f
=FnG8
-----END PGP SIGNATURE-----

Revision history for this message
Monty Taylor (mordred) wrote :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 08/23/2010 12:12 AM, Andrew Hutchings wrote:
> (sorry, I meant status variables)

Aroo???
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkxyISYACgkQ2Jv7/VK1RgGuNQCgrEMeaFcb1OWed/U9zCn1FTOQ
xL4An3kZPwtsIShwy6f91pjlc2mQj07m
=kj+G
-----END PGP SIGNATURE-----

Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

Monty: see bug#622576

Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

ok, so I like Brian's plan. I will put this merge request on hold and put the new bug as a blocker to the connections counter.

review: Needs Fixing
Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

OK, so, in this branch to be reviewed:

1. Bug#621947: show processlist filldown
  * The processlist table now accepts null values so when null is provided it doesn't use the previous value.

2. Bug#628284: --mysql option broken
  * drizzle client can now use the drizzle protocol (when using --mysql=0)

3. Bug#621603: Connections status variable off by one
  * the global status counter is now fixed
  * the mysql protocol now has data_dictionary.mysql_protocol for its own counters
  * the drizzle protocol now has data_dictionary.drizzle_protocol for its own counters

1733. By Andrew Hutchings

Merge trunk into branch

1734. By Andrew Hutchings

Fix tests

Revision history for this message
Lee Bieber (kalebral-deactivatedaccount) wrote :

Latest branch is failing to build on many platforms:

../plugin/drizzle_protocol/table_function.h:21: #ifndef header guard has wrong style, please use: PLUGIN_DRIZZLE_PROTOCOL_TABLE_FUNCTION_H [build/header_guard] [5]
../plugin/drizzle_protocol/table_function.h:57: #endif line should be "#endif /* PLUGIN_DRIZZLE_PROTOCOL_TABLE_FUNCTION_H */" [build/header_guard] [5]
python ../extra/cpplint.py --filter=-whitespace,-runtime,-readability,+legal,-build,+build/header_guard,+build/include_config,+build/namespaces --deps plugin/drizzle_protocol/vio.h.linted ../plugin/drizzle_protocol/vio.h
Done processing ../plugin/drizzle_protocol/pack.h

1735. By LinuxJedi <linuxjedi@linuxjedi-laptop>

Fix table function header (I hate that my compiler didn't cry about this)

1736. By LinuxJedi <linuxjedi@linuxjedi-laptop>

Fix another wrong header, grr...

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'drizzled/session.cc'
--- drizzled/session.cc 2010-08-24 16:45:09 +0000
+++ drizzled/session.cc 2010-09-09 06:18:43 +0000
@@ -538,6 +538,7 @@
538 current_global_counters.max_used_connections= connection_count;538 current_global_counters.max_used_connections= connection_count;
539 }539 }
540540
541 current_global_counters.connections++;
541 thread_id= variables.pseudo_thread_id= global_thread_id++;542 thread_id= variables.pseudo_thread_id= global_thread_id++;
542543
543 LOCK_thread_count.lock();544 LOCK_thread_count.lock();
@@ -1730,6 +1731,7 @@
17301731
1731 flush_status_time= time((time_t*) 0);1732 flush_status_time= time((time_t*) 0);
1732 current_global_counters.max_used_connections= 1; /* We set it to one, because we know we exist */1733 current_global_counters.max_used_connections= 1; /* We set it to one, because we know we exist */
1734 current_global_counters.connections= 0;
1733}1735}
17341736
1735user_var_entry *Session::getVariable(LEX_STRING &name, bool create_if_not_exists)1737user_var_entry *Session::getVariable(LEX_STRING &name, bool create_if_not_exists)
17361738
=== modified file 'drizzled/statistics_variables.h'
--- drizzled/statistics_variables.h 2010-08-09 18:29:06 +0000
+++ drizzled/statistics_variables.h 2010-09-09 06:18:43 +0000
@@ -33,6 +33,7 @@
33typedef struct global_counters33typedef struct global_counters
34{34{
35 uint64_t max_used_connections;35 uint64_t max_used_connections;
36 uint64_t connections;
36 uint64_t locks_immediate;37 uint64_t locks_immediate;
37 uint64_t locks_waited;38 uint64_t locks_waited;
38} global_counters;39} global_counters;
3940
=== modified file 'drizzled/status_helper.cc'
--- drizzled/status_helper.cc 2010-08-09 18:29:06 +0000
+++ drizzled/status_helper.cc 2010-09-09 06:18:43 +0000
@@ -134,7 +134,7 @@
134 {"Aborted_connects", (char*) offsetof(system_status_var, aborted_connects), SHOW_LONGLONG_STATUS},134 {"Aborted_connects", (char*) offsetof(system_status_var, aborted_connects), SHOW_LONGLONG_STATUS},
135 {"Bytes_received", (char*) offsetof(system_status_var, bytes_received), SHOW_LONGLONG_STATUS},135 {"Bytes_received", (char*) offsetof(system_status_var, bytes_received), SHOW_LONGLONG_STATUS},
136 {"Bytes_sent", (char*) offsetof(system_status_var, bytes_sent), SHOW_LONGLONG_STATUS},136 {"Bytes_sent", (char*) offsetof(system_status_var, bytes_sent), SHOW_LONGLONG_STATUS},
137 {"Connections", (char*) &global_thread_id, SHOW_INT_NOFLUSH},137 {"Connections", (char*) &current_global_counters.connections, SHOW_LONGLONG},
138 {"Created_tmp_disk_tables", (char*) offsetof(system_status_var, created_tmp_disk_tables), SHOW_LONGLONG_STATUS},138 {"Created_tmp_disk_tables", (char*) offsetof(system_status_var, created_tmp_disk_tables), SHOW_LONGLONG_STATUS},
139 {"Created_tmp_tables", (char*) offsetof(system_status_var, created_tmp_tables), SHOW_LONGLONG_STATUS},139 {"Created_tmp_tables", (char*) offsetof(system_status_var, created_tmp_tables), SHOW_LONGLONG_STATUS},
140 {"Flush_commands", (char*) &refresh_version, SHOW_INT_NOFLUSH},140 {"Flush_commands", (char*) &refresh_version, SHOW_INT_NOFLUSH},
141141
=== modified file 'plugin/drizzle_protocol/drizzle_protocol.cc'
--- plugin/drizzle_protocol/drizzle_protocol.cc 2010-08-21 07:08:08 +0000
+++ plugin/drizzle_protocol/drizzle_protocol.cc 2010-09-09 06:18:43 +0000
@@ -33,6 +33,7 @@
33#include "errmsg.h"33#include "errmsg.h"
34#include "drizzle_protocol.h"34#include "drizzle_protocol.h"
35#include "options.h"35#include "options.h"
36#include "table_function.h"
3637
37#define PROTOCOL_VERSION 1038#define PROTOCOL_VERSION 10
3839
@@ -54,6 +55,8 @@
54static uint32_t buffer_length;55static uint32_t buffer_length;
55static char* bind_address= NULL;56static char* bind_address= NULL;
5657
58static plugin::TableFunction* drizzle_status_table_function_ptr= NULL;
59
57ListenDrizzleProtocol::~ListenDrizzleProtocol()60ListenDrizzleProtocol::~ListenDrizzleProtocol()
58{61{
59 /* This is strdup'd from the options */62 /* This is strdup'd from the options */
@@ -92,6 +95,10 @@
92 return new (nothrow) ClientDrizzleProtocol(new_fd, using_mysql41_protocol);95 return new (nothrow) ClientDrizzleProtocol(new_fd, using_mysql41_protocol);
93}96}
9497
98drizzled::atomic<uint64_t> ClientDrizzleProtocol::connectionCount;
99drizzled::atomic<uint64_t> ClientDrizzleProtocol::failedConnections;
100drizzled::atomic<uint64_t> ClientDrizzleProtocol::connected;
101
95ClientDrizzleProtocol::ClientDrizzleProtocol(int fd, bool using_mysql41_protocol_arg):102ClientDrizzleProtocol::ClientDrizzleProtocol(int fd, bool using_mysql41_protocol_arg):
96 using_mysql41_protocol(using_mysql41_protocol_arg)103 using_mysql41_protocol(using_mysql41_protocol_arg)
97{104{
@@ -150,6 +157,7 @@
150 { 157 {
151 drizzleclient_net_close(&net);158 drizzleclient_net_close(&net);
152 drizzleclient_net_end(&net);159 drizzleclient_net_end(&net);
160 connected.decrement();
153 }161 }
154}162}
155163
@@ -157,6 +165,9 @@
157{165{
158 bool connection_is_valid;166 bool connection_is_valid;
159167
168 connectionCount.increment();
169 connected.increment();
170
160 /* Use "connect_timeout" value during connection phase */171 /* Use "connect_timeout" value during connection phase */
161 drizzleclient_net_set_read_timeout(&net, connect_timeout);172 drizzleclient_net_set_read_timeout(&net, connect_timeout);
162 drizzleclient_net_set_write_timeout(&net, connect_timeout);173 drizzleclient_net_set_write_timeout(&net, connect_timeout);
@@ -168,6 +179,7 @@
168 else179 else
169 {180 {
170 sendError(session->main_da.sql_errno(), session->main_da.message());181 sendError(session->main_da.sql_errno(), session->main_da.message());
182 failedConnections.increment();
171 return false;183 return false;
172 }184 }
173185
@@ -818,6 +830,10 @@
818830
819static int init(module::Context &context)831static int init(module::Context &context)
820{832{
833 drizzle_status_table_function_ptr= new DrizzleProtocolStatus;
834
835 context.add(drizzle_status_table_function_ptr);
836
821 const module::option_map &vm= context.getOptions();837 const module::option_map &vm= context.getOptions();
822 if (vm.count("port"))838 if (vm.count("port"))
823 { 839 {
@@ -947,6 +963,103 @@
947 NULL963 NULL
948};964};
949965
966static int drizzle_protocol_connection_count_func(drizzle_show_var *var, char *buff)
967{
968 var->type= SHOW_LONGLONG;
969 var->value= buff;
970 *((uint64_t *)buff)= ClientDrizzleProtocol::connectionCount;
971 return 0;
972}
973
974static int drizzle_protocol_connected_count_func(drizzle_show_var *var, char *buff)
975{
976 var->type= SHOW_LONGLONG;
977 var->value= buff;
978 *((uint64_t *)buff)= ClientDrizzleProtocol::connected;
979 return 0;
980}
981
982static int drizzle_protocol_failed_count_func(drizzle_show_var *var, char *buff)
983{
984 var->type= SHOW_LONGLONG;
985 var->value= buff;
986 *((uint64_t *)buff)= ClientDrizzleProtocol::failedConnections;
987 return 0;
988}
989
990static st_show_var_func_container drizzle_protocol_connection_count=
991 { &drizzle_protocol_connection_count_func };
992
993static st_show_var_func_container drizzle_protocol_connected_count=
994 { &drizzle_protocol_connected_count_func };
995
996static st_show_var_func_container drizzle_protocol_failed_count=
997 { &drizzle_protocol_failed_count_func };
998
999static drizzle_show_var drizzle_protocol_status_variables[]= {
1000 {"Connections",
1001 (char*) &drizzle_protocol_connection_count, SHOW_FUNC},
1002 {"Connected",
1003 (char*) &drizzle_protocol_connected_count, SHOW_FUNC},
1004 {"Failed_connections",
1005 (char*) &drizzle_protocol_failed_count, SHOW_FUNC},
1006 {NULL, NULL, SHOW_LONGLONG}
1007};
1008
1009DrizzleProtocolStatus::Generator::Generator(drizzled::Field **fields) :
1010 plugin::TableFunction::Generator(fields)
1011{
1012 status_var_ptr= drizzle_protocol_status_variables;
1013}
1014
1015bool DrizzleProtocolStatus::Generator::populate()
1016{
1017 MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, int64_t);
1018 char * const buff= (char *) &buff_data;
1019 drizzle_show_var tmp;
1020
1021 if (status_var_ptr->name)
1022 {
1023 std::ostringstream oss;
1024 string return_value;
1025 const char *value;
1026 int type;
1027
1028 push(status_var_ptr->name);
1029
1030 if (status_var_ptr->type == SHOW_FUNC)
1031 {
1032 ((mysql_show_var_func)((st_show_var_func_container *)status_var_ptr->value)->func)(&tmp, buff);
1033 value= buff;
1034 type= tmp.type;
1035 }
1036 else
1037 {
1038 value= status_var_ptr->value;
1039 type= status_var_ptr->type;
1040 }
1041
1042 switch(type)
1043 {
1044 case SHOW_LONGLONG:
1045 oss << *(uint64_t*) value;
1046 return_value= oss.str();
1047 break;
1048 default:
1049 assert(0);
1050 }
1051 if (return_value.length())
1052 push(return_value);
1053 else
1054 push(" ");
1055
1056 status_var_ptr++;
1057
1058 return true;
1059 }
1060 return false;
1061}
1062
950} /* namespace drizzle_protocol */1063} /* namespace drizzle_protocol */
9511064
952DRIZZLE_PLUGIN(drizzle_protocol::init, drizzle_protocol::sys_variables, drizzle_protocol::init_options);1065DRIZZLE_PLUGIN(drizzle_protocol::init, drizzle_protocol::sys_variables, drizzle_protocol::init_options);
9531066
=== modified file 'plugin/drizzle_protocol/drizzle_protocol.h'
--- plugin/drizzle_protocol/drizzle_protocol.h 2010-08-12 06:10:25 +0000
+++ plugin/drizzle_protocol/drizzle_protocol.h 2010-09-09 06:18:43 +0000
@@ -22,6 +22,8 @@
2222
23#include <drizzled/plugin/listen_tcp.h>23#include <drizzled/plugin/listen_tcp.h>
24#include <drizzled/plugin/client.h>24#include <drizzled/plugin/client.h>
25#include <drizzled/atomics.h>
26#include "drizzled/plugin/table_function.h"
2527
26#include "net_serv.h"28#include "net_serv.h"
2729
@@ -60,6 +62,10 @@
60 ClientDrizzleProtocol(int fd, bool using_mysql41_protocol_arg);62 ClientDrizzleProtocol(int fd, bool using_mysql41_protocol_arg);
61 virtual ~ClientDrizzleProtocol();63 virtual ~ClientDrizzleProtocol();
6264
65 static drizzled::atomic<uint64_t> connectionCount;
66 static drizzled::atomic<uint64_t> failedConnections;
67 static drizzled::atomic<uint64_t> connected;
68
63 virtual int getFileDescriptor(void);69 virtual int getFileDescriptor(void);
64 virtual bool isConnected();70 virtual bool isConnected();
65 virtual bool isReading(void);71 virtual bool isReading(void);
6672
=== modified file 'plugin/drizzle_protocol/plugin.ini'
--- plugin/drizzle_protocol/plugin.ini 2010-04-27 21:03:13 +0000
+++ plugin/drizzle_protocol/plugin.ini 2010-09-09 06:18:43 +0000
@@ -7,6 +7,6 @@
7libs=drizzled/algorithm/libhash.la7libs=drizzled/algorithm/libhash.la
8load_by_default=yes8load_by_default=yes
9ldlfags=$(LIBZ)9ldlfags=$(LIBZ)
10headers=drizzle_protocol.h errmsg.h net_serv.h options.h pack.h vio.h10headers=drizzle_protocol.h errmsg.h net_serv.h options.h pack.h vio.h table_function.h
11sources=drizzle_protocol.cc errmsg.cc net_serv.cc pack.cc vio.cc viosocket.cc11sources=drizzle_protocol.cc errmsg.cc net_serv.cc pack.cc vio.cc viosocket.cc
12static=yes12static=yes
1313
=== added file 'plugin/drizzle_protocol/table_function.h'
--- plugin/drizzle_protocol/table_function.h 1970-01-01 00:00:00 +0000
+++ plugin/drizzle_protocol/table_function.h 2010-09-09 06:18:43 +0000
@@ -0,0 +1,57 @@
1/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3 *
4 * Copyright (C) 2010 Andrew Hutchings
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef PLUGIN_DRIZZLE_PROTOCOL_TABLE_FUNCTION_H
22#define PLUGIN_DRIZZLE_PROTOCOL_TABLE_FUNCTION_H
23
24#include "drizzled/plugin/table_function.h"
25namespace drizzle_protocol
26{
27
28
29class DrizzleProtocolStatus : public drizzled::plugin::TableFunction
30{
31public:
32 DrizzleProtocolStatus() :
33 drizzled::plugin::TableFunction("DATA_DICTIONARY","DRIZZLE_PROTOCOL_STATUS")
34 {
35 add_field("VARIABLE_NAME");
36 add_field("VARIABLE_VALUE");
37 }
38
39 class Generator : public drizzled::plugin::TableFunction::Generator
40 {
41 drizzled::drizzle_show_var *status_var_ptr;
42
43 public:
44 Generator(drizzled::Field **fields);
45
46 bool populate();
47 };
48
49 Generator *generator(drizzled::Field **arg)
50 {
51 return new Generator(arg);
52 }
53};
54
55}
56
57#endif /* PLUGIN_DRIZZLE_PROTOCOL_TABLE_FUNCTION_H */
058
=== modified file 'plugin/information_schema_dictionary/tests/r/tables.result'
--- plugin/information_schema_dictionary/tests/r/tables.result 2010-08-19 00:32:20 +0000
+++ plugin/information_schema_dictionary/tests/r/tables.result 2010-09-09 06:18:43 +0000
@@ -12,6 +12,7 @@
12 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW12 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW
13 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW13 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW
14 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW14 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW
15 DATA_DICTIONARY DRIZZLE_PROTOCOL_STATUS VIEW
15 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW16 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW
16 DATA_DICTIONARY GLOBAL_STATUS VIEW17 DATA_DICTIONARY GLOBAL_STATUS VIEW
17 DATA_DICTIONARY GLOBAL_VARIABLES VIEW18 DATA_DICTIONARY GLOBAL_VARIABLES VIEW
@@ -27,6 +28,7 @@
27 DATA_DICTIONARY INNODB_STATUS VIEW28 DATA_DICTIONARY INNODB_STATUS VIEW
28 DATA_DICTIONARY INNODB_TRX VIEW29 DATA_DICTIONARY INNODB_TRX VIEW
29 DATA_DICTIONARY MODULES VIEW30 DATA_DICTIONARY MODULES VIEW
31 DATA_DICTIONARY MYSQL_PROTOCOL_STATUS VIEW
30 DATA_DICTIONARY PLUGINS VIEW32 DATA_DICTIONARY PLUGINS VIEW
31 DATA_DICTIONARY PROCESSLIST VIEW33 DATA_DICTIONARY PROCESSLIST VIEW
32 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW34 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW
@@ -81,6 +83,7 @@
81 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW83 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW
82 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW84 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW
83 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW85 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW
86 DATA_DICTIONARY DRIZZLE_PROTOCOL_STATUS VIEW
84 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW87 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW
85 DATA_DICTIONARY GLOBAL_STATUS VIEW88 DATA_DICTIONARY GLOBAL_STATUS VIEW
86 DATA_DICTIONARY GLOBAL_VARIABLES VIEW89 DATA_DICTIONARY GLOBAL_VARIABLES VIEW
@@ -96,6 +99,7 @@
96 DATA_DICTIONARY INNODB_STATUS VIEW99 DATA_DICTIONARY INNODB_STATUS VIEW
97 DATA_DICTIONARY INNODB_TRX VIEW100 DATA_DICTIONARY INNODB_TRX VIEW
98 DATA_DICTIONARY MODULES VIEW101 DATA_DICTIONARY MODULES VIEW
102 DATA_DICTIONARY MYSQL_PROTOCOL_STATUS VIEW
99 DATA_DICTIONARY PLUGINS VIEW103 DATA_DICTIONARY PLUGINS VIEW
100 DATA_DICTIONARY PROCESSLIST VIEW104 DATA_DICTIONARY PROCESSLIST VIEW
101 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW105 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW
@@ -173,6 +177,7 @@
173 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW177 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW
174 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW178 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW
175 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW179 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW
180 DATA_DICTIONARY DRIZZLE_PROTOCOL_STATUS VIEW
176 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW181 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW
177 DATA_DICTIONARY GLOBAL_STATUS VIEW182 DATA_DICTIONARY GLOBAL_STATUS VIEW
178 DATA_DICTIONARY GLOBAL_VARIABLES VIEW183 DATA_DICTIONARY GLOBAL_VARIABLES VIEW
@@ -188,6 +193,7 @@
188 DATA_DICTIONARY INNODB_STATUS VIEW193 DATA_DICTIONARY INNODB_STATUS VIEW
189 DATA_DICTIONARY INNODB_TRX VIEW194 DATA_DICTIONARY INNODB_TRX VIEW
190 DATA_DICTIONARY MODULES VIEW195 DATA_DICTIONARY MODULES VIEW
196 DATA_DICTIONARY MYSQL_PROTOCOL_STATUS VIEW
191 DATA_DICTIONARY PLUGINS VIEW197 DATA_DICTIONARY PLUGINS VIEW
192 DATA_DICTIONARY PROCESSLIST VIEW198 DATA_DICTIONARY PROCESSLIST VIEW
193 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW199 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW
@@ -265,6 +271,7 @@
265 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW271 DATA_DICTIONARY CUMULATIVE_SQL_COMMANDS VIEW
266 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW272 DATA_DICTIONARY CUMULATIVE_USER_STATS VIEW
267 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW273 DATA_DICTIONARY CURRENT_SQL_COMMANDS VIEW
274 DATA_DICTIONARY DRIZZLE_PROTOCOL_STATUS VIEW
268 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW275 DATA_DICTIONARY GLOBAL_STATEMENTS VIEW
269 DATA_DICTIONARY GLOBAL_STATUS VIEW276 DATA_DICTIONARY GLOBAL_STATUS VIEW
270 DATA_DICTIONARY GLOBAL_VARIABLES VIEW277 DATA_DICTIONARY GLOBAL_VARIABLES VIEW
@@ -275,6 +282,7 @@
275 DATA_DICTIONARY INNODB_LOCK_WAITS VIEW282 DATA_DICTIONARY INNODB_LOCK_WAITS VIEW
276 DATA_DICTIONARY INNODB_STATUS VIEW283 DATA_DICTIONARY INNODB_STATUS VIEW
277 DATA_DICTIONARY MODULES VIEW284 DATA_DICTIONARY MODULES VIEW
285 DATA_DICTIONARY MYSQL_PROTOCOL_STATUS VIEW
278 DATA_DICTIONARY PLUGINS VIEW286 DATA_DICTIONARY PLUGINS VIEW
279 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW287 DATA_DICTIONARY REFERENTIAL_CONSTRAINTS VIEW
280 DATA_DICTIONARY REPLICATION_STREAMS VIEW288 DATA_DICTIONARY REPLICATION_STREAMS VIEW
281289
=== modified file 'plugin/mysql_protocol/mysql_protocol.cc'
--- plugin/mysql_protocol/mysql_protocol.cc 2010-08-21 07:08:08 +0000
+++ plugin/mysql_protocol/mysql_protocol.cc 2010-09-09 06:18:43 +0000
@@ -31,6 +31,7 @@
31#include "mysql_protocol.h"31#include "mysql_protocol.h"
32#include "mysql_password.h"32#include "mysql_password.h"
33#include "options.h"33#include "options.h"
34#include "table_function.h"
3435
35namespace po= boost::program_options;36namespace po= boost::program_options;
36using namespace std;37using namespace std;
@@ -51,6 +52,8 @@
51static const uint32_t random_max= 0x3FFFFFFF;52static const uint32_t random_max= 0x3FFFFFFF;
52static const double random_max_double= (double)0x3FFFFFFF;53static const double random_max_double= (double)0x3FFFFFFF;
5354
55static plugin::TableFunction* mysql_status_table_function_ptr= NULL;
56
54ListenMySQLProtocol::~ListenMySQLProtocol()57ListenMySQLProtocol::~ListenMySQLProtocol()
55{58{
56 /* This is strdup'd from the options */59 /* This is strdup'd from the options */
@@ -77,6 +80,10 @@
77 return new (nothrow) ClientMySQLProtocol(new_fd, using_mysql41_protocol);80 return new (nothrow) ClientMySQLProtocol(new_fd, using_mysql41_protocol);
78}81}
7982
83drizzled::atomic<uint64_t> ClientMySQLProtocol::connectionCount;
84drizzled::atomic<uint64_t> ClientMySQLProtocol::failedConnections;
85drizzled::atomic<uint64_t> ClientMySQLProtocol::connected;
86
80ClientMySQLProtocol::ClientMySQLProtocol(int fd, bool using_mysql41_protocol_arg):87ClientMySQLProtocol::ClientMySQLProtocol(int fd, bool using_mysql41_protocol_arg):
81 using_mysql41_protocol(using_mysql41_protocol_arg)88 using_mysql41_protocol(using_mysql41_protocol_arg)
82{89{
@@ -135,6 +142,7 @@
135 { 142 {
136 drizzleclient_net_close(&net);143 drizzleclient_net_close(&net);
137 drizzleclient_net_end(&net);144 drizzleclient_net_end(&net);
145 connected.decrement();
138 }146 }
139}147}
140148
@@ -142,6 +150,9 @@
142{150{
143 bool connection_is_valid;151 bool connection_is_valid;
144152
153 connectionCount.increment();
154 connected.increment();
155
145 /* Use "connect_timeout" value during connection phase */156 /* Use "connect_timeout" value during connection phase */
146 drizzleclient_net_set_read_timeout(&net, connect_timeout);157 drizzleclient_net_set_read_timeout(&net, connect_timeout);
147 drizzleclient_net_set_write_timeout(&net, connect_timeout);158 drizzleclient_net_set_write_timeout(&net, connect_timeout);
@@ -153,9 +164,9 @@
153 else164 else
154 {165 {
155 sendError(session->main_da.sql_errno(), session->main_da.message());166 sendError(session->main_da.sql_errno(), session->main_da.message());
167 failedConnections.increment();
156 return false;168 return false;
157 }169 }
158
159 /* Connect completed, set read/write timeouts back to default */170 /* Connect completed, set read/write timeouts back to default */
160 drizzleclient_net_set_read_timeout(&net, read_timeout);171 drizzleclient_net_set_read_timeout(&net, read_timeout);
161 drizzleclient_net_set_write_timeout(&net, write_timeout);172 drizzleclient_net_set_write_timeout(&net, write_timeout);
@@ -886,7 +897,9 @@
886897
887static int init(drizzled::module::Context &context)898static int init(drizzled::module::Context &context)
888{ 899{
900 mysql_status_table_function_ptr= new MysqlProtocolStatus;
889901
902 context.add(mysql_status_table_function_ptr);
890 /* Initialize random seeds for the MySQL algorithm with minimal changes. */903 /* Initialize random seeds for the MySQL algorithm with minimal changes. */
891 time_t seed_time= time(NULL);904 time_t seed_time= time(NULL);
892 random_seed1= seed_time % random_max;905 random_seed1= seed_time % random_max;
@@ -1022,6 +1035,103 @@
1022 NULL1035 NULL
1023};1036};
10241037
1038static int mysql_protocol_connection_count_func(drizzle_show_var *var, char *buff)
1039{
1040 var->type= SHOW_LONGLONG;
1041 var->value= buff;
1042 *((uint64_t *)buff)= ClientMySQLProtocol::connectionCount;
1043 return 0;
1044}
1045
1046static int mysql_protocol_connected_count_func(drizzle_show_var *var, char *buff)
1047{
1048 var->type= SHOW_LONGLONG;
1049 var->value= buff;
1050 *((uint64_t *)buff)= ClientMySQLProtocol::connected;
1051 return 0;
1052}
1053
1054static int mysql_protocol_failed_count_func(drizzle_show_var *var, char *buff)
1055{
1056 var->type= SHOW_LONGLONG;
1057 var->value= buff;
1058 *((uint64_t *)buff)= ClientMySQLProtocol::failedConnections;
1059 return 0;
1060}
1061
1062static st_show_var_func_container mysql_protocol_connection_count=
1063 { &mysql_protocol_connection_count_func };
1064
1065static st_show_var_func_container mysql_protocol_connected_count=
1066 { &mysql_protocol_connected_count_func };
1067
1068static st_show_var_func_container mysql_protocol_failed_count=
1069 { &mysql_protocol_failed_count_func };
1070
1071static drizzle_show_var mysql_protocol_status_variables[]= {
1072 {"Connections",
1073 (char*) &mysql_protocol_connection_count, SHOW_FUNC},
1074 {"Connected",
1075 (char*) &mysql_protocol_connected_count, SHOW_FUNC},
1076 {"Failed_connections",
1077 (char*) &mysql_protocol_failed_count, SHOW_FUNC},
1078 {NULL, NULL, SHOW_LONGLONG}
1079};
1080
1081MysqlProtocolStatus::Generator::Generator(drizzled::Field **fields) :
1082 plugin::TableFunction::Generator(fields)
1083{
1084 status_var_ptr= mysql_protocol_status_variables;
1085}
1086
1087bool MysqlProtocolStatus::Generator::populate()
1088{
1089 MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, int64_t);
1090 char * const buff= (char *) &buff_data;
1091 drizzle_show_var tmp;
1092
1093 if (status_var_ptr->name)
1094 {
1095 std::ostringstream oss;
1096 string return_value;
1097 const char *value;
1098 int type;
1099
1100 push(status_var_ptr->name);
1101
1102 if (status_var_ptr->type == SHOW_FUNC)
1103 {
1104 ((mysql_show_var_func)((st_show_var_func_container *)status_var_ptr->value)->func)(&tmp, buff);
1105 value= buff;
1106 type= tmp.type;
1107 }
1108 else
1109 {
1110 value= status_var_ptr->value;
1111 type= status_var_ptr->type;
1112 }
1113
1114 switch(type)
1115 {
1116 case SHOW_LONGLONG:
1117 oss << *(uint64_t*) value;
1118 return_value= oss.str();
1119 break;
1120 default:
1121 assert(0);
1122 }
1123 if (return_value.length())
1124 push(return_value);
1125 else
1126 push(" ");
1127
1128 status_var_ptr++;
1129
1130 return true;
1131 }
1132 return false;
1133}
1134
1025DRIZZLE_DECLARE_PLUGIN1135DRIZZLE_DECLARE_PLUGIN
1026{1136{
1027 DRIZZLE_VERSION_ID,1137 DRIZZLE_VERSION_ID,
10281138
=== modified file 'plugin/mysql_protocol/mysql_protocol.h'
--- plugin/mysql_protocol/mysql_protocol.h 2010-08-12 06:10:25 +0000
+++ plugin/mysql_protocol/mysql_protocol.h 2010-09-09 06:18:43 +0000
@@ -22,6 +22,8 @@
2222
23#include <drizzled/plugin/listen_tcp.h>23#include <drizzled/plugin/listen_tcp.h>
24#include <drizzled/plugin/client.h>24#include <drizzled/plugin/client.h>
25#include <drizzled/atomics.h>
26#include "drizzled/plugin/table_function.h"
2527
26#include "net_serv.h"28#include "net_serv.h"
2729
@@ -29,6 +31,7 @@
29{31{
30private:32private:
31 bool using_mysql41_protocol;33 bool using_mysql41_protocol;
34 static drizzled::plugin::TableFunction* status_table_function_ptr;
3235
33public:36public:
34 ListenMySQLProtocol(std::string name_arg, bool using_mysql41_protocol_arg):37 ListenMySQLProtocol(std::string name_arg, bool using_mysql41_protocol_arg):
@@ -59,6 +62,10 @@
59 ClientMySQLProtocol(int fd, bool using_mysql41_protocol_arg);62 ClientMySQLProtocol(int fd, bool using_mysql41_protocol_arg);
60 virtual ~ClientMySQLProtocol();63 virtual ~ClientMySQLProtocol();
6164
65 static drizzled::atomic<uint64_t> connectionCount;
66 static drizzled::atomic<uint64_t> failedConnections;
67 static drizzled::atomic<uint64_t> connected;
68
62 virtual int getFileDescriptor(void);69 virtual int getFileDescriptor(void);
63 virtual bool isConnected();70 virtual bool isConnected();
64 virtual bool isReading(void);71 virtual bool isReading(void);
6572
=== modified file 'plugin/mysql_protocol/plugin.ini'
--- plugin/mysql_protocol/plugin.ini 2010-04-27 21:03:13 +0000
+++ plugin/mysql_protocol/plugin.ini 2010-09-09 06:18:43 +0000
@@ -4,6 +4,6 @@
4load_by_default=yes4load_by_default=yes
5ldlfags=$(LIBZ)5ldlfags=$(LIBZ)
6libs=drizzled/algorithm/libhash.la6libs=drizzled/algorithm/libhash.la
7headers=mysql_protocol.h errmsg.h net_serv.h options.h vio.h mysql_password.h7headers=mysql_protocol.h errmsg.h net_serv.h options.h vio.h mysql_password.h table_function.h
8sources=mysql_protocol.cc net_serv.cc vio.cc mysql_password.cc8sources=mysql_protocol.cc net_serv.cc vio.cc mysql_password.cc
9static=yes9static=yes
1010
=== added file 'plugin/mysql_protocol/table_function.h'
--- plugin/mysql_protocol/table_function.h 1970-01-01 00:00:00 +0000
+++ plugin/mysql_protocol/table_function.h 2010-09-09 06:18:43 +0000
@@ -0,0 +1,52 @@
1/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3 *
4 * Copyright (C) 2010 Andrew Hutchings
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef PLUGIN_MYSQL_PROTOCOL_TABLE_FUNCTION_H
22#define PLUGIN_MYSQL_PROTOCOL_TABLE_FUNCTION_H
23
24#include "drizzled/plugin/table_function.h"
25
26class MysqlProtocolStatus : public drizzled::plugin::TableFunction
27{
28public:
29 MysqlProtocolStatus() :
30 drizzled::plugin::TableFunction("DATA_DICTIONARY","MYSQL_PROTOCOL_STATUS")
31 {
32 add_field("VARIABLE_NAME");
33 add_field("VARIABLE_VALUE");
34 }
35
36 class Generator : public drizzled::plugin::TableFunction::Generator
37 {
38 drizzled::drizzle_show_var *status_var_ptr;
39
40 public:
41 Generator(drizzled::Field **fields);
42
43 bool populate();
44 };
45
46 Generator *generator(drizzled::Field **arg)
47 {
48 return new Generator(arg);
49 }
50};
51
52#endif /* PLUGIN_MYSQL_PROTOCOL_TABLE_FUNCTION_H */
053
=== modified file 'plugin/schema_dictionary/tests/r/data_dictionary.result'
--- plugin/schema_dictionary/tests/r/data_dictionary.result 2010-09-02 18:35:05 +0000
+++ plugin/schema_dictionary/tests/r/data_dictionary.result 2010-09-09 06:18:43 +0000
@@ -1,7 +1,7 @@
1use data_dictionary;1use data_dictionary;
2SELECT count(*) FROM columns;2SELECT count(*) FROM columns;
3count(*)3count(*)
44904494
5SELECT count(*) FROM indexes;5SELECT count(*) FROM indexes;
6count(*)6count(*)
7070
@@ -489,6 +489,10 @@
489VARIABLE_NAME489VARIABLE_NAME
490VARIABLE_NAME490VARIABLE_NAME
491VARIABLE_NAME491VARIABLE_NAME
492VARIABLE_NAME
493VARIABLE_NAME
494VARIABLE_VALUE
495VARIABLE_VALUE
492VARIABLE_VALUE496VARIABLE_VALUE
493VARIABLE_VALUE497VARIABLE_VALUE
494VARIABLE_VALUE498VARIABLE_VALUE
@@ -687,6 +691,8 @@
687DATA_DICTIONARY CURRENT_SQL_COMMANDS COUNT_UPDATE691DATA_DICTIONARY CURRENT_SQL_COMMANDS COUNT_UPDATE
688DATA_DICTIONARY CURRENT_SQL_COMMANDS IP692DATA_DICTIONARY CURRENT_SQL_COMMANDS IP
689DATA_DICTIONARY CURRENT_SQL_COMMANDS USER693DATA_DICTIONARY CURRENT_SQL_COMMANDS USER
694DATA_DICTIONARY DRIZZLE_PROTOCOL_STATUS VARIABLE_NAME
695DATA_DICTIONARY DRIZZLE_PROTOCOL_STATUS VARIABLE_VALUE
690DATA_DICTIONARY GLOBAL_STATEMENTS VARIABLE_NAME696DATA_DICTIONARY GLOBAL_STATEMENTS VARIABLE_NAME
691DATA_DICTIONARY GLOBAL_STATEMENTS VARIABLE_VALUE697DATA_DICTIONARY GLOBAL_STATEMENTS VARIABLE_VALUE
692DATA_DICTIONARY GLOBAL_STATUS VARIABLE_NAME698DATA_DICTIONARY GLOBAL_STATUS VARIABLE_NAME
@@ -767,6 +773,8 @@
767DATA_DICTIONARY MODULES MODULE_LICENSE773DATA_DICTIONARY MODULES MODULE_LICENSE
768DATA_DICTIONARY MODULES MODULE_NAME774DATA_DICTIONARY MODULES MODULE_NAME
769DATA_DICTIONARY MODULES MODULE_VERSION775DATA_DICTIONARY MODULES MODULE_VERSION
776DATA_DICTIONARY MYSQL_PROTOCOL_STATUS VARIABLE_NAME
777DATA_DICTIONARY MYSQL_PROTOCOL_STATUS VARIABLE_VALUE
770DATA_DICTIONARY PLUGINS IS_ACTIVE778DATA_DICTIONARY PLUGINS IS_ACTIVE
771DATA_DICTIONARY PLUGINS MODULE_NAME779DATA_DICTIONARY PLUGINS MODULE_NAME
772DATA_DICTIONARY PLUGINS PLUGIN_NAME780DATA_DICTIONARY PLUGINS PLUGIN_NAME
@@ -1259,6 +1267,8 @@
1259DOMAIN_CONSTRAINTS INFORMATION_SCHEMA DOMAIN_SCHEMA1267DOMAIN_CONSTRAINTS INFORMATION_SCHEMA DOMAIN_SCHEMA
1260DOMAIN_CONSTRAINTS INFORMATION_SCHEMA INITIALLY_DEFERRED1268DOMAIN_CONSTRAINTS INFORMATION_SCHEMA INITIALLY_DEFERRED
1261DOMAIN_CONSTRAINTS INFORMATION_SCHEMA IS_DEFERRABLE1269DOMAIN_CONSTRAINTS INFORMATION_SCHEMA IS_DEFERRABLE
1270DRIZZLE_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_NAME
1271DRIZZLE_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_VALUE
1262GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_NAME1272GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_NAME
1263GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_VALUE1273GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_VALUE
1264GLOBAL_STATUS DATA_DICTIONARY VARIABLE_NAME1274GLOBAL_STATUS DATA_DICTIONARY VARIABLE_NAME
@@ -1347,6 +1357,8 @@
1347MODULES DATA_DICTIONARY MODULE_LICENSE1357MODULES DATA_DICTIONARY MODULE_LICENSE
1348MODULES DATA_DICTIONARY MODULE_NAME1358MODULES DATA_DICTIONARY MODULE_NAME
1349MODULES DATA_DICTIONARY MODULE_VERSION1359MODULES DATA_DICTIONARY MODULE_VERSION
1360MYSQL_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_NAME
1361MYSQL_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_VALUE
1350PARAMETERS INFORMATION_SCHEMA AS_LOCATOR1362PARAMETERS INFORMATION_SCHEMA AS_LOCATOR
1351PARAMETERS INFORMATION_SCHEMA CHARACTER_MAXIMUM_LENGTH1363PARAMETERS INFORMATION_SCHEMA CHARACTER_MAXIMUM_LENGTH
1352PARAMETERS INFORMATION_SCHEMA CHARACTER_OCTET_LENGTH1364PARAMETERS INFORMATION_SCHEMA CHARACTER_OCTET_LENGTH
@@ -1752,6 +1764,8 @@
1752DOMAIN_CONSTRAINTS INFORMATION_SCHEMA DOMAIN_SCHEMA1764DOMAIN_CONSTRAINTS INFORMATION_SCHEMA DOMAIN_SCHEMA
1753DOMAIN_CONSTRAINTS INFORMATION_SCHEMA INITIALLY_DEFERRED1765DOMAIN_CONSTRAINTS INFORMATION_SCHEMA INITIALLY_DEFERRED
1754DOMAIN_CONSTRAINTS INFORMATION_SCHEMA IS_DEFERRABLE1766DOMAIN_CONSTRAINTS INFORMATION_SCHEMA IS_DEFERRABLE
1767DRIZZLE_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_NAME
1768DRIZZLE_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_VALUE
1755GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_NAME1769GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_NAME
1756GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_VALUE1770GLOBAL_STATEMENTS DATA_DICTIONARY VARIABLE_VALUE
1757GLOBAL_STATUS DATA_DICTIONARY VARIABLE_NAME1771GLOBAL_STATUS DATA_DICTIONARY VARIABLE_NAME
@@ -1840,6 +1854,8 @@
1840MODULES DATA_DICTIONARY MODULE_LICENSE1854MODULES DATA_DICTIONARY MODULE_LICENSE
1841MODULES DATA_DICTIONARY MODULE_NAME1855MODULES DATA_DICTIONARY MODULE_NAME
1842MODULES DATA_DICTIONARY MODULE_VERSION1856MODULES DATA_DICTIONARY MODULE_VERSION
1857MYSQL_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_NAME
1858MYSQL_PROTOCOL_STATUS DATA_DICTIONARY VARIABLE_VALUE
1843PARAMETERS INFORMATION_SCHEMA AS_LOCATOR1859PARAMETERS INFORMATION_SCHEMA AS_LOCATOR
1844PARAMETERS INFORMATION_SCHEMA CHARACTER_MAXIMUM_LENGTH1860PARAMETERS INFORMATION_SCHEMA CHARACTER_MAXIMUM_LENGTH
1845PARAMETERS INFORMATION_SCHEMA CHARACTER_OCTET_LENGTH1861PARAMETERS INFORMATION_SCHEMA CHARACTER_OCTET_LENGTH
18461862
=== modified file 'plugin/session_dictionary/processlist.cc'
--- plugin/session_dictionary/processlist.cc 2010-08-13 23:46:13 +0000
+++ plugin/session_dictionary/processlist.cc 2010-09-09 06:18:43 +0000
@@ -44,8 +44,8 @@
44 add_field("DB");44 add_field("DB");
45 add_field("COMMAND", 16);45 add_field("COMMAND", 16);
46 add_field("TIME", plugin::TableFunction::NUMBER, 0, false);46 add_field("TIME", plugin::TableFunction::NUMBER, 0, false);
47 add_field("STATE");47 add_field("STATE", plugin::TableFunction::STRING, 256, true);
48 add_field("INFO", PROCESS_LIST_WIDTH);48 add_field("INFO", plugin::TableFunction::STRING, PROCESS_LIST_WIDTH, true);
49}49}
5050
51ProcesslistTool::Generator::Generator(Field **arg) :51ProcesslistTool::Generator::Generator(Field **arg) :
5252
=== modified file 'plugin/session_dictionary/tests/r/data_dictionary.result'
--- plugin/session_dictionary/tests/r/data_dictionary.result 2010-09-02 18:35:05 +0000
+++ plugin/session_dictionary/tests/r/data_dictionary.result 2010-09-09 06:18:43 +0000
@@ -8,8 +8,8 @@
8 `DB` VARCHAR(256) NOT NULL,8 `DB` VARCHAR(256) NOT NULL,
9 `COMMAND` VARCHAR(16) NOT NULL,9 `COMMAND` VARCHAR(16) NOT NULL,
10 `TIME` BIGINT NOT NULL,10 `TIME` BIGINT NOT NULL,
11 `STATE` VARCHAR(256) NOT NULL,11 `STATE` VARCHAR(256) DEFAULT NULL,
12 `INFO` VARCHAR(100) NOT NULL12 `INFO` VARCHAR(100) DEFAULT NULL
13) ENGINE=FunctionEngine COLLATE = utf8_general_ci13) ENGINE=FunctionEngine COLLATE = utf8_general_ci
14SELECT ID FROM processlist;14SELECT ID FROM processlist;
15ID15ID
1616
=== modified file 'tests/r/create.result'
--- tests/r/create.result 2010-09-02 18:35:05 +0000
+++ tests/r/create.result 2010-09-09 06:18:43 +0000
@@ -1455,8 +1455,8 @@
1455 `DB` VARCHAR(256) NOT NULL,1455 `DB` VARCHAR(256) NOT NULL,
1456 `COMMAND` VARCHAR(16) NOT NULL,1456 `COMMAND` VARCHAR(16) NOT NULL,
1457 `TIME` BIGINT NOT NULL,1457 `TIME` BIGINT NOT NULL,
1458 `STATE` VARCHAR(256) NOT NULL,1458 `STATE` VARCHAR(256) DEFAULT NULL,
1459 `INFO` VARCHAR(100) NOT NULL1459 `INFO` VARCHAR(100) DEFAULT NULL
1460) ENGINE=InnoDB COLLATE = utf8_general_ci1460) ENGINE=InnoDB COLLATE = utf8_general_ci
1461drop table t1;1461drop table t1;
1462create temporary table t1 like data_dictionary.processlist;1462create temporary table t1 like data_dictionary.processlist;
@@ -1471,8 +1471,8 @@
1471 `DB` VARCHAR(256) NOT NULL,1471 `DB` VARCHAR(256) NOT NULL,
1472 `COMMAND` VARCHAR(16) NOT NULL,1472 `COMMAND` VARCHAR(16) NOT NULL,
1473 `TIME` BIGINT NOT NULL,1473 `TIME` BIGINT NOT NULL,
1474 `STATE` VARCHAR(256) NOT NULL,1474 `STATE` VARCHAR(256) DEFAULT NULL,
1475 `INFO` VARCHAR(100) NOT NULL1475 `INFO` VARCHAR(100) DEFAULT NULL
1476) ENGINE=MyISAM COLLATE = utf8_general_ci1476) ENGINE=MyISAM COLLATE = utf8_general_ci
1477drop table t1;1477drop table t1;
14781478
14791479
=== modified file 'tests/r/data_dictionary_like_info.result'
--- tests/r/data_dictionary_like_info.result 2010-07-29 00:34:46 +0000
+++ tests/r/data_dictionary_like_info.result 2010-09-09 06:18:43 +0000
@@ -191,7 +191,7 @@
191 or DATA_TYPE = 'varchar')191 or DATA_TYPE = 'varchar')
192group by DATA_TYPE order by DATA_TYPE, num;192group by DATA_TYPE order by DATA_TYPE, num;
193DATA_TYPE a num193DATA_TYPE a num
194VARCHAR # 161194VARCHAR # 165
195Warnings:195Warnings:
196Warning # 1 line(s) were cut by GROUP_CONCAT()196Warning # 1 line(s) were cut by GROUP_CONCAT()
197create table t1(f1 char(1) not null, f2 char(9) not null);197create table t1(f1 char(1) not null, f2 char(9) not null);
198198
=== modified file 'tests/r/information_schema.result'
--- tests/r/information_schema.result 2010-08-27 00:24:53 +0000
+++ tests/r/information_schema.result 2010-09-09 06:18:43 +0000
@@ -91,7 +91,7 @@
91table_name NOT LIKE 'falcon%'91table_name NOT LIKE 'falcon%'
92GROUP BY TABLE_SCHEMA ORDER BY table_schema;92GROUP BY TABLE_SCHEMA ORDER BY table_schema;
93table_schema count(*)93table_schema count(*)
94DATA_DICTIONARY 4094DATA_DICTIONARY 42
95INFORMATION_SCHEMA 2095INFORMATION_SCHEMA 20
96create table t1(f1 LONGBLOB, f2 LONGTEXT);96create table t1(f1 LONGBLOB, f2 LONGTEXT);
97select column_name,data_type,CHARACTER_OCTET_LENGTH,97select column_name,data_type,CHARACTER_OCTET_LENGTH,
@@ -193,6 +193,7 @@
193CUMULATIVE_SQL_COMMANDS COUNT_SELECT193CUMULATIVE_SQL_COMMANDS COUNT_SELECT
194CUMULATIVE_USER_STATS BYTES_RECEIVED194CUMULATIVE_USER_STATS BYTES_RECEIVED
195CURRENT_SQL_COMMANDS IP195CURRENT_SQL_COMMANDS IP
196DRIZZLE_PROTOCOL_STATUS VARIABLE_VALUE
196GLOBAL_STATEMENTS VARIABLE_VALUE197GLOBAL_STATEMENTS VARIABLE_VALUE
197GLOBAL_STATUS VARIABLE_VALUE198GLOBAL_STATUS VARIABLE_VALUE
198GLOBAL_VARIABLES VARIABLE_VALUE199GLOBAL_VARIABLES VARIABLE_VALUE
@@ -207,6 +208,7 @@
207INNODB_STATUS VARIABLE_VALUE208INNODB_STATUS VARIABLE_VALUE
208INNODB_TRX TRX_STATE209INNODB_TRX TRX_STATE
209MODULES MODULE_VERSION210MODULES MODULE_VERSION
211MYSQL_PROTOCOL_STATUS VARIABLE_VALUE
210PLUGINS PLUGIN_TYPE212PLUGINS PLUGIN_TYPE
211PROCESSLIST USER213PROCESSLIST USER
212REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA214REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA
@@ -248,6 +250,7 @@
248CUMULATIVE_SQL_COMMANDS COUNT_SELECT250CUMULATIVE_SQL_COMMANDS COUNT_SELECT
249CUMULATIVE_USER_STATS BYTES_RECEIVED251CUMULATIVE_USER_STATS BYTES_RECEIVED
250CURRENT_SQL_COMMANDS IP252CURRENT_SQL_COMMANDS IP
253DRIZZLE_PROTOCOL_STATUS VARIABLE_VALUE
251GLOBAL_STATEMENTS VARIABLE_VALUE254GLOBAL_STATEMENTS VARIABLE_VALUE
252GLOBAL_STATUS VARIABLE_VALUE255GLOBAL_STATUS VARIABLE_VALUE
253GLOBAL_VARIABLES VARIABLE_VALUE256GLOBAL_VARIABLES VARIABLE_VALUE
@@ -262,6 +265,7 @@
262INNODB_STATUS VARIABLE_VALUE265INNODB_STATUS VARIABLE_VALUE
263INNODB_TRX TRX_STATE266INNODB_TRX TRX_STATE
264MODULES MODULE_VERSION267MODULES MODULE_VERSION
268MYSQL_PROTOCOL_STATUS VARIABLE_VALUE
265PLUGINS PLUGIN_TYPE269PLUGINS PLUGIN_TYPE
266PROCESSLIST USER270PROCESSLIST USER
267REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA271REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA