summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-04-07 17:11:19 +0200
committerSergei Golubchik <sergii@pisem.net>2013-04-07 17:11:19 +0200
commit8980e67693c8f011200bc3924f5a8fc914aecc51 (patch)
treea5197cf5e0a9306f9956abc570dba0b45cb1e3d1 /sql
parent69ba585a1e8a0ea52c3bced2a40311d75009e5d0 (diff)
downloadmariadb-git-8980e67693c8f011200bc3924f5a8fc914aecc51.tar.gz
* use Dynamic_array<> instead of List<> for the list of found tables in sql_show.cc
* make find_files static
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_array.h5
-rw-r--r--sql/sql_show.cc68
-rw-r--r--sql/sql_show.h9
3 files changed, 41 insertions, 41 deletions
diff --git a/sql/sql_array.h b/sql/sql_array.h
index f07126bc0ef..f788b71a785 100644
--- a/sql/sql_array.h
+++ b/sql/sql_array.h
@@ -124,6 +124,11 @@ public:
return (insert_dynamic(&array, (uchar*)&el));
}
+ bool append_val(Elem el)
+ {
+ return (insert_dynamic(&array, (uchar*)&el));
+ }
+
int elements()
{
return array.elements;
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index c251678f42c..200ab98cd3e 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -687,6 +687,11 @@ db_name_is_in_ignore_db_dirs_list(const char *directory)
return my_hash_search(&ignore_db_dirs_hash, (uchar *) buff, buff_len)!=NULL;
}
+enum find_files_result {
+ FIND_FILES_OK,
+ FIND_FILES_OOM,
+ FIND_FILES_DIR
+};
/*
find_files() - find files in a given directory.
@@ -708,8 +713,8 @@ db_name_is_in_ignore_db_dirs_list(const char *directory)
*/
-find_files_result
-find_files(THD *thd, List<LEX_STRING> *files, const char *db,
+static find_files_result
+find_files(THD *thd, Dynamic_array<LEX_STRING*> *files, const char *db,
const char *path, const char *wild, bool dir)
{
uint i;
@@ -739,9 +744,9 @@ find_files(THD *thd, List<LEX_STRING> *files, const char *db,
MY_THREAD_SPECIFIC))))
{
if (my_errno == ENOENT)
- my_error(ER_BAD_DB_ERROR, MYF(ME_BELL+ME_WAITTANG), db);
+ my_error(ER_BAD_DB_ERROR, MYF(ME_BELL | ME_WAITTANG), db);
else
- my_error(ER_CANT_READ_DIR, MYF(ME_BELL+ME_WAITTANG), path, my_errno);
+ my_error(ER_CANT_READ_DIR, MYF(ME_BELL | ME_WAITTANG), path, my_errno);
DBUG_RETURN(FIND_FILES_DIR);
}
@@ -824,13 +829,13 @@ find_files(THD *thd, List<LEX_STRING> *files, const char *db,
}
#endif
if (!(file_name= thd->make_lex_string(uname, file_name_len)) ||
- files->push_back(file_name))
+ files->append(file_name))
{
my_dirend(dirp);
DBUG_RETURN(FIND_FILES_OOM);
}
}
- DBUG_PRINT("info",("found: %d files", files->elements));
+ DBUG_PRINT("info",("found: %d files", files->elements()));
my_dirend(dirp);
DBUG_RETURN(FIND_FILES_OK);
@@ -3697,7 +3702,7 @@ enum enum_schema_tables get_schema_table_idx(ST_SCHEMA_TABLE *schema_table)
non-zero error
*/
-int make_db_list(THD *thd, List<LEX_STRING> *files,
+int make_db_list(THD *thd, Dynamic_array<LEX_STRING*> *files,
LOOKUP_FIELD_VALUES *lookup_field_vals,
bool *with_i_schema)
{
@@ -3718,7 +3723,7 @@ int make_db_list(THD *thd, List<LEX_STRING> *files,
lookup_field_vals->db_value.str))
{
*with_i_schema= 1;
- if (files->push_back(i_s_name_copy))
+ if (files->append(i_s_name_copy))
return 1;
}
return (find_files(thd, files, NullS, mysql_data_home,
@@ -3739,11 +3744,11 @@ int make_db_list(THD *thd, List<LEX_STRING> *files,
lookup_field_vals->db_value.length))
{
*with_i_schema= 1;
- if (files->push_back(i_s_name_copy))
+ if (files->append(i_s_name_copy))
return 1;
return 0;
}
- if (files->push_back(&lookup_field_vals->db_value))
+ if (files->append_val(&lookup_field_vals->db_value))
return 1;
return 0;
}
@@ -3752,7 +3757,7 @@ int make_db_list(THD *thd, List<LEX_STRING> *files,
Create list of existing databases. It is used in case
of select from information schema table
*/
- if (files->push_back(i_s_name_copy))
+ if (files->append(i_s_name_copy))
return 1;
*with_i_schema= 1;
return (find_files(thd, files, NullS,
@@ -3762,7 +3767,7 @@ int make_db_list(THD *thd, List<LEX_STRING> *files,
struct st_add_schema_table
{
- List<LEX_STRING> *files;
+ Dynamic_array<LEX_STRING*> *files;
const char *wild;
};
@@ -3772,7 +3777,7 @@ static my_bool add_schema_table(THD *thd, plugin_ref plugin,
{
LEX_STRING *file_name= 0;
st_add_schema_table *data= (st_add_schema_table *)p_data;
- List<LEX_STRING> *file_list= data->files;
+ Dynamic_array<LEX_STRING*> *file_list= data->files;
const char *wild= data->wild;
ST_SCHEMA_TABLE *schema_table= plugin_data(plugin, ST_SCHEMA_TABLE *);
DBUG_ENTER("add_schema_table");
@@ -3794,13 +3799,14 @@ static my_bool add_schema_table(THD *thd, plugin_ref plugin,
if ((file_name= thd->make_lex_string(schema_table->table_name,
strlen(schema_table->table_name))) &&
- !file_list->push_back(file_name))
+ !file_list->append(file_name))
DBUG_RETURN(0);
DBUG_RETURN(1);
}
-int schema_tables_add(THD *thd, List<LEX_STRING> *files, const char *wild)
+int schema_tables_add(THD *thd, Dynamic_array<LEX_STRING*> *files,
+ const char *wild)
{
LEX_STRING *file_name= 0;
ST_SCHEMA_TABLE *tmp_schema_table= schema_tables;
@@ -3826,7 +3832,7 @@ int schema_tables_add(THD *thd, List<LEX_STRING> *files, const char *wild)
if ((file_name=
thd->make_lex_string(tmp_schema_table->table_name,
strlen(tmp_schema_table->table_name))) &&
- !files->push_back(file_name))
+ !files->append(file_name))
continue;
DBUG_RETURN(1);
}
@@ -3861,8 +3867,8 @@ int schema_tables_add(THD *thd, List<LEX_STRING> *files, const char *wild)
*/
static int
-make_table_name_list(THD *thd, List<LEX_STRING> *table_names, LEX *lex,
- LOOKUP_FIELD_VALUES *lookup_field_vals,
+make_table_name_list(THD *thd, Dynamic_array<LEX_STRING*> *table_names,
+ LEX *lex, LOOKUP_FIELD_VALUES *lookup_field_vals,
bool with_i_schema, LEX_STRING *db_name)
{
char path[FN_REFLEN + 1];
@@ -3879,13 +3885,13 @@ make_table_name_list(THD *thd, List<LEX_STRING> *table_names, LEX *lex,
{
if (!(name= thd->make_lex_string(schema_table->table_name,
strlen(schema_table->table_name))) ||
- table_names->push_back(name))
+ table_names->append(name))
return 1;
}
}
else
{
- if (table_names->push_back(&lookup_field_vals->table_value))
+ if (table_names->append_val(&lookup_field_vals->table_value))
return 1;
}
return 0;
@@ -4544,11 +4550,10 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
SELECT_LEX *lsel= tables->schema_select_lex;
ST_SCHEMA_TABLE *schema_table= tables->schema_table;
LOOKUP_FIELD_VALUES lookup_field_vals;
- LEX_STRING *db_name, *table_name;
+ LEX_STRING *db_name;
bool with_i_schema;
enum enum_schema_tables schema_table_idx;
- List<LEX_STRING> db_names;
- List_iterator_fast<LEX_STRING> it(db_names);
+ Dynamic_array<LEX_STRING*> db_names;
COND *partial_cond= 0;
int error= 1;
Open_tables_backup open_tables_state_backup;
@@ -4652,9 +4657,9 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
if (make_db_list(thd, &db_names, &lookup_field_vals, &with_i_schema))
goto err;
- it.rewind(); /* To get access to new elements in basis list */
- while ((db_name= it++))
+ for (int i=0; i < db_names.elements(); i++)
{
+ db_name= db_names.at(i);
#ifndef NO_EMBEDDED_ACCESS_CHECKS
if (!(check_access(thd, SELECT_ACL, db_name->str,
&thd->col_access, NULL, 0, 1) ||
@@ -4663,7 +4668,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
acl_get(sctx->host, sctx->ip, sctx->priv_user, db_name->str, 0))
#endif
{
- List<LEX_STRING> table_names;
+ Dynamic_array<LEX_STRING*> table_names;
int res= make_table_name_list(thd, &table_names, lex,
&lookup_field_vals,
with_i_schema, db_name);
@@ -4672,9 +4677,9 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
if (res)
goto err;
- List_iterator_fast<LEX_STRING> it_files(table_names);
- while ((table_name= it_files++))
+ for (int i=0; i < table_names.elements(); i++)
{
+ LEX_STRING *table_name= table_names.at(i);
restore_record(table, s->default_values);
table->field[schema_table->idx_field1]->
store(db_name->str, db_name->length, system_charset_info);
@@ -4779,8 +4784,7 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond)
*/
LOOKUP_FIELD_VALUES lookup_field_vals;
- List<LEX_STRING> db_names;
- LEX_STRING *db_name;
+ Dynamic_array<LEX_STRING*> db_names;
bool with_i_schema;
HA_CREATE_INFO create;
TABLE *table= tables->table;
@@ -4816,9 +4820,9 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond)
DBUG_RETURN(0);
}
- List_iterator_fast<LEX_STRING> it(db_names);
- while ((db_name=it++))
+ for (int i=0; i < db_names.elements(); i++)
{
+ LEX_STRING *db_name= db_names.at(i);
if (with_i_schema) // information schema name is always first in list
{
if (store_schema_shemata(thd, table, db_name,
diff --git a/sql/sql_show.h b/sql/sql_show.h
index 09e0a80fd4f..ec4d6a2b7c9 100644
--- a/sql/sql_show.h
+++ b/sql/sql_show.h
@@ -34,12 +34,6 @@ typedef struct st_schema_table ST_SCHEMA_TABLE;
struct TABLE;
typedef struct system_status_var STATUS_VAR;
-enum find_files_result {
- FIND_FILES_OK,
- FIND_FILES_OOM,
- FIND_FILES_DIR
-};
-
/* Used by handlers to store things in schema tables */
#define IS_FILES_FILE_ID 0
#define IS_FILES_FILE_NAME 1
@@ -80,9 +74,6 @@ enum find_files_result {
#define IS_FILES_STATUS 36
#define IS_FILES_EXTRA 37
-find_files_result find_files(THD *thd, List<LEX_STRING> *files, const char *db,
- const char *path, const char *wild, bool dir);
-
int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
HA_CREATE_INFO *create_info_arg, bool show_database);
int view_store_create_info(THD *thd, TABLE_LIST *table, String *buff);