22
22
/* Function with list databases, tables or fields */
24
#include <drizzled/sql_select.h>
25
#include <drizzled/show.h>
26
#include <drizzled/gettext.h>
27
#include <drizzled/util/convert.h>
28
#include <drizzled/error.h>
29
#include <drizzled/tztime.h>
25
30
#include <drizzled/data_home.h>
26
#include <drizzled/error.h>
27
#include <drizzled/internal/my_sys.h>
28
#include <drizzled/plugin/storage_engine.h>
29
#include <drizzled/session.h>
30
#include <drizzled/show.h>
31
#include <drizzled/sql_select.h>
31
#include <drizzled/item/blob.h>
32
#include <drizzled/item/cmpfunc.h>
33
#include <drizzled/item/return_int.h>
34
#include <drizzled/item/empty_string.h>
35
#include <drizzled/item/return_date_time.h>
36
#include <drizzled/sql_base.h>
37
#include <drizzled/db.h>
38
#include <drizzled/field/epoch.h>
39
#include <drizzled/field/decimal.h>
40
#include <drizzled/lock.h>
41
#include <drizzled/item/return_date_time.h>
42
#include <drizzled/item/empty_string.h>
43
#include "drizzled/session/cache.h"
44
#include <drizzled/message/schema.pb.h>
45
#include <drizzled/plugin/client.h>
46
#include <drizzled/cached_directory.h>
47
#include "drizzled/sql_table.h"
48
#include "drizzled/global_charset_info.h"
49
#include "drizzled/pthread_globals.h"
50
#include "drizzled/internal/m_string.h"
51
#include "drizzled/internal/my_sys.h"
52
#include "drizzled/message/statement_transform.h"
33
#include <drizzled/statement/show.h>
34
#include <drizzled/statement/show_errors.h>
35
#include <drizzled/statement/show_warnings.h>
54
#include "drizzled/statement/show.h"
55
#include "drizzled/statement/show_errors.h"
56
#include "drizzled/statement/show_warnings.h"
38
59
#include <sys/stat.h>
54
75
return str ? str : "<nil>";
57
int wild_case_compare(const charset_info_st * const cs, const char *str, const char *wildstr)
78
int wild_case_compare(const CHARSET_INFO * const cs, const char *str, const char *wildstr)
91
108
if ((cmp= *wildstr) == internal::wild_prefix && wildstr[1])
94
110
cmp= my_toupper(cs, cmp);
96
111
while (*str && my_toupper(cs, *str) != cmp)
103
116
if (wild_case_compare(cs, str, wildstr) == 0)
106
118
} while (*str++);
166
Item_field *my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "SCHEMA_NAME");
177
Item_field *my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "SCHEMA_NAME");
167
178
my_field->is_autogenerated_name= false;
168
179
my_field->set_name(column_name.c_str(), column_name.length(), system_charset_info);
193
204
session->getLex()->select_lex.db= const_cast<char *>(ident);
194
205
if (not plugin::StorageEngine::doesSchemaExist(identifier))
196
my_error(ER_BAD_DB_ERROR, identifier);
207
my_error(ER_BAD_DB_ERROR, MYF(0), ident);
198
209
select->setShowPredicate(ident, "");
219
230
if (prepare_new_schema_table(session, session->getLex(), "SHOW_TABLES"))
222
Item_field *my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "TABLE_NAME");
233
Item_field *my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "TABLE_NAME");
223
234
my_field->is_autogenerated_name= false;
224
235
my_field->set_name(column_name.c_str(), column_name.length(), system_charset_info);
242
253
if (prepare_new_schema_table(session, session->getLex(), "SHOW_TEMPORARY_TABLES"))
245
if (session->add_item_to_list( new Item_field(&session->getLex()->current_select->context, NULL, NULL, "*")))
256
if (session->add_item_to_list( new Item_field(&session->lex->current_select->context, NULL, NULL, "*")))
248
(session->getLex()->current_select->with_wild)++;
259
(session->lex->current_select->with_wild)++;
266
277
identifier::Schema identifier(ident);
267
278
if (not plugin::StorageEngine::doesSchemaExist(identifier))
269
my_error(ER_BAD_DB_ERROR, identifier);
280
my_error(ER_BAD_DB_ERROR, MYF(0), ident);
272
283
select->setShowPredicate(ident, "");
284
295
if (prepare_new_schema_table(session, session->getLex(), "SHOW_TABLE_STATUS"))
287
if (session->add_item_to_list( new Item_field(&session->getLex()->current_select->
298
if (session->add_item_to_list( new Item_field(&session->lex->current_select->
289
300
NULL, NULL, "*")))
292
(session->getLex()->current_select->with_wild)++;
303
(session->lex->current_select->with_wild)++;
341
352
if (prepare_new_schema_table(session, session->getLex(), "SHOW_COLUMNS"))
344
if (session->add_item_to_list( new Item_field(&session->getLex()->current_select->context, NULL, NULL, "*")))
355
if (session->add_item_to_list( new Item_field(&session->lex->current_select->context, NULL, NULL, "*")))
347
(session->getLex()->current_select->with_wild)++;
358
(session->lex->current_select->with_wild)++;
407
418
if (prepare_new_schema_table(session, session->getLex(), "SHOW_INDEXES"))
410
if (session->add_item_to_list( new Item_field(&session->getLex()->current_select->context, NULL, NULL, "*")))
421
if (session->add_item_to_list( new Item_field(&session->lex->current_select->context, NULL, NULL, "*")))
413
(session->getLex()->current_select->with_wild)++;
424
(session->lex->current_select->with_wild)++;
434
445
std::string key("Variable_name");
435
446
std::string value("Value");
437
Item_field *my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "VARIABLE_NAME");
448
Item_field *my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "VARIABLE_NAME");
438
449
my_field->is_autogenerated_name= false;
439
450
my_field->set_name(key.c_str(), key.length(), system_charset_info);
441
452
if (session->add_item_to_list(my_field))
444
my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "VARIABLE_VALUE");
455
my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "VARIABLE_VALUE");
445
456
my_field->is_autogenerated_name= false;
446
457
my_field->set_name(value.c_str(), value.length(), system_charset_info);
481
492
std::string key("Table");
482
493
std::string value("Create Table");
484
Item_field *my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "TABLE_NAME");
495
Item_field *my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "TABLE_NAME");
485
496
my_field->is_autogenerated_name= false;
486
497
my_field->set_name(key.c_str(), key.length(), system_charset_info);
488
499
if (session->add_item_to_list(my_field))
491
my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "TABLE_SQL_DEFINITION");
502
my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "TABLE_SQL_DEFINITION");
492
503
my_field->is_autogenerated_name= false;
493
504
my_field->set_name(value.c_str(), value.length(), system_charset_info);
506
517
if (prepare_new_schema_table(session, session->getLex(), "PROCESSLIST"))
509
if (session->add_item_to_list( new Item_field(&session->getLex()->current_select->context, NULL, NULL, "*")))
520
if (session->add_item_to_list( new Item_field(&session->lex->current_select->context, NULL, NULL, "*")))
512
(session->getLex()->current_select->with_wild)++;
523
(session->lex->current_select->with_wild)++;
533
544
std::string key("Variable_name");
534
545
std::string value("Value");
536
Item_field *my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "VARIABLE_NAME");
547
Item_field *my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "VARIABLE_NAME");
537
548
my_field->is_autogenerated_name= false;
538
549
my_field->set_name(key.c_str(), key.length(), system_charset_info);
540
551
if (session->add_item_to_list(my_field))
543
my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "VARIABLE_VALUE");
554
my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "VARIABLE_VALUE");
544
555
my_field->is_autogenerated_name= false;
545
556
my_field->set_name(value.c_str(), value.length(), system_charset_info);
577
588
std::string key("Database");
578
589
std::string value("Create Database");
580
Item_field *my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "SCHEMA_NAME");
591
Item_field *my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "SCHEMA_NAME");
581
592
my_field->is_autogenerated_name= false;
582
593
my_field->set_name(key.c_str(), key.length(), system_charset_info);
584
595
if (session->add_item_to_list(my_field))
587
my_field= new Item_field(&session->getLex()->current_select->context, NULL, NULL, "SCHEMA_SQL_DEFINITION");
598
my_field= new Item_field(&session->lex->current_select->context, NULL, NULL, "SCHEMA_SQL_DEFINITION");
588
599
my_field->is_autogenerated_name= false;
589
600
my_field->set_name(value.c_str(), value.length(), system_charset_info);