summaryrefslogtreecommitdiff
path: root/sql/handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/handler.cc')
-rw-r--r--sql/handler.cc58
1 files changed, 28 insertions, 30 deletions
diff --git a/sql/handler.cc b/sql/handler.cc
index 2218d27e9f9..f03e7848f3c 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -2501,7 +2501,7 @@ const char *get_canonical_filename(handler *file, const char *path,
The .frm file will be deleted only if we return 0.
*/
int ha_delete_table(THD *thd, handlerton *table_type, const char *path,
- const char *db, const char *alias, bool generate_warning)
+ const LEX_CSTRING *db, const LEX_CSTRING *alias, bool generate_warning)
{
handler *file;
char tmp_path[FN_REFLEN];
@@ -2534,12 +2534,9 @@ int ha_delete_table(THD *thd, handlerton *table_type, const char *path,
dummy_share.path.str= (char*) path;
dummy_share.path.length= strlen(path);
dummy_share.normalized_path= dummy_share.path;
- dummy_share.db.str= (char*) db;
- dummy_share.db.length= strlen(db);
- dummy_share.table_name.str= (char*) alias;
- dummy_share.table_name.length= strlen(alias);
- dummy_table.alias.set(alias, dummy_share.table_name.length,
- table_alias_charset);
+ dummy_share.db= *db;
+ dummy_share.table_name= *alias;
+ dummy_table.alias.set(alias->str, alias->length, table_alias_charset);
file->change_table_ptr(&dummy_table, &dummy_share);
file->print_error(error, MYF(intercept ? ME_JUST_WARNING : 0));
}
@@ -4875,7 +4872,6 @@ int ha_create_table(THD *thd, const char *path,
TABLE_SHARE share;
bool temp_table __attribute__((unused)) =
create_info->options & (HA_LEX_CREATE_TMP_TABLE | HA_CREATE_TMP_ALTER);
-
DBUG_ENTER("ha_create_table");
init_tmp_table_share(thd, &share, db, 0, table_name, path);
@@ -4903,7 +4899,7 @@ int ha_create_table(THD *thd, const char *path,
share.m_psi= PSI_CALL_get_table_share(temp_table, &share);
- if (open_table_from_share(thd, &share, "", 0, READ_ALL, 0, &table, true))
+ if (open_table_from_share(thd, &share, &empty_clex_str, 0, READ_ALL, 0, &table, true))
goto err;
update_create_info_from_table(create_info, &table);
@@ -5214,7 +5210,7 @@ private:
*hton will be NULL.
*/
-bool ha_table_exists(THD *thd, const char *db, const char *table_name,
+bool ha_table_exists(THD *thd, const LEX_CSTRING *db, const LEX_CSTRING *table_name,
handlerton **hton, bool *is_sequence)
{
handlerton *dummy;
@@ -5229,7 +5225,7 @@ bool ha_table_exists(THD *thd, const char *db, const char *table_name,
is_sequence= &dummy2;
*is_sequence= 0;
- TDC_element *element= tdc_lock_share(thd, db, table_name);
+ TDC_element *element= tdc_lock_share(thd, db->str, table_name->str);
if (element && element != MY_ERRPTR)
{
if (hton)
@@ -5241,8 +5237,8 @@ bool ha_table_exists(THD *thd, const char *db, const char *table_name,
char path[FN_REFLEN + 1];
size_t path_len = build_table_filename(path, sizeof(path) - 1,
- db, table_name, "", 0);
- st_discover_existence_args args= {path, path_len, db, table_name, 0, true};
+ db->str, table_name->str, "", 0);
+ st_discover_existence_args args= {path, path_len, db->str, table_name->str, 0, true};
if (file_ext_exists(path, path_len, reg_ext))
{
@@ -5285,14 +5281,12 @@ bool ha_table_exists(THD *thd, const char *db, const char *table_name,
{
TABLE_LIST table;
uint flags = GTS_TABLE | GTS_VIEW;
-
if (!hton)
flags|= GTS_NOLOCK;
Table_exists_error_handler no_such_table_handler;
thd->push_internal_handler(&no_such_table_handler);
- table.init_one_table(db, strlen(db), table_name, strlen(table_name),
- table_name, TL_READ);
+ table.init_one_table(db, table_name, 0, TL_READ);
TABLE_SHARE *share= tdc_acquire_share(thd, &table, flags);
thd->pop_internal_handler();
@@ -7000,7 +6994,8 @@ bool Table_scope_and_contents_source_st::vers_fix_system_fields(
if (!(alter_info->flags & Alter_info::ALTER_ADD_SYSTEM_VERSIONING) && vers_info)
{
- my_error(ER_MISSING, MYF(0), create_table.table_name, "WITH SYSTEM VERSIONING");
+ my_error(ER_MISSING, MYF(0), create_table.table_name.str,
+ "WITH SYSTEM VERSIONING");
return true;
}
@@ -7118,15 +7113,16 @@ bool Table_scope_and_contents_source_st::vers_fix_system_fields(
vers_cols == 0 &&
(plain_cols == 0 || !vers_info))
{
- my_error(ER_VERS_TABLE_MUST_HAVE_COLUMNS, MYF(0), create_table.table_name);
+ my_error(ER_VERS_TABLE_MUST_HAVE_COLUMNS, MYF(0),
+ create_table.table_name.str);
return true;
}
- if (vers_info.check_with_conditions(create_table.table_name))
+ if (vers_info.check_with_conditions(create_table.table_name.str))
return true;
bool native= vers_native(thd);
- if (vers_info.check_sys_fields(create_table.table_name, alter_info, native))
+ if (vers_info.check_sys_fields(create_table.table_name.str, alter_info, native))
return true;
return false;
@@ -7188,7 +7184,8 @@ bool Vers_parse_info::fix_alter_info(THD *thd, Alter_info *alter_info,
return true;
}
- if (alter_info->flags & Alter_info::ALTER_ADD_SYSTEM_VERSIONING && table->versioned())
+ if (alter_info->flags & Alter_info::ALTER_ADD_SYSTEM_VERSIONING &&
+ table->versioned())
{
my_error(ER_VERS_ALREADY_VERSIONED, MYF(0), table_name);
return true;
@@ -7397,7 +7394,7 @@ Vers_parse_info::fix_create_like(Alter_info &alter_info, HA_CREATE_INFO &create_
push_warning_printf(current_thd, Sql_condition::WARN_LEVEL_WARN,
ER_UNKNOWN_ERROR,
"System versioning is stripped from temporary `%s.%s`",
- table.db, table.table_name);
+ table.db.str, table.table_name.str);
return false;
}
@@ -7419,8 +7416,8 @@ Vers_parse_info::fix_create_like(Alter_info &alter_info, HA_CREATE_INFO &create_
if (!f_start || !f_end)
{
- my_error(ER_MISSING, MYF(0), src_table.table_name,
- f_start ? "AS ROW END" : "AS ROW START");
+ my_error(ER_MISSING, MYF(0), src_table.table_name.str,
+ f_start ? "AS ROW END" : "AS ROW START");
return true;
}
@@ -7480,7 +7477,8 @@ bool Vers_parse_info::check_sys_fields(const char *table_name,
if (sys_flag & found_flag)
{
my_error(ER_VERS_DUPLICATE_ROW_START_END, MYF(0),
- found_flag & VERS_SYS_START_FLAG ? "START" : "END", f->field_name.str);
+ found_flag & VERS_SYS_START_FLAG ? "START" : "END",
+ f->field_name.str);
return true;
}
@@ -7521,10 +7519,10 @@ bool Vers_parse_info::check_sys_fields(const char *table_name,
}
error:
my_error(ER_VERS_FIELD_WRONG_TYPE, MYF(0), f->field_name.str,
- found == VERS_TIMESTAMP ?
- "TIMESTAMP(6)" :
- "BIGINT(20) UNSIGNED",
- table_name);
+ found == VERS_TIMESTAMP ?
+ "TIMESTAMP(6)" :
+ "BIGINT(20) UNSIGNED",
+ table_name);
return true;
}
found= check_unit;
@@ -7532,6 +7530,6 @@ bool Vers_parse_info::check_sys_fields(const char *table_name,
}
my_error(ER_MISSING, MYF(0), table_name, found_flag & VERS_SYS_START_FLAG ?
- "ROW END" : found_flag ? "ROW START" : "ROW START/END");
+ "ROW END" : found_flag ? "ROW START" : "ROW START/END");
return true;
}