Commit 453299b1 authored by Sinisa@sinisa.nasamreza.org's avatar Sinisa@sinisa.nasamreza.org

Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.0

into sinisa.nasamreza.org:/mnt/work/mysql-4.0
parents 0e38e9fc 26f46fd3
...@@ -30,6 +30,7 @@ chomp ($LOGFILE= `pwd`); ...@@ -30,6 +30,7 @@ chomp ($LOGFILE= `pwd`);
$LOGFILE.= "/Bootstrap.log"; $LOGFILE.= "/Bootstrap.log";
chomp ($opt_directory= `pwd`); chomp ($opt_directory= `pwd`);
$opt_docdir= $opt_directory . "/mysqldoc"; $opt_docdir= $opt_directory . "/mysqldoc";
$opt_build_command= undef;
$opt_changelog= undef; $opt_changelog= undef;
$opt_delete= undef; $opt_delete= undef;
$opt_dry_run= undef; $opt_dry_run= undef;
...@@ -44,6 +45,7 @@ $opt_skip_manual= undef; ...@@ -44,6 +45,7 @@ $opt_skip_manual= undef;
$version= "unknown"; $version= "unknown";
GetOptions( GetOptions(
"build-command|b=s",
"changelog|c:s", "changelog|c:s",
"directory|d=s", "directory|d=s",
"delete", "delete",
...@@ -54,7 +56,6 @@ GetOptions( ...@@ -54,7 +56,6 @@ GetOptions(
"log|l:s", "log|l:s",
"mail|m=s", "mail|m=s",
"revision|r=s", "revision|r=s",
"revision|r=s",
"skip-check|s", "skip-check|s",
"skip-manual", "skip-manual",
"suffix=s", "suffix=s",
...@@ -81,6 +82,14 @@ if (defined $opt_log) ...@@ -81,6 +82,14 @@ if (defined $opt_log)
} }
} }
#
# Override predefined build command
#
if (defined $opt_build_command)
{
$build_command= $opt_build_command;
}
print_help("") if ($opt_help); print_help("") if ($opt_help);
defined($REPO=$ARGV[0]) || print_help("Please enter the BK repository to be used!"); defined($REPO=$ARGV[0]) || print_help("Please enter the BK repository to be used!");
...@@ -329,6 +338,9 @@ archive is being created. ...@@ -329,6 +338,9 @@ archive is being created.
Options: Options:
-b, --build-command=<cmd> Use <cmd> to compile the sources before packing
the distribution.
(default is "$build_command")
-c, --changelog[=<rev>] Add a ChangeLog [down to revision <rev>] -c, --changelog[=<rev>] Add a ChangeLog [down to revision <rev>]
This will automatically be included in the source This will automatically be included in the source
distribution. To get a ChangeLog down to the last distribution. To get a ChangeLog down to the last
...@@ -338,7 +350,8 @@ Options: ...@@ -338,7 +350,8 @@ Options:
in the target directory instead of renaming it. in the target directory instead of renaming it.
-d, --directory=<dir> Specify the target directory -d, --directory=<dir> Specify the target directory
(default is "$opt_directory") (default is "$opt_directory")
--docdir=<dir> Use the MySQL documentation BK tree located in in <dir> --docdir=<dir> Use the MySQL documentation BK tree located
in <dir>
(default is "$opt_docdir") (default is "$opt_docdir")
--dry-run Dry run without executing --dry-run Dry run without executing
-e, --export-only Just export (and add the ChangeLog, if requested), -e, --export-only Just export (and add the ChangeLog, if requested),
...@@ -354,9 +367,10 @@ Options: ...@@ -354,9 +367,10 @@ Options:
(default is up to the latest revision) (default is up to the latest revision)
-s, --skip-check Skip checking the distribution with "make distcheck" -s, --skip-check Skip checking the distribution with "make distcheck"
--skip-manual Skip updating the manual from the mysqldoc tree --skip-manual Skip updating the manual from the mysqldoc tree
--suffix=<suffix> Append <suffix> to the version number in configure.in. --suffix=<suffix> Append <suffix> to the version number in
Using the special suffix "YMD" will add the current configure.in. Using the special suffix "YMD" will
date as the suffix (e.g. "-20020518"). add the current date as the suffix
(e.g. "-20020518").
-t, --test Run the test suite after build -t, --test Run the test suite after build
-v, --verbose Be verbose -v, --verbose Be verbose
......
...@@ -2210,6 +2210,40 @@ if ($limits{'foreign_key'} eq 'yes') ...@@ -2210,6 +2210,40 @@ if ($limits{'foreign_key'} eq 'yes')
} }
} }
if ($limits{'func_sql_character_length'} eq 'yes')
{
my $result = 'error';
my ($resultset);
my $key = 'length_of_varchar_field';
my $prompt='CHARACTER_LENGTH(varchar_field)';
print $prompt," = ";
if (!defined($limits{$key})) {
save_incomplete($key,$prompt);
safe_query_l($key,[
"CREATE TABLE crash_me1 (S1 VARCHAR(100))",
"INSERT INTO crash_me1 VALUES ('X')"
]);
my $recset = get_recordset($key,
"SELECT CHARACTER_LENGTH(S1) FROM crash_me1");
print_recordset($key,$recset);
if (defined($recset)){
if ( $recset->[0][0] eq 1 ) {
$result = 'actual length';
} elsif( $recset->[0][0] eq 100 ) {
$result = 'defined length';
};
} else {
add_log($key,$DBI::errstr);
}
safe_query_l($key, "drop table crash_me1 $drop_attr");
save_config_data($key,$result,$prompt);
} else {
$result = $limits{$key};
};
print "$result\n";
}
check_constraint("Column constraints","constraint_check", check_constraint("Column constraints","constraint_check",
"create table crash_q (a int check (a>0))", "create table crash_q (a int check (a>0))",
"insert into crash_q values(0)", "insert into crash_q values(0)",
...@@ -2873,6 +2907,81 @@ sub make_date { ...@@ -2873,6 +2907,81 @@ sub make_date {
} }
sub print_recordset{
my ($key,$recset) = @_;
my $rec;
foreach $rec (@$recset)
{
add_log($key, " > ".join(',', map(repr($_), @$rec)));
}
}
#
# read result recordset from sql server.
# returns arrayref to (arrayref to) values
# or undef (in case of sql errors)
#
sub get_recordset{
my ($key,$query) = @_;
add_log($key, "< $query");
return $dbh->selectall_arrayref($query);
}
# function for comparing recordset (that was returned by get_recordset)
# and arrayref of (arrayref of) values.
#
# returns : zero if recordset equal that array, 1 if it doesn't equal
#
# parameters:
# $key - current operation (for logging)
# $recset - recordset
# $mustbe - array of values that we expect
#
# example: $a=get_recordset('some_parameter','select a,b from c');
# if (compare_recordset('some_parameter',$a,[[1,1],[1,2],[1,3]]) neq 0)
# {
# print "unexpected result\n";
# } ;
#
sub compare_recordset {
my ($key,$recset,$mustbe) = @_;
my $rec,$recno,$fld,$fldno,$fcount;
add_log($key,"\n Check recordset:");
$recno=0;
foreach $rec (@$recset)
{
add_log($key," " . join(',', map(repr($_),@$rec)) . " expected: " .
join(',', map(repr($_), @{$mustbe->[$recno]} ) ));
$fcount = @$rec;
$fcount--;
foreach $fldno (0 .. $fcount )
{
if ($mustbe->[$recno][$fldno] ne $rec->[$fldno])
{
add_log($key," Recordset doesn't correspond with template");
return 1;
};
}
$recno++;
}
add_log($key," Recordset corresponds with template");
return 0;
}
#
# converts inner perl value to printable representation
# for example: undef maps to 'NULL',
# string -> 'string'
# int -> int
#
sub repr {
my $s = shift;
return "'$s'"if ($s =~ /\D/);
return 'NULL'if ( not defined($s));
return $s;
}
sub version sub version
{ {
print "$0 Ver $version\n"; print "$0 Ver $version\n";
......
...@@ -2061,6 +2061,16 @@ mysql_execute_command(void) ...@@ -2061,6 +2061,16 @@ mysql_execute_command(void)
{ {
if (check_table_access(thd,DROP_ACL,tables)) if (check_table_access(thd,DROP_ACL,tables))
goto error; /* purecov: inspected */ goto error; /* purecov: inspected */
/*
If this is a slave thread, we may sometimes execute some
DROP / * 40005 TEMPORARY * / TABLE
that come from parts of binlogs (likely if we use RESET SLAVE or CHANGE
MASTER TO), while the temporary table has already been dropped.
To not generate such irrelevant "table does not exist errors", we silently
add IF EXISTS if TEMPORARY was used.
*/
if (thd->slave_thread && lex->drop_temporary)
lex->drop_if_exists= 1;
if (end_active_trans(thd)) if (end_active_trans(thd))
res= -1; res= -1;
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment