Fix problem with not getting 'No Database Selected' error
Docs/manual.texi: Changelog
This commit is contained in:
parent
1996d5affe
commit
051f082b37
@ -45712,6 +45712,10 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
|
|||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
|
Cleaned up global lock handling for @code{FLUSH TABLES WITH READ LOCK}
|
||||||
|
@item
|
||||||
|
Fixed problem with @code{DATETIME = constant} in @code{WHERE} optimization.
|
||||||
|
@item
|
||||||
Speed up all internal list handling.
|
Speed up all internal list handling.
|
||||||
@item
|
@item
|
||||||
Added support for @code{UNION}.
|
Added support for @code{UNION}.
|
||||||
|
@ -1323,7 +1323,7 @@ int open_tables(THD *thd,TABLE_LIST *start)
|
|||||||
{
|
{
|
||||||
if (!tables->table &&
|
if (!tables->table &&
|
||||||
!(tables->table=open_table(thd,
|
!(tables->table=open_table(thd,
|
||||||
tables->db ? tables->db : thd->db,
|
tables->db,
|
||||||
tables->real_name,
|
tables->real_name,
|
||||||
tables->name, &refresh)))
|
tables->name, &refresh)))
|
||||||
{
|
{
|
||||||
@ -1380,7 +1380,7 @@ TABLE *open_ltable(THD *thd, TABLE_LIST *table_list, thr_lock_type lock_type)
|
|||||||
DBUG_ENTER("open_ltable");
|
DBUG_ENTER("open_ltable");
|
||||||
|
|
||||||
thd->proc_info="Opening table";
|
thd->proc_info="Opening table";
|
||||||
while (!(table=open_table(thd,table_list->db ? table_list->db : thd->db,
|
while (!(table=open_table(thd,table_list->db,
|
||||||
table_list->real_name,table_list->name,
|
table_list->real_name,table_list->name,
|
||||||
&refresh)) && refresh) ;
|
&refresh)) && refresh) ;
|
||||||
if (table)
|
if (table)
|
||||||
@ -1612,9 +1612,7 @@ find_field_in_tables(THD *thd,Item_field *item,TABLE_LIST *tables)
|
|||||||
for (; tables ; tables=tables->next)
|
for (; tables ; tables=tables->next)
|
||||||
{
|
{
|
||||||
if (!strcmp(tables->name,table_name) &&
|
if (!strcmp(tables->name,table_name) &&
|
||||||
(!db ||
|
(!db || !strcmp(db,tables->db)))
|
||||||
(tables->db && !strcmp(db,tables->db)) ||
|
|
||||||
(!tables->db && !strcmp(db,thd->db))))
|
|
||||||
{
|
{
|
||||||
found_table=1;
|
found_table=1;
|
||||||
Field *find=find_field_in_table(thd,tables->table,name,length,
|
Field *find=find_field_in_table(thd,tables->table,name,length,
|
||||||
@ -1854,8 +1852,7 @@ insert_fields(THD *thd,TABLE_LIST *tables, const char *db_name,
|
|||||||
check_grant_all_columns(thd,SELECT_ACL,table) )
|
check_grant_all_columns(thd,SELECT_ACL,table) )
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
if (!table_name || (!strcmp(table_name,tables->name) &&
|
if (!table_name || (!strcmp(table_name,tables->name) &&
|
||||||
(!db_name || !tables->db ||
|
(!db_name || !strcmp(tables->db,db_name))))
|
||||||
!strcmp(tables->db,db_name))))
|
|
||||||
{
|
{
|
||||||
Field **ptr=table->field,*field;
|
Field **ptr=table->field,*field;
|
||||||
thd->used_tables|=table->map;
|
thd->used_tables|=table->map;
|
||||||
@ -2079,7 +2076,8 @@ int mysql_create_index(THD *thd, TABLE_LIST *table_list, List<Key> &keys)
|
|||||||
create_info.db_type=DB_TYPE_DEFAULT;
|
create_info.db_type=DB_TYPE_DEFAULT;
|
||||||
DBUG_RETURN(mysql_alter_table(thd,table_list->db,table_list->real_name,
|
DBUG_RETURN(mysql_alter_table(thd,table_list->db,table_list->real_name,
|
||||||
&create_info, table_list,
|
&create_info, table_list,
|
||||||
fields, keys, drop, alter, (ORDER*)0, FALSE, DUP_ERROR));
|
fields, keys, drop, alter, (ORDER*)0, FALSE,
|
||||||
|
DUP_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2094,7 +2092,8 @@ int mysql_drop_index(THD *thd, TABLE_LIST *table_list, List<Alter_drop> &drop)
|
|||||||
create_info.db_type=DB_TYPE_DEFAULT;
|
create_info.db_type=DB_TYPE_DEFAULT;
|
||||||
DBUG_RETURN(mysql_alter_table(thd,table_list->db,table_list->real_name,
|
DBUG_RETURN(mysql_alter_table(thd,table_list->db,table_list->real_name,
|
||||||
&create_info, table_list,
|
&create_info, table_list,
|
||||||
fields, keys, drop, alter, (ORDER*)0, FALSE, DUP_ERROR));
|
fields, keys, drop, alter, (ORDER*)0, FALSE,
|
||||||
|
DUP_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
@ -1810,16 +1810,14 @@ mysql_execute_command(void)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
char *db=tables->db ? tables->db : thd->db;
|
char *db=tables->db;
|
||||||
if (!db)
|
if (!*db)
|
||||||
{
|
{
|
||||||
send_error(&thd->net,ER_NO_DB_ERROR); /* purecov: inspected */
|
send_error(&thd->net,ER_NO_DB_ERROR); /* purecov: inspected */
|
||||||
goto error; /* purecov: inspected */
|
goto error; /* purecov: inspected */
|
||||||
}
|
}
|
||||||
remove_escape(db); // Fix escaped '_'
|
remove_escape(db); // Fix escaped '_'
|
||||||
remove_escape(tables->name);
|
remove_escape(tables->name);
|
||||||
if (!tables->db)
|
|
||||||
tables->db=thd->db;
|
|
||||||
if (check_access(thd,SELECT_ACL | EXTRA_ACL,db,&thd->col_access))
|
if (check_access(thd,SELECT_ACL | EXTRA_ACL,db,&thd->col_access))
|
||||||
goto error; /* purecov: inspected */
|
goto error; /* purecov: inspected */
|
||||||
tables->grant.privilege=thd->col_access;
|
tables->grant.privilege=thd->col_access;
|
||||||
@ -1837,7 +1835,7 @@ mysql_execute_command(void)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
char *db=tables->db ? tables->db : thd->db;
|
char *db=tables->db;
|
||||||
if (!db)
|
if (!db)
|
||||||
{
|
{
|
||||||
send_error(&thd->net,ER_NO_DB_ERROR); /* purecov: inspected */
|
send_error(&thd->net,ER_NO_DB_ERROR); /* purecov: inspected */
|
||||||
@ -2178,7 +2176,7 @@ check_access(THD *thd,uint want_access,const char *db, uint *save_priv,
|
|||||||
else
|
else
|
||||||
save_priv= &dummy;
|
save_priv= &dummy;
|
||||||
|
|
||||||
if (!db && !thd->db && !dont_check_global_grants)
|
if (!db[0] && !thd->db && !dont_check_global_grants)
|
||||||
{
|
{
|
||||||
send_error(&thd->net,ER_NO_DB_ERROR); /* purecov: tested */
|
send_error(&thd->net,ER_NO_DB_ERROR); /* purecov: tested */
|
||||||
return TRUE; /* purecov: tested */
|
return TRUE; /* purecov: tested */
|
||||||
@ -2725,6 +2723,8 @@ add_proc_to_list(Item *item)
|
|||||||
|
|
||||||
static void remove_escape(char *name)
|
static void remove_escape(char *name)
|
||||||
{
|
{
|
||||||
|
if (!*name) // For empty DB names
|
||||||
|
return;
|
||||||
char *to;
|
char *to;
|
||||||
#ifdef USE_MB
|
#ifdef USE_MB
|
||||||
char *strend=name+(uint) strlen(name);
|
char *strend=name+(uint) strlen(name);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user