@@ -1250,14 +1250,12 @@ public:
1250
1250
on_update_function on_update_func=0 ,
1251
1251
const char *substitute=0 )
1252
1252
:Sys_var_double(name_arg, comment, flag_args, off, size, getopt,
1253
- min_val, max_val, def_val, lock,
1253
+ min_val, max_val, def_val * arg_cost_adjust , lock,
1254
1254
binlog_status_arg,
1255
1255
on_check_func,
1256
1256
on_update_func,
1257
1257
substitute)
1258
1258
{
1259
- if (arg_cost_adjust == 1000 )
1260
- option.var_type |= GET_ADJUST_VALUE;
1261
1259
cost_adjust= (double ) arg_cost_adjust;
1262
1260
}
1263
1261
bool session_update (THD *thd, set_var *var)
@@ -1275,8 +1273,7 @@ public:
1275
1273
1276
1274
void global_save_default (THD *thd, set_var *var)
1277
1275
{
1278
- var->save_result .double_value = getopt_ulonglong2double (option.def_value )*
1279
- cost_adjust;
1276
+ var->save_result .double_value = getopt_ulonglong2double (option.def_value );
1280
1277
}
1281
1278
const uchar *tmp_ptr (THD *thd) const
1282
1279
{
@@ -1312,33 +1309,20 @@ public:
1312
1309
#define COST_VAR (X ) GLOBAL_VAR(default_optimizer_costs.X)
1313
1310
#define cost_var_ptr (KC, OFF ) (((uchar*)(KC))+(OFF))
1314
1311
#define cost_var (KC, OFF ) (*(double *)cost_var_ptr(KC, OFF))
1315
- typedef bool (*cost_update_function)(THD *, OPTIMIZER_COSTS *, ptrdiff_t ,
1316
- double , double );
1317
-
1318
- static bool update_cost (THD *thd, OPTIMIZER_COSTS *key_cache,
1319
- ptrdiff_t offset, double new_value, double cost_adjust)
1320
- {
1321
- cost_var (key_cache, offset)= new_value / cost_adjust;
1322
- return 0 ;
1323
- }
1324
-
1325
1312
1326
1313
class Sys_var_engine_optimizer_cost : public Sys_var_optimizer_cost
1327
1314
{
1328
- cost_update_function cost_update;
1329
1315
public:
1330
1316
Sys_var_engine_optimizer_cost (const char *name_arg,
1331
1317
const char *comment, int flag_args, ptrdiff_t off, size_t size,
1332
1318
CMD_LINE getopt,
1333
1319
double min_val, double max_val, double def_val,
1334
1320
long cost_adjust, PolyLock *lock= 0 ,
1335
- cost_update_function on_update_func= update_cost,
1336
1321
const char *substitute=0 )
1337
1322
: Sys_var_optimizer_cost(name_arg, comment, flag_args, off, size,
1338
1323
getopt, min_val, max_val, def_val, cost_adjust,
1339
1324
lock, VARIABLE_NOT_IN_BINLOG, 0 ,
1340
- 0 , substitute),
1341
- cost_update (on_update_func)
1325
+ 0 , substitute)
1342
1326
{
1343
1327
option.var_type |= GET_ASK_ADDR;
1344
1328
option.value = (uchar**)1 ; // crash me, please
@@ -1351,7 +1335,6 @@ class Sys_var_engine_optimizer_cost: public Sys_var_optimizer_cost
1351
1335
double new_value= var->save_result .double_value ;
1352
1336
LEX_CSTRING *base_name= &var->base ;
1353
1337
OPTIMIZER_COSTS *optimizer_costs;
1354
- bool res;
1355
1338
1356
1339
/* If no basename, assume it's for the default costs */
1357
1340
if (!base_name->length )
@@ -1364,9 +1347,9 @@ class Sys_var_engine_optimizer_cost: public Sys_var_optimizer_cost
1364
1347
mysql_mutex_unlock (&LOCK_optimizer_costs);
1365
1348
return true ;
1366
1349
}
1367
- res= cost_update (thd, optimizer_costs, offset, new_value, cost_adjust) ;
1350
+ cost_var ( optimizer_costs, offset)= new_value / cost_adjust;
1368
1351
mysql_mutex_unlock (&LOCK_optimizer_costs);
1369
- return res ;
1352
+ return 0 ;
1370
1353
}
1371
1354
const uchar *global_value_ptr (THD *thd, const LEX_CSTRING *base) const
1372
1355
{
0 commit comments