summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BitKeeper/etc/logging_ok1
-rwxr-xr-xBuild-tools/Do-compile7
-rwxr-xr-xBuild-tools/mysql-copyright70
-rwxr-xr-xBuild-tools/mysql-copyright-22
-rw-r--r--client/mysqltest.c2
-rw-r--r--mysql-test/r/rpl_free_items.result10
-rw-r--r--mysql-test/r/type_date.result6
-rw-r--r--mysql-test/r/type_decimal.result7
-rw-r--r--mysql-test/t/rpl_free_items-slave.opt1
-rw-r--r--mysql-test/t/rpl_free_items.test20
-rw-r--r--mysql-test/t/type_date.test8
-rw-r--r--mysql-test/t/type_decimal.test3
-rw-r--r--scripts/mysql_install_db.sh9
-rw-r--r--scripts/mysqld_safe.sh8
-rw-r--r--sql/field.cc18
-rw-r--r--sql/field.h1
-rw-r--r--sql/item_cmpfunc.h1
-rw-r--r--sql/mysqld.cc2
-rw-r--r--sql/sql_acl.cc4
-rw-r--r--sql/sql_parse.cc12
-rw-r--r--support-files/mysql.spec.sh2
21 files changed, 153 insertions, 41 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index 8cae6142683..708b6f1e3fb 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -90,6 +90,7 @@ mwagner@work.mysql.com
mysqldev@build.mysql2.com
nick@mysql.com
nick@nick.leippe.com
+patg@krsna.patg.net
paul@central.snake.net
paul@ice.local
paul@ice.snake.net
diff --git a/Build-tools/Do-compile b/Build-tools/Do-compile
index f968b06757f..d79fd1f0b65 100755
--- a/Build-tools/Do-compile
+++ b/Build-tools/Do-compile
@@ -11,7 +11,7 @@ $opt_distribution=$opt_user=$opt_config_env=$opt_config_extra_env="";
$opt_dbd_options=$opt_perl_options=$opt_config_options=$opt_make_options=$opt_suffix="";
$opt_tmp=$opt_version_suffix="";
$opt_help=$opt_delete=$opt_debug=$opt_stage=$opt_no_test=$opt_no_perl=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=$opt_with_debug=$opt_no_benchmark=$opt_no_mysqltest=$opt_without_embedded=0;
-$opt_innodb=$opt_bdb=$opt_raid=$opt_libwrap=0;
+$opt_innodb=$opt_bdb=$opt_raid=$opt_libwrap=$opt_clearlogs=$opt_without_ndbcluster=0;
GetOptions(
"bdb",
@@ -55,6 +55,8 @@ GetOptions(
"with-other-libc=s",
"with-small-disk",
"without-embedded",
+ "clearlogs",
+ "without-ndbcluster",
) || usage();
usage() if ($opt_help);
@@ -148,7 +150,7 @@ $slave_port=$mysql_tcp_port+16;
$manager_port=$mysql_tcp_port+1;
$mysqladmin_args="--no-defaults -u root --connect_timeout=5 --shutdown_timeout=20";
-if ($opt_stage == 0)
+if ($opt_stage == 0 || $opt_clearlogs)
{
system("mkdir Logs") if (! -d "Logs");
system("mv $log ${log}-old") if (-f $log);
@@ -247,6 +249,7 @@ if ($opt_stage <= 1)
$opt_config_options.= " --with-mysqld-ldflags=-all-static" if ($opt_static_server);
$opt_config_options.= " --with-raid" if ($opt_raid);
$opt_config_options.= " --with-embedded-server" unless ($opt_without_embedded);
+ $opt_config_options.= " --without-ndbcluster" if ($opt_without_ndbcluster);
# Only enable InnoDB when requested (required to be able to
# build the "Classic" packages that do not include InnoDB)
diff --git a/Build-tools/mysql-copyright b/Build-tools/mysql-copyright
index 70b65d3f2cf..dbe494b8aab 100755
--- a/Build-tools/mysql-copyright
+++ b/Build-tools/mysql-copyright
@@ -3,8 +3,11 @@
# Untar a MySQL distribution, change the copyright texts,
# pack it up again to a given directory
-$VER="1.2";
+$VER="1.3";
+use Cwd;
+use File::Basename;
+use File::Copy;
use Getopt::Long;
$opt_help = 0;
@@ -17,8 +20,8 @@ GetOptions("help","version","target=s") || error();
# fix the directory prefix for target dir
-$WD= `pwd`;
-chop $WD;
+$WD= cwd();
+my $win_flag = 0;
$opt_target= $WD . '/' . $opt_target;
&main();
@@ -48,6 +51,7 @@ sub main
for ($i=0; $ARGV[$i]; $i++)
{
my $distfile= $ARGV[$i];
+ $win_flag = ($distfile =~ /win-src/) ? 1 : 0;
my $dir;
$dir= "mysql-copyright-";
@@ -64,20 +68,24 @@ sub main
}
# if the distfile is mysql-3.22.22-alpha.tar.gz, then
# distname is 'mysql-3.22.22-alpha' and suffix '.tar.gz'
- if ($distfile =~ m/^($REG_BASENAME)([\-\_])
- ($REG_VERSION){1}([\.\-\+])
- (.*)?$/xo)
+ print "distfile $distfile\n";
+ if ($distfile =~
+ m/^($REG_BASENAME)([\-\_])($REG_VERSION){1}([\.\-\+]\w+\-\w+)?[\.\-\+](.*)?$/xo)
{
$distname= $1.$2.$3;
- $suffix= $5.$6;
+ print "distname $distname\n";
+ $suffix= $5;
+ $fileext = $6;
+ print "suffix $suffix fileext $fileext\n";
$newdistname= $1."com".$2.$3;
+ $newdistname .= $suffix if $win_flag;
}
# find out the extract path (should be same as distname!)
- $destdir= `tar tvzf ../$distfile | head -1`;
- # remove leading crab
- $destdir =~ s/.*\d+:\d+:\d+[ ]//;
- # remove newline and slash from the end
- $destdir= substr($destdir, 0, -2);
+ chomp($destdir= `tar ztf ../$distfile | head -1`);
+ # remove slash from the end
+ $destdir= substr($destdir, 0, -1);
+ print "destdir: $destdir\n";
+ print "distname: $distname\n";
if ("$destdir" ne "$distname")
{
@@ -96,24 +104,44 @@ sub main
# remove the 'PUBLIC' file from distribution and copy MySQLEULA.txt
# on the toplevel of the directory instead. file 'PUBLIC' shouldn't
# exist in the new mysql distributions, but let's be sure..
- `rm -f $destdir/PUBLIC $destdir/README`;
- `cp -p $WD/Docs/MySQLEULA.txt $destdir/`;
+ unlink("$destdir/PUBLIC", "$destdir/README");
+ copy("$WD/Docs/MySQLEULA.txt", "$destdir");
+ # remove readline subdir and update configure accordingly
+ system("rm -rf $destdir/cmd-line-utils/readline");
+ if ($win_flag) {
+ #`(cd $destdir)`;
+ 'cd $destdir';
+ } else {
+ unlink ("$destdir/configure") or die "Can't delete $destdir/configure: $!\n";
+ `(cd $destdir ; sed -e 's!\ cmd-line-utils\/readline\/Makefile\ dnl!!g' < configure.in > configure.in.new)`;
+ rename ("$destdir/configure.in.new","$destdir/configure.in") or die "Can't rename $destdir/configure.in.new: $!\n";;
+ `(cd $destdir ; autoconf)`;
+ }
+
# fix file copyrights
&fix_usage_copyright();
&add_copyright();
+ #chdir("..");
+ my $cwd = `pwd`;
+ print "current dir is $cwd\n" ;
# rename the directory with new distribution name
- `mv -f $destdir $newdistname`;
+ print "renaming $destdir $newdistname\n";
+ rename($destdir, $newdistname);
# tar the new distribution
- `tar cz -f $opt_target/$newdistname.tar.gz *`;
+ `tar cz -f $WD/$newdistname.tar.gz $newdistname`;
$pec= $? >> 8;
abort($dir, "Making new tar archive failed!\n") if ($pec);
# remove temporary directory
- chdir "..";
- `rm -rf $dir/`;
+ chdir($WD) or print "$! Unable to move up one dir\n";
+ print "deleting temp dir $dir\n";
+ if (-d "$WD/$dir") {
+ system("rm -rf $WD/$dir") or print "$! Unable to delete $WD/$dir!\n";
+ }
+
}
exit(0);
}
@@ -129,7 +157,7 @@ sub fix_usage_copyright
foreach my $Cfile (@Cfiles)
{
chop $Cfile;
- `replace "This is free software," "This is commercial software," "and you are welcome to modify and redistribute it under the GPL license" "please see the file MySQLEULA.txt for details" -- $Cfile`;
+ `replace "This is free software," "This is commercial software," "and you are welcome to modify and redistribute it under the GPL license" "please see the file MySQLEULA.txt for details" -- "$Cfile"`;
}
}
@@ -143,7 +171,9 @@ sub add_copyright
foreach my $file (@files)
{
chop $file;
- `$WD/Build-tools/mysql-copyright-2 $file`;
+ next if ! -f $file;
+ next if -B $file;
+ `$WD/Build-tools/mysql-copyright-2 "$file"`;
}
}
diff --git a/Build-tools/mysql-copyright-2 b/Build-tools/mysql-copyright-2
index 447a2d7c164..e946ed217d1 100755
--- a/Build-tools/mysql-copyright-2
+++ b/Build-tools/mysql-copyright-2
@@ -93,7 +93,7 @@ sub add_copyright
{
$start_copyright="/* ";
$line_copyright= " ";
- $end_copyright= " */";
+ $end_copyright= "*/";
}
elsif ($ARGV =~ /-x86\.s$/)
{
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 22ce5208445..68b9dd505b2 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -59,7 +59,7 @@
#include <sys/stat.h>
#include <violite.h>
-#define MAX_QUERY 65536
+#define MAX_QUERY 131072
#define MAX_COLUMNS 256
#define PAD_SIZE 128
#define MAX_CONS 128
diff --git a/mysql-test/r/rpl_free_items.result b/mysql-test/r/rpl_free_items.result
new file mode 100644
index 00000000000..743fbbc8fc7
--- /dev/null
+++ b/mysql-test/r/rpl_free_items.result
@@ -0,0 +1,10 @@
+slave stop;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+slave start;
+create table t1 (a int);
+create table t2 (a int);
+drop table t1;
+drop table t2;
diff --git a/mysql-test/r/type_date.result b/mysql-test/r/type_date.result
index 8dfe14bc1a2..3b08f7dcbf2 100644
--- a/mysql-test/r/type_date.result
+++ b/mysql-test/r/type_date.result
@@ -73,3 +73,9 @@ SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.
DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT))
Wed, 06 March 2002 10:11:12 GMT-0800 Wed, 06 March 2002 10:11:12 GMT-0800
drop table t1,t2;
+CREATE TABLE t1 (f1 time default NULL, f2 time default NULL) TYPE=MyISAM;
+INSERT INTO t1 (f1, f2) VALUES ('09:00', '12:00');
+SELECT DATE_FORMAT(f1, "%l.%i %p") , DATE_FORMAT(f2, "%l.%i %p") FROM t1;
+DATE_FORMAT(f1, "%l.%i %p") DATE_FORMAT(f2, "%l.%i %p")
+9.00 AM 12.00 PM
+DROP TABLE t1;
diff --git a/mysql-test/r/type_decimal.result b/mysql-test/r/type_decimal.result
index 5268ff3696b..600d8639ad5 100644
--- a/mysql-test/r/type_decimal.result
+++ b/mysql-test/r/type_decimal.result
@@ -363,6 +363,13 @@ CREATE TABLE t1 (a_dec DECIMAL(-2,1));
Too big column length for column 'a_dec' (max = 255). Use BLOB instead
CREATE TABLE t1 (a_dec DECIMAL(-1,1));
Too big column length for column 'a_dec' (max = 255). Use BLOB instead
+CREATE TABLE t1 (a_dec DECIMAL(0,11));
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a_dec` decimal(12,11) default NULL
+) TYPE=MyISAM
+DROP TABLE t1;
create table t1(a decimal(7,3));
insert into t1 values ('1'),('+1'),('-1'),('0000000001'),('+0000000001'),('-0000000001'),('10'),('+10'),('-10'),('0000000010'),('+0000000010'),('-0000000010'),('100'),('+100'),('-100'),('0000000100'),('+0000000100'),('-0000000100'),('1000'),('+1000'),('-1000'),('0000001000'),('+0000001000'),('-0000001000'),('10000'),('+10000'),('-10000'),('0000010000'),('+0000010000'),('-0000010000'),('100000'),('+100000'),('-100000'),('0000100000'),('+0000100000'),('-0000100000'),('1000000'),('+1000000'),('-1000000'),('0001000000'),('+0001000000'),('-0001000000'),('10000000'),('+10000000'),('-10000000'),('0010000000'),('+0010000000'),('-0010000000'),('100000000'),('+100000000'),('-100000000'),('0100000000'),('+0100000000'),('-0100000000'),('1000000000'),('+1000000000'),('-1000000000'),('1000000000'),('+1000000000'),('-1000000000');
select * from t1;
diff --git a/mysql-test/t/rpl_free_items-slave.opt b/mysql-test/t/rpl_free_items-slave.opt
new file mode 100644
index 00000000000..b828d03fafb
--- /dev/null
+++ b/mysql-test/t/rpl_free_items-slave.opt
@@ -0,0 +1 @@
+--replicate-wild-ignore-table=test.%
diff --git a/mysql-test/t/rpl_free_items.test b/mysql-test/t/rpl_free_items.test
new file mode 100644
index 00000000000..3228ffd9cde
--- /dev/null
+++ b/mysql-test/t/rpl_free_items.test
@@ -0,0 +1,20 @@
+source include/master-slave.inc;
+create table t1 (a int);
+create table t2 (a int);
+disable_query_log;
+SET @query="INSERT INTO t2 SELECT * FROM t1 WHERE a REGEXP \"0\"";
+let $1 = 2000;
+while ($1)
+{
+ eval SET @query=concat(@query, " OR a REGEXP '$1'");
+ dec $1;
+}
+let $1=`select @query`;
+eval $1;
+enable_query_log;
+# I have seen the slave crash either now or at shutdown
+sync_slave_with_master;
+connection master;
+drop table t1;
+drop table t2;
+sync_slave_with_master;
diff --git a/mysql-test/t/type_date.test b/mysql-test/t/type_date.test
index bd6d8c49c22..fe706e9bf57 100644
--- a/mysql-test/t/type_date.test
+++ b/mysql-test/t/type_date.test
@@ -76,3 +76,11 @@ SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.
INSERT INTO t1 VALUES(1);
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)), DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) FROM t1,t2 GROUP BY t1.AFIELD;
drop table t1,t2;
+
+#
+# Bug 4036
+#
+CREATE TABLE t1 (f1 time default NULL, f2 time default NULL) TYPE=MyISAM;
+INSERT INTO t1 (f1, f2) VALUES ('09:00', '12:00');
+SELECT DATE_FORMAT(f1, "%l.%i %p") , DATE_FORMAT(f2, "%l.%i %p") FROM t1;
+DROP TABLE t1;
diff --git a/mysql-test/t/type_decimal.test b/mysql-test/t/type_decimal.test
index 82e53e7bde6..72482731147 100644
--- a/mysql-test/t/type_decimal.test
+++ b/mysql-test/t/type_decimal.test
@@ -240,6 +240,9 @@ CREATE TABLE t1 (a_dec DECIMAL(-1,0));
CREATE TABLE t1 (a_dec DECIMAL(-2,1));
--error 1074
CREATE TABLE t1 (a_dec DECIMAL(-1,1));
+CREATE TABLE t1 (a_dec DECIMAL(0,11));
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
#
# Zero prepend overflow bug
diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh
index c03049c6a91..600a87328cb 100644
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
@@ -37,7 +37,11 @@ parse_arguments() {
--force) force=1 ;;
--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--ldata=*|--datadir=*) ldata=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
- --user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --user=*)
+ # Note that the user will be passed to mysqld so that it runs
+ # as 'user' (crucial e.g. if log-bin=/some_other_path/
+ # where a chown of datadir won't help)
+ user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--skip-name-resolve) ip_only=1 ;;
--verbose) verbose=1 ;;
--rpm) in_rpm=1 ;;
@@ -332,7 +336,8 @@ fi
echo "Installing all prepared tables"
if eval "$mysqld $defaults $mysqld_opt --bootstrap --skip-grant-tables \
- --basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb $args" << END_OF_DATA
+ --basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb \
+ --user=$user $args" << END_OF_DATA
use mysql;
$c_d
$i_d
diff --git a/scripts/mysqld_safe.sh b/scripts/mysqld_safe.sh
index 779438e75c3..7b77bf449cd 100644
--- a/scripts/mysqld_safe.sh
+++ b/scripts/mysqld_safe.sh
@@ -43,13 +43,7 @@ parse_arguments() {
--basedir=*) MY_BASEDIR_VERSION=`echo "$arg" | sed -e "s;--basedir=;;"` ;;
--datadir=*) DATADIR=`echo "$arg" | sed -e "s;--datadir=;;"` ;;
--pid-file=*) pid_file=`echo "$arg" | sed -e "s;--pid-file=;;"` ;;
- --user=*)
- if test $SET_USER -eq 0
- then
- user=`echo "$arg" | sed -e "s;--[^=]*=;;"`
- fi
- SET_USER=1
- ;;
+ --user=*) user=`echo "$arg" | sed -e "s;--[^=]*=;;"` ; SET_USER=1 ;;
# these two might have been set in a [mysqld_safe] section of my.cnf
# they are added to mysqld command line to override settings from my.cnf
diff --git a/sql/field.cc b/sql/field.cc
index 4e9718ca458..7273c9036c4 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -2960,6 +2960,24 @@ String *Field_time::val_str(String *val_buffer,
return val_buffer;
}
+bool Field_time::get_date(TIME *ltime,
+ bool fuzzydate __attribute__((unused)))
+{
+ long tmp=(long) sint3korr(ptr);
+ ltime->neg=0;
+ if (tmp < 0)
+ {
+ ltime->neg= 1;
+ tmp=-tmp;
+ }
+ ltime->hour=tmp/10000;
+ tmp-=ltime->hour*10000;
+ ltime->minute= tmp/100;
+ ltime->second= tmp % 100;
+ ltime->year= ltime->month= ltime->day= ltime->second_part= 0;
+ return 0;
+}
+
bool Field_time::get_time(TIME *ltime)
{
long tmp=(long) sint3korr(ptr);
diff --git a/sql/field.h b/sql/field.h
index 6f049e3809e..5a1ab163266 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -690,6 +690,7 @@ public:
double val_real(void);
longlong val_int(void);
String *val_str(String*,String *);
+ bool get_date(TIME *ltime,bool fuzzydate);
bool get_time(TIME *ltime);
int cmp(const char *,const char*);
void sort_string(char *buff,uint length);
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index 9f19e7575d5..a0bcd864d4b 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -583,7 +583,6 @@ public:
Item_cond() : Item_bool_func(), abort_on_null(1) { const_item_cache=0; }
Item_cond(Item *i1,Item *i2) :Item_bool_func(), abort_on_null(0)
{ list.push_back(i1); list.push_back(i2); }
- ~Item_cond() { list.delete_elements(); }
bool add(Item *item) { return list.push_back(item); }
bool fix_fields(THD *,struct st_table_list *);
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 3cd42dbeac1..80e9292a873 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -4624,7 +4624,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
mysql_data_home= mysql_real_data_home;
break;
case 'u':
- if (!mysqld_user)
+ if (!mysqld_user || !strcmp(mysqld_user, argument))
mysqld_user= argument;
else
fprintf(stderr, "Warning: Ignoring user change to '%s' because the user was set to '%s' earlier on the command line\n", argument, mysqld_user);
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 9b676442995..4af6f407b57 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -2715,7 +2715,7 @@ bool check_grant_all_columns(THD *thd, ulong want_access, TABLE *table)
if (table->grant.version != grant_version)
{
table->grant.grant_table=
- table_hash_search(thd->host,thd->ip,thd->db,
+ table_hash_search(thd->host, thd->ip, table->table_cache_key,
thd->priv_user,
table->real_name,0); /* purecov: inspected */
table->grant.version=grant_version; /* purecov: inspected */
@@ -2821,7 +2821,7 @@ ulong get_column_grant(THD *thd, TABLE_LIST *table, Field *field)
if (table->grant.version != grant_version)
{
table->grant.grant_table=
- table_hash_search(thd->host,thd->ip,thd->db,
+ table_hash_search(thd->host, thd->ip, table->db,
thd->priv_user,
table->real_name,0); /* purecov: inspected */
table->grant.version=grant_version; /* purecov: inspected */
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index a9723108674..4dd5d126cc9 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1163,7 +1163,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
break;
}
mysql_log.write(thd,command,db);
- mysql_rm_db(thd,alias,0,0);
+ mysql_rm_db(thd, (lower_case_table_names == 2 ? alias : db), 0, 0);
break;
}
case COM_BINLOG_DUMP:
@@ -2387,7 +2387,8 @@ mysql_execute_command(void)
send_error(&thd->net,ER_LOCK_OR_ACTIVE_TRANSACTION);
goto error;
}
- res=mysql_rm_db(thd,alias,lex->drop_if_exists,0);
+ res=mysql_rm_db(thd, (lower_case_table_names == 2 ? alias : lex->name),
+ lex->drop_if_exists, 0);
break;
}
case SQLCOM_CREATE_FUNCTION:
@@ -3157,7 +3158,12 @@ bool add_field_to_list(char *field_name, enum_field_types type,
break;
case FIELD_TYPE_DECIMAL:
if (!length)
- new_field->length= 10; // Default length for DECIMAL
+ {
+ if ((new_field->length= new_field->decimals))
+ new_field->length++;
+ else
+ new_field->length= 10; // Default length for DECIMAL
+ }
if (new_field->length < MAX_FIELD_WIDTH) // Skip wrong argument
{
new_field->length+=sign_len;
diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh
index 714992e0826..5ddc19580f3 100644
--- a/support-files/mysql.spec.sh
+++ b/support-files/mysql.spec.sh
@@ -395,7 +395,7 @@ useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" mysql 2> /dev/nul
chown -R mysql $mysql_datadir
# Initiate databases
-mysql_install_db -IN-RPM
+mysql_install_db -IN-RPM --user=mysql
# Change permissions again to fix any new files.
chown -R mysql $mysql_datadir