~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/show.cc

Merged Eric from lp:~eday/drizzle/eday-merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
51
51
#include <algorithm>
52
52
 
53
53
using namespace std;
 
54
using namespace drizzled;
54
55
 
55
56
extern "C"
56
57
int show_var_cmp(const void *var1, const void *var2);
229
230
 
230
231
bool drizzled_show_create(Session *session, TableList *table_list)
231
232
{
232
 
  Protocol *protocol= session->protocol;
 
233
  plugin::Protocol *protocol= session->protocol;
233
234
  char buff[2048];
234
235
  String buffer(buff, sizeof(buff), system_charset_info);
235
236
 
261
262
                                               max(buffer.length(),(uint32_t)1024)));
262
263
  }
263
264
 
264
 
  if (protocol->sendFields(&field_list,
265
 
                           Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
266
 
  {
 
265
  if (protocol->sendFields(&field_list))
267
266
    return true;
268
 
  }
269
267
  protocol->prepareForResend();
270
268
  {
271
269
    if (table_list->schema_table)
345
343
{
346
344
  char buff[2048];
347
345
  String buffer(buff, sizeof(buff), system_charset_info);
348
 
  Protocol *protocol=session->protocol;
 
346
  plugin::Protocol *protocol=session->protocol;
349
347
 
350
348
  if (store_db_create_info(dbname, &buffer, if_not_exists))
351
349
  {
361
359
  field_list.push_back(new Item_empty_string("Database",NAME_CHAR_LEN));
362
360
  field_list.push_back(new Item_empty_string("Create Database",1024));
363
361
 
364
 
  if (protocol->sendFields(&field_list,
365
 
                           Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
 
362
  if (protocol->sendFields(&field_list))
366
363
    return true;
367
364
 
368
365
  protocol->prepareForResend();
376
373
}
377
374
 
378
375
 
379
 
 
380
 
/****************************************************************************
381
 
  Return only fields for API mysql_list_fields
382
 
  Use "show table wildcard" in mysql instead of this
383
 
****************************************************************************/
384
 
 
385
 
void
386
 
mysqld_list_fields(Session *session, TableList *table_list, const char *wild)
387
 
{
388
 
  Table *table;
389
 
 
390
 
  if (session->open_normal_and_derived_tables(table_list, 0))
391
 
    return;
392
 
  table= table_list->table;
393
 
 
394
 
  List<Item> field_list;
395
 
 
396
 
  Field **ptr,*field;
397
 
  for (ptr=table->field ; (field= *ptr); ptr++)
398
 
  {
399
 
    if (!wild || !wild[0] ||
400
 
        !wild_case_compare(system_charset_info, field->field_name,wild))
401
 
    {
402
 
      field_list.push_back(new Item_field(field));
403
 
    }
404
 
  }
405
 
  table->restoreRecordAsDefault();              // Get empty record
406
 
  table->use_all_columns();
407
 
  if (session->protocol->sendFields(&field_list, Protocol::SEND_DEFAULTS))
408
 
    return;
409
 
  session->my_eof();
410
 
}
411
 
 
412
 
 
413
376
/*
414
377
  Get the quote character for displaying an identifier.
415
378
 
885
848
  Item *field;
886
849
  List<Item> field_list;
887
850
  I_List<thread_info> thread_infos;
888
 
  Protocol *protocol= session->protocol;
 
851
  plugin::Protocol *protocol= session->protocol;
889
852
 
890
853
  field_list.push_back(new Item_int("Id", 0, MY_INT32_NUM_DECIMAL_DIGITS));
891
854
  field_list.push_back(new Item_empty_string("User",16));
898
861
  field->maybe_null= true;
899
862
  field_list.push_back(field=new Item_empty_string("Info", PROCESS_LIST_WIDTH));
900
863
  field->maybe_null= true;
901
 
  if (protocol->sendFields(&field_list,
902
 
                           Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
 
864
  if (protocol->sendFields(&field_list))
903
865
    return;
904
866
 
905
867
  pthread_mutex_lock(&LOCK_thread_count); // For unlink from list
1205
1167
                           LEX_STRING *db_name, LEX_STRING *table_name)
1206
1168
{
1207
1169
  Table_ident *table_ident;
1208
 
  table_ident= new Table_ident(session, *db_name, *table_name, 1);
 
1170
  table_ident= new Table_ident(*db_name, *table_name);
1209
1171
  sel->init_query();
1210
1172
  if (!sel->add_table_to_list(session, table_ident, 0, 0, TL_READ))
1211
1173
    return 1;
2650
2612
  session->make_lex_string(&table, schema_table->getTableName().c_str(),
2651
2613
                           schema_table->getTableName().length(), 0);
2652
2614
  if (schema_table->oldFormat(session, schema_table) ||   /* Handle old syntax */
2653
 
      !sel->add_table_to_list(session, new Table_ident(session, db, table, 0),
 
2615
      !sel->add_table_to_list(session, new Table_ident(db, table),
2654
2616
                              0, 0, TL_READ))
2655
2617
  {
2656
2618
    return true;