~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/status_helper.cc

  • Committer: Stewart Smith
  • Date: 2010-06-16 14:23:07 UTC
  • mto: (1626.1.3 build)
  • mto: This revision was merged to the branch mainline in revision 1633.
  • Revision ID: stewart@flamingspork.com-20100616142307-xzid4yzriltwu6tt
add basic test for Handler_update status variable

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 */
20
20
 
21
21
#include "config.h"
22
 
#include <boost/lexical_cast.hpp>
23
22
#include "status_helper.h"
24
23
#include "drizzled/set_var.h"
25
24
#include "drizzled/drizzled.h"
27
26
 
28
27
#include <sstream>
29
28
 
 
29
using namespace drizzled;
30
30
using namespace std;
31
31
 
32
 
namespace drizzled
33
 
{
34
 
 
35
 
extern uint64_t refresh_version;
36
 
extern time_t server_start_time;
37
 
extern time_t flush_status_time;
38
 
 
39
32
static int show_starttime_new(drizzle_show_var *var, char *buff)
40
33
{
41
34
  var->type= SHOW_LONG;
66
59
 
67
60
static st_show_var_func_container show_connection_count_cont_new= { &show_connection_count_new };
68
61
 
 
62
extern drizzled::KEY_CACHE dflt_key_cache_var, *dflt_key_cache;
 
63
 
69
64
string StatusHelper::fillHelper(system_status_var *status_var, char *value, SHOW_TYPE show_type)
70
65
{
71
66
  ostringstream oss;
84
79
    value= ((char *) status_var + (ulong) value);
85
80
    /* fall through */
86
81
  case SHOW_LONG:
87
 
    return_value=boost::lexical_cast<std::string>(*(long*) value);
 
82
    oss << *(long*) value;
 
83
    return_value= oss.str();
88
84
    break;
89
85
  case SHOW_LONGLONG_STATUS:
90
86
    value= ((char *) status_var + (uint64_t) value);
91
87
    /* fall through */
92
88
  case SHOW_LONGLONG:
93
 
    return_value=boost::lexical_cast<std::string>(*(int64_t*) value);
 
89
    oss << *(int64_t*) value;
 
90
    return_value= oss.str();
94
91
    break;
95
92
  case SHOW_SIZE:
96
 
    return_value=boost::lexical_cast<std::string>(*(size_t*) value);
 
93
    oss << *(size_t*) value;
 
94
    return_value= oss.str();
97
95
    break;
98
96
  case SHOW_HA_ROWS:
99
 
    return_value=boost::lexical_cast<std::string>((int64_t) *(ha_rows*) value);
 
97
    oss << (int64_t) *(ha_rows*) value;
 
98
    return_value= oss.str();
100
99
    break;
101
100
  case SHOW_BOOL:
102
101
  case SHOW_MY_BOOL:
104
103
    break;
105
104
  case SHOW_INT:
106
105
  case SHOW_INT_NOFLUSH: // the difference lies in refresh_status()
107
 
    return_value=boost::lexical_cast<std::string>((long) *(uint32_t*) value);
 
106
    oss << (long) *(uint32_t*) value;
 
107
    return_value= oss.str();
108
108
    break;
109
109
  case SHOW_CHAR:
110
110
    {
119
119
 
120
120
      break;
121
121
    }
 
122
  case SHOW_KEY_CACHE_LONG:
 
123
    value= (char*) dflt_key_cache + (unsigned long)value;
 
124
    oss << *(long*) value;
 
125
    return_value= oss.str();
 
126
    break;
 
127
  case SHOW_KEY_CACHE_LONGLONG:
 
128
    value= (char*) dflt_key_cache + (unsigned long)value;
 
129
    oss << *(int64_t*) value;
 
130
    return_value= oss.str();
 
131
    break;
122
132
  case SHOW_UNDEF:
123
133
    break;                                        // Return empty string
124
134
  case SHOW_SYS:                                  // Cannot happen
132
142
 
133
143
drizzle_show_var StatusHelper::status_vars_defs[]=
134
144
{
135
 
  {"Aborted_clients",           (char*) offsetof(system_status_var, aborted_threads), SHOW_LONGLONG_STATUS},
136
 
  {"Aborted_connects",          (char*) offsetof(system_status_var, aborted_connects), SHOW_LONGLONG_STATUS},
 
145
  {"Aborted_clients",           (char*) &current_global_counters.aborted_threads, SHOW_LONGLONG},
 
146
  {"Aborted_connects",          (char*) &current_global_counters.aborted_connects, SHOW_LONGLONG},
137
147
  {"Bytes_received",            (char*) offsetof(system_status_var, bytes_received), SHOW_LONGLONG_STATUS},
138
148
  {"Bytes_sent",                (char*) offsetof(system_status_var, bytes_sent), SHOW_LONGLONG_STATUS},
139
 
  {"Connections",               (char*) &current_global_counters.connections,  SHOW_LONGLONG},
 
149
  {"Connections",               (char*) &global_thread_id, SHOW_INT_NOFLUSH},
140
150
  {"Created_tmp_disk_tables",   (char*) offsetof(system_status_var, created_tmp_disk_tables), SHOW_LONGLONG_STATUS},
141
151
  {"Created_tmp_tables",        (char*) offsetof(system_status_var, created_tmp_tables), SHOW_LONGLONG_STATUS},
142
152
  {"Flush_commands",            (char*) &refresh_version,    SHOW_INT_NOFLUSH},
154
164
  {"Handler_savepoint_rollback",(char*) offsetof(system_status_var, ha_savepoint_rollback_count), SHOW_LONGLONG_STATUS},
155
165
  {"Handler_update",            (char*) offsetof(system_status_var, ha_update_count), SHOW_LONGLONG_STATUS},
156
166
  {"Handler_write",             (char*) offsetof(system_status_var, ha_write_count), SHOW_LONGLONG_STATUS},
 
167
  {"Key_blocks_not_flushed",    (char*) offsetof(KEY_CACHE, global_blocks_changed), SHOW_KEY_CACHE_LONG},
 
168
  {"Key_blocks_unused",         (char*) offsetof(KEY_CACHE, blocks_unused), SHOW_KEY_CACHE_LONG},
 
169
  {"Key_blocks_used",           (char*) offsetof(KEY_CACHE, blocks_used), SHOW_KEY_CACHE_LONG},
 
170
  {"Key_read_requests",         (char*) offsetof(KEY_CACHE, global_cache_r_requests), SHOW_KEY_CACHE_LONGLONG},
 
171
  {"Key_reads",                 (char*) offsetof(KEY_CACHE, global_cache_read), SHOW_KEY_CACHE_LONGLONG},
 
172
  {"Key_write_requests",        (char*) offsetof(KEY_CACHE, global_cache_w_requests), SHOW_KEY_CACHE_LONGLONG},
 
173
  {"Key_writes",                (char*) offsetof(KEY_CACHE, global_cache_write), SHOW_KEY_CACHE_LONGLONG},
157
174
  {"Last_query_cost",           (char*) offsetof(system_status_var, last_query_cost), SHOW_DOUBLE_STATUS},
158
175
  {"Max_used_connections",      (char*) &current_global_counters.max_used_connections,  SHOW_LONGLONG},
159
176
  {"Questions",                 (char*) offsetof(system_status_var, questions), SHOW_LONGLONG_STATUS},
162
179
  {"Select_range",              (char*) offsetof(system_status_var, select_range_count), SHOW_LONGLONG_STATUS},
163
180
  {"Select_range_check",        (char*) offsetof(system_status_var, select_range_check_count), SHOW_LONGLONG_STATUS},
164
181
  {"Select_scan",               (char*) offsetof(system_status_var, select_scan_count), SHOW_LONGLONG_STATUS},
165
 
  {"Sessions_connected",         (char*) &show_connection_count_cont_new,  SHOW_FUNC},
166
182
  {"Slow_queries",              (char*) offsetof(system_status_var, long_query_count), SHOW_LONGLONG_STATUS},
167
183
  {"Sort_merge_passes",         (char*) offsetof(system_status_var, filesort_merge_passes), SHOW_LONGLONG_STATUS},
168
184
  {"Sort_range",                (char*) offsetof(system_status_var, filesort_range_count), SHOW_LONGLONG_STATUS},
170
186
  {"Sort_scan",                 (char*) offsetof(system_status_var, filesort_scan_count), SHOW_LONGLONG_STATUS},
171
187
  {"Table_locks_immediate",     (char*) &current_global_counters.locks_immediate,        SHOW_LONGLONG},
172
188
  {"Table_locks_waited",        (char*) &current_global_counters.locks_waited,           SHOW_LONGLONG},
 
189
  {"Threads_connected",         (char*) &show_connection_count_cont_new,  SHOW_FUNC},
173
190
  {"Uptime",                    (char*) &show_starttime_cont_new,         SHOW_FUNC},
174
191
  {"Uptime_since_flush_status", (char*) &show_flushstatustime_cont_new,   SHOW_FUNC},
175
192
  {NULL, NULL, SHOW_LONGLONG}
176
193
};
177
 
 
178
 
} /* namespace drizzled */