~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/identifier/table.cc

  • Committer: Brian Aker
  • Date: 2010-12-20 19:20:57 UTC
  • mto: This revision was merged to the branch mainline in revision 2016.
  • Revision ID: brian@tangent.org-20101220192057-1ch4b9uo008d8rje
Merge in additional fixes for sign, plus alter table, plus TIME on
processlist.

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
namespace drizzled
43
43
{
44
44
 
 
45
class SchemaIdentifier;
 
46
 
45
47
extern std::string drizzle_tmpdir;
46
48
extern pid_t current_pid;
47
49
 
303
305
  }
304
306
}
305
307
 
 
308
bool TableIdentifier::isValid() const
 
309
{
 
310
  if (not SchemaIdentifier::isValid())
 
311
    return false;
 
312
 
 
313
  bool error= false;
 
314
  do
 
315
  {
 
316
    if (table_name.empty())
 
317
    {
 
318
      error= true;
 
319
      break;
 
320
    }
 
321
 
 
322
    if (table_name.size() > NAME_LEN)
 
323
    {
 
324
      error= true;
 
325
      break;
 
326
    }
 
327
 
 
328
    if (table_name.at(table_name.length() -1) == ' ')
 
329
    {
 
330
      error= true;
 
331
      break;
 
332
    }
 
333
 
 
334
    if (table_name.at(0) == '.')
 
335
    {
 
336
      error= true;
 
337
      break;
 
338
    }
 
339
 
 
340
    {
 
341
      const CHARSET_INFO * const cs= &my_charset_utf8mb4_general_ci;
 
342
 
 
343
      int well_formed_error;
 
344
      uint32_t res= cs->cset->well_formed_len(cs, table_name.c_str(), table_name.c_str() + table_name.length(),
 
345
                                              NAME_CHAR_LEN, &well_formed_error);
 
346
      if (well_formed_error or table_name.length() != res)
 
347
      {
 
348
        error= true;
 
349
        break;
 
350
      }
 
351
    }
 
352
  } while (0);
 
353
 
 
354
  if (error)
 
355
  {
 
356
    std::string name;
 
357
 
 
358
    getSQLPath(name);
 
359
    my_error(ER_WRONG_TABLE_NAME, MYF(0), name.c_str());
 
360
 
 
361
    return false;
 
362
  }
 
363
 
 
364
  return true;
 
365
}
 
366
 
306
367
 
307
368
void TableIdentifier::copyToTableMessage(message::Table &message) const
308
369
{