some code cleanup as per CTO's instructions plus a small bug fix with
a corresponding test case....
This commit is contained in:
parent
79f8a525a3
commit
a70a9ab637
@ -37,3 +37,6 @@ select * from (select 1);
|
|||||||
select a from (select 1 as a);
|
select a from (select 1 as a);
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
|
select 1 from (select 1);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
@ -21,3 +21,4 @@ SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1 HAVING a=1);
|
|||||||
drop table if exists t1.t2,t3;
|
drop table if exists t1.t2,t3;
|
||||||
select * from (select 1);
|
select * from (select 1);
|
||||||
select a from (select 1 as a);
|
select a from (select 1 as a);
|
||||||
|
select 1 from (select 1);
|
||||||
|
@ -118,7 +118,7 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit, TABLE_LIST *t)
|
|||||||
table->tmp_table=TMP_TABLE;
|
table->tmp_table=TMP_TABLE;
|
||||||
if (!lex->describe)
|
if (!lex->describe)
|
||||||
sl->exclude();
|
sl->exclude();
|
||||||
t->db= (tables && tables->db && tables->db[0]) ? t->db : thd->db;
|
t->db="";
|
||||||
t->derived=(SELECT_LEX *)0; // just in case ...
|
t->derived=(SELECT_LEX *)0; // just in case ...
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2717,7 +2717,7 @@ check_table_access(THD *thd, ulong want_access,TABLE_LIST *tables,
|
|||||||
TABLE_LIST *org_tables=tables;
|
TABLE_LIST *org_tables=tables;
|
||||||
for (; tables ; tables=tables->next)
|
for (; tables ; tables=tables->next)
|
||||||
{
|
{
|
||||||
if (tables->derived)
|
if (tables->derived || (tables->table && (int)tables->table->tmp_table))
|
||||||
continue;
|
continue;
|
||||||
if ((thd->master_access & want_access) == (want_access & ~EXTRA_ACL) &&
|
if ((thd->master_access & want_access) == (want_access & ~EXTRA_ACL) &&
|
||||||
thd->db)
|
thd->db)
|
||||||
@ -2735,7 +2735,7 @@ check_table_access(THD *thd, ulong want_access,TABLE_LIST *tables,
|
|||||||
found=1;
|
found=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (tables->db && check_access(thd,want_access,tables->db,&tables->grant.privilege,
|
else if (check_access(thd,want_access,tables->db,&tables->grant.privilege,
|
||||||
0, no_errors))
|
0, no_errors))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user