~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sys_var.h

  • Committer: Monty Taylor
  • Date: 2010-11-09 20:45:38 UTC
  • mto: This revision was merged to the branch mainline in revision 1923.
  • Revision ID: mordred@inaugust.com-20101109204538-x8r8b87usstg6n44
Update to support default values and properly throw warnings on value
truncation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
#include "drizzled/base.h"
32
32
#include "drizzled/global_charset_info.h"
33
33
#include "drizzled/lex_string.h"
 
34
#include "drizzled/sql_error.h"
34
35
 
35
36
namespace drizzled
36
37
{
98
99
    :
99
100
    name(name_arg),
100
101
    after_update(func),
 
102
    option_limits(NULL),
101
103
    m_allow_empty_value(true)
102
104
  {}
103
105
  virtual ~sys_var() {}
228
230
class sys_var_uint64_t_ptr :public sys_var
229
231
{
230
232
  uint64_t *value;
 
233
  const uint64_t default_value;
 
234
  bool have_default_value;
231
235
public:
232
 
  sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg)
233
 
    :sys_var(name_arg),value(value_ptr_arg)
234
 
  {  }
235
 
  sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg,
236
 
                       sys_after_update_func func)
237
 
    :sys_var(name_arg,func), value(value_ptr_arg)
238
 
  {  }
 
236
  sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg) :
 
237
    sys_var(name_arg),
 
238
    value(value_ptr_arg),
 
239
    default_value(0),
 
240
    have_default_value(false)
 
241
  {  }
 
242
 
 
243
  sys_var_uint64_t_ptr(const char *name_arg,
 
244
                       uint64_t *value_ptr_arg,
 
245
                       const uint64_t default_value_in) :
 
246
    sys_var(name_arg),
 
247
    value(value_ptr_arg),
 
248
    default_value(default_value_in),
 
249
    have_default_value(true)
 
250
  {  }
 
251
 
 
252
  sys_var_uint64_t_ptr(const char *name_arg,
 
253
                       uint64_t *value_ptr_arg,
 
254
                       sys_after_update_func func) :
 
255
    sys_var(name_arg,func),
 
256
    value(value_ptr_arg),
 
257
    default_value(0),
 
258
    have_default_value(false)
 
259
  {  }
 
260
 
 
261
  sys_var_uint64_t_ptr(const char *name_arg,
 
262
                       uint64_t *value_ptr_arg,
 
263
                       sys_after_update_func func,
 
264
                       const uint64_t default_value_in) :
 
265
    sys_var(name_arg,func),
 
266
    value(value_ptr_arg),
 
267
    default_value(default_value_in),
 
268
    have_default_value(true)
 
269
  {  }
 
270
 
239
271
  bool update(Session *session, set_var *var);
240
272
  void set_default(Session *session, sql_var_t type);
 
273
  virtual bool check_default(sql_var_t)
 
274
  {
 
275
    return (not have_default_value) && option_limits == 0;
 
276
  }
241
277
  SHOW_TYPE show_type() { return SHOW_LONGLONG; }
242
278
  unsigned char *value_ptr(Session *, sql_var_t,
243
279
                           const LEX_STRING *)
402
438
 
403
439
  bool update(Session *, set_var *var)
404
440
  {
405
 
    value= var->save_result.uint32_t_value;
 
441
    value.set_value(var->save_result.uint32_t_value);
406
442
    return false;
407
443
  }
408
444
 
413
449
 
414
450
  void set_default(Session *, sql_var_t)
415
451
  {
416
 
    value= default_value;
 
452
    value.set_value(default_value);
417
453
  }
418
454
 
419
455
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)