summaryrefslogtreecommitdiff
path: root/mysql-test/r/timezone_grant.result
diff options
context:
space:
mode:
authorunknown <dlenev@mysql.com>2006-04-22 11:54:25 +0400
committerunknown <dlenev@mysql.com>2006-04-22 11:54:25 +0400
commitdc526db887e3ab68020d7d010f45fb9ce5d3ad14 (patch)
treeecf3a34a7ac46e3bb6a852899de62880d2156f2f /mysql-test/r/timezone_grant.result
parentbf8f30b532ef217dac2a168124706d28e19a320f (diff)
downloadmariadb-git-dc526db887e3ab68020d7d010f45fb9ce5d3ad14.tar.gz
Fix for bug#15153 "CONVERT_TZ() is not allowed in all places in VIEWs".
Error was emitted when one tried to select information from view which used merge algorithm and which also had CONVERT_TZ() function in its select list. This bug was caused by wrong assumption that global table list for view which is handled using merge algorithm begins from tables belonging to the main select of this view. Nowadays the above assumption is not true only when one uses convert_tz() function in view's select list, but in future other cases may be added (for example we may support merging of views with subqueries in select list one day). Relying on this false assumption led to the usage of wrong table list for field lookups and therefor errors. With this fix we explicitly use pointer to the beginning of main select's table list. mysql-test/r/timezone_grant.result: Added additional test case for bug#15153 "CONVERT_TZ() is not allowed in all places in VIEWs" that checks that usage of CONVERT_TZ() function in view does not require additional privileges. mysql-test/r/view.result: Added test case for bug#15153 "CONVERT_TZ() is not allowed in all places in VIEWs". mysql-test/t/timezone_grant.test: Added additional test case for bug#15153 "CONVERT_TZ() is not allowed in all places in VIEWs" that checks that usage of CONVERT_TZ() function in view does not require additional privileges. mysql-test/t/view.test: Added test case for bug#15153 "CONVERT_TZ() is not allowed in all places in VIEWs". sql/sql_view.cc: mysql_make_view(): We should not assume that global table list for view which is handled using merge algorithm begins from tables belonging to the main select of this view. Nowadays the above assumption is not true only when one uses convert_tz() function in view's select list, but in future other cases may be added (for example we may support merging of views with subqueries in select list one day). So let us instead explicitly use pointer to the beginning of main select's table list.
Diffstat (limited to 'mysql-test/r/timezone_grant.result')
-rw-r--r--mysql-test/r/timezone_grant.result17
1 files changed, 17 insertions, 0 deletions
diff --git a/mysql-test/r/timezone_grant.result b/mysql-test/r/timezone_grant.result
index 3758f3c2645..2f4d46dfdc0 100644
--- a/mysql-test/r/timezone_grant.result
+++ b/mysql-test/r/timezone_grant.result
@@ -1,3 +1,5 @@
+drop tables if exists t1, t2;
+drop view if exists v1;
delete from mysql.user where user like 'mysqltest\_%';
delete from mysql.db where user like 'mysqltest\_%';
delete from mysql.tables_priv where user like 'mysqltest\_%';
@@ -59,3 +61,18 @@ delete from mysql.db where user like 'mysqltest\_%';
delete from mysql.tables_priv where user like 'mysqltest\_%';
flush privileges;
drop table t1, t2;
+create table t1 (a int, b datetime);
+insert into t1 values (1, 20010101000000), (2, 20020101000000);
+grant all privileges on test.* to mysqltest_1@localhost;
+create view v1 as select a, convert_tz(b, 'UTC', 'Europe/Moscow') as lb from t1;
+select * from v1;
+a lb
+1 2001-01-01 03:00:00
+2 2002-01-01 03:00:00
+select * from v1, mysql.time_zone;
+ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone'
+drop view v1;
+create view v1 as select a, convert_tz(b, 'UTC', 'Europe/Moscow') as lb from t1, mysql.time_zone;
+ERROR 42000: ANY command denied to user 'mysqltest_1'@'localhost' for table 'time_zone'
+drop table t1;
+drop user mysqltest_1@localhost;