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
d689dda1
Commit
d689dda1
authored
Oct 20, 2009
by
Tatiana A. Nurnberg
Browse files
Options
Browse Files
Download
Plain Diff
auto-merge
parents
6293dc7c
ed7be95b
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
258 additions
and
68 deletions
+258
-68
client/mysqlbinlog.cc
client/mysqlbinlog.cc
+5
-7
mysql-test/r/grant3.result
mysql-test/r/grant3.result
+38
-0
mysql-test/r/myisam_crash_before_flush_keys.result
mysql-test/r/myisam_crash_before_flush_keys.result
+5
-23
mysql-test/r/sp.result
mysql-test/r/sp.result
+45
-0
mysql-test/t/grant3.test
mysql-test/t/grant3.test
+35
-0
mysql-test/t/myisam_crash_before_flush_keys.test
mysql-test/t/myisam_crash_before_flush_keys.test
+2
-10
mysql-test/t/sp.test
mysql-test/t/sp.test
+45
-1
sql/sql_acl.cc
sql/sql_acl.cc
+34
-12
sql/sql_yacc.yy
sql/sql_yacc.yy
+47
-14
strings/ctype-uca.c
strings/ctype-uca.c
+2
-1
No files found.
client/mysqlbinlog.cc
View file @
d689dda1
...
...
@@ -992,13 +992,11 @@ static struct my_option my_long_options[] =
/* 'unspec' is not mentioned because it is just a placeholder. */
"Determine when the output statements should be base64-encoded BINLOG "
"statements: 'never' disables it and works only for binlogs without "
"row-based events; 'auto' is the default and prints base64 only when "
"necessary (i.e., for row-based events and format description events); "
"'decode-rows' suppresses BINLOG statements for row events, but does "
"not exit as an error if a row event is found, unlike 'never'; "
"'always' prints base64 whenever possible. 'always' is for debugging "
"only and should not be used in a production system. The default is "
"'auto'. --base64-output is a short form for --base64-output=always."
"row-based events; 'auto' prints base64 only when necessary (i.e., "
"for row-based events and format description events); 'always' prints "
"base64 whenever possible. 'always' is for debugging only and should "
"not be used in a production system. If this argument is not given, "
"the default is 'auto'; if it is given with no argument, 'always' is used."
,(
uchar
**
)
&
opt_base64_output_mode_str
,
(
uchar
**
)
&
opt_base64_output_mode_str
,
0
,
GET_STR
,
OPT_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
...
...
mysql-test/r/grant3.result
View file @
d689dda1
...
...
@@ -154,4 +154,42 @@ SELECT * FROM mysqltest_1.t1;
a
DROP USER 'mysqltest1'@'%';
DROP DATABASE mysqltest_1;
#
# Bug#41597 - After rename of user, there are additional grants
# when grants are reapplied.
#
CREATE DATABASE temp;
CREATE TABLE temp.t1(a INT, b VARCHAR(10));
INSERT INTO temp.t1 VALUES(1, 'name1');
INSERT INTO temp.t1 VALUES(2, 'name2');
INSERT INTO temp.t1 VALUES(3, 'name3');
CREATE USER 'user1'@'%';
RENAME USER 'user1'@'%' TO 'user2'@'%';
# Show privileges after rename and BEFORE grant
SHOW GRANTS FOR 'user2'@'%';
Grants for user2@%
GRANT USAGE ON *.* TO 'user2'@'%'
GRANT SELECT (a), INSERT (b) ON `temp`.`t1` TO 'user2'@'%';
# Show privileges after rename and grant
SHOW GRANTS FOR 'user2'@'%';
Grants for user2@%
GRANT USAGE ON *.* TO 'user2'@'%'
GRANT SELECT (a), INSERT (b) ON `temp`.`t1` TO 'user2'@'%'
# Connect as the renamed user
SHOW GRANTS;
Grants for user2@%
GRANT USAGE ON *.* TO 'user2'@'%'
GRANT SELECT (a), INSERT (b) ON `temp`.`t1` TO 'user2'@'%'
SELECT a FROM temp.t1;
a
1
2
3
# Check for additional privileges by accessing a
# non privileged column. We shouldn't be able to
# access this column.
SELECT b FROM temp.t1;
ERROR 42000: SELECT command denied to user 'user2'@'localhost' for column 'b' in table 't1'
DROP USER 'user2'@'%';
DROP DATABASE temp;
End of 5.0 tests
mysql-test/r/myisam_crash_before_flush_keys.result
View file @
d689dda1
...
...
@@ -15,31 +15,13 @@ SET SESSION debug="d,crash_before_flush_keys";
# Run the crashing query
FLUSH TABLE t1;
ERROR HY000: Lost connection to MySQL server during query
# Run MYISAMCHK tool to check the table t1 and repair
myisamchk: MyISAM file MYSQLD_DATADIR/test/t1
myisamchk: warning: 1 client is using or hasn't closed the table properly
myisamchk: error: Size of indexfile is: 1024 Should be: 3072
MYISAMCHK: Unknown error 126
myisamchk: error: Can't read indexpage from filepos: 1024
MyISAM-table 'MYSQLD_DATADIR/test/t1' is corrupted
Fix it using switch "-r" or "-o"
# Write file to make mysql-test-run.pl start the server
# Turn on reconnect
# Call script that will poll the server waiting for
# it to be back online again
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL DEFAULT '0',
`b` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`a`,`b`),
KEY `b` (`b`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DELAY_KEY_WRITE=1
SELECT * FROM t1 FORCE INDEX (PRIMARY);
a b
1 2
2 3
3 4
4 5
5 6
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check warning 1 client is using or hasn't closed the table properly
test.t1 check error Size of indexfile is: 1024 Should be: 3072
test.t1 check error Corrupt
DROP TABLE t1;
mysql-test/r/sp.result
View file @
d689dda1
...
...
@@ -6979,6 +6979,51 @@ CALL p1;
ERROR 42S22: Unknown column 'A.b' in 'IN/ALL/ANY subquery'
DROP PROCEDURE p1;
DROP TABLE t1, t2;
#
# Bug47627 SET @@{global.session}.local_variable in stored routine causes crash
#
DROP PROCEDURE IF EXISTS p1;
DROP PROCEDURE IF EXISTS p2;
DROP PROCEDURE IF EXISTS p3;
CREATE PROCEDURE p1()
BEGIN
DECLARE v INT DEFAULT 0;
SET @@session.v= 10;
END//
ERROR HY000: Unknown system variable 'v'
CREATE PROCEDURE p2()
BEGIN
DECLARE v INT DEFAULT 0;
SET v= 10;
END//
call p2()//
CREATE PROCEDURE p3()
BEGIN
DECLARE v INT DEFAULT 0;
SELECT @@session.v;
END//
ERROR HY000: Unknown system variable 'v'
CREATE PROCEDURE p4()
BEGIN
DECLARE v INT DEFAULT 0;
SET @@global.v= 10;
END//
ERROR HY000: Unknown system variable 'v'
CREATE PROCEDURE p5()
BEGIN
DECLARE v INT DEFAULT 0;
SET @@global.query_cache_size= 0;
SET @@session.identity= 1;
SELECT @@session.identity;
SELECT @@global.query_cache_size;
END//
CALL p5();
@@session.identity
1
@@global.query_cache_size
0
DROP PROCEDURE p2;
DROP PROCEDURE p5;
# ------------------------------------------------------------------
# -- End of 5.1 tests
# ------------------------------------------------------------------
mysql-test/t/grant3.test
View file @
d689dda1
...
...
@@ -163,6 +163,41 @@ connection default;
DROP
USER
'mysqltest1'
@
'%'
;
DROP
DATABASE
mysqltest_1
;
--
echo
#
--
echo
# Bug#41597 - After rename of user, there are additional grants
--
echo
# when grants are reapplied.
--
echo
#
CREATE
DATABASE
temp
;
CREATE
TABLE
temp
.
t1
(
a
INT
,
b
VARCHAR
(
10
));
INSERT
INTO
temp
.
t1
VALUES
(
1
,
'name1'
);
INSERT
INTO
temp
.
t1
VALUES
(
2
,
'name2'
);
INSERT
INTO
temp
.
t1
VALUES
(
3
,
'name3'
);
CREATE
USER
'user1'
@
'%'
;
RENAME
USER
'user1'
@
'%'
TO
'user2'
@
'%'
;
--
echo
# Show privileges after rename and BEFORE grant
SHOW
GRANTS
FOR
'user2'
@
'%'
;
GRANT
SELECT
(
a
),
INSERT
(
b
)
ON
`temp`
.
`t1`
TO
'user2'
@
'%'
;
--
echo
# Show privileges after rename and grant
SHOW
GRANTS
FOR
'user2'
@
'%'
;
--
echo
# Connect as the renamed user
connect
(
conn1
,
localhost
,
user2
,,);
connection
conn1
;
SHOW
GRANTS
;
SELECT
a
FROM
temp
.
t1
;
--
echo
# Check for additional privileges by accessing a
--
echo
# non privileged column. We shouldn't be able to
--
echo
# access this column.
--
error
ER_COLUMNACCESS_DENIED_ERROR
SELECT
b
FROM
temp
.
t1
;
disconnect
conn1
;
connection
default
;
DROP
USER
'user2'
@
'%'
;
DROP
DATABASE
temp
;
--
echo
End
of
5.0
tests
...
...
mysql-test/t/myisam_crash_before_flush_keys.test
View file @
d689dda1
...
...
@@ -26,12 +26,6 @@ SET SESSION debug="d,crash_before_flush_keys";
--
error
2013
FLUSH
TABLE
t1
;
--
echo
# Run MYISAMCHK tool to check the table t1 and repair
--
replace_result
$MYISAMCHK
MYISAMCHK
$MYSQLD_DATADIR
MYSQLD_DATADIR
--
error
255
--
exec
$MYISAMCHK
-
cs
$MYSQLD_DATADIR
/
test
/
t1
2
>&
1
--
exec
$MYISAMCHK
-
rs
$MYSQLD_DATADIR
/
test
/
t1
--
echo
# Write file to make mysql-test-run.pl start the server
--
exec
echo
"restart"
>
$MYSQLTEST_VARDIR
/
tmp
/
mysqld
.
1.
expect
...
...
@@ -42,8 +36,6 @@ FLUSH TABLE t1;
--
echo
# it to be back online again
--
source
include
/
wait_until_connected_again
.
inc
SHOW
CREATE
TABLE
t1
;
SELECT
*
FROM
t1
FORCE
INDEX
(
PRIMARY
);
# Must report that the table wasn't closed properly
CHECK
TABLE
t1
;
DROP
TABLE
t1
;
mysql-test/t/sp.test
View file @
d689dda1
...
...
@@ -8263,7 +8263,51 @@ CALL p1;
DROP
PROCEDURE
p1
;
DROP
TABLE
t1
,
t2
;
--
echo
#
--
echo
# Bug47627 SET @@{global.session}.local_variable in stored routine causes crash
--
echo
#
--
disable_warnings
DROP
PROCEDURE
IF
EXISTS
p1
;
DROP
PROCEDURE
IF
EXISTS
p2
;
DROP
PROCEDURE
IF
EXISTS
p3
;
--
enable_warnings
delimiter
//;
--
error
ER_UNKNOWN_SYSTEM_VARIABLE
CREATE
PROCEDURE
p1
()
BEGIN
DECLARE
v
INT
DEFAULT
0
;
SET
@@
session
.
v
=
10
;
END
//
CREATE
PROCEDURE
p2
()
BEGIN
DECLARE
v
INT
DEFAULT
0
;
SET
v
=
10
;
END
//
call
p2
()
//
--
error
ER_UNKNOWN_SYSTEM_VARIABLE
CREATE
PROCEDURE
p3
()
BEGIN
DECLARE
v
INT
DEFAULT
0
;
SELECT
@@
session
.
v
;
END
//
--
error
ER_UNKNOWN_SYSTEM_VARIABLE
CREATE
PROCEDURE
p4
()
BEGIN
DECLARE
v
INT
DEFAULT
0
;
SET
@@
global
.
v
=
10
;
END
//
CREATE
PROCEDURE
p5
()
BEGIN
DECLARE
v
INT
DEFAULT
0
;
SET
@@
global
.
query_cache_size
=
0
;
SET
@@
session
.
identity
=
1
;
SELECT
@@
session
.
identity
;
SELECT
@@
global
.
query_cache_size
;
END
//
delimiter
;
//
CALL
p5
();
DROP
PROCEDURE
p2
;
DROP
PROCEDURE
p5
;
--
echo
# ------------------------------------------------------------------
--
echo
# -- End of 5.1 tests
--
echo
# ------------------------------------------------------------------
sql/sql_acl.cc
View file @
d689dda1
...
...
@@ -2255,6 +2255,8 @@ class GRANT_NAME :public Sql_alloc
GRANT_NAME
(
TABLE
*
form
);
virtual
~
GRANT_NAME
()
{};
virtual
bool
ok
()
{
return
privs
!=
0
;
}
void
set_user_details
(
const
char
*
h
,
const
char
*
d
,
const
char
*
u
,
const
char
*
t
);
};
...
...
@@ -2272,27 +2274,36 @@ class GRANT_TABLE :public GRANT_NAME
};
GRANT_NAME
::
GRANT_NAME
(
const
char
*
h
,
const
char
*
d
,
const
char
*
u
,
const
char
*
t
,
ulong
p
)
:
privs
(
p
)
void
GRANT_NAME
::
set_user_details
(
const
char
*
h
,
const
char
*
d
,
const
char
*
u
,
const
char
*
t
)
{
/* Host given by user */
update_hostname
(
&
host
,
strdup_root
(
&
memex
,
h
));
db
=
strdup_root
(
&
memex
,
d
);
if
(
db
!=
d
)
{
db
=
strdup_root
(
&
memex
,
d
);
if
(
lower_case_table_names
)
my_casedn_str
(
files_charset_info
,
db
);
}
user
=
strdup_root
(
&
memex
,
u
);
sort
=
get_sort
(
3
,
host
.
hostname
,
db
,
user
);
tname
=
strdup_root
(
&
memex
,
t
);
if
(
lower_case_table_names
)
if
(
tname
!=
t
)
{
my_casedn_str
(
files_charset_info
,
db
);
my_casedn_str
(
files_charset_info
,
tname
);
tname
=
strdup_root
(
&
memex
,
t
);
if
(
lower_case_table_names
)
my_casedn_str
(
files_charset_info
,
tname
);
}
key_length
=
strlen
(
d
)
+
strlen
(
u
)
+
strlen
(
t
)
+
3
;
hash_key
=
(
char
*
)
alloc_root
(
&
memex
,
key_length
);
strmov
(
strmov
(
strmov
(
hash_key
,
user
)
+
1
,
db
)
+
1
,
tname
);
}
GRANT_NAME
::
GRANT_NAME
(
const
char
*
h
,
const
char
*
d
,
const
char
*
u
,
const
char
*
t
,
ulong
p
)
:
db
(
0
),
tname
(
0
),
privs
(
p
)
{
set_user_details
(
h
,
d
,
u
,
t
);
}
GRANT_TABLE
::
GRANT_TABLE
(
const
char
*
h
,
const
char
*
d
,
const
char
*
u
,
const
char
*
t
,
ulong
p
,
ulong
c
)
...
...
@@ -5436,9 +5447,20 @@ static int handle_grant_struct(uint struct_no, bool drop,
case
2
:
case
3
:
grant_name
->
user
=
strdup_root
(
&
mem
,
user_to
->
user
.
str
);
update_hostname
(
&
grant_name
->
host
,
strdup_root
(
&
mem
,
user_to
->
host
.
str
));
/*
Update the grant structure with the new user name and
host name
*/
grant_name
->
set_user_details
(
user_to
->
host
.
str
,
grant_name
->
db
,
user_to
->
user
.
str
,
grant_name
->
tname
);
/*
Since username is part of the hash key, when the user name
is renamed, the hash key is changed. Update the hash to
ensure that the position matches the new hash key value
*/
hash_update
(
&
column_priv_hash
,
(
uchar
*
)
grant_name
,
(
uchar
*
)
grant_name
->
hash_key
,
grant_name
->
key_length
);
break
;
}
}
...
...
sql/sql_yacc.yy
View file @
d689dda1
...
...
@@ -11783,8 +11783,17 @@ option_type:
;
option_type2:
/* empty */ { $$= OPT_DEFAULT; }
| ONE_SHOT_SYM { Lex->one_shot_set= 1; $$= OPT_SESSION; }
/* empty */
{
$$= OPT_DEFAULT;
Lex->option_type= OPT_DEFAULT;
}
| ONE_SHOT_SYM
{
Lex->one_shot_set= 1;
$$= OPT_SESSION;
Lex->option_type= OPT_SESSION;
}
;
opt_var_type:
...
...
@@ -11795,10 +11804,26 @@ opt_var_type:
;
opt_var_ident_type:
/* empty */ { $$=OPT_DEFAULT; }
| GLOBAL_SYM '.' { $$=OPT_GLOBAL; }
| LOCAL_SYM '.' { $$=OPT_SESSION; }
| SESSION_SYM '.' { $$=OPT_SESSION; }
/* empty */
{
$$=OPT_DEFAULT;
Lex->option_type= OPT_DEFAULT;
}
| GLOBAL_SYM '.'
{
$$=OPT_GLOBAL;
Lex->option_type= OPT_GLOBAL;
}
| LOCAL_SYM '.'
{
$$=OPT_SESSION;
Lex->option_type= OPT_SESSION;
}
| SESSION_SYM '.'
{
$$=OPT_SESSION;
Lex->option_type= OPT_SESSION;
}
;
ext_option_value:
...
...
@@ -12038,8 +12063,22 @@ internal_variable_name:
sp_pcontext *spc= lex->spcont;
sp_variable_t *spv;
/* We have to lookup here since local vars can shadow sysvars */
if (!spc || !(spv = spc->find_variable(&$1)))
/*
We have to lookup here since local vars can shadow sysvars.
We also have to inspect the option_type first since the variable
identifier might have been prefixed with @@session or @@global
prefixes. Without this check we would wrongly identify them
as SP local variables.
*/
if (lex->option_type == OPT_DEFAULT && spc &&
(spv= spc->find_variable(&$1)))
{
/* An SP local variable */
$$.var= NULL;
$$.base_name= $1;
}
else
{
/* Not an SP local variable */
sys_var *tmp=find_sys_var(thd, $1.str, $1.length);
...
...
@@ -12056,12 +12095,6 @@ internal_variable_name:
lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT;
}
}
else
{
/* An SP local variable */
$$.var= NULL;
$$.base_name= $1;
}
}
| ident '.' ident
{
...
...
strings/ctype-uca.c
View file @
d689dda1
...
...
@@ -7858,7 +7858,8 @@ static my_bool create_tailoring(CHARSET_INFO *cs, void *(*alloc)(size_t))
return
1
;
}
cs
->
caseinfo
=
my_unicase_default
;
if
(
!
cs
->
caseinfo
)
cs
->
caseinfo
=
my_unicase_default
;
if
(
!
(
newweights
=
(
uint16
**
)
(
*
alloc
)(
256
*
sizeof
(
uint16
*
))))
return
1
;
...
...
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