38
38
option_type(global ? OPT_GLOBAL : OPT_SESSION)
40
40
add_field("VARIABLE_NAME");
41
add_field("VARIABLE_VALUE", 16300);
41
add_field("VARIABLE_VALUE", 1024);
44
44
StateTool::Generator::Generator(Field **arg, sql_var_t option_arg,
106
else if (var->type != SHOW_ARRAY)
108
fill(variables->name, var->value, var->type);
107
fill(variables->name, var->value, var->type);
125
void StateTool::Generator::fill(const char *name, char *value, SHOW_TYPE show_type)
118
extern drizzled::KEY_CACHE dflt_key_cache_var, *dflt_key_cache;
119
void StateTool::Generator::fill(const std::string &name, char *value, SHOW_TYPE show_type)
127
MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, int64_t);
128
char * const buff= (char *) &buff_data;
129
121
Session *session= current_session;
130
const char *pos, *end; // We assign a lot of const's
131
122
struct system_status_var *status_var;
123
std::ostringstream oss;
126
std::string return_value;
133
128
/* Scope represents if the status should be session or global */
134
129
status_var= getStatus();
152
146
value= ((char *) status_var + (ulong) value);
153
147
/* fall through */
154
148
case SHOW_DOUBLE:
155
/* 6 is the default precision for '%f' in sprintf() */
156
end= buff + internal::my_fcvt(*(double *) value, 6, buff, NULL);
150
oss << *(double *) value;
151
return_value= oss.str();
158
153
case SHOW_LONG_STATUS:
159
154
value= ((char *) status_var + (ulong) value);
160
155
/* fall through */
162
end= internal::int10_to_str(*(long*) value, buff, 10);
157
oss << *(int64_t*) value;
158
return_value= oss.str();
164
160
case SHOW_LONGLONG_STATUS:
165
161
value= ((char *) status_var + (uint64_t) value);
166
162
/* fall through */
167
163
case SHOW_LONGLONG:
168
end= internal::int64_t10_to_str(*(int64_t*) value, buff, 10);
164
oss << *(int64_t*) value;
165
return_value= oss.str();
172
stringstream ss (stringstream::in);
173
ss << *(size_t*) value;
175
string str= ss.str();
176
strncpy(buff, str.c_str(), str.length());
177
end= buff+ str.length();
168
oss << *(size_t*) value;
169
return_value= oss.str();
180
171
case SHOW_HA_ROWS:
181
end= internal::int64_t10_to_str((int64_t) *(ha_rows*) value, buff, 10);
172
oss << (int64_t) *(ha_rows*) value;
173
return_value= oss.str();
184
end+= sprintf(buff,"%s", *(bool*) value ? "ON" : "OFF");
186
176
case SHOW_MY_BOOL:
187
end+= sprintf(buff,"%s", *(bool*) value ? "ON" : "OFF");
177
return_value= *(bool*) value ? "ON" : "OFF";
190
180
case SHOW_INT_NOFLUSH: // the difference lies in refresh_status()
191
end= internal::int10_to_str((long) *(uint32_t*) value, buff, 10);
181
oss << (long) *(uint32_t*) value;
182
return_value= oss.str();
197
end= strchr(pos, '\0');
200
190
case SHOW_CHAR_PTR:
202
if (!(pos= *(char**) value))
204
end= strchr(pos, '\0');
193
return_value= *(char**) value;
207
197
case SHOW_KEY_CACHE_LONG:
198
value= (char*) dflt_key_cache + (unsigned long)value;
199
oss << *(long*) value;
200
return_value= oss.str();
208
202
case SHOW_KEY_CACHE_LONGLONG:
209
pos= "not supported";
210
end= pos + sizeof("not supported");
203
value= (char*) dflt_key_cache + (unsigned long)value;
204
oss << *(int64_t*) value;
205
return_value= oss.str();
212
208
break; // Return empty string
213
209
case SHOW_SYS: // Cannot happen