Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
87a199fc
Commit
87a199fc
authored
Nov 21, 2005
by
bell@sanja.is.com.ua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Avoiding removing dummy TABLE allocated on the stack (BUG#14726).
parent
13260ea8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
9 deletions
+61
-9
mysql-test/r/view_grant.result
mysql-test/r/view_grant.result
+17
-0
mysql-test/t/view_grant.test
mysql-test/t/view_grant.test
+36
-0
sql/sql_base.cc
sql/sql_base.cc
+8
-9
No files found.
mysql-test/r/view_grant.result
View file @
87a199fc
...
...
@@ -501,3 +501,20 @@ drop user test14256;
insert into mysql.user select * from t1;
flush privileges;
drop table t1;
create database mysqltest;
use mysqltest;
CREATE TABLE t1 (i INT);
CREATE VIEW v1 AS SELECT * FROM t1;
SHOW CREATE VIEW v1;
View Create View
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`i` AS `i` from `t1`
GRANT SELECT, LOCK TABLES ON mysqltest.* TO mysqltest_1@localhost;
use mysqltest;
LOCK TABLES v1 READ;
SHOW CREATE TABLE v1;
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v1'
UNLOCK TABLES;
use test;
use test;
drop user mysqltest_1@localhost;
drop database mysqltest;
mysql-test/t/view_grant.test
View file @
87a199fc
...
...
@@ -664,3 +664,39 @@ insert into mysql.user select * from t1;
flush
privileges
;
drop
table
t1
;
#
# BUG#14726: freeing stack variable in case of an error of opening
# a view when we have locked tables with LOCK TABLES statement.
#
connection
root
;
--
disable_warnings
create
database
mysqltest
;
--
enable_warnings
use
mysqltest
;
CREATE
TABLE
t1
(
i
INT
);
CREATE
VIEW
v1
AS
SELECT
*
FROM
t1
;
SHOW
CREATE
VIEW
v1
;
GRANT
SELECT
,
LOCK
TABLES
ON
mysqltest
.*
TO
mysqltest_1
@
localhost
;
connection
user1
;
use
mysqltest
;
LOCK
TABLES
v1
READ
;
--
error
ER_TABLEACCESS_DENIED_ERROR
SHOW
CREATE
TABLE
v1
;
UNLOCK
TABLES
;
use
test
;
connection
root
;
use
test
;
drop
user
mysqltest_1
@
localhost
;
drop
database
mysqltest
;
#
# switch to default connaction
#
disconnect
user1
;
disconnect
root
;
connection
default
;
sql/sql_base.cc
View file @
87a199fc
...
...
@@ -1199,17 +1199,16 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
(
void
)
unpack_filename
(
path
,
path
);
if
(
mysql_frm_type
(
thd
,
path
,
&
not_used
)
==
FRMTYPE_VIEW
)
{
TABLE
tab
;
// will not be used (because it's VIEW) but have to be passed
/*
Will not be used (because it's VIEW) but has to be passed.
Also we will not free it (because it is a stack variable).
*/
TABLE
tab
;
table
=
&
tab
;
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
if
(
open_unireg_entry
(
thd
,
table
,
table_list
->
db
,
table_list
->
table_name
,
alias
,
table_list
,
mem_root
))
{
table
->
next
=
table
->
prev
=
table
;
free_cache_entry
(
table
);
}
else
if
(
!
open_unireg_entry
(
thd
,
table
,
table_list
->
db
,
table_list
->
table_name
,
alias
,
table_list
,
mem_root
))
{
DBUG_ASSERT
(
table_list
->
view
!=
0
);
VOID
(
pthread_mutex_unlock
(
&
LOCK_open
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment