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
8b7728bd
Commit
8b7728bd
authored
Mar 01, 2006
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/gluh/MySQL/Bugs/5.0.17602
parents
d89abfc0
8a061aa6
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
146 additions
and
26 deletions
+146
-26
mysql-test/r/grant2.result
mysql-test/r/grant2.result
+22
-0
mysql-test/r/ndb_cache_multi2.result
mysql-test/r/ndb_cache_multi2.result
+10
-14
mysql-test/t/grant2.test
mysql-test/t/grant2.test
+35
-0
mysql-test/t/ndb_cache_multi2.test
mysql-test/t/ndb_cache_multi2.test
+8
-6
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+1
-1
sql/item_sum.h
sql/item_sum.h
+7
-0
sql/net_serv.cc
sql/net_serv.cc
+25
-4
sql/sql_acl.cc
sql/sql_acl.cc
+3
-1
tests/mysql_client_test.c
tests/mysql_client_test.c
+35
-0
No files found.
mysql-test/r/grant2.result
View file @
8b7728bd
...
@@ -334,3 +334,25 @@ lock table mysql.user write;
...
@@ -334,3 +334,25 @@ lock table mysql.user write;
revoke all on *.* from 'mysqltest_1'@'localhost';
revoke all on *.* from 'mysqltest_1'@'localhost';
unlock tables;
unlock tables;
drop user 'mysqltest_1'@'localhost';
drop user 'mysqltest_1'@'localhost';
create database TESTDB;
create table t2(a int);
create temporary table t1 as select * from mysql.user;
delete from mysql.user where host='localhost';
INSERT INTO mysql.user VALUES
('%','mysqltest_1',password('password'),'N','N','N','N','N','N',
'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N',
'','','','',0,0,0,0);
INSERT INTO mysql.db VALUES
('%','TESTDB','mysqltest_1','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','N','Y','Y','Y','
Y','N');
Warnings:
Warning 1265 Data truncated for column 'Alter_routine_priv' at row 1
FLUSH PRIVILEGES;
create database TEStdb;
ERROR 42000: Access denied for user 'mysqltest_1'@'%' to database 'TEStdb'
delete from mysql.user;
delete from mysql.db where host='%' and user='mysqltest_1' and db='TESTDB';
insert into mysql.user select * from t1;
drop table t1, t2;
drop database TESTDB;
flush privileges;
mysql-test/r/ndb_cache_multi2.result
View file @
8b7728bd
drop table if exists t1, t2;
drop table if exists t1, t2;
== Connected to server1 ==
set GLOBAL query_cache_type=on;
set GLOBAL query_cache_type=on;
set GLOBAL query_cache_size=1355776;
set GLOBAL query_cache_size=1355776;
set GLOBAL ndb_cache_check_time=1;
set GLOBAL ndb_cache_check_time=1;
reset query cache;
reset query cache;
flush status;
flush status;
== Connected to server2 ==
set GLOBAL query_cache_type=on;
set GLOBAL query_cache_type=on;
set GLOBAL query_cache_size=1355776;
set GLOBAL query_cache_size=1355776;
set GLOBAL ndb_cache_check_time=1;
set GLOBAL ndb_cache_check_time=1;
reset query cache;
reset query cache;
flush status;
flush status;
== Connected to server1 ==
create table t1 (a int) engine=ndbcluster;
create table t1 (a int) engine=ndbcluster;
create table t2 (a int) engine=ndbcluster;
create table t2 (a int) engine=ndbcluster;
insert into t1 value (2);
insert into t1 value (2);
...
@@ -16,18 +19,22 @@ insert into t2 value (3);
...
@@ -16,18 +19,22 @@ insert into t2 value (3);
select * from t1;
select * from t1;
a
a
2
2
select a != 3 from t1;
a != 3
1
select * from t2;
select * from t2;
a
a
3
3
show status like "Qcache_queries_in_cache";
show status like "Qcache_queries_in_cache";
Variable_name Value
Variable_name Value
Qcache_queries_in_cache
2
Qcache_queries_in_cache
3
show status like "Qcache_inserts";
show status like "Qcache_inserts";
Variable_name Value
Variable_name Value
Qcache_inserts
2
Qcache_inserts
3
show status like "Qcache_hits";
show status like "Qcache_hits";
Variable_name Value
Variable_name Value
Qcache_hits 0
Qcache_hits 0
== Connected to server2 ==
show status like "Qcache_queries_in_cache";
show status like "Qcache_queries_in_cache";
Variable_name Value
Variable_name Value
Qcache_queries_in_cache 0
Qcache_queries_in_cache 0
...
@@ -50,24 +57,13 @@ show status like "Qcache_hits";
...
@@ -50,24 +57,13 @@ show status like "Qcache_hits";
Variable_name Value
Variable_name Value
Qcache_hits 0
Qcache_hits 0
update t1 set a=3 where a=2;
update t1 set a=3 where a=2;
show status like "Qcache_queries_in_cache";
== Connected to server1 ==
Variable_name Value
Qcache_queries_in_cache 2
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 2
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 0
select * from t1;
select * from t1;
a
a
3
3
show status like "Qcache_queries_in_cache";
show status like "Qcache_queries_in_cache";
Variable_name Value
Variable_name Value
Qcache_queries_in_cache 3
Qcache_queries_in_cache 3
show status like "Qcache_inserts";
Variable_name Value
Qcache_inserts 4
drop table t1, t2;
drop table t1, t2;
set GLOBAL query_cache_size=0;
set GLOBAL query_cache_size=0;
set GLOBAL ndb_cache_check_time=0;
set GLOBAL ndb_cache_check_time=0;
...
...
mysql-test/t/grant2.test
View file @
8b7728bd
...
@@ -429,3 +429,38 @@ disconnect con2root;
...
@@ -429,3 +429,38 @@ disconnect con2root;
disconnect
con3root
;
disconnect
con3root
;
# End of 4.1 tests
# End of 4.1 tests
#
# Bug#17279 user with no global privs and with create
# priv in db can create databases
#
create
database
TESTDB
;
create
table
t2
(
a
int
);
create
temporary
table
t1
as
select
*
from
mysql
.
user
;
delete
from
mysql
.
user
where
host
=
'localhost'
;
INSERT
INTO
mysql
.
user
VALUES
(
'%'
,
'mysqltest_1'
,
password
(
'password'
),
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
'N'
,
''
,
''
,
''
,
''
,
0
,
0
,
0
,
0
);
INSERT
INTO
mysql
.
db
VALUES
(
'%'
,
'TESTDB'
,
'mysqltest_1'
,
'Y'
,
'Y'
,
'Y'
,
'Y'
,
'Y'
,
'Y'
,
'N'
,
'Y'
,
'Y'
,
'Y'
,
'Y'
,
'N'
,
'Y'
,
'Y'
,
'Y'
,
'
Y'
,
'N'
);
FLUSH
PRIVILEGES
;
connect
(
con1
,
localhost
,
mysqltest_1
,
password
,
TESTDB
);
# The user mysqltest_1 should only be allowed access to
# database TESTDB, not TEStdb
--
error
1044
create
database
TEStdb
;
# Clean-up
connection
default
;
delete
from
mysql
.
user
;
delete
from
mysql
.
db
where
host
=
'%'
and
user
=
'mysqltest_1'
and
db
=
'TESTDB'
;
insert
into
mysql
.
user
select
*
from
t1
;
drop
table
t1
,
t2
;
drop
database
TESTDB
;
flush
privileges
;
mysql-test/t/ndb_cache_multi2.test
View file @
8b7728bd
...
@@ -10,6 +10,7 @@ drop table if exists t1, t2;
...
@@ -10,6 +10,7 @@ drop table if exists t1, t2;
# Turn on and reset query cache on server1
# Turn on and reset query cache on server1
connection
server1
;
connection
server1
;
echo
==
Connected
to
server1
==
;
set
GLOBAL
query_cache_type
=
on
;
set
GLOBAL
query_cache_type
=
on
;
set
GLOBAL
query_cache_size
=
1355776
;
set
GLOBAL
query_cache_size
=
1355776
;
set
GLOBAL
ndb_cache_check_time
=
1
;
set
GLOBAL
ndb_cache_check_time
=
1
;
...
@@ -18,6 +19,7 @@ flush status;
...
@@ -18,6 +19,7 @@ flush status;
# Turn on and reset query cache on server2
# Turn on and reset query cache on server2
connection
server2
;
connection
server2
;
echo
==
Connected
to
server2
==
;
set
GLOBAL
query_cache_type
=
on
;
set
GLOBAL
query_cache_type
=
on
;
set
GLOBAL
query_cache_size
=
1355776
;
set
GLOBAL
query_cache_size
=
1355776
;
set
GLOBAL
ndb_cache_check_time
=
1
;
set
GLOBAL
ndb_cache_check_time
=
1
;
...
@@ -27,11 +29,14 @@ flush status;
...
@@ -27,11 +29,14 @@ flush status;
# Create test tables in NDB and load them into cache
# Create test tables in NDB and load them into cache
# on server1
# on server1
connection
server1
;
connection
server1
;
echo
==
Connected
to
server1
==
;
create
table
t1
(
a
int
)
engine
=
ndbcluster
;
create
table
t1
(
a
int
)
engine
=
ndbcluster
;
create
table
t2
(
a
int
)
engine
=
ndbcluster
;
create
table
t2
(
a
int
)
engine
=
ndbcluster
;
insert
into
t1
value
(
2
);
insert
into
t1
value
(
2
);
insert
into
t2
value
(
3
);
insert
into
t2
value
(
3
);
select
*
from
t1
;
select
*
from
t1
;
# Run the check query once to load it into qc on server1
select
a
!=
3
from
t1
;
select
*
from
t2
;
select
*
from
t2
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_inserts"
;
...
@@ -40,6 +45,7 @@ show status like "Qcache_hits";
...
@@ -40,6 +45,7 @@ show status like "Qcache_hits";
# Connect server2, load table in to cache, then update the table
# Connect server2, load table in to cache, then update the table
connection
server2
;
connection
server2
;
echo
==
Connected
to
server2
==
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_hits"
;
...
@@ -49,12 +55,10 @@ show status like "Qcache_inserts";
...
@@ -49,12 +55,10 @@ show status like "Qcache_inserts";
show
status
like
"Qcache_hits"
;
show
status
like
"Qcache_hits"
;
update
t1
set
a
=
3
where
a
=
2
;
update
t1
set
a
=
3
where
a
=
2
;
# Connect to server1 and check that cache is invalidated
# Connect to server1 and check that cache is invalidated
# and correct data is returned
# and correct data is returned
connection
server1
;
connection
server1
;
show
status
like
"Qcache_queries_in_cache"
;
echo
==
Connected
to
server1
==
;
show
status
like
"Qcache_inserts"
;
show
status
like
"Qcache_hits"
;
# Loop and wait for max 10 seconds until query cache thread
# Loop and wait for max 10 seconds until query cache thread
# has invalidated the cache and the column a in t1 is equal to 3
# has invalidated the cache and the column a in t1 is equal to 3
...
@@ -75,8 +79,6 @@ select * from t1;
...
@@ -75,8 +79,6 @@ select * from t1;
# There should now be three queries in the cache
# There should now be three queries in the cache
show
status
like
"Qcache_queries_in_cache"
;
show
status
like
"Qcache_queries_in_cache"
;
# And inserts should be four
show
status
like
"Qcache_inserts"
;
drop
table
t1
,
t2
;
drop
table
t1
,
t2
;
...
...
sql/ha_ndbcluster.cc
View file @
8b7728bd
...
@@ -6014,7 +6014,7 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused)))
...
@@ -6014,7 +6014,7 @@ pthread_handler_t ndb_util_thread_func(void *arg __attribute__((unused)))
ndb_util_thread
=
pthread_self
();
ndb_util_thread
=
pthread_self
();
thd
->
thread_stack
=
(
char
*
)
&
thd
;
/* remember where our stack is */
thd
->
thread_stack
=
(
char
*
)
&
thd
;
/* remember where our stack is */
if
(
thd
->
store_globals
()
&&
(
ndb
->
init
()
!=
-
1
))
if
(
thd
->
store_globals
()
||
(
ndb
->
init
()
!=
0
))
{
{
thd
->
cleanup
();
thd
->
cleanup
();
delete
thd
;
delete
thd
;
...
...
sql/item_sum.h
View file @
8b7728bd
...
@@ -1116,6 +1116,13 @@ public:
...
@@ -1116,6 +1116,13 @@ public:
enum
Sumfunctype
sum_func
()
const
{
return
GROUP_CONCAT_FUNC
;}
enum
Sumfunctype
sum_func
()
const
{
return
GROUP_CONCAT_FUNC
;}
const
char
*
func_name
()
const
{
return
"group_concat"
;
}
const
char
*
func_name
()
const
{
return
"group_concat"
;
}
virtual
Item_result
result_type
()
const
{
return
STRING_RESULT
;
}
virtual
Item_result
result_type
()
const
{
return
STRING_RESULT
;
}
enum_field_types
field_type
()
const
{
if
(
max_length
/
collation
.
collation
->
mbmaxlen
>
CONVERT_IF_BIGGER_TO_BLOB
)
return
FIELD_TYPE_BLOB
;
else
return
MYSQL_TYPE_VARCHAR
;
}
void
clear
();
void
clear
();
bool
add
();
bool
add
();
void
reset_field
()
{
DBUG_ASSERT
(
0
);
}
// not used
void
reset_field
()
{
DBUG_ASSERT
(
0
);
}
// not used
...
...
sql/net_serv.cc
View file @
8b7728bd
...
@@ -208,23 +208,40 @@ my_bool net_realloc(NET *net, ulong length)
...
@@ -208,23 +208,40 @@ my_bool net_realloc(NET *net, ulong length)
RETURN VALUES
RETURN VALUES
0 No data to read
0 No data to read
1 Data or EOF to read
1 Data or EOF to read
-1 Don't know if data is ready or not
*/
*/
static
my_bool
net_data_is_ready
(
my_socket
sd
)
static
int
net_data_is_ready
(
my_socket
sd
)
{
{
#ifdef HAVE_POLL
struct
pollfd
ufds
;
int
res
;
ufds
.
fd
=
sd
;
ufds
.
events
=
POLLIN
|
POLLPRI
;
if
(
!
(
res
=
poll
(
&
ufds
,
1
,
0
)))
return
0
;
if
(
res
<
0
||
!
(
ufds
.
revents
&
(
POLLIN
|
POLLPRI
)))
return
0
;
return
1
;
#else
fd_set
sfds
;
fd_set
sfds
;
struct
timeval
tv
;
struct
timeval
tv
;
int
res
;
int
res
;
if
(
sd
>=
FD_SETSIZE
)
return
-
1
;
FD_ZERO
(
&
sfds
);
FD_ZERO
(
&
sfds
);
FD_SET
(
sd
,
&
sfds
);
FD_SET
(
sd
,
&
sfds
);
tv
.
tv_sec
=
tv
.
tv_usec
=
0
;
tv
.
tv_sec
=
tv
.
tv_usec
=
0
;
if
((
res
=
select
(
sd
+
1
,
&
sfds
,
NULL
,
NULL
,
&
tv
))
<
0
)
if
((
res
=
select
(
sd
+
1
,
&
sfds
,
NULL
,
NULL
,
&
tv
))
<
0
)
return
FALSE
;
return
0
;
else
else
return
test
(
res
?
FD_ISSET
(
sd
,
&
sfds
)
:
0
);
return
test
(
res
?
FD_ISSET
(
sd
,
&
sfds
)
:
0
);
#endif
}
}
...
@@ -251,10 +268,10 @@ static my_bool net_data_is_ready(my_socket sd)
...
@@ -251,10 +268,10 @@ static my_bool net_data_is_ready(my_socket sd)
void
net_clear
(
NET
*
net
)
void
net_clear
(
NET
*
net
)
{
{
int
count
;
int
count
,
ready
;
DBUG_ENTER
(
"net_clear"
);
DBUG_ENTER
(
"net_clear"
);
#if !defined(EMBEDDED_LIBRARY)
#if !defined(EMBEDDED_LIBRARY)
while
(
net_data_is_ready
(
net
->
vio
->
sd
)
)
while
(
(
ready
=
net_data_is_ready
(
net
->
vio
->
sd
))
!=
0
)
{
{
/* The socket is ready */
/* The socket is ready */
if
((
count
=
vio_read
(
net
->
vio
,
(
char
*
)
(
net
->
buff
),
if
((
count
=
vio_read
(
net
->
vio
,
(
char
*
)
(
net
->
buff
),
...
@@ -269,6 +286,10 @@ void net_clear(NET *net)
...
@@ -269,6 +286,10 @@ void net_clear(NET *net)
}
}
else
else
{
{
/* No data to read and 'net_data_is_ready' returned "don't know" */
if
(
ready
==
-
1
)
break
;
DBUG_PRINT
(
"info"
,(
"socket ready but only EOF to read - disconnected"
));
DBUG_PRINT
(
"info"
,(
"socket ready but only EOF to read - disconnected"
));
net
->
error
=
2
;
net
->
error
=
2
;
break
;
break
;
...
...
sql/sql_acl.cc
View file @
8b7728bd
...
@@ -148,7 +148,9 @@ my_bool acl_init(bool dont_read_acl_tables)
...
@@ -148,7 +148,9 @@ my_bool acl_init(bool dont_read_acl_tables)
acl_cache
=
new
hash_filo
(
ACL_CACHE_SIZE
,
0
,
0
,
acl_cache
=
new
hash_filo
(
ACL_CACHE_SIZE
,
0
,
0
,
(
hash_get_key
)
acl_entry_get_key
,
(
hash_get_key
)
acl_entry_get_key
,
(
hash_free_key
)
free
,
system_charset_info
);
(
hash_free_key
)
free
,
/* Use the case sensitive "binary" charset */
&
my_charset_bin
);
if
(
dont_read_acl_tables
)
if
(
dont_read_acl_tables
)
{
{
DBUG_RETURN
(
0
);
/* purecov: tested */
DBUG_RETURN
(
0
);
/* purecov: tested */
...
...
tests/mysql_client_test.c
View file @
8b7728bd
...
@@ -14841,6 +14841,40 @@ static void test_bug15613()
...
@@ -14841,6 +14841,40 @@ static void test_bug15613()
}
}
/*
/*
Bug#14169: type of group_concat() result changed to blob if tmp_table was used
*/
static
void
test_bug14169
()
{
MYSQL_STMT
*
stmt
;
const
char
*
stmt_text
;
MYSQL_RES
*
res
;
MYSQL_FIELD
*
field
;
int
rc
;
myheader
(
"test_bug14169"
);
rc
=
mysql_query
(
mysql
,
"drop table if exists t1"
);
myquery
(
rc
);
rc
=
mysql_query
(
mysql
,
"set session group_concat_max_len=1024"
);
myquery
(
rc
);
rc
=
mysql_query
(
mysql
,
"create table t1 (f1 int unsigned, f2 varchar(255))"
);
myquery
(
rc
);
rc
=
mysql_query
(
mysql
,
"insert into t1 values (1,repeat('a',255)),"
"(2,repeat('b',255))"
);
myquery
(
rc
);
stmt
=
mysql_stmt_init
(
mysql
);
stmt_text
=
"select f2,group_concat(f1) from t1 group by f2"
;
rc
=
mysql_stmt_prepare
(
stmt
,
stmt_text
,
strlen
(
stmt_text
));
myquery
(
rc
);
res
=
mysql_stmt_result_metadata
(
stmt
);
field
=
mysql_fetch_fields
(
res
);
if
(
!
opt_silent
)
printf
(
"GROUP_CONCAT() result type %i"
,
field
[
1
].
type
);
DIE_UNLESS
(
field
[
1
].
type
==
MYSQL_TYPE_BLOB
);
rc
=
mysql_query
(
mysql
,
"drop table t1"
);
myquery
(
rc
);
}
/*
Read and parse arguments and MySQL options from my.cnf
Read and parse arguments and MySQL options from my.cnf
*/
*/
...
@@ -15105,6 +15139,7 @@ static struct my_tests_st my_tests[]= {
...
@@ -15105,6 +15139,7 @@ static struct my_tests_st my_tests[]= {
{
"test_bug16143"
,
test_bug16143
},
{
"test_bug16143"
,
test_bug16143
},
{
"test_bug16144"
,
test_bug16144
},
{
"test_bug16144"
,
test_bug16144
},
{
"test_bug15613"
,
test_bug15613
},
{
"test_bug15613"
,
test_bug15613
},
{
"test_bug14169"
,
test_bug14169
},
{
0
,
0
}
{
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