@@ -183,6 +183,45 @@ SHOW_TYPE pluginvar_show_type(SYS_VAR *plugin_var) {
183
183
}
184
184
}
185
185
186
+ const void *pluginvar_default_value (SYS_VAR *plugin_var) {
187
+ switch (plugin_var->flags & (PLUGIN_VAR_TYPEMASK | PLUGIN_VAR_THDLOCAL)) {
188
+ case PLUGIN_VAR_INT:
189
+ return &((sysvar_uint_t *)plugin_var)->def_val ;
190
+ case PLUGIN_VAR_LONG:
191
+ return &((sysvar_ulong_t *)plugin_var)->def_val ;
192
+ case PLUGIN_VAR_LONGLONG:
193
+ return &((sysvar_ulonglong_t *)plugin_var)->def_val ;
194
+ case PLUGIN_VAR_ENUM:
195
+ return &((sysvar_enum_t *)plugin_var)->def_val ;
196
+ case PLUGIN_VAR_SET:
197
+ return &((sysvar_set_t *)plugin_var)->def_val ;
198
+ case PLUGIN_VAR_BOOL:
199
+ return &((sysvar_bool_t *)plugin_var)->def_val ;
200
+ case PLUGIN_VAR_STR:
201
+ return &((sysvar_str_t *)plugin_var)->def_val ;
202
+ case PLUGIN_VAR_DOUBLE:
203
+ return &((sysvar_double_t *)plugin_var)->def_val ;
204
+ case PLUGIN_VAR_INT | PLUGIN_VAR_THDLOCAL:
205
+ return &((thdvar_uint_t *)plugin_var)->def_val ;
206
+ case PLUGIN_VAR_LONG | PLUGIN_VAR_THDLOCAL:
207
+ return &((thdvar_ulong_t *)plugin_var)->def_val ;
208
+ case PLUGIN_VAR_LONGLONG | PLUGIN_VAR_THDLOCAL:
209
+ return &((thdvar_ulonglong_t *)plugin_var)->def_val ;
210
+ case PLUGIN_VAR_ENUM | PLUGIN_VAR_THDLOCAL:
211
+ return &((thdvar_enum_t *)plugin_var)->def_val ;
212
+ case PLUGIN_VAR_SET | PLUGIN_VAR_THDLOCAL:
213
+ return &((thdvar_set_t *)plugin_var)->def_val ;
214
+ case PLUGIN_VAR_BOOL | PLUGIN_VAR_THDLOCAL:
215
+ return &((thdvar_bool_t *)plugin_var)->def_val ;
216
+ case PLUGIN_VAR_STR | PLUGIN_VAR_THDLOCAL:
217
+ return &((thdvar_str_t *)plugin_var)->def_val ;
218
+ case PLUGIN_VAR_DOUBLE | PLUGIN_VAR_THDLOCAL:
219
+ return &((thdvar_double_t *)plugin_var)->def_val ;
220
+ default :
221
+ return nullptr ;
222
+ }
223
+ }
224
+
186
225
/*
187
226
returns a pointer to the memory which holds the thd-local variable or
188
227
a pointer to the global variable if thd==null.
@@ -366,60 +405,7 @@ bool sys_var_pluginvar::global_update(THD *thd, set_var *var) {
366
405
void *tgt = real_value_ptr (thd, var->type );
367
406
const void *src = &var->save_result ;
368
407
369
- if (!var->value ) {
370
- switch (plugin_var->flags & (PLUGIN_VAR_TYPEMASK | PLUGIN_VAR_THDLOCAL)) {
371
- case PLUGIN_VAR_INT:
372
- src = &((sysvar_uint_t *)plugin_var)->def_val ;
373
- break ;
374
- case PLUGIN_VAR_LONG:
375
- src = &((sysvar_ulong_t *)plugin_var)->def_val ;
376
- break ;
377
- case PLUGIN_VAR_LONGLONG:
378
- src = &((sysvar_ulonglong_t *)plugin_var)->def_val ;
379
- break ;
380
- case PLUGIN_VAR_ENUM:
381
- src = &((sysvar_enum_t *)plugin_var)->def_val ;
382
- break ;
383
- case PLUGIN_VAR_SET:
384
- src = &((sysvar_set_t *)plugin_var)->def_val ;
385
- break ;
386
- case PLUGIN_VAR_BOOL:
387
- src = &((sysvar_bool_t *)plugin_var)->def_val ;
388
- break ;
389
- case PLUGIN_VAR_STR:
390
- src = &((sysvar_str_t *)plugin_var)->def_val ;
391
- break ;
392
- case PLUGIN_VAR_DOUBLE:
393
- src = &((sysvar_double_t *)plugin_var)->def_val ;
394
- break ;
395
- case PLUGIN_VAR_INT | PLUGIN_VAR_THDLOCAL:
396
- src = &((thdvar_uint_t *)plugin_var)->def_val ;
397
- break ;
398
- case PLUGIN_VAR_LONG | PLUGIN_VAR_THDLOCAL:
399
- src = &((thdvar_ulong_t *)plugin_var)->def_val ;
400
- break ;
401
- case PLUGIN_VAR_LONGLONG | PLUGIN_VAR_THDLOCAL:
402
- src = &((thdvar_ulonglong_t *)plugin_var)->def_val ;
403
- break ;
404
- case PLUGIN_VAR_ENUM | PLUGIN_VAR_THDLOCAL:
405
- src = &((thdvar_enum_t *)plugin_var)->def_val ;
406
- break ;
407
- case PLUGIN_VAR_SET | PLUGIN_VAR_THDLOCAL:
408
- src = &((thdvar_set_t *)plugin_var)->def_val ;
409
- break ;
410
- case PLUGIN_VAR_BOOL | PLUGIN_VAR_THDLOCAL:
411
- src = &((thdvar_bool_t *)plugin_var)->def_val ;
412
- break ;
413
- case PLUGIN_VAR_STR | PLUGIN_VAR_THDLOCAL:
414
- src = &((thdvar_str_t *)plugin_var)->def_val ;
415
- break ;
416
- case PLUGIN_VAR_DOUBLE | PLUGIN_VAR_THDLOCAL:
417
- src = &((thdvar_double_t *)plugin_var)->def_val ;
418
- break ;
419
- default :
420
- assert (0 );
421
- }
422
- }
408
+ if (!var->value ) src = pluginvar_default_value (plugin_var);
423
409
424
410
if ((plugin_var->flags & PLUGIN_VAR_TYPEMASK) == PLUGIN_VAR_STR &&
425
411
plugin_var->flags & PLUGIN_VAR_MEMALLOC) {
0 commit comments