~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/function/set_user_var.cc

  • Committer: Brian Aker
  • Date: 2009-05-05 00:40:45 UTC
  • mfrom: (1003.2.7 mordred)
  • Revision ID: brian@gaz-20090505004045-yns4biv63thufj1b
Tags: 2009.05.1005
Merge Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#include <drizzled/server_includes.h>
21
21
#include CSTDINT_H
22
22
#include <drizzled/function/set_user_var.h>
23
 
#include <drizzled/function/get_variable.h>
24
23
#include <drizzled/function/update_hash.h>
25
24
#include <drizzled/field/num.h>
26
 
#include <drizzled/virtual_column_info.h>
27
25
#include <drizzled/session.h>
28
26
 
 
27
#include <bitset>
 
28
 
 
29
using namespace std;
 
30
 
29
31
/*
30
32
  When a user variable is updated (in a SET command or a query like
31
33
  SELECT @a:= ).
36
38
  assert(fixed == 0);
37
39
  /* fix_fields will call Item_func_set_user_var::fix_length_and_dec */
38
40
  if (Item_func::fix_fields(session, ref) ||
39
 
      !(entry= get_variable(&session->user_vars, name, 1)))
 
41
      !(entry= session->getVariable(name, true)))
40
42
    return true;
41
43
  /*
42
44
     Remember the last query which updated it, this way a query can later know
90
92
  {
91
93
    Table *table= (Table *) arg;
92
94
    if (result_field->table == table || !table)
93
 
      bitmap_set_bit(result_field->table->read_set, result_field->field_index);
94
 
    if (result_field->vcol_info && result_field->vcol_info->expr_item)
95
 
      return result_field->vcol_info->
96
 
               expr_item->walk(&Item::register_field_in_read_map, 1, arg);
 
95
      result_field->table->read_set->set(result_field->field_index);
97
96
  }
98
97
  return 0;
99
98
}
105
104
 
106
105
bool Item_func_set_user_var::register_field_in_bitmap(unsigned char *arg)
107
106
{
108
 
  MY_BITMAP *bitmap = (MY_BITMAP *) arg;
 
107
  bitset<MAX_FIELDS> *bitmap = (bitset<MAX_FIELDS> *) arg;
109
108
  assert(bitmap);
110
109
  if (result_field)
111
110
  {
112
 
    bitmap_set_bit(bitmap, result_field->field_index);
 
111
    bitmap->set(result_field->field_index);
113
112
  }
114
113
  return 0;
115
114
}