~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_error.cc

  • Committer: Brian Aker
  • Date: 2010-12-19 06:20:54 UTC
  • mfrom: (2005.1.1 bug673105)
  • Revision ID: brian@tangent.org-20101219062054-1kt0l3dxs4z2z8md
Merge Dave.

Show diffs side-by-side

added added

removed removed

Lines of Context:
113
113
*/
114
114
 
115
115
DRIZZLE_ERROR *push_warning(Session *session, DRIZZLE_ERROR::enum_warning_level level,
116
 
                            drizzled::error_t code, const char *msg)
 
116
                          uint32_t code, const char *msg)
117
117
{
118
118
  DRIZZLE_ERROR *err= 0;
119
119
 
120
 
  if (level == DRIZZLE_ERROR::WARN_LEVEL_NOTE && !(session->options & OPTION_SQL_NOTES))
121
 
  {
122
 
    return NULL;
123
 
  }
 
120
  if (level == DRIZZLE_ERROR::WARN_LEVEL_NOTE &&
 
121
      !(session->options & OPTION_SQL_NOTES))
 
122
    return(0);
124
123
 
125
124
  if (session->getQueryId() != session->getWarningQueryId())
126
125
    drizzle_reset_errors(session, 0);
128
127
 
129
128
  /* Abort if we are using strict mode and we are not using IGNORE */
130
129
  if ((int) level >= (int) DRIZZLE_ERROR::WARN_LEVEL_WARN &&
131
 
      session->abortOnWarning())
 
130
      session->really_abort_on_warning())
132
131
  {
133
132
    /* Avoid my_message() calling push_warning */
134
133
    bool no_warnings_for_error= session->no_warnings_for_error;
150
149
  {
151
150
    /* We have to use warn_root, as mem_root is freed after each query */
152
151
    if ((err= new (&session->warn_root) DRIZZLE_ERROR(session, code, level, msg)))
153
 
    {
154
152
      session->warn_list.push_back(err, &session->warn_root);
155
 
    }
156
153
  }
157
154
  session->warn_count[(uint32_t) level]++;
158
155
  session->total_warn_count++;
159
 
 
160
 
  return err;
 
156
  return(err);
161
157
}
162
158
 
163
159
/*
172
168
*/
173
169
 
174
170
void push_warning_printf(Session *session, DRIZZLE_ERROR::enum_warning_level level,
175
 
                         drizzled::error_t code, const char *format, ...)
 
171
                         uint32_t code, const char *format, ...)
176
172
{
177
173
  va_list args;
178
174
  char    warning[ERRMSGSIZE+20];
181
177
  vsnprintf(warning, sizeof(warning), format, args);
182
178
  va_end(args);
183
179
  push_warning(session, level, code, warning);
 
180
  return;
184
181
}
185
182
 
186
183
 
188
185
  Send all notes, errors or warnings to the client in a result set
189
186
 
190
187
  SYNOPSIS
191
 
    show_warnings()
 
188
    mysqld_show_warnings()
192
189
    session                     Thread handler
193
190
    levels_to_show      Bitmap for which levels to show
194
191
 
208
205
  { C_STRING_WITH_LEN("?") }
209
206
};
210
207
 
211
 
bool show_warnings(Session *session,
212
 
                   bitset<DRIZZLE_ERROR::NUM_ERRORS> &levels_to_show)
 
208
bool mysqld_show_warnings(Session *session,
 
209
                          bitset<DRIZZLE_ERROR::NUM_ERRORS> &levels_to_show)
213
210
{
214
211
  List<Item> field_list;
215
212
 
217
214
  field_list.push_back(new Item_return_int("Code",4, DRIZZLE_TYPE_LONG));
218
215
  field_list.push_back(new Item_empty_string("Message",DRIZZLE_ERRMSG_SIZE));
219
216
 
220
 
  if (session->getClient()->sendFields(&field_list))
 
217
  if (session->client->sendFields(&field_list))
221
218
    return true;
222
219
 
223
220
  DRIZZLE_ERROR *err;
237
234
      continue;
238
235
    if (idx > unit->select_limit_cnt)
239
236
      break;
240
 
    session->getClient()->store(warning_level_names[err->level].str,
241
 
                                warning_level_names[err->level].length);
242
 
    session->getClient()->store((uint32_t) err->code);
243
 
    session->getClient()->store(err->msg, strlen(err->msg));
244
 
    if (session->getClient()->flush())
 
237
    session->client->store(warning_level_names[err->level].str,
 
238
                           warning_level_names[err->level].length);
 
239
    session->client->store((uint32_t) err->code);
 
240
    session->client->store(err->msg, strlen(err->msg));
 
241
    if (session->client->flush())
245
242
      return(true);
246
243
  }
247
244
  session->my_eof();