~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/table_identifier.cc

  • Committer: Brian Aker
  • Date: 2010-03-31 05:53:34 UTC
  • Revision ID: brian@gaz-20100331055334-yqqmzlgqb2xq1p5b
Mass overhaul to use schema_identifier.

Show diffs side-by-side

added added

removed removed

Lines of Context:
251
251
        (*from == ' ') ||
252
252
        (*from == '-'))
253
253
    {
254
 
      to[length]= *from;
 
254
      to[length]= tolower(*from);
255
255
      continue;
256
256
    }
257
257
   
273
273
  return false;
274
274
}
275
275
 
276
 
void TableIdentifier::primeLower()
 
276
void TableIdentifier::init()
277
277
{
278
 
  if (lower_db.empty())
279
 
  {
280
 
    lower_db.append(db);
281
 
    lower_table_name.append(table_name);
282
 
 
283
 
    std::transform(lower_table_name.begin(), lower_table_name.end(),
284
 
                   lower_table_name.begin(), ::tolower);
285
 
 
286
 
    std::transform(lower_db.begin(), lower_db.end(),
287
 
                   lower_db.begin(), ::tolower);
288
 
  }
 
278
  lower_table_name.append(table_name);
 
279
  std::transform(lower_table_name.begin(), lower_table_name.end(),
 
280
                 lower_table_name.begin(), ::tolower);
289
281
}
290
282
 
291
283
 
292
284
const std::string &TableIdentifier::getPath()
293
285
{
 
286
  assert(not lower_table_name.empty());
 
287
 
294
288
  if (path.empty())
295
289
  {
296
 
    primeLower();
297
290
    switch (type) {
298
291
    case message::Table::STANDARD:
299
 
      build_table_filename(path, lower_db.c_str(), lower_table_name.c_str(), false);
 
292
      build_table_filename(path, getLower().c_str(), lower_table_name.c_str(), false);
300
293
      break;
301
294
    case message::Table::INTERNAL:
302
 
      build_table_filename(path, lower_db.c_str(), lower_table_name.c_str(), true);
 
295
      build_table_filename(path, getLower().c_str(), lower_table_name.c_str(), true);
303
296
      break;
304
297
    case message::Table::TEMPORARY:
305
298
      build_tmptable_filename(path);
306
299
      break;
307
300
    case message::Table::FUNCTION:
308
 
      path.append(db);
 
301
      path.append(getSchemaName());
309
302
      path.append(".");
310
303
      path.append(table_name);
311
304
      break;
316
309
  return path;
317
310
}
318
311
 
 
312
bool TableIdentifier::compare(std::string schema_arg, std::string table_arg)
 
313
{
 
314
  std::transform(schema_arg.begin(), schema_arg.end(),
 
315
                 schema_arg.begin(), ::tolower);
 
316
 
 
317
  std::transform(table_arg.begin(), table_arg.end(),
 
318
                 table_arg.begin(), ::tolower);
 
319
 
 
320
  if (schema_arg == getLower() && table_arg == lower_table_name)
 
321
  {
 
322
    return true;
 
323
  }
 
324
 
 
325
  return false;
 
326
}
319
327
 
320
328
const std::string &TableIdentifier::getSQLPath()
321
329
{
324
332
    switch (type) {
325
333
    case message::Table::FUNCTION:
326
334
    case message::Table::STANDARD:
327
 
      sql_path.append(db);
 
335
      sql_path.append(getLower());
328
336
      sql_path.append(".");
329
337
      sql_path.append(table_name);
330
338
      break;
333
341
      sql_path.append(table_name);
334
342
      break;
335
343
    case message::Table::TEMPORARY:
336
 
      sql_path.append(db);
 
344
      sql_path.append(getLower());
337
345
      sql_path.append(".#");
338
346
      sql_path.append(table_name);
339
347
      break;
347
355
void TableIdentifier::copyToTableMessage(message::Table &message)
348
356
{
349
357
  message.set_name(table_name);
350
 
  message.set_schema(db);
 
358
  message.set_schema(getSchemaName());
351
359
}
352
360
 
353
361
} /* namespace drizzled */