mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fixed mysqldumpslow for new dump format.
Fix for HEAP tables with many rows deleted. Add '' arround database names in SHOW GRANT
This commit is contained in:
@ -6252,7 +6252,7 @@ shell> groupadd mysql
|
|||||||
shell> useradd -g mysql mysql
|
shell> useradd -g mysql mysql
|
||||||
shell> cd /usr/local
|
shell> cd /usr/local
|
||||||
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
|
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
|
||||||
shell> ln -s mysql-VERSION-OS mysql
|
shell> ln -s full-path-to-mysql-VERSION-OS mysql
|
||||||
shell> cd mysql
|
shell> cd mysql
|
||||||
shell> scripts/mysql_install_db
|
shell> scripts/mysql_install_db
|
||||||
shell> chown -R root .
|
shell> chown -R root .
|
||||||
@ -6327,7 +6327,7 @@ Unpack the distribution and create the installation directory:
|
|||||||
|
|
||||||
@example
|
@example
|
||||||
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
|
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
|
||||||
shell> ln -s mysql-VERSION-OS mysql
|
shell> ln -s full-path-to-mysql-VERSION-OS mysql
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
The first command creates a directory named @file{mysql-VERSION-OS}. The
|
The first command creates a directory named @file{mysql-VERSION-OS}. The
|
||||||
@ -48703,6 +48703,8 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
|
|||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
|
Fixed wrong error value when doing a @code{SELECT} with an empty HEAP table.
|
||||||
|
@item
|
||||||
Use @code{ORDER BY column DESC} now sorts @code{NULL} values first.
|
Use @code{ORDER BY column DESC} now sorts @code{NULL} values first.
|
||||||
@item
|
@item
|
||||||
Fixed bug in @code{SELECT DISTINCT ... ORDER BY DESC} optimization.
|
Fixed bug in @code{SELECT DISTINCT ... ORDER BY DESC} optimization.
|
||||||
|
@ -21,11 +21,6 @@
|
|||||||
int heap_rfirst(HP_INFO *info, byte *record)
|
int heap_rfirst(HP_INFO *info, byte *record)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("heap_rfirst");
|
DBUG_ENTER("heap_rfirst");
|
||||||
if (!(info->s->records))
|
|
||||||
{
|
|
||||||
my_errno=HA_ERR_END_OF_FILE;
|
|
||||||
DBUG_RETURN(my_errno);
|
|
||||||
}
|
|
||||||
info->current_record=0;
|
info->current_record=0;
|
||||||
info->current_hash_ptr=0;
|
info->current_hash_ptr=0;
|
||||||
info->update=HA_STATE_PREV_FOUND;
|
info->update=HA_STATE_PREV_FOUND;
|
||||||
|
@ -197,3 +197,9 @@ a b
|
|||||||
INSERT INTO t1 VALUES (1,3);
|
INSERT INTO t1 VALUES (1,3);
|
||||||
Duplicate entry '3' for key 1
|
Duplicate entry '3' for key 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a int not null, primary key(a)) type=heap;
|
||||||
|
INSERT into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11);
|
||||||
|
DELETE from t1 where a < 100;
|
||||||
|
SELECT * from t1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -128,3 +128,13 @@ SELECT * FROM t1 WHERE b<=>NULL;
|
|||||||
--error 1062
|
--error 1062
|
||||||
INSERT INTO t1 VALUES (1,3);
|
INSERT INTO t1 VALUES (1,3);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test when deleting all rows
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int not null, primary key(a)) type=heap;
|
||||||
|
INSERT into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11);
|
||||||
|
DELETE from t1 where a < 100;
|
||||||
|
SELECT * from t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -36,8 +36,7 @@ my_string my_load_path(my_string to, const char *path,
|
|||||||
test_if_hard_path(path))
|
test_if_hard_path(path))
|
||||||
VOID(strmov(buff,path));
|
VOID(strmov(buff,path));
|
||||||
else if ((path[0] == FN_CURLIB && path[1] == FN_LIBCHAR) ||
|
else if ((path[0] == FN_CURLIB && path[1] == FN_LIBCHAR) ||
|
||||||
(is_prefix((gptr) path,FN_PARENTDIR) &&
|
(is_prefix((gptr) path,FN_PARENTDIR)) ||
|
||||||
path[strlen(FN_PARENTDIR)] == FN_LIBCHAR) ||
|
|
||||||
! own_path_prefix)
|
! own_path_prefix)
|
||||||
{
|
{
|
||||||
if (! my_getwd(buff,(uint) (FN_REFLEN-strlen(path)),MYF(0)))
|
if (! my_getwd(buff,(uint) (FN_REFLEN-strlen(path)),MYF(0)))
|
||||||
|
@ -75,7 +75,7 @@ while ( defined($_ = shift @pending) or defined($_ = <>) ) {
|
|||||||
s/^#? Time: \d{6}\s+\d+:\d+:\d+.*\n//;
|
s/^#? Time: \d{6}\s+\d+:\d+:\d+.*\n//;
|
||||||
my ($user,$host) = s/^#? User\@Host:\s+(\S+)\s+\@\s+(\S+).*\n// ? ($1,$2) : ('','');
|
my ($user,$host) = s/^#? User\@Host:\s+(\S+)\s+\@\s+(\S+).*\n// ? ($1,$2) : ('','');
|
||||||
|
|
||||||
s/^# Time: (\d+) Lock_time: (\d+) Rows_sent: (\d+).*\n//;
|
s/^# Query_time: (\d+) Lock_time: (\d+) Rows_sent: (\d+).*\n//;
|
||||||
my ($t, $l, $r) = ($1, $2, $3);
|
my ($t, $l, $r) = ($1, $2, $3);
|
||||||
$t -= $l unless $opt{l};
|
$t -= $l unless $opt{l};
|
||||||
|
|
||||||
@ -96,8 +96,12 @@ while ( defined($_ = shift @pending) or defined($_ = <>) ) {
|
|||||||
unless ($opt{a}) {
|
unless ($opt{a}) {
|
||||||
s/\b\d+\b/N/g;
|
s/\b\d+\b/N/g;
|
||||||
s/\b0x[0-9A-Fa-f]+\b/N/g;
|
s/\b0x[0-9A-Fa-f]+\b/N/g;
|
||||||
s/'([^\\\']|\\.|\'\')+'/'S'/g;
|
s/''/'S'/g;
|
||||||
s/"([^\\\"]|\\.|\"\")+"/"S"/g;
|
s/""/"S"/g;
|
||||||
|
s/(\\')//g;
|
||||||
|
s/(\\")//g;
|
||||||
|
s/'[^']+'/'S'/g;
|
||||||
|
s/"[^"]+"/"S"/g;
|
||||||
# -n=8: turn log_20001231 into log_NNNNNNNN
|
# -n=8: turn log_20001231 into log_NNNNNNNN
|
||||||
s/([a-z_]+)(\d{$opt{n},})/$1.('N' x length($2))/ieg if $opt{n};
|
s/([a-z_]+)(\d{$opt{n},})/$1.('N' x length($2))/ieg if $opt{n};
|
||||||
# abbreviate massive "in (...)" statements and similar
|
# abbreviate massive "in (...)" statements and similar
|
||||||
|
@ -542,7 +542,8 @@ int handler::read_first_row(byte * buf, uint primary_key)
|
|||||||
If there is very few deleted rows in the table, find the first row by
|
If there is very few deleted rows in the table, find the first row by
|
||||||
scanning the table.
|
scanning the table.
|
||||||
*/
|
*/
|
||||||
if (deleted < 10 || primary_key >= MAX_KEY)
|
if (deleted < 10 || primary_key >= MAX_KEY ||
|
||||||
|
!(option_flag() & HA_READ_ORDER))
|
||||||
{
|
{
|
||||||
(void) rnd_init();
|
(void) rnd_init();
|
||||||
while ((error= rnd_next(buf)) == HA_ERR_RECORD_DELETED) ;
|
while ((error= rnd_next(buf)) == HA_ERR_RECORD_DELETED) ;
|
||||||
|
@ -2743,9 +2743,9 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
db.append (" ON ",4);
|
db.append (" ON '",5);
|
||||||
db.append(acl_db->db);
|
db.append(acl_db->db);
|
||||||
db.append (".* TO '",7);
|
db.append ("'.* TO '",8);
|
||||||
db.append(lex_user->user.str,lex_user->user.length);
|
db.append(lex_user->user.str,lex_user->user.length);
|
||||||
db.append ("'@'",3);
|
db.append ("'@'",3);
|
||||||
db.append(lex_user->host.str, lex_user->host.length);
|
db.append(lex_user->host.str, lex_user->host.length);
|
||||||
|
Reference in New Issue
Block a user