~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item/ident.cc

  • Committer: Brian Aker
  • Date: 2009-02-17 00:40:38 UTC
  • mfrom: (873.2.30 devel)
  • Revision ID: brian@tangent.org-20090217004038-ivu0noxx1958wwls
Merge from Monty.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
#include <drizzled/current_session.h>
25
25
#include <drizzled/item/ident.h>
26
26
 
 
27
using namespace std;
 
28
 
27
29
const uint32_t NO_CACHED_FIELD_INDEX= UINT32_MAX;
28
30
 
29
31
Item_ident::Item_ident(Name_resolution_context *context_arg,
112
114
void Item_ident::print(String *str,
113
115
                       enum_query_type)
114
116
{
115
 
  char d_name_buff[MAX_ALIAS_NAME], t_name_buff[MAX_ALIAS_NAME];
116
 
  const char *d_name= db_name, *t_name= table_name;
117
 
  if (lower_case_table_names== 1 ||
118
 
      (lower_case_table_names == 2 && !alias_name_used))
119
 
  {
120
 
    if (table_name && table_name[0])
121
 
    {
122
 
      strcpy(t_name_buff, table_name);
123
 
      my_casedn_str(files_charset_info, t_name_buff);
124
 
      t_name= t_name_buff;
125
 
    }
126
 
    if (db_name && db_name[0])
127
 
    {
128
 
      strcpy(d_name_buff, db_name);
129
 
      my_casedn_str(files_charset_info, d_name_buff);
130
 
      d_name= d_name_buff;
131
 
    }
 
117
  string d_name, t_name;
 
118
 
 
119
  if (table_name && table_name[0])
 
120
  {
 
121
    t_name.assign(table_name);
 
122
    if (lower_case_table_names== 1 ||
 
123
        (lower_case_table_names == 2 && !alias_name_used))
 
124
      // Keeping the std:: here, since Item_ident has a transform method
 
125
      std::transform(t_name.begin(), t_name.end(),
 
126
                     t_name.begin(), ::tolower);
 
127
  }
 
128
 
 
129
  if (db_name && db_name[0])
 
130
  {
 
131
    d_name.assign(db_name);
 
132
    if (lower_case_table_names== 1 ||
 
133
        (lower_case_table_names == 2 && !alias_name_used))
 
134
      // Keeping the std:: prefix here, since Item_ident has a transform method
 
135
      std::transform(d_name.begin(), d_name.end(),
 
136
                     d_name.begin(), ::tolower);
132
137
  }
133
138
 
134
139
  if (!table_name || !field_name || !field_name[0])
142
147
  if (db_name && db_name[0] && !alias_name_used)
143
148
  {
144
149
    {
145
 
      str->append_identifier(d_name, (uint)strlen(d_name));
 
150
      str->append_identifier(d_name.c_str(), d_name.length());
146
151
      str->append('.');
147
152
    }
148
 
    str->append_identifier(t_name, (uint)strlen(t_name));
 
153
    str->append_identifier(t_name.c_str(), t_name.length());
149
154
    str->append('.');
150
155
    str->append_identifier(field_name, (uint)strlen(field_name));
151
156
  }
153
158
  {
154
159
    if (table_name[0])
155
160
    {
156
 
      str->append_identifier(t_name, (uint) strlen(t_name));
 
161
      str->append_identifier(t_name.c_str(), t_name.length());
157
162
      str->append('.');
158
163
      str->append_identifier(field_name, (uint) strlen(field_name));
159
164
    }