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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
db17048c
Commit
db17048c
authored
Aug 16, 2006
by
evgen@sunlight.local
Browse files
Options
Browse Files
Download
Plain Diff
Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into sunlight.local:/local_work/21261-bug-5.0-mysql
parents
9b10c3a0
dd9a0770
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
64 additions
and
8 deletions
+64
-8
mysql-test/r/view.result
mysql-test/r/view.result
+19
-0
mysql-test/t/view.test
mysql-test/t/view.test
+30
-0
sql/mysql_priv.h
sql/mysql_priv.h
+1
-0
sql/sql_base.cc
sql/sql_base.cc
+7
-2
sql/sql_delete.cc
sql/sql_delete.cc
+2
-2
sql/sql_insert.cc
sql/sql_insert.cc
+1
-1
sql/sql_load.cc
sql/sql_load.cc
+1
-0
sql/sql_select.cc
sql/sql_select.cc
+1
-1
sql/sql_update.cc
sql/sql_update.cc
+2
-2
No files found.
mysql-test/r/view.result
View file @
db17048c
...
...
@@ -2850,6 +2850,25 @@ Tables_in_test
t1
DROP TABLE t1;
DROP VIEW IF EXISTS v1;
CREATE DATABASE bug21261DB;
CREATE TABLE t1 (x INT);
CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT x FROM t1;
GRANT INSERT, UPDATE ON v1 TO 'user21261'@'localhost';
GRANT INSERT, UPDATE ON t1 TO 'user21261'@'localhost';
CREATE TABLE t2 (y INT);
GRANT SELECT ON t2 TO 'user21261'@'localhost';
INSERT INTO v1 (x) VALUES (5);
UPDATE v1 SET x=1;
GRANT SELECT ON v1 TO 'user21261'@'localhost';
UPDATE v1,t2 SET x=1 WHERE x=y;
SELECT * FROM t1;
x
1
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user21261'@'localhost';
DROP USER 'user21261'@'localhost';
DROP VIEW v1;
DROP TABLE t1;
DROP DATABASE bug21261DB;
create table t1 (f1 datetime);
create view v1 as select * from t1 where f1 between now() and now() + interval 1 minute;
show create view v1;
...
...
mysql-test/t/view.test
View file @
db17048c
...
...
@@ -2719,6 +2719,36 @@ DROP TABLE t1;
DROP
VIEW
IF
EXISTS
v1
;
--
enable_warnings
#
# Bug #21261: Wrong access rights was required for an insert to a view
#
CREATE
DATABASE
bug21261DB
;
CONNECT
(
root
,
localhost
,
root
,,
bug21261DB
);
CONNECTION
root
;
CREATE
TABLE
t1
(
x
INT
);
CREATE
SQL
SECURITY
INVOKER
VIEW
v1
AS
SELECT
x
FROM
t1
;
GRANT
INSERT
,
UPDATE
ON
v1
TO
'user21261'
@
'localhost'
;
GRANT
INSERT
,
UPDATE
ON
t1
TO
'user21261'
@
'localhost'
;
CREATE
TABLE
t2
(
y
INT
);
GRANT
SELECT
ON
t2
TO
'user21261'
@
'localhost'
;
CONNECT
(
user21261
,
localhost
,
user21261
,,
bug21261DB
);
CONNECTION
user21261
;
INSERT
INTO
v1
(
x
)
VALUES
(
5
);
UPDATE
v1
SET
x
=
1
;
CONNECTION
root
;
GRANT
SELECT
ON
v1
TO
'user21261'
@
'localhost'
;
CONNECTION
user21261
;
UPDATE
v1
,
t2
SET
x
=
1
WHERE
x
=
y
;
CONNECTION
root
;
SELECT
*
FROM
t1
;
REVOKE
ALL
PRIVILEGES
,
GRANT
OPTION
FROM
'user21261'
@
'localhost'
;
DROP
USER
'user21261'
@
'localhost'
;
DROP
VIEW
v1
;
DROP
TABLE
t1
;
DROP
DATABASE
bug21261DB
;
#
# Bug #15950: NOW() optimized away in VIEWs
#
...
...
sql/mysql_priv.h
View file @
db17048c
...
...
@@ -974,6 +974,7 @@ bool setup_tables_and_check_access (THD *thd,
TABLE_LIST
*
tables
,
Item
**
conds
,
TABLE_LIST
**
leaves
,
bool
select_insert
,
ulong
want_access_first
,
ulong
want_access
);
int
setup_wild
(
THD
*
thd
,
TABLE_LIST
*
tables
,
List
<
Item
>
&
fields
,
List
<
Item
>
*
sum_func_list
,
uint
wild_num
);
...
...
sql/sql_base.cc
View file @
db17048c
...
...
@@ -4563,9 +4563,11 @@ bool setup_tables_and_check_access(THD *thd,
TABLE_LIST
*
tables
,
Item
**
conds
,
TABLE_LIST
**
leaves
,
bool
select_insert
,
ulong
want_access_first
,
ulong
want_access
)
{
TABLE_LIST
*
leaves_tmp
=
NULL
;
bool
first_table
=
true
;
if
(
setup_tables
(
thd
,
context
,
from_clause
,
tables
,
conds
,
&
leaves_tmp
,
select_insert
))
...
...
@@ -4575,13 +4577,16 @@ bool setup_tables_and_check_access(THD *thd,
*
leaves
=
leaves_tmp
;
for
(;
leaves_tmp
;
leaves_tmp
=
leaves_tmp
->
next_leaf
)
{
if
(
leaves_tmp
->
belong_to_view
&&
check_single_table_access
(
thd
,
want_access
,
leaves_tmp
))
check_single_table_access
(
thd
,
first_table
?
want_access_first
:
want_access
,
leaves_tmp
))
{
tables
->
hide_view_error
(
thd
);
return
TRUE
;
}
first_table
=
false
;
}
return
FALSE
;
}
...
...
sql/sql_delete.cc
View file @
db17048c
...
...
@@ -350,7 +350,7 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
&
thd
->
lex
->
select_lex
.
top_join_list
,
table_list
,
conds
,
&
select_lex
->
leaf_tables
,
FALSE
,
DELETE_ACL
)
||
DELETE_ACL
,
SELECT_ACL
)
||
setup_conds
(
thd
,
table_list
,
select_lex
->
leaf_tables
,
conds
)
||
setup_ftfuncs
(
select_lex
))
DBUG_RETURN
(
TRUE
);
...
...
@@ -413,7 +413,7 @@ bool mysql_multi_delete_prepare(THD *thd)
&
thd
->
lex
->
select_lex
.
top_join_list
,
lex
->
query_tables
,
&
lex
->
select_lex
.
where
,
&
lex
->
select_lex
.
leaf_tables
,
FALSE
,
DELETE_ACL
))
DELETE_ACL
,
SELECT_ACL
))
DBUG_RETURN
(
TRUE
);
...
...
sql/sql_insert.cc
View file @
db17048c
...
...
@@ -847,7 +847,7 @@ static bool mysql_prepare_insert_check_table(THD *thd, TABLE_LIST *table_list,
&
thd
->
lex
->
select_lex
.
top_join_list
,
table_list
,
where
,
&
thd
->
lex
->
select_lex
.
leaf_tables
,
select_insert
,
SELECT_ACL
))
select_insert
,
INSERT_ACL
,
SELECT_ACL
))
DBUG_RETURN
(
TRUE
);
if
(
insert_into_view
&&
!
fields
.
elements
)
...
...
sql/sql_load.cc
View file @
db17048c
...
...
@@ -157,6 +157,7 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
&
thd
->
lex
->
select_lex
.
top_join_list
,
table_list
,
&
unused_conds
,
&
thd
->
lex
->
select_lex
.
leaf_tables
,
FALSE
,
INSERT_ACL
|
UPDATE_ACL
,
INSERT_ACL
|
UPDATE_ACL
))
DBUG_RETURN
(
-
1
);
if
(
!
table_list
->
table
||
// do not suport join view
...
...
sql/sql_select.cc
View file @
db17048c
...
...
@@ -344,7 +344,7 @@ JOIN::prepare(Item ***rref_pointer_array,
setup_tables_and_check_access
(
thd
,
&
select_lex
->
context
,
join_list
,
tables_list
,
&
conds
,
&
select_lex
->
leaf_tables
,
FALSE
,
SELECT_ACL
))
||
SELECT_ACL
,
SELECT_ACL
))
||
setup_wild
(
thd
,
tables_list
,
fields_list
,
&
all_fields
,
wild_num
)
||
select_lex
->
setup_ref_array
(
thd
,
og_num
)
||
setup_fields
(
thd
,
(
*
rref_pointer_array
),
fields_list
,
1
,
...
...
sql/sql_update.cc
View file @
db17048c
...
...
@@ -627,7 +627,7 @@ bool mysql_prepare_update(THD *thd, TABLE_LIST *table_list,
&
select_lex
->
top_join_list
,
table_list
,
conds
,
&
select_lex
->
leaf_tables
,
FALSE
,
UPDATE_ACL
)
||
FALSE
,
UPDATE_ACL
,
SELECT_ACL
)
||
setup_conds
(
thd
,
table_list
,
select_lex
->
leaf_tables
,
conds
)
||
select_lex
->
setup_ref_array
(
thd
,
order_num
)
||
setup_order
(
thd
,
select_lex
->
ref_pointer_array
,
...
...
@@ -722,7 +722,7 @@ bool mysql_multi_update_prepare(THD *thd)
&
lex
->
select_lex
.
top_join_list
,
table_list
,
&
lex
->
select_lex
.
where
,
&
lex
->
select_lex
.
leaf_tables
,
FALSE
,
UPDATE_ACL
))
UPDATE_ACL
,
SELECT_ACL
))
DBUG_RETURN
(
TRUE
);
if
(
setup_fields_with_no_wrap
(
thd
,
0
,
*
fields
,
1
,
0
,
0
))
...
...
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