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
473462f3
Commit
473462f3
authored
Mar 04, 2005
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
parents
eb41f3f7
2c6e46f4
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
299 additions
and
101 deletions
+299
-101
innobase/srv/srv0start.c
innobase/srv/srv0start.c
+16
-2
mysql-test/Makefile.am
mysql-test/Makefile.am
+3
-2
mysql-test/include/have_cp1250_ch.inc
mysql-test/include/have_cp1250_ch.inc
+4
-0
mysql-test/r/bigint.result
mysql-test/r/bigint.result
+39
-0
mysql-test/r/ctype_cp1250_ch.result
mysql-test/r/ctype_cp1250_ch.result
+9
-0
mysql-test/r/grant2.result
mysql-test/r/grant2.result
+17
-0
mysql-test/r/have_cp1250_ch.require
mysql-test/r/have_cp1250_ch.require
+2
-0
mysql-test/r/information_schema.result
mysql-test/r/information_schema.result
+7
-0
mysql-test/r/mysqldump.result
mysql-test/r/mysqldump.result
+0
-21
mysql-test/r/symlink.result
mysql-test/r/symlink.result
+12
-0
mysql-test/t/bigint.test
mysql-test/t/bigint.test
+33
-0
mysql-test/t/ctype_cp1250_ch.test
mysql-test/t/ctype_cp1250_ch.test
+12
-0
mysql-test/t/grant2.test
mysql-test/t/grant2.test
+15
-0
mysql-test/t/information_schema.test
mysql-test/t/information_schema.test
+9
-0
mysql-test/t/mysqldump.test
mysql-test/t/mysqldump.test
+8
-1
mysql-test/t/symlink.test
mysql-test/t/symlink.test
+15
-0
mysys/my_symlink2.c
mysys/my_symlink2.c
+6
-1
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
+9
-2
scripts/mysqlhotcopy.sh
scripts/mysqlhotcopy.sh
+11
-4
sql/item.h
sql/item.h
+7
-0
sql/item_func.cc
sql/item_func.cc
+25
-20
sql/mysqld.cc
sql/mysqld.cc
+5
-7
sql/share/errmsg.txt
sql/share/errmsg.txt
+2
-2
sql/sql_acl.cc
sql/sql_acl.cc
+28
-38
sql/sql_show.cc
sql/sql_show.cc
+4
-0
strings/ctype-win1250ch.c
strings/ctype-win1250ch.c
+1
-1
No files found.
innobase/srv/srv0start.c
View file @
473462f3
...
@@ -568,7 +568,14 @@ open_or_create_log_file(
...
@@ -568,7 +568,14 @@ open_or_create_log_file(
files
[
i
]
=
os_file_create
(
name
,
OS_FILE_CREATE
,
OS_FILE_NORMAL
,
files
[
i
]
=
os_file_create
(
name
,
OS_FILE_CREATE
,
OS_FILE_NORMAL
,
OS_LOG_FILE
,
&
ret
);
OS_LOG_FILE
,
&
ret
);
if
(
ret
==
FALSE
)
{
if
(
ret
==
FALSE
)
{
if
(
os_file_get_last_error
(
FALSE
)
!=
OS_FILE_ALREADY_EXISTS
)
{
if
(
os_file_get_last_error
(
FALSE
)
!=
OS_FILE_ALREADY_EXISTS
#ifdef UNIV_AIX
/* AIX 5.1 after security patch ML7 may have errno set
to 0 here, which causes our function to return 100;
work around that AIX problem */
&&
os_file_get_last_error
(
FALSE
)
!=
100
#endif
)
{
fprintf
(
stderr
,
fprintf
(
stderr
,
"InnoDB: Error in creating or opening %s
\n
"
,
name
);
"InnoDB: Error in creating or opening %s
\n
"
,
name
);
...
@@ -728,7 +735,14 @@ open_or_create_data_files(
...
@@ -728,7 +735,14 @@ open_or_create_data_files(
OS_FILE_NORMAL
,
OS_DATA_FILE
,
&
ret
);
OS_FILE_NORMAL
,
OS_DATA_FILE
,
&
ret
);
if
(
ret
==
FALSE
&&
os_file_get_last_error
(
FALSE
)
!=
if
(
ret
==
FALSE
&&
os_file_get_last_error
(
FALSE
)
!=
OS_FILE_ALREADY_EXISTS
)
{
OS_FILE_ALREADY_EXISTS
#ifdef UNIV_AIX
/* AIX 5.1 after security patch ML7 may have
errno set to 0 here, which causes our function
to return 100; work around that AIX problem */
&&
os_file_get_last_error
(
FALSE
)
!=
100
#endif
)
{
fprintf
(
stderr
,
fprintf
(
stderr
,
"InnoDB: Error in creating or opening %s
\n
"
,
"InnoDB: Error in creating or opening %s
\n
"
,
name
);
name
);
...
...
mysql-test/Makefile.am
View file @
473462f3
...
@@ -45,7 +45,8 @@ mysql_test_run_new_SOURCES= mysql_test_run_new.c my_manage.c my_create_tables.c
...
@@ -45,7 +45,8 @@ mysql_test_run_new_SOURCES= mysql_test_run_new.c my_manage.c my_create_tables.c
dist-hook
:
dist-hook
:
mkdir
-p
$(distdir)
/t
$(distdir)
/r
$(distdir)
/include
\
mkdir
-p
$(distdir)
/t
$(distdir)
/r
$(distdir)
/include
\
$(distdir)
/std_data
$(distdir)
/std_data
$(INSTALL_DATA)
$(srcdir)
/t/
*
.test
$(srcdir)
/t/
*
.disabled
$(distdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.test
$(distdir)
/t
-
$(INSTALL_DATA)
$(srcdir)
/t/
*
.disabled
$(distdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.opt
$(srcdir)
/t/
*
.sh
$(srcdir)
/t/
*
.slave-mi
$(distdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.opt
$(srcdir)
/t/
*
.sh
$(srcdir)
/t/
*
.slave-mi
$(distdir)
/t
$(INSTALL_DATA)
$(srcdir)
/include/
*
.inc
$(distdir)
/include
$(INSTALL_DATA)
$(srcdir)
/include/
*
.inc
$(distdir)
/include
$(INSTALL_DATA)
$(srcdir)
/r/
*
.result
$(srcdir)
/r/
*
.result.es
$(srcdir)
/r/
*
.require
$(distdir)
/r
$(INSTALL_DATA)
$(srcdir)
/r/
*
.result
$(srcdir)
/r/
*
.result.es
$(srcdir)
/r/
*
.require
$(distdir)
/r
...
@@ -63,7 +64,7 @@ install-data-local:
...
@@ -63,7 +64,7 @@ install-data-local:
$(DESTDIR)$(testdir)
/std_data
$(DESTDIR)$(testdir)
/std_data
$(INSTALL_DATA)
$(srcdir)
/README
$(DESTDIR)$(testdir)
$(INSTALL_DATA)
$(srcdir)
/README
$(DESTDIR)$(testdir)
$(INSTALL_DATA)
$(srcdir)
/t/
*
.test
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.test
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.disabled
$(DESTDIR)$(testdir)
/t
-
$(INSTALL_DATA)
$(srcdir)
/t/
*
.disabled
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.opt
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.opt
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.sh
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.sh
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.slave-mi
$(DESTDIR)$(testdir)
/t
$(INSTALL_DATA)
$(srcdir)
/t/
*
.slave-mi
$(DESTDIR)$(testdir)
/t
...
...
mysql-test/include/have_cp1250_ch.inc
0 → 100644
View file @
473462f3
--
require
r
/
have_cp1250_ch
.
require
disable_query_log
;
show
collation
like
"cp1250_czech_cs"
;
enable_query_log
;
mysql-test/r/bigint.result
View file @
473462f3
...
@@ -87,3 +87,42 @@ drop table t1;
...
@@ -87,3 +87,42 @@ drop table t1;
SELECT '0x8000000000000001'+0;
SELECT '0x8000000000000001'+0;
'0x8000000000000001'+0
'0x8000000000000001'+0
0
0
create table t1 (
value64 bigint unsigned not null,
value32 integer not null,
primary key(value64, value32)
);
create table t2 (
value64 bigint unsigned not null,
value32 integer not null,
primary key(value64, value32)
);
insert into t1 values(17156792991891826145, 1);
insert into t1 values( 9223372036854775807, 2);
insert into t2 values(17156792991891826145, 3);
insert into t2 values( 9223372036854775807, 4);
select * from t1;
value64 value32
9223372036854775807 2
17156792991891826145 1
select * from t2;
value64 value32
9223372036854775807 4
17156792991891826145 3
select * from t1, t2 where t1.value64=17156792991891826145 and
t2.value64=17156792991891826145;
value64 value32 value64 value32
17156792991891826145 1 17156792991891826145 3
select * from t1, t2 where t1.value64=17156792991891826145 and
t2.value64=t1.value64;
value64 value32 value64 value32
17156792991891826145 1 17156792991891826145 3
select * from t1, t2 where t1.value64= 9223372036854775807 and
t2.value64=9223372036854775807;
value64 value32 value64 value32
9223372036854775807 2 9223372036854775807 4
select * from t1, t2 where t1.value64= 9223372036854775807 and
t2.value64=t1.value64;
value64 value32 value64 value32
9223372036854775807 2 9223372036854775807 4
drop table t1, t2;
mysql-test/r/ctype_cp1250_ch.result
0 → 100644
View file @
473462f3
SHOW COLLATION LIKE 'cp1250_czech_cs';
Collation Charset Id Default Compiled Sortlen
cp1250_czech_cs cp1250 34 Yes 2
CREATE TABLE t1 (a char(16)) character set cp1250 collate cp1250_czech_cs;
INSERT INTO t1 VALUES ('');
SELECT a, length(a), a='', a=' ', a=' ' FROM t1;
a length(a) a='' a=' ' a=' '
0 1 1 1
DROP TABLE t1;
mysql-test/r/grant2.result
View file @
473462f3
...
@@ -233,3 +233,20 @@ drop user mysqltest_B@'%';
...
@@ -233,3 +233,20 @@ drop user mysqltest_B@'%';
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysql'
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysql'
drop user mysqltest_B@'%';
drop user mysqltest_B@'%';
drop user mysqltest_3@localhost;
drop user mysqltest_3@localhost;
set @@sql_mode='';
create database mysqltest_1;
create table mysqltest_1.t1 (i int);
insert into mysqltest_1.t1 values (1),(2),(3);
GRANT ALL ON mysqltest_1.t1 TO mysqltest_1@'127.0.0.0/255.0.0.0';
show grants for current_user();
Grants for mysqltest_1@127.0.0.0/255.0.0.0
GRANT USAGE ON *.* TO 'mysqltest_1'@'127.0.0.0/255.0.0.0'
GRANT ALL PRIVILEGES ON `mysqltest_1`.`t1` TO 'mysqltest_1'@'127.0.0.0/255.0.0.0'
select * from t1;
i
1
2
3
REVOKE ALL ON mysqltest_1.t1 FROM mysqltest_1@'127.0.0.0/255.0.0.0';
drop table mysqltest_1.t1;
drop database mysqltest_1;
mysql-test/r/have_cp1250_ch.require
0 → 100644
View file @
473462f3
Collation Charset Id Default Compiled Sortlen
cp1250_czech_cs cp1250 34 Yes 2
mysql-test/r/information_schema.result
View file @
473462f3
...
@@ -631,3 +631,10 @@ TABLES UPDATE_TIME datetime
...
@@ -631,3 +631,10 @@ TABLES UPDATE_TIME datetime
TABLES CHECK_TIME datetime
TABLES CHECK_TIME datetime
ROUTINES CREATED datetime
ROUTINES CREATED datetime
ROUTINES LAST_ALTERED datetime
ROUTINES LAST_ALTERED datetime
SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES A
WHERE NOT EXISTS
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS B
WHERE A.TABLE_SCHEMA = B.TABLE_SCHEMA
AND A.TABLE_NAME = B.TABLE_NAME);
COUNT(*)
0
mysql-test/r/mysqldump.result
View file @
473462f3
...
@@ -477,27 +477,6 @@ CREATE TABLE `t1` (
...
@@ -477,27 +477,6 @@ CREATE TABLE `t1` (
) TYPE=MyISAM;
) TYPE=MyISAM;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
LOCK TABLES `t1` WRITE;
INSERT INTO `t1` VALUES ('');
UNLOCK TABLES;
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO,MYSQL323' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
`a` char(10) default NULL
) TYPE=MyISAM;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
LOCK TABLES `t1` WRITE;
LOCK TABLES `t1` WRITE;
INSERT INTO `t1` VALUES ('');
INSERT INTO `t1` VALUES ('');
...
...
mysql-test/r/symlink.result
View file @
473462f3
...
@@ -93,3 +93,15 @@ t1 CREATE TABLE `t1` (
...
@@ -93,3 +93,15 @@ t1 CREATE TABLE `t1` (
`b` int(11) default NULL
`b` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
drop table t1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
mysql-test/t/bigint.test
View file @
473462f3
...
@@ -71,3 +71,36 @@ drop table t1;
...
@@ -71,3 +71,36 @@ drop table t1;
# atof() behaviour is different of different systems. to be fixed in 4.1
# atof() behaviour is different of different systems. to be fixed in 4.1
SELECT
'0x8000000000000001'
+
0
;
SELECT
'0x8000000000000001'
+
0
;
# Test for BUG#8562: joins over BIGINT UNSIGNED value + constant propagation
create
table
t1
(
value64
bigint
unsigned
not
null
,
value32
integer
not
null
,
primary
key
(
value64
,
value32
)
);
create
table
t2
(
value64
bigint
unsigned
not
null
,
value32
integer
not
null
,
primary
key
(
value64
,
value32
)
);
insert
into
t1
values
(
17156792991891826145
,
1
);
insert
into
t1
values
(
9223372036854775807
,
2
);
insert
into
t2
values
(
17156792991891826145
,
3
);
insert
into
t2
values
(
9223372036854775807
,
4
);
select
*
from
t1
;
select
*
from
t2
;
select
*
from
t1
,
t2
where
t1
.
value64
=
17156792991891826145
and
t2
.
value64
=
17156792991891826145
;
select
*
from
t1
,
t2
where
t1
.
value64
=
17156792991891826145
and
t2
.
value64
=
t1
.
value64
;
select
*
from
t1
,
t2
where
t1
.
value64
=
9223372036854775807
and
t2
.
value64
=
9223372036854775807
;
select
*
from
t1
,
t2
where
t1
.
value64
=
9223372036854775807
and
t2
.
value64
=
t1
.
value64
;
drop
table
t1
,
t2
;
mysql-test/t/ctype_cp1250_ch.test
0 → 100644
View file @
473462f3
--
source
include
/
have_cp1250_ch
.
inc
SHOW
COLLATION
LIKE
'cp1250_czech_cs'
;
#
# Bugs: #8840: Empty string comparison and character set 'cp1250'
#
CREATE
TABLE
t1
(
a
char
(
16
))
character
set
cp1250
collate
cp1250_czech_cs
;
INSERT
INTO
t1
VALUES
(
''
);
SELECT
a
,
length
(
a
),
a
=
''
,
a
=
' '
,
a
=
' '
FROM
t1
;
DROP
TABLE
t1
;
mysql-test/t/grant2.test
View file @
473462f3
...
@@ -246,3 +246,18 @@ connection default;
...
@@ -246,3 +246,18 @@ connection default;
drop
user
mysqltest_B
@
'%'
;
drop
user
mysqltest_B
@
'%'
;
drop
user
mysqltest_3
@
localhost
;
drop
user
mysqltest_3
@
localhost
;
#
#
# Bug #3309: Test IP addresses with netmask
set
@@
sql_mode
=
''
;
create
database
mysqltest_1
;
create
table
mysqltest_1
.
t1
(
i
int
);
insert
into
mysqltest_1
.
t1
values
(
1
),(
2
),(
3
);
GRANT
ALL
ON
mysqltest_1
.
t1
TO
mysqltest_1
@
'127.0.0.0/255.0.0.0'
;
connect
(
n1
,
127.0
.
0.1
,
mysqltest_1
,,
mysqltest_1
,
$MASTER_MYPORT
,
$MASTER_MYSOCK
);
connection
n1
;
show
grants
for
current_user
();
select
*
from
t1
;
disconnect
n1
;
connection
default
;
REVOKE
ALL
ON
mysqltest_1
.
t1
FROM
mysqltest_1
@
'127.0.0.0/255.0.0.0'
;
drop
table
mysqltest_1
.
t1
;
drop
database
mysqltest_1
;
mysql-test/t/information_schema.test
View file @
473462f3
...
@@ -400,3 +400,12 @@ information_schema.columns
...
@@ -400,3 +400,12 @@ information_schema.columns
where
data_type
=
'longtext'
;
where
data_type
=
'longtext'
;
select
table_name
,
column_name
,
data_type
from
information_schema
.
columns
select
table_name
,
column_name
,
data_type
from
information_schema
.
columns
where
data_type
=
'datetime'
;
where
data_type
=
'datetime'
;
#
# Bug #8164 subquery with INFORMATION_SCHEMA.COLUMNS, 100 % CPU
#
SELECT
COUNT
(
*
)
FROM
INFORMATION_SCHEMA
.
TABLES
A
WHERE
NOT
EXISTS
(
SELECT
*
FROM
INFORMATION_SCHEMA
.
COLUMNS
B
WHERE
A
.
TABLE_SCHEMA
=
B
.
TABLE_SCHEMA
AND
A
.
TABLE_NAME
=
B
.
TABLE_NAME
);
mysql-test/t/mysqldump.test
View file @
473462f3
...
@@ -158,7 +158,14 @@ drop database mysqldump_test_db;
...
@@ -158,7 +158,14 @@ drop database mysqldump_test_db;
CREATE
TABLE
t1
(
a
CHAR
(
10
));
CREATE
TABLE
t1
(
a
CHAR
(
10
));
INSERT
INTO
t1
VALUES
(
_latin1
''
);
INSERT
INTO
t1
VALUES
(
_latin1
''
);
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
test
t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
test
t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
--
compatible
=
mysql323
test
t1
#
# Bug#8063: make test mysqldump [ fail ]
# We cannot tes this command because its output depends
# on --default-character-set incompiled into "mysqldump" program.
# If the future we can move this command into a separate test with
# checking that "mysqldump" is compiled with "latin1"
#
#--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --compatible=mysql323 test t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
--
compatible
=
mysql323
--
default
-
character
-
set
=
cp850
test
t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
--
compatible
=
mysql323
--
default
-
character
-
set
=
cp850
test
t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
--
default
-
character
-
set
=
cp850
--
compatible
=
mysql323
test
t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
--
default
-
character
-
set
=
cp850
--
compatible
=
mysql323
test
t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
--
default
-
character
-
set
=
utf8
--
compatible
=
mysql323
test
t1
--
exec
$MYSQL_DUMP
--
character
-
sets
-
dir
=
$CHARSETSDIR
--
skip
-
comments
--
default
-
character
-
set
=
utf8
--
compatible
=
mysql323
test
t1
...
...
mysql-test/t/symlink.test
View file @
473462f3
...
@@ -121,3 +121,18 @@ eval alter table t1 index directory="$MYSQL_TEST_DIR/var/log";
...
@@ -121,3 +121,18 @@ eval alter table t1 index directory="$MYSQL_TEST_DIR/var/log";
enable_query_log
;
enable_query_log
;
show
create
table
t1
;
show
create
table
t1
;
drop
table
t1
;
drop
table
t1
;
#
# Test specifying DATA DIRECTORY that is the same as what would normally
# have been chosen. (Bug #8707)
#
disable_query_log
;
eval
create
table
t1
(
i
int
)
data
directory
=
"
$MYSQL_TEST_DIR
/var/master-data/test/"
;
enable_query_log
;
show
create
table
t1
;
drop
table
t1
;
disable_query_log
;
eval
create
table
t1
(
i
int
)
index
directory
=
"
$MYSQL_TEST_DIR
/var/master-data/test/"
;
enable_query_log
;
show
create
table
t1
;
drop
table
t1
;
mysys/my_symlink2.c
View file @
473462f3
...
@@ -32,6 +32,7 @@ File my_create_with_symlink(const char *linkname, const char *filename,
...
@@ -32,6 +32,7 @@ File my_create_with_symlink(const char *linkname, const char *filename,
int
tmp_errno
;
int
tmp_errno
;
/* Test if we should create a link */
/* Test if we should create a link */
int
create_link
;
int
create_link
;
char
abs_linkname
[
FN_REFLEN
];
DBUG_ENTER
(
"my_create_with_symlink"
);
DBUG_ENTER
(
"my_create_with_symlink"
);
if
(
my_disable_symlinks
)
if
(
my_disable_symlinks
)
...
@@ -42,7 +43,11 @@ File my_create_with_symlink(const char *linkname, const char *filename,
...
@@ -42,7 +43,11 @@ File my_create_with_symlink(const char *linkname, const char *filename,
filename
=
linkname
;
filename
=
linkname
;
}
}
else
else
create_link
=
(
linkname
&&
strcmp
(
linkname
,
filename
));
{
if
(
linkname
)
my_realpath
(
&
abs_linkname
,
linkname
,
MYF
(
0
));
create_link
=
(
linkname
&&
strcmp
(
abs_linkname
,
filename
));
}
if
(
!
(
MyFlags
&
MY_DELETE_OLD
))
if
(
!
(
MyFlags
&
MY_DELETE_OLD
))
{
{
...
...
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
View file @
473462f3
...
@@ -6074,11 +6074,17 @@ int Dbtc::releaseAndAbort(Signal* signal)
...
@@ -6074,11 +6074,17 @@ int Dbtc::releaseAndAbort(Signal* signal)
UintR
TnoLoops
=
tcConnectptr
.
p
->
noOfNodes
;
UintR
TnoLoops
=
tcConnectptr
.
p
->
noOfNodes
;
apiConnectptr
.
p
->
counter
++
;
apiConnectptr
.
p
->
counter
++
;
bool
prevAlive
=
false
;
for
(
Uint32
Ti
=
0
;
Ti
<
TnoLoops
;
Ti
++
)
{
for
(
Uint32
Ti
=
0
;
Ti
<
TnoLoops
;
Ti
++
)
{
localHostptr
.
i
=
tcConnectptr
.
p
->
tcNodedata
[
Ti
];
localHostptr
.
i
=
tcConnectptr
.
p
->
tcNodedata
[
Ti
];
ptrCheckGuard
(
localHostptr
,
chostFilesize
,
hostRecord
);
ptrCheckGuard
(
localHostptr
,
chostFilesize
,
hostRecord
);
if
(
localHostptr
.
p
->
hostStatus
==
HS_ALIVE
)
{
if
(
localHostptr
.
p
->
hostStatus
==
HS_ALIVE
)
{
jam
();
jam
();
if
(
prevAlive
)
{
// if previous is alive, its LQH forwards abort to this node
jam
();
continue
;
}
/* ************< */
/* ************< */
/* ABORT < */
/* ABORT < */
/* ************< */
/* ************< */
...
@@ -6088,15 +6094,16 @@ int Dbtc::releaseAndAbort(Signal* signal)
...
@@ -6088,15 +6094,16 @@ int Dbtc::releaseAndAbort(Signal* signal)
signal
->
theData
[
2
]
=
apiConnectptr
.
p
->
transid
[
0
];
signal
->
theData
[
2
]
=
apiConnectptr
.
p
->
transid
[
0
];
signal
->
theData
[
3
]
=
apiConnectptr
.
p
->
transid
[
1
];
signal
->
theData
[
3
]
=
apiConnectptr
.
p
->
transid
[
1
];
sendSignal
(
tblockref
,
GSN_ABORT
,
signal
,
4
,
JBB
);
sendSignal
(
tblockref
,
GSN_ABORT
,
signal
,
4
,
JBB
);
return
1
;
prevAlive
=
true
;
}
else
{
}
else
{
jam
();
jam
();
signal
->
theData
[
0
]
=
tcConnectptr
.
i
;
signal
->
theData
[
0
]
=
tcConnectptr
.
i
;
signal
->
theData
[
1
]
=
apiConnectptr
.
p
->
transid
[
0
];
signal
->
theData
[
1
]
=
apiConnectptr
.
p
->
transid
[
0
];
signal
->
theData
[
2
]
=
apiConnectptr
.
p
->
transid
[
1
];
signal
->
theData
[
2
]
=
apiConnectptr
.
p
->
transid
[
1
];
signal
->
theData
[
3
]
=
h
ostptr
.
i
;
signal
->
theData
[
3
]
=
localH
ostptr
.
i
;
signal
->
theData
[
4
]
=
ZFALSE
;
signal
->
theData
[
4
]
=
ZFALSE
;
sendSignal
(
cownref
,
GSN_ABORTED
,
signal
,
5
,
JBB
);
sendSignal
(
cownref
,
GSN_ABORTED
,
signal
,
5
,
JBB
);
prevAlive
=
false
;
}
//if
}
//if
}
//for
}
//for
return
1
;
return
1
;
...
...
scripts/mysqlhotcopy.sh
View file @
473462f3
...
@@ -272,10 +272,7 @@ foreach my $rdb ( @db_desc ) {
...
@@ -272,10 +272,7 @@ foreach my $rdb ( @db_desc ) {
my
$negated
;
my
$negated
;
if
(
$rdb
->
{
t_regex
})
{
if
(
$rdb
->
{
t_regex
})
{
$t_regex
=
$rdb
->
{
t_regex
}
;
## assign temporary regex
$t_regex
=
$rdb
->
{
t_regex
}
;
## assign temporary regex
$negated
=
$t_regex
=
~
tr
/~//d
;
## remove and count
$negated
=
$t_regex
=
~ s/^~//
;
## note and remove negation operator
## negation operator: we
## don't allow ~ in table
## names
$t_regex
=
qr/
$t_regex
/
;
## make regex string from
$t_regex
=
qr/
$t_regex
/
;
## make regex string from
## user regex
## user regex
...
@@ -820,6 +817,16 @@ sub get_list_of_tables {
...
@@ -820,6 +817,16 @@ sub get_list_of_tables {
})
;
})
;
my @dbh_tables
=
eval
{
$dbh
->tables
()
}
;
my @dbh_tables
=
eval
{
$dbh
->tables
()
}
;
## Remove quotes around table names
my
$quote
=
$dbh
->get_info
(
29
)
;
# SQL_IDENTIFIER_QUOTE_CHAR
if
(
$quote
)
{
foreach
(
@dbh_tables
)
{
s/^
$quote
(
.
*
)
$quote$/$1
/
;
s/
$quote$quote
/
$quote
/g
;
}
}
$dbh
->disconnect
()
;
$dbh
->disconnect
()
;
return
@dbh_tables
;
return
@dbh_tables
;
}
}
...
...
sql/item.h
View file @
473462f3
...
@@ -1242,6 +1242,8 @@ class Item_null_helper :public Item_ref_null_helper
...
@@ -1242,6 +1242,8 @@ class Item_null_helper :public Item_ref_null_helper
The following class is used to optimize comparing of date and bigint columns
The following class is used to optimize comparing of date and bigint columns
We need to save the original item, to be able to set the field to the
We need to save the original item, to be able to set the field to the
original value in 'opt_range'.
original value in 'opt_range'.
An instance of Item_int_with_ref may refer to a signed or an unsigned
integer.
*/
*/
class
Item_int_with_ref
:
public
Item_int
class
Item_int_with_ref
:
public
Item_int
...
@@ -1256,6 +1258,11 @@ class Item_int_with_ref :public Item_int
...
@@ -1256,6 +1258,11 @@ class Item_int_with_ref :public Item_int
{
{
return
ref
->
save_in_field
(
field
,
no_conversions
);
return
ref
->
save_in_field
(
field
,
no_conversions
);
}
}
Item
*
new_item
()
{
return
(
ref
->
unsigned_flag
)
?
new
Item_uint
(
ref
->
name
,
ref
->
max_length
)
:
new
Item_int
(
ref
->
name
,
ref
->
max_length
);
}
};
};
...
...
sql/item_func.cc
View file @
473462f3
...
@@ -2364,26 +2364,6 @@ longlong Item_func_bit_count::val_int()
...
@@ -2364,26 +2364,6 @@ longlong Item_func_bit_count::val_int()
#ifdef HAVE_DLOPEN
#ifdef HAVE_DLOPEN
udf_handler
::~
udf_handler
()
{
if
(
!
not_original
)
{
if
(
initialized
)
{
if
(
u_d
->
func_deinit
!=
NULL
)
{
void
(
*
deinit
)(
UDF_INIT
*
)
=
(
void
(
*
)(
UDF_INIT
*
))
u_d
->
func_deinit
;
(
*
deinit
)(
&
initid
);
}
free_udf
(
u_d
);
}
if
(
buffers
)
// Because of bug in ecc
delete
[]
buffers
;
}
}
bool
bool
udf_handler
::
fix_fields
(
THD
*
thd
,
TABLE_LIST
*
tables
,
Item_result_field
*
func
,
udf_handler
::
fix_fields
(
THD
*
thd
,
TABLE_LIST
*
tables
,
Item_result_field
*
func
,
uint
arg_count
,
Item
**
arguments
)
uint
arg_count
,
Item
**
arguments
)
...
@@ -2773,6 +2753,31 @@ String *Item_func_udf_str::val_str(String *str)
...
@@ -2773,6 +2753,31 @@ String *Item_func_udf_str::val_str(String *str)
return
res
;
return
res
;
}
}
/*
This has to come last in the udf_handler methods, or the compiler for IBM
AIX fails to compile with debugging enabled. (Yes, really.)
*/
udf_handler
::~
udf_handler
()
{
if
(
!
not_original
)
{
if
(
initialized
)
{
if
(
u_d
->
func_deinit
!=
NULL
)
{
void
(
*
deinit
)(
UDF_INIT
*
)
=
(
void
(
*
)(
UDF_INIT
*
))
u_d
->
func_deinit
;
(
*
deinit
)(
&
initid
);
}
free_udf
(
u_d
);
}
if
(
buffers
)
// Because of bug in ecc
delete
[]
buffers
;
}
}
#else
#else
bool
udf_handler
::
get_arguments
()
{
return
0
;
}
bool
udf_handler
::
get_arguments
()
{
return
0
;
}
#endif
/* HAVE_DLOPEN */
#endif
/* HAVE_DLOPEN */
...
...
sql/mysqld.cc
View file @
473462f3
...
@@ -3147,13 +3147,11 @@ we force server id to 2, but this MySQL server will not act as a slave.");
...
@@ -3147,13 +3147,11 @@ we force server id to 2, but this MySQL server will not act as a slave.");
create_shutdown_thread
();
create_shutdown_thread
();
create_maintenance_thread
();
create_maintenance_thread
();
printf
(
ER
(
ER_READY
),
my_progname
,
server_version
,
sql_print_information
(
ER
(
ER_READY
),
my_progname
,
server_version
,
((
unix_sock
==
INVALID_SOCKET
)
?
(
char
*
)
""
:
mysqld_unix_port
),
((
unix_sock
==
INVALID_SOCKET
)
?
(
char
*
)
""
mysqld_port
);
:
mysqld_unix_port
),
if
(
MYSQL_COMPILATION_COMMENT
[
0
]
!=
'\0'
)
mysqld_port
,
fputs
(
" "
MYSQL_COMPILATION_COMMENT
,
stdout
);
MYSQL_COMPILATION_COMMENT
);
putchar
(
'\n'
);
fflush
(
stdout
);
#if defined(__NT__) || defined(HAVE_SMEM)
#if defined(__NT__) || defined(HAVE_SMEM)
handle_connections_methods
();
handle_connections_methods
();
...
...
sql/share/errmsg.txt
View file @
473462f3
...
@@ -1824,7 +1824,7 @@ ER_READY
...
@@ -1824,7 +1824,7 @@ ER_READY
cze "%s: p-Bipraven na spojen"
cze "%s: p-Bipraven na spojen"
dan "%s: klar til tilslutninger"
dan "%s: klar til tilslutninger"
nla "%s: klaar voor verbindingen"
nla "%s: klaar voor verbindingen"
eng "%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d"
eng "%s: ready for connections.\nVersion: '%s' socket: '%s' port: %d
%s
"
jps "%s: ",
jps "%s: ",
est "%s: ootab hendusi"
est "%s: ootab hendusi"
fre "%s: Prt pour des connections"
fre "%s: Prt pour des connections"
...
@@ -1839,7 +1839,7 @@ ER_READY
...
@@ -1839,7 +1839,7 @@ ER_READY
pol "%s: gotowe do po?czenia"
pol "%s: gotowe do po?czenia"
por "%s: Pronto para conexes"
por "%s: Pronto para conexes"
rum "%s: sint gata pentru conectii"
rum "%s: sint gata pentru conectii"
rus "%s: .\n: '%s' : '%s' : %d"
rus "%s: .\n: '%s' : '%s' : %d
%s
"
serbian "%s: Spreman za konekcije\n"
serbian "%s: Spreman za konekcije\n"
slo "%s: pripraven na spojenie"
slo "%s: pripraven na spojenie"
spa "%s: preparado para conexiones"
spa "%s: preparado para conexiones"
...
...
sql/sql_acl.cc
View file @
473462f3
...
@@ -1928,7 +1928,8 @@ static byte* get_key_column(GRANT_COLUMN *buff,uint *length,
...
@@ -1928,7 +1928,8 @@ static byte* get_key_column(GRANT_COLUMN *buff,uint *length,
class
GRANT_NAME
:
public
Sql_alloc
class
GRANT_NAME
:
public
Sql_alloc
{
{
public:
public:
char
*
host
,
*
db
,
*
user
,
*
tname
,
*
hash_key
,
*
orig_host
;
acl_host_and_ip
host
;
char
*
db
,
*
user
,
*
tname
,
*
hash_key
;
ulong
privs
;
ulong
privs
;
ulong
sort
;
ulong
sort
;
uint
key_length
;
uint
key_length
;
...
@@ -1960,12 +1961,10 @@ GRANT_NAME::GRANT_NAME(const char *h, const char *d,const char *u,
...
@@ -1960,12 +1961,10 @@ GRANT_NAME::GRANT_NAME(const char *h, const char *d,const char *u,
:
privs
(
p
)
:
privs
(
p
)
{
{
/* Host given by user */
/* Host given by user */
orig_host
=
strdup_root
(
&
memex
,
h
);
update_hostname
(
&
host
,
strdup_root
(
&
memex
,
h
));
/* Convert empty hostname to '%' for easy comparison */
host
=
orig_host
[
0
]
?
orig_host
:
(
char
*
)
"%"
;
db
=
strdup_root
(
&
memex
,
d
);
db
=
strdup_root
(
&
memex
,
d
);
user
=
strdup_root
(
&
memex
,
u
);
user
=
strdup_root
(
&
memex
,
u
);
sort
=
get_sort
(
3
,
host
,
db
,
user
);
sort
=
get_sort
(
3
,
host
.
hostname
,
db
,
user
);
tname
=
strdup_root
(
&
memex
,
t
);
tname
=
strdup_root
(
&
memex
,
t
);
if
(
lower_case_table_names
)
if
(
lower_case_table_names
)
{
{
...
@@ -1989,17 +1988,12 @@ GRANT_TABLE::GRANT_TABLE(const char *h, const char *d,const char *u,
...
@@ -1989,17 +1988,12 @@ GRANT_TABLE::GRANT_TABLE(const char *h, const char *d,const char *u,
GRANT_NAME
::
GRANT_NAME
(
TABLE
*
form
)
GRANT_NAME
::
GRANT_NAME
(
TABLE
*
form
)
{
{
orig_host
=
host
=
get_field
(
&
memex
,
form
->
field
[
0
]
);
update_hostname
(
&
host
,
get_field
(
&
memex
,
form
->
field
[
0
])
);
db
=
get_field
(
&
memex
,
form
->
field
[
1
]);
db
=
get_field
(
&
memex
,
form
->
field
[
1
]);
user
=
get_field
(
&
memex
,
form
->
field
[
2
]);
user
=
get_field
(
&
memex
,
form
->
field
[
2
]);
if
(
!
user
)
if
(
!
user
)
user
=
(
char
*
)
""
;
user
=
(
char
*
)
""
;
if
(
!
orig_host
)
sort
=
get_sort
(
3
,
host
.
hostname
,
db
,
user
);
{
orig_host
=
(
char
*
)
""
;
host
=
(
char
*
)
"%"
;
}
sort
=
get_sort
(
3
,
orig_host
,
db
,
user
);
tname
=
get_field
(
&
memex
,
form
->
field
[
3
]);
tname
=
get_field
(
&
memex
,
form
->
field
[
3
]);
if
(
!
db
||
!
tname
)
if
(
!
db
||
!
tname
)
{
{
...
@@ -2042,7 +2036,7 @@ GRANT_TABLE::GRANT_TABLE(TABLE *form, TABLE *col_privs)
...
@@ -2042,7 +2036,7 @@ GRANT_TABLE::GRANT_TABLE(TABLE *form, TABLE *col_privs)
{
{
uint
key_prefix_len
;
uint
key_prefix_len
;
KEY_PART_INFO
*
key_part
=
col_privs
->
key_info
->
key_part
;
KEY_PART_INFO
*
key_part
=
col_privs
->
key_info
->
key_part
;
col_privs
->
field
[
0
]
->
store
(
orig_host
,(
uint
)
strlen
(
orig_host
),
col_privs
->
field
[
0
]
->
store
(
host
.
hostname
,(
uint
)
strlen
(
host
.
hostname
),
system_charset_info
);
system_charset_info
);
col_privs
->
field
[
1
]
->
store
(
db
,(
uint
)
strlen
(
db
),
system_charset_info
);
col_privs
->
field
[
1
]
->
store
(
db
,(
uint
)
strlen
(
db
),
system_charset_info
);
col_privs
->
field
[
2
]
->
store
(
user
,(
uint
)
strlen
(
user
),
system_charset_info
);
col_privs
->
field
[
2
]
->
store
(
user
,(
uint
)
strlen
(
user
),
system_charset_info
);
...
@@ -2128,17 +2122,12 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
...
@@ -2128,17 +2122,12 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
{
{
if
(
exact
)
if
(
exact
)
{
{
if
((
host
&&
if
(
compare_hostname
(
&
grant_name
->
host
,
host
,
ip
))
!
my_strcasecmp
(
system_charset_info
,
host
,
grant_name
->
host
))
||
(
ip
&&
!
strcmp
(
ip
,
grant_name
->
host
)))
return
grant_name
;
return
grant_name
;
}
}
else
else
{
{
if
(((
host
&&
!
wild_case_compare
(
system_charset_info
,
if
(
compare_hostname
(
&
grant_name
->
host
,
host
,
ip
)
&&
host
,
grant_name
->
host
))
||
(
ip
&&
!
wild_case_compare
(
system_charset_info
,
ip
,
grant_name
->
host
)))
&&
(
!
found
||
found
->
sort
<
grant_name
->
sort
))
(
!
found
||
found
->
sort
<
grant_name
->
sort
))
found
=
grant_name
;
// Host ok
found
=
grant_name
;
// Host ok
}
}
...
@@ -3189,7 +3178,7 @@ my_bool grant_init(THD *org_thd)
...
@@ -3189,7 +3178,7 @@ my_bool grant_init(THD *org_thd)
if
(
check_no_resolve
)
if
(
check_no_resolve
)
{
{
if
(
hostname_requires_resolving
(
mem_check
->
host
))
if
(
hostname_requires_resolving
(
mem_check
->
host
.
hostname
))
{
{
sql_print_warning
(
"'tables_priv' entry '%s %s@%s' "
sql_print_warning
(
"'tables_priv' entry '%s %s@%s' "
"ignored in --skip-name-resolve mode."
,
"ignored in --skip-name-resolve mode."
,
...
@@ -3227,7 +3216,7 @@ my_bool grant_init(THD *org_thd)
...
@@ -3227,7 +3216,7 @@ my_bool grant_init(THD *org_thd)
if
(
check_no_resolve
)
if
(
check_no_resolve
)
{
{
if
(
hostname_requires_resolving
(
mem_check
->
host
))
if
(
hostname_requires_resolving
(
mem_check
->
host
.
hostname
))
{
{
sql_print_warning
(
"'procs_priv' entry '%s %s@%s' "
sql_print_warning
(
"'procs_priv' entry '%s %s@%s' "
"ignored in --skip-name-resolve mode."
,
"ignored in --skip-name-resolve mode."
,
...
@@ -3541,10 +3530,7 @@ bool check_grant_db(THD *thd,const char *db)
...
@@ -3541,10 +3530,7 @@ bool check_grant_db(THD *thd,const char *db)
idx
);
idx
);
if
(
len
<
grant_table
->
key_length
&&
if
(
len
<
grant_table
->
key_length
&&
!
memcmp
(
grant_table
->
hash_key
,
helping
,
len
)
&&
!
memcmp
(
grant_table
->
hash_key
,
helping
,
len
)
&&
(
thd
->
host
&&
!
wild_case_compare
(
system_charset_info
,
compare_hostname
(
&
grant_table
->
host
,
thd
->
host
,
thd
->
ip
))
thd
->
host
,
grant_table
->
host
)
||
(
thd
->
ip
&&
!
wild_case_compare
(
system_charset_info
,
thd
->
ip
,
grant_table
->
host
))))
{
{
error
=
0
;
// Found match
error
=
0
;
// Found match
break
;
break
;
...
@@ -3964,7 +3950,7 @@ bool mysql_show_grants(THD *thd,LEX_USER *lex_user)
...
@@ -3964,7 +3950,7 @@ bool mysql_show_grants(THD *thd,LEX_USER *lex_user)
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
!
my_strcasecmp
(
system_charset_info
,
lex_user
->
host
.
str
,
!
my_strcasecmp
(
system_charset_info
,
lex_user
->
host
.
str
,
grant_table
->
orig_host
))
grant_table
->
host
.
hostname
))
{
{
ulong
table_access
=
grant_table
->
privs
;
ulong
table_access
=
grant_table
->
privs
;
if
((
table_access
|
grant_table
->
cols
)
!=
0
)
if
((
table_access
|
grant_table
->
cols
)
!=
0
)
...
@@ -4071,7 +4057,7 @@ bool mysql_show_grants(THD *thd,LEX_USER *lex_user)
...
@@ -4071,7 +4057,7 @@ bool mysql_show_grants(THD *thd,LEX_USER *lex_user)
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
!
my_strcasecmp
(
system_charset_info
,
lex_user
->
host
.
str
,
!
my_strcasecmp
(
system_charset_info
,
lex_user
->
host
.
str
,
grant_proc
->
orig_host
))
grant_proc
->
host
.
hostname
))
{
{
ulong
proc_access
=
grant_proc
->
privs
;
ulong
proc_access
=
grant_proc
->
privs
;
if
(
proc_access
!=
0
)
if
(
proc_access
!=
0
)
...
@@ -4557,19 +4543,22 @@ static int handle_grant_struct(uint struct_no, bool drop,
...
@@ -4557,19 +4543,22 @@ static int handle_grant_struct(uint struct_no, bool drop,
case
1
:
case
1
:
acl_db
=
dynamic_element
(
&
acl_dbs
,
idx
,
ACL_DB
*
);
acl_db
=
dynamic_element
(
&
acl_dbs
,
idx
,
ACL_DB
*
);
user
=
acl_db
->
user
;
user
=
acl_db
->
user
;
host
=
acl_db
->
host
.
hostname
;
if
(
!
(
host
=
acl_db
->
host
.
hostname
))
host
=
"%"
;
break
;
break
;
case
2
:
case
2
:
grant_name
=
(
GRANT_NAME
*
)
hash_element
(
&
column_priv_hash
,
idx
);
grant_name
=
(
GRANT_NAME
*
)
hash_element
(
&
column_priv_hash
,
idx
);
user
=
grant_name
->
user
;
user
=
grant_name
->
user
;
host
=
grant_name
->
host
;
if
(
!
(
host
=
grant_name
->
host
.
hostname
))
host
=
"%"
;
break
;
break
;
case
3
:
case
3
:
grant_name
=
(
GRANT_NAME
*
)
hash_element
(
&
proc_priv_hash
,
idx
);
grant_name
=
(
GRANT_NAME
*
)
hash_element
(
&
proc_priv_hash
,
idx
);
user
=
grant_name
->
user
;
user
=
grant_name
->
user
;
host
=
grant_name
->
host
;
if
(
!
(
host
=
grant_name
->
host
.
hostname
))
host
=
"%"
;
break
;
break
;
}
}
if
(
!
user
)
if
(
!
user
)
...
@@ -4624,7 +4613,8 @@ static int handle_grant_struct(uint struct_no, bool drop,
...
@@ -4624,7 +4613,8 @@ static int handle_grant_struct(uint struct_no, bool drop,
case
2
:
case
2
:
case
3
:
case
3
:
grant_name
->
user
=
strdup_root
(
&
mem
,
user_to
->
user
.
str
);
grant_name
->
user
=
strdup_root
(
&
mem
,
user_to
->
user
.
str
);
grant_name
->
host
=
strdup_root
(
&
mem
,
user_to
->
host
.
str
);
update_hostname
(
&
grant_name
->
host
,
strdup_root
(
&
mem
,
user_to
->
host
.
str
));
break
;
break
;
}
}
}
}
...
@@ -5035,7 +5025,7 @@ bool mysql_revoke_all(THD *thd, List <LEX_USER> &list)
...
@@ -5035,7 +5025,7 @@ bool mysql_revoke_all(THD *thd, List <LEX_USER> &list)
counter
);
counter
);
if
(
!
(
user
=
grant_table
->
user
))
if
(
!
(
user
=
grant_table
->
user
))
user
=
""
;
user
=
""
;
if
(
!
(
host
=
grant_table
->
host
))
if
(
!
(
host
=
grant_table
->
host
.
hostname
))
host
=
""
;
host
=
""
;
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
...
@@ -5081,7 +5071,7 @@ bool mysql_revoke_all(THD *thd, List <LEX_USER> &list)
...
@@ -5081,7 +5071,7 @@ bool mysql_revoke_all(THD *thd, List <LEX_USER> &list)
counter
);
counter
);
if
(
!
(
user
=
grant_proc
->
user
))
if
(
!
(
user
=
grant_proc
->
user
))
user
=
""
;
user
=
""
;
if
(
!
(
host
=
grant_proc
->
host
))
if
(
!
(
host
=
grant_proc
->
host
.
hostname
))
host
=
""
;
host
=
""
;
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
...
@@ -5153,8 +5143,8 @@ bool sp_revoke_privileges(THD *thd, const char *sp_db, const char *sp_name)
...
@@ -5153,8 +5143,8 @@ bool sp_revoke_privileges(THD *thd, const char *sp_db, const char *sp_name)
LEX_USER
lex_user
;
LEX_USER
lex_user
;
lex_user
.
user
.
str
=
grant_proc
->
user
;
lex_user
.
user
.
str
=
grant_proc
->
user
;
lex_user
.
user
.
length
=
strlen
(
grant_proc
->
user
);
lex_user
.
user
.
length
=
strlen
(
grant_proc
->
user
);
lex_user
.
host
.
str
=
grant_proc
->
host
;
lex_user
.
host
.
str
=
grant_proc
->
host
.
hostname
;
lex_user
.
host
.
length
=
strlen
(
grant_proc
->
host
);
lex_user
.
host
.
length
=
strlen
(
grant_proc
->
host
.
hostname
);
if
(
!
replace_proc_table
(
thd
,
grant_proc
,
tables
[
4
].
table
,
lex_user
,
if
(
!
replace_proc_table
(
thd
,
grant_proc
,
tables
[
4
].
table
,
lex_user
,
grant_proc
->
db
,
grant_proc
->
tname
,
~
0
,
1
))
grant_proc
->
db
,
grant_proc
->
tname
,
~
0
,
1
))
{
{
...
@@ -5438,7 +5428,7 @@ int fill_schema_table_privileges(THD *thd, TABLE_LIST *tables, COND *cond)
...
@@ -5438,7 +5428,7 @@ int fill_schema_table_privileges(THD *thd, TABLE_LIST *tables, COND *cond)
if
(
!
(
table_access
&
GRANT_ACL
))
if
(
!
(
table_access
&
GRANT_ACL
))
is_grantable
=
"NO"
;
is_grantable
=
"NO"
;
strxmov
(
buff
,
"'"
,
user
,
"'@'"
,
grant_table
->
orig_host
,
"'"
,
NullS
);
strxmov
(
buff
,
"'"
,
user
,
"'@'"
,
grant_table
->
host
.
hostname
,
"'"
,
NullS
);
if
(
!
test_access
)
if
(
!
test_access
)
update_schema_privilege
(
table
,
buff
,
grant_table
->
db
,
grant_table
->
tname
,
update_schema_privilege
(
table
,
buff
,
grant_table
->
db
,
grant_table
->
tname
,
0
,
0
,
"USAGE"
,
5
,
is_grantable
);
0
,
0
,
"USAGE"
,
5
,
is_grantable
);
...
@@ -5485,7 +5475,7 @@ int fill_schema_column_privileges(THD *thd, TABLE_LIST *tables, COND *cond)
...
@@ -5485,7 +5475,7 @@ int fill_schema_column_privileges(THD *thd, TABLE_LIST *tables, COND *cond)
is_grantable
=
"NO"
;
is_grantable
=
"NO"
;
ulong
test_access
=
table_access
&
~
GRANT_ACL
;
ulong
test_access
=
table_access
&
~
GRANT_ACL
;
strxmov
(
buff
,
"'"
,
user
,
"'@'"
,
grant_table
->
orig_host
,
"'"
,
NullS
);
strxmov
(
buff
,
"'"
,
user
,
"'@'"
,
grant_table
->
host
.
hostname
,
"'"
,
NullS
);
if
(
!
test_access
)
if
(
!
test_access
)
continue
;
continue
;
else
else
...
...
sql/sql_show.cc
View file @
473462f3
...
@@ -1649,6 +1649,10 @@ bool uses_only_table_name_fields(Item *item, TABLE_LIST *table)
...
@@ -1649,6 +1649,10 @@ bool uses_only_table_name_fields(Item *item, TABLE_LIST *table)
strlen
(
item_field
->
field_name
),
0
)))
strlen
(
item_field
->
field_name
),
0
)))
return
0
;
return
0
;
}
}
if
(
item
->
type
()
==
Item
::
SUBSELECT_ITEM
&&
!
item
->
const_item
())
return
0
;
return
1
;
return
1
;
}
}
...
...
strings/ctype-win1250ch.c
View file @
473462f3
...
@@ -416,7 +416,7 @@ static struct wordvalue doubles[] = {
...
@@ -416,7 +416,7 @@ static struct wordvalue doubles[] = {
#define NEXT_CMP_VALUE(src, p, pass, value, len) \
#define NEXT_CMP_VALUE(src, p, pass, value, len) \
while (1) { \
while (1) { \
if (IS_END(p, src, len)) { \
if (IS_END(p, src, len)) { \
if (pass == 0
) { p = src; pass++; }
\
if (pass == 0
&& len > 0) { p= src; pass++; }
\
else { value = 0; break; } \
else { value = 0; break; } \
} \
} \
value = ((pass == 0) ? _sort_order_win1250ch1[*p] \
value = ((pass == 0) ? _sort_order_win1250ch1[*p] \
...
...
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