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
998190ac
Commit
998190ac
authored
Mar 23, 2007
by
tnurnberg@sin.intern.azundris.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge sin.intern.azundris.com:/home/tnurnberg/26817/50-26817
into sin.intern.azundris.com:/home/tnurnberg/26817/51-26817
parents
e9fb4a68
7c638268
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
182 additions
and
14 deletions
+182
-14
client/client_priv.h
client/client_priv.h
+1
-1
client/mysqldump.c
client/mysqldump.c
+22
-2
mysql-test/r/information_schema_db.result
mysql-test/r/information_schema_db.result
+69
-2
mysql-test/t/information_schema_db.test
mysql-test/t/information_schema_db.test
+53
-2
sql/sql_base.cc
sql/sql_base.cc
+24
-3
sql/sql_parse.cc
sql/sql_parse.cc
+4
-1
sql/sql_view.cc
sql/sql_view.cc
+6
-1
sql/table.cc
sql/table.cc
+3
-2
No files found.
client/client_priv.h
View file @
998190ac
...
@@ -60,5 +60,5 @@ enum options_client
...
@@ -60,5 +60,5 @@ enum options_client
OPT_SLAP_AUTO_GENERATE_SQL_LOAD_TYPE
,
OPT_SLAP_AUTO_GENERATE_WRITE_NUM
,
OPT_SLAP_AUTO_GENERATE_SQL_LOAD_TYPE
,
OPT_SLAP_AUTO_GENERATE_WRITE_NUM
,
OPT_MYSQL_REPLACE_INTO
,
OPT_BASE64_OUTPUT
,
OPT_SERVER_ID
,
OPT_MYSQL_REPLACE_INTO
,
OPT_BASE64_OUTPUT
,
OPT_SERVER_ID
,
OPT_FIX_TABLE_NAMES
,
OPT_FIX_DB_NAMES
,
OPT_SSL_VERIFY_SERVER_CERT
,
OPT_FIX_TABLE_NAMES
,
OPT_FIX_DB_NAMES
,
OPT_SSL_VERIFY_SERVER_CERT
,
OPT_DEBUG_INFO
,
OPT_COLUMN_TYPES
OPT_DEBUG_INFO
,
OPT_COLUMN_TYPES
,
OPT_ERROR_LOG_FILE
};
};
client/mysqldump.c
View file @
998190ac
...
@@ -109,7 +109,8 @@ static char *opt_password=0,*current_user=0,
...
@@ -109,7 +109,8 @@ static char *opt_password=0,*current_user=0,
*
lines_terminated
=
0
,
*
enclosed
=
0
,
*
opt_enclosed
=
0
,
*
escaped
=
0
,
*
lines_terminated
=
0
,
*
enclosed
=
0
,
*
opt_enclosed
=
0
,
*
escaped
=
0
,
*
where
=
0
,
*
order_by
=
0
,
*
where
=
0
,
*
order_by
=
0
,
*
opt_compatible_mode_str
=
0
,
*
opt_compatible_mode_str
=
0
,
*
err_ptr
=
0
;
*
err_ptr
=
0
,
*
log_error_file
=
NULL
;
static
char
**
defaults_argv
=
0
;
static
char
**
defaults_argv
=
0
;
static
char
compatible_mode_normal_str
[
255
];
static
char
compatible_mode_normal_str
[
255
];
static
ulong
opt_compatible_mode
=
0
;
static
ulong
opt_compatible_mode
=
0
;
...
@@ -121,6 +122,8 @@ static int first_error=0;
...
@@ -121,6 +122,8 @@ static int first_error=0;
static
DYNAMIC_STRING
extended_row
;
static
DYNAMIC_STRING
extended_row
;
#include <sslopt-vars.h>
#include <sslopt-vars.h>
FILE
*
md_result_file
=
0
;
FILE
*
md_result_file
=
0
;
FILE
*
stderror_file
=
0
;
#ifdef HAVE_SMEM
#ifdef HAVE_SMEM
static
char
*
shared_memory_base_name
=
0
;
static
char
*
shared_memory_base_name
=
0
;
#endif
#endif
...
@@ -307,6 +310,9 @@ static struct my_option my_long_options[] =
...
@@ -307,6 +310,9 @@ static struct my_option my_long_options[] =
0
,
0
,
0
,
0
,
0
,
0
},
0
,
0
,
0
,
0
,
0
,
0
},
{
"lock-tables"
,
'l'
,
"Lock all tables for read."
,
(
gptr
*
)
&
lock_tables
,
{
"lock-tables"
,
'l'
,
"Lock all tables for read."
,
(
gptr
*
)
&
lock_tables
,
(
gptr
*
)
&
lock_tables
,
0
,
GET_BOOL
,
NO_ARG
,
1
,
0
,
0
,
0
,
0
,
0
},
(
gptr
*
)
&
lock_tables
,
0
,
GET_BOOL
,
NO_ARG
,
1
,
0
,
0
,
0
,
0
,
0
},
{
"log-error"
,
OPT_ERROR_LOG_FILE
,
"Append warnings and errors to given file."
,
(
gptr
*
)
&
log_error_file
,
(
gptr
*
)
&
log_error_file
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"master-data"
,
OPT_MASTER_DATA
,
{
"master-data"
,
OPT_MASTER_DATA
,
"This causes the binary log position and filename to be appended to the "
"This causes the binary log position and filename to be appended to the "
"output. If equal to 1, will print it as a CHANGE MASTER command; if equal"
"output. If equal to 1, will print it as a CHANGE MASTER command; if equal"
...
@@ -4112,6 +4118,16 @@ int main(int argc, char **argv)
...
@@ -4112,6 +4118,16 @@ int main(int argc, char **argv)
free_resources
(
0
);
free_resources
(
0
);
exit
(
exit_code
);
exit
(
exit_code
);
}
}
if
(
log_error_file
)
{
if
(
!
(
stderror_file
=
freopen
(
log_error_file
,
"a+"
,
stderr
)))
{
free_resources
(
0
);
exit
(
EX_MYSQLERR
);
}
}
if
(
connect_to_db
(
current_host
,
current_user
,
opt_password
))
if
(
connect_to_db
(
current_host
,
current_user
,
opt_password
))
{
{
free_resources
(
0
);
free_resources
(
0
);
...
@@ -4175,5 +4191,9 @@ int main(int argc, char **argv)
...
@@ -4175,5 +4191,9 @@ int main(int argc, char **argv)
if
(
!
path
)
if
(
!
path
)
write_footer
(
md_result_file
);
write_footer
(
md_result_file
);
free_resources
();
free_resources
();
if
(
stderror_file
)
fclose
(
stderror_file
);
return
(
first_error
);
return
(
first_error
);
}
/* main */
}
/* main */
mysql-test/r/information_schema_db.result
View file @
998190ac
...
@@ -117,16 +117,82 @@ use testdb_1;
...
@@ -117,16 +117,82 @@ use testdb_1;
create table t1 (f1 char(4));
create table t1 (f1 char(4));
create view v1 as select f1 from t1;
create view v1 as select f1 from t1;
grant insert on v1 to testdb_2@localhost;
grant insert on v1 to testdb_2@localhost;
create view v5 as select f1 from t1;
grant show view on v5 to testdb_2@localhost;
create definer=`no_such_user`@`no_such_host` view v6 as select f1 from t1;
ERROR 42000: Access denied; you need the SUPER privilege for this operation
use testdb_1;
create view v6 as select f1 from t1;
grant show view on v6 to testdb_2@localhost;
create table t2 (f1 char(4));
create definer=`no_such_user`@`no_such_host` view v7 as select * from t2;
Warnings:
Note 1449 There is no 'no_such_user'@'no_such_host' registered
show fields from testdb_1.v6;
Field Type Null Key Default Extra
f1 char(4) YES NULL
show create view testdb_1.v6;
View Create View
v6 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v6` AS select `t1`.`f1` AS `f1` from `t1`
show create view testdb_1.v7;
View Create View
v7 CREATE ALGORITHM=UNDEFINED DEFINER=`no_such_user`@`no_such_host` SQL SECURITY DEFINER VIEW `v7` AS select `testdb_1`.`t2`.`f1` AS `f1` from `t2`
Warnings:
Warning 1356 View 'testdb_1.v7' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
show fields from testdb_1.v7;
Field Type Null Key Default Extra
f1 null YES NULL
Warnings:
Note 1449 There is no 'no_such_user'@'no_such_host' registered
create table t3 (f1 char(4), f2 char(4));
create table t3 (f1 char(4), f2 char(4));
create view v3 as select f1,f2 from t3;
create view v3 as select f1,f2 from t3;
grant insert(f1), insert(f2) on v3 to testdb_2@localhost;
grant insert(f1), insert(f2) on v3 to testdb_2@localhost;
create view v2 as select f1 from testdb_1.v1;
create view v2 as select f1 from testdb_1.v1;
create view v4 as select f1,f2 from testdb_1.v3;
create view v4 as select f1,f2 from testdb_1.v3;
show fields from testdb_1.v5;
Field Type Null Key Default Extra
f1 char(4) YES NULL
show create view testdb_1.v5;
View Create View
v5 CREATE ALGORITHM=UNDEFINED DEFINER=`testdb_1`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v5` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1`
show fields from testdb_1.v6;
Field Type Null Key Default Extra
f1 char(4) YES NULL
show create view testdb_1.v6;
View Create View
v6 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v6` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1`
show fields from testdb_1.v7;
Field Type Null Key Default Extra
f1 null YES NULL
Warnings:
Note 1449 There is no 'no_such_user'@'no_such_host' registered
show create view testdb_1.v7;
View Create View
v7 CREATE ALGORITHM=UNDEFINED DEFINER=`no_such_user`@`no_such_host` SQL SECURITY DEFINER VIEW `v7` AS select `testdb_1`.`t2`.`f1` AS `f1` from `t2`
Warnings:
Warning 1356 View 'testdb_1.v7' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
revoke insert(f1) on v3 from testdb_2@localhost;
revoke insert(f1) on v3 from testdb_2@localhost;
revoke show view on v5 from testdb_2@localhost;
use testdb_1;
revoke show view on v6 from testdb_2@localhost;
show fields from testdb_1.v5;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v5'
show create view testdb_1.v5;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v5'
show fields from testdb_1.v6;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v6'
show create view testdb_1.v6;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v6'
show fields from testdb_1.v7;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v7'
show create view testdb_1.v7;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v7'
show create view v4;
show create view v4;
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
show fields from v4;
show fields from v4;
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
Field Type Null Key Default Extra
f1 null YES NULL
f2 char(4) YES NULL
show fields from v2;
show fields from v2;
Field Type Null Key Default Extra
Field Type Null Key Default Extra
f1 char(4) YES NULL
f1 char(4) YES NULL
...
@@ -151,7 +217,8 @@ where a.table_name = 'testdb_1.v1';
...
@@ -151,7 +217,8 @@ where a.table_name = 'testdb_1.v1';
view_definition
view_definition
select * from v2;
select * from v2;
ERROR HY000: View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
ERROR HY000: View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
drop view testdb_1.v1,v2, testdb_1.v3, v4;
use test;
drop view testdb_1.v1, v2, testdb_1.v3, v4;
drop database testdb_1;
drop database testdb_1;
drop user testdb_1@localhost;
drop user testdb_1@localhost;
drop user testdb_2@localhost;
drop user testdb_2@localhost;
mysql-test/t/information_schema_db.test
View file @
998190ac
...
@@ -121,6 +121,28 @@ create table t1 (f1 char(4));
...
@@ -121,6 +121,28 @@ create table t1 (f1 char(4));
create
view
v1
as
select
f1
from
t1
;
create
view
v1
as
select
f1
from
t1
;
grant
insert
on
v1
to
testdb_2
@
localhost
;
grant
insert
on
v1
to
testdb_2
@
localhost
;
create
view
v5
as
select
f1
from
t1
;
grant
show
view
on
v5
to
testdb_2
@
localhost
;
--
error
1227
create
definer
=
`no_such_user`
@
`no_such_host`
view
v6
as
select
f1
from
t1
;
connection
default
;
use
testdb_1
;
create
view
v6
as
select
f1
from
t1
;
grant
show
view
on
v6
to
testdb_2
@
localhost
;
create
table
t2
(
f1
char
(
4
));
create
definer
=
`no_such_user`
@
`no_such_host`
view
v7
as
select
*
from
t2
;
show
fields
from
testdb_1
.
v6
;
show
create
view
testdb_1
.
v6
;
show
create
view
testdb_1
.
v7
;
show
fields
from
testdb_1
.
v7
;
connection
testdb_1
;
create
table
t3
(
f1
char
(
4
),
f2
char
(
4
));
create
table
t3
(
f1
char
(
4
),
f2
char
(
4
));
create
view
v3
as
select
f1
,
f2
from
t3
;
create
view
v3
as
select
f1
,
f2
from
t3
;
grant
insert
(
f1
),
insert
(
f2
)
on
v3
to
testdb_2
@
localhost
;
grant
insert
(
f1
),
insert
(
f2
)
on
v3
to
testdb_2
@
localhost
;
...
@@ -129,13 +151,41 @@ connect (testdb_2,localhost,testdb_2,,test);
...
@@ -129,13 +151,41 @@ connect (testdb_2,localhost,testdb_2,,test);
create
view
v2
as
select
f1
from
testdb_1
.
v1
;
create
view
v2
as
select
f1
from
testdb_1
.
v1
;
create
view
v4
as
select
f1
,
f2
from
testdb_1
.
v3
;
create
view
v4
as
select
f1
,
f2
from
testdb_1
.
v3
;
show
fields
from
testdb_1
.
v5
;
show
create
view
testdb_1
.
v5
;
show
fields
from
testdb_1
.
v6
;
show
create
view
testdb_1
.
v6
;
connection
testdb_1
;
connection
testdb_1
;
show
fields
from
testdb_1
.
v7
;
show
create
view
testdb_1
.
v7
;
revoke
insert
(
f1
)
on
v3
from
testdb_2
@
localhost
;
revoke
insert
(
f1
)
on
v3
from
testdb_2
@
localhost
;
revoke
show
view
on
v5
from
testdb_2
@
localhost
;
connection
default
;
use
testdb_1
;
revoke
show
view
on
v6
from
testdb_2
@
localhost
;
connection
testdb_2
;
connection
testdb_2
;
--
error
1142
show
fields
from
testdb_1
.
v5
;
--
error
1142
show
create
view
testdb_1
.
v5
;
--
error
1142
show
fields
from
testdb_1
.
v6
;
--
error
1142
show
create
view
testdb_1
.
v6
;
--
error
1142
show
fields
from
testdb_1
.
v7
;
--
error
1142
show
create
view
testdb_1
.
v7
;
--
error
1345
--
error
1345
show
create
view
v4
;
show
create
view
v4
;
--
error
1345
#
--error 1345
show
fields
from
v4
;
show
fields
from
v4
;
show
fields
from
v2
;
show
fields
from
v2
;
...
@@ -155,7 +205,8 @@ where a.table_name = 'testdb_1.v1';
...
@@ -155,7 +205,8 @@ where a.table_name = 'testdb_1.v1';
select
*
from
v2
;
select
*
from
v2
;
connection
default
;
connection
default
;
drop
view
testdb_1
.
v1
,
v2
,
testdb_1
.
v3
,
v4
;
use
test
;
drop
view
testdb_1
.
v1
,
v2
,
testdb_1
.
v3
,
v4
;
drop
database
testdb_1
;
drop
database
testdb_1
;
drop
user
testdb_1
@
localhost
;
drop
user
testdb_1
@
localhost
;
drop
user
testdb_2
@
localhost
;
drop
user
testdb_2
@
localhost
;
sql/sql_base.cc
View file @
998190ac
...
@@ -4490,15 +4490,36 @@ find_field_in_tables(THD *thd, Item_ident *item,
...
@@ -4490,15 +4490,36 @@ find_field_in_tables(THD *thd, Item_ident *item,
{
{
Field
*
cur_field
=
find_field_in_table_ref
(
thd
,
cur_table
,
name
,
length
,
Field
*
cur_field
=
find_field_in_table_ref
(
thd
,
cur_table
,
name
,
length
,
item
->
name
,
db
,
table_name
,
ref
,
item
->
name
,
db
,
table_name
,
ref
,
check_privileges
,
allow_rowid
,
check_privileges
,
allow_rowid
,
&
(
item
->
cached_field_index
),
&
(
item
->
cached_field_index
),
register_tree_change
,
register_tree_change
,
&
actual_table
);
&
actual_table
);
if
(
cur_field
)
if
(
cur_field
)
{
{
if
(
cur_field
==
WRONG_GRANT
)
if
(
cur_field
==
WRONG_GRANT
)
{
if
(
thd
->
lex
->
sql_command
!=
SQLCOM_SHOW_FIELDS
)
return
(
Field
*
)
0
;
return
(
Field
*
)
0
;
thd
->
clear_error
();
cur_field
=
find_field_in_table_ref
(
thd
,
cur_table
,
name
,
length
,
item
->
name
,
db
,
table_name
,
ref
,
false
,
allow_rowid
,
&
(
item
->
cached_field_index
),
register_tree_change
,
&
actual_table
);
if
(
cur_field
)
{
Field
*
nf
=
new
Field_null
(
NULL
,
0
,
Field
::
NONE
,
cur_field
->
field_name
,
cur_field
->
table
,
&
my_charset_bin
);
cur_field
=
nf
;
}
}
/*
/*
Store the original table of the field, which may be different from
Store the original table of the field, which may be different from
cur_table in the case of NATURAL/USING join.
cur_table in the case of NATURAL/USING join.
...
...
sql/sql_parse.cc
View file @
998190ac
...
@@ -4461,7 +4461,10 @@ bool check_single_table_access(THD *thd, ulong privilege,
...
@@ -4461,7 +4461,10 @@ bool check_single_table_access(THD *thd, ulong privilege,
goto
deny
;
goto
deny
;
/* Show only 1 table for check_grant */
/* Show only 1 table for check_grant */
if
(
grant_option
&&
check_grant
(
thd
,
privilege
,
all_tables
,
0
,
1
,
0
))
if
(
grant_option
&&
!
(
all_tables
->
belong_to_view
&&
(
thd
->
lex
->
sql_command
==
SQLCOM_SHOW_FIELDS
))
&&
check_grant
(
thd
,
privilege
,
all_tables
,
0
,
1
,
0
))
goto
deny
;
goto
deny
;
thd
->
security_ctx
=
backup_ctx
;
thd
->
security_ctx
=
backup_ctx
;
...
...
sql/sql_view.cc
View file @
998190ac
...
@@ -1004,6 +1004,11 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
...
@@ -1004,6 +1004,11 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
CHARSET_INFO
*
save_cs
=
thd
->
variables
.
character_set_client
;
CHARSET_INFO
*
save_cs
=
thd
->
variables
.
character_set_client
;
thd
->
variables
.
character_set_client
=
system_charset_info
;
thd
->
variables
.
character_set_client
=
system_charset_info
;
res
=
MYSQLparse
((
void
*
)
thd
);
res
=
MYSQLparse
((
void
*
)
thd
);
if
((
old_lex
->
sql_command
==
SQLCOM_SHOW_FIELDS
)
||
(
old_lex
->
sql_command
==
SQLCOM_SHOW_CREATE
))
lex
->
sql_command
=
old_lex
->
sql_command
;
thd
->
variables
.
character_set_client
=
save_cs
;
thd
->
variables
.
character_set_client
=
save_cs
;
thd
->
variables
.
sql_mode
=
save_mode
;
thd
->
variables
.
sql_mode
=
save_mode
;
}
}
...
@@ -1029,7 +1034,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
...
@@ -1029,7 +1034,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
}
}
}
}
else
if
(
!
table
->
prelocking_placeholder
&&
else
if
(
!
table
->
prelocking_placeholder
&&
old_lex
->
sql_command
==
SQLCOM_SHOW_CREATE
&&
(
old_lex
->
sql_command
==
SQLCOM_SHOW_CREATE
)
&&
!
table
->
belong_to_view
)
!
table
->
belong_to_view
)
{
{
if
(
check_table_access
(
thd
,
SHOW_VIEW_ACL
,
table
,
0
))
if
(
check_table_access
(
thd
,
SHOW_VIEW_ACL
,
table
,
0
))
...
...
sql/table.cc
View file @
998190ac
...
@@ -3275,7 +3275,8 @@ bool st_table_list::prepare_view_securety_context(THD *thd)
...
@@ -3275,7 +3275,8 @@ bool st_table_list::prepare_view_securety_context(THD *thd)
definer
.
host
.
str
,
definer
.
host
.
str
,
thd
->
db
))
thd
->
db
))
{
{
if
(
thd
->
lex
->
sql_command
==
SQLCOM_SHOW_CREATE
)
if
((
thd
->
lex
->
sql_command
==
SQLCOM_SHOW_CREATE
)
||
(
thd
->
lex
->
sql_command
==
SQLCOM_SHOW_FIELDS
))
{
{
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_NOTE
,
ER_NO_SUCH_USER
,
ER_NO_SUCH_USER
,
...
...
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