Loading Docs/manual.texi +7 −0 Original line number Diff line number Diff line Loading @@ -51774,6 +51774,8 @@ not yet 100% confident in this code. Allow one to start multiple MySQL servers on windows (code backported from 4.0.2). @item Fixed that @code{--core-file} works on Linux (at least on kernel 2.4.18). @item Fixed a problem with BDB and @code{ALTER TABLE}. @item Fixed reference to freed memory when doing complicated @code{GROUP BY Loading Loading @@ -51859,6 +51861,11 @@ Changed initialisation of @code{RND()} to make it less predicatable. Fixed problem with @code{GROUP BY} on result with expression that created a @code{BLOB} field. @item Fixed problem with @code{GROUP BY} on columns that have NULL values. To solve this we now create an MyISAM temporary table when doing a group by on a possible NULL item. In MySQL 4.0.5 we can again use in memory HEAP tables for this case. @item Fixed problem with privilege tables when downgrading from 4.0.2 to 3.23. @item Fixed thread bug in @code{SLAVE START}, @code{SLAVE STOP} and automatic repair dbug/dbug_add_tags.pl 0 → 100755 +73 −0 Original line number Diff line number Diff line #!/usr/bin/perl die "No files specified\n" unless $ARGV[0]; $ctags="exctags -x -f - --c-types=f -u"; sub get_tag { local $.; local $_=<TAGS>; ($symbol, $line)= /^(.*\S)\s+function\s+(\d+)/; $symbol=$1 if /\s(\S+)\s*\(/; $line=1e50 unless $line; } while($src=shift) { warn "==> $src\n"; $dst=$src.$$; open(TAGS, "$ctags $src|") || die "Cannot exec('$ctags $src'): $!"; open(SRC, "<$src") || die "Cannot open $src: $!"; open(DST, ">$dst") || die "Cannot create $dst: $!"; select DST; &get_tag; $in_func=0; while(<SRC>) { my $orig=$_; if ($in_func) { if (/\breturn\b/ && !/\/\*.*\breturn\b.*\*\// && !/;/ ) { $_.=<SRC> until /;/; } s/(?<=\s)return\s*;/DBUG_VOID_RETURN;/; s/(?<=\s)return\s*(.+)\s*;/DBUG_RETURN(\1);/s; $ret_line=$. if /DBUG_(VOID_)?RETURN/; #{{ print "$tab DBUG_VOID_RETURN;\n" if /^$tab}/ && $ret_line < $.-1; $in_func=0 if /^$tab}/; warn "$src:".($.-1)."\t$orig" if /\breturn\b/; } print; next if $. < $line; die "Something wrong: \$.=$., \$line=$line, \$symbol=$symbol\n" if $. > $line; &get_tag && next if /^\s*inline /; print $_=<SRC> until /{/; $tab=$`; &get_tag && next if /}/; # skip one-liners $semicolon=1; while(<SRC>) { $skip=!$semicolon; $semicolon= /;\s*$/; print && next if $skip || (/^\s+\w+((::\w+)?|<\w+>)\s+\**\w+/ && !/^\s*return/); last if /DBUG_ENTER/; print "$tab DBUG_ENTER(\"$symbol\");\n"; print "\n" unless $_ eq "\n"; last; } $in_func=1; &get_tag; redo; } close SRC; close DST; close TAGS; unlink("$src.orig"); rename($src, "$src.orig") || die "Cannot rename $src to $src.orig: $!"; rename($dst, $src) || die "Cannot rename $dst to $src: $!"; } warn "All done!\n"; myisam/ft_nlq_search.c +2 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,8 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio) if (doc_cnt) { word->weight*=GWS_IN_USE; if (word->weight < 0) word->weight=0; if (word->weight < 0) word->weight=0; } DBUG_RETURN(0); Loading mysql-test/r/func_time.result +1 −0 Original line number Diff line number Diff line Loading @@ -380,6 +380,7 @@ CREATE TABLE t3 (ctime1 char(19) NOT NULL, ctime2 char(19) NOT NULL); INSERT INTO t3 VALUES ("2002-10-29 16:51:06","2002-11-05 16:47:31"); select * from t1, t2 where t1.start between t2.ctime1 and t2.ctime2; start ctime1 ctime2 2002-11-04 00:00:00 20021029165106 20021105164731 select * from t1, t2 where t1.start >= t2.ctime1 and t1.start <= t2.ctime2; start ctime1 ctime2 2002-11-04 00:00:00 20021029165106 20021105164731 Loading mysql-test/r/merge.result +20 −0 Original line number Diff line number Diff line Loading @@ -541,3 +541,23 @@ select max(b) from t1 where a = 2; max(b) 1 drop table if exists t,t1,t2; drop table if exists t1, t2, t3, t4, t5, t6; create table t1 (a int not null); create table t2 (a int not null); insert into t1 values (1); insert into t2 values (2); create temporary table t3 (a int not null) TYPE=MERGE UNION=(t1,t2); select * from t3; a 1 2 create temporary table t4 (a int not null); create temporary table t5 (a int not null); insert into t4 values (1); insert into t5 values (2); create temporary table t6 (a int not null) TYPE=MERGE UNION=(t4,t5); select * from t6; a 1 2 drop table if exists t1, t2, t3, t4, t5, t6; Loading
Docs/manual.texi +7 −0 Original line number Diff line number Diff line Loading @@ -51774,6 +51774,8 @@ not yet 100% confident in this code. Allow one to start multiple MySQL servers on windows (code backported from 4.0.2). @item Fixed that @code{--core-file} works on Linux (at least on kernel 2.4.18). @item Fixed a problem with BDB and @code{ALTER TABLE}. @item Fixed reference to freed memory when doing complicated @code{GROUP BY Loading Loading @@ -51859,6 +51861,11 @@ Changed initialisation of @code{RND()} to make it less predicatable. Fixed problem with @code{GROUP BY} on result with expression that created a @code{BLOB} field. @item Fixed problem with @code{GROUP BY} on columns that have NULL values. To solve this we now create an MyISAM temporary table when doing a group by on a possible NULL item. In MySQL 4.0.5 we can again use in memory HEAP tables for this case. @item Fixed problem with privilege tables when downgrading from 4.0.2 to 3.23. @item Fixed thread bug in @code{SLAVE START}, @code{SLAVE STOP} and automatic repair
dbug/dbug_add_tags.pl 0 → 100755 +73 −0 Original line number Diff line number Diff line #!/usr/bin/perl die "No files specified\n" unless $ARGV[0]; $ctags="exctags -x -f - --c-types=f -u"; sub get_tag { local $.; local $_=<TAGS>; ($symbol, $line)= /^(.*\S)\s+function\s+(\d+)/; $symbol=$1 if /\s(\S+)\s*\(/; $line=1e50 unless $line; } while($src=shift) { warn "==> $src\n"; $dst=$src.$$; open(TAGS, "$ctags $src|") || die "Cannot exec('$ctags $src'): $!"; open(SRC, "<$src") || die "Cannot open $src: $!"; open(DST, ">$dst") || die "Cannot create $dst: $!"; select DST; &get_tag; $in_func=0; while(<SRC>) { my $orig=$_; if ($in_func) { if (/\breturn\b/ && !/\/\*.*\breturn\b.*\*\// && !/;/ ) { $_.=<SRC> until /;/; } s/(?<=\s)return\s*;/DBUG_VOID_RETURN;/; s/(?<=\s)return\s*(.+)\s*;/DBUG_RETURN(\1);/s; $ret_line=$. if /DBUG_(VOID_)?RETURN/; #{{ print "$tab DBUG_VOID_RETURN;\n" if /^$tab}/ && $ret_line < $.-1; $in_func=0 if /^$tab}/; warn "$src:".($.-1)."\t$orig" if /\breturn\b/; } print; next if $. < $line; die "Something wrong: \$.=$., \$line=$line, \$symbol=$symbol\n" if $. > $line; &get_tag && next if /^\s*inline /; print $_=<SRC> until /{/; $tab=$`; &get_tag && next if /}/; # skip one-liners $semicolon=1; while(<SRC>) { $skip=!$semicolon; $semicolon= /;\s*$/; print && next if $skip || (/^\s+\w+((::\w+)?|<\w+>)\s+\**\w+/ && !/^\s*return/); last if /DBUG_ENTER/; print "$tab DBUG_ENTER(\"$symbol\");\n"; print "\n" unless $_ eq "\n"; last; } $in_func=1; &get_tag; redo; } close SRC; close DST; close TAGS; unlink("$src.orig"); rename($src, "$src.orig") || die "Cannot rename $src to $src.orig: $!"; rename($dst, $src) || die "Cannot rename $dst to $src: $!"; } warn "All done!\n";
myisam/ft_nlq_search.c +2 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,8 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio) if (doc_cnt) { word->weight*=GWS_IN_USE; if (word->weight < 0) word->weight=0; if (word->weight < 0) word->weight=0; } DBUG_RETURN(0); Loading
mysql-test/r/func_time.result +1 −0 Original line number Diff line number Diff line Loading @@ -380,6 +380,7 @@ CREATE TABLE t3 (ctime1 char(19) NOT NULL, ctime2 char(19) NOT NULL); INSERT INTO t3 VALUES ("2002-10-29 16:51:06","2002-11-05 16:47:31"); select * from t1, t2 where t1.start between t2.ctime1 and t2.ctime2; start ctime1 ctime2 2002-11-04 00:00:00 20021029165106 20021105164731 select * from t1, t2 where t1.start >= t2.ctime1 and t1.start <= t2.ctime2; start ctime1 ctime2 2002-11-04 00:00:00 20021029165106 20021105164731 Loading
mysql-test/r/merge.result +20 −0 Original line number Diff line number Diff line Loading @@ -541,3 +541,23 @@ select max(b) from t1 where a = 2; max(b) 1 drop table if exists t,t1,t2; drop table if exists t1, t2, t3, t4, t5, t6; create table t1 (a int not null); create table t2 (a int not null); insert into t1 values (1); insert into t2 values (2); create temporary table t3 (a int not null) TYPE=MERGE UNION=(t1,t2); select * from t3; a 1 2 create temporary table t4 (a int not null); create temporary table t5 (a int not null); insert into t4 values (1); insert into t5 values (2); create temporary table t6 (a int not null) TYPE=MERGE UNION=(t4,t5); select * from t6; a 1 2 drop table if exists t1, t2, t3, t4, t5, t6;