Commit 5437a90d authored by unknown's avatar unknown
Browse files

Changed interface for my_strntod() to make it more general and more portable


BUILD/compile-solaris-sparc-purify:
  Cleanup (Changes from Kent)
include/m_string.h:
  New interface for my_strtod()
mysql-test/mysql-test-run.sh:
  Added option --use-old-data to allow one to run a test case on an existing table
  (Good for debugging)
mysql-test/r/strict.result:
  Updated results
mysql-test/r/type_float.result:
  More tests
mysql-test/t/strict.test:
  Safety fix
mysql-test/t/type_float.test:
  More tests
mysys/mf_iocache.c:
  Change flush_io_cache() to my_b_flush_io_cache()
  More debugging
mysys/thr_lock.c:
  Added comment
sql/field.cc:
  Use new my_strntod()
sql/filesort.cc:
  Indentation fixes
sql/item.cc:
  Use new my_strntod()
sql/item_strfunc.cc:
  Use new my_strntod()
sql/item_sum.cc:
  Use new my_strntod()
strings/ctype-cp932.c:
  strnncollsp was missing one argument
strings/ctype-simple.c:
  Use new my_strntod()
strings/ctype-ucs2.c:
  Use new my_strntod()
strings/strtod.c:
  Changed interface:
  - Force user to supply pointer to end of string (eliminates the need for an end \0)
  - More strict error checking (depend less off if INF is set), which makes this more portable
  - Better handling of numbers of type 0.000000....E+...
  - Return pointer to + in case of '+.'
  
  The above should fix a that strict.test failed on Solaris-sparc.
parent 7222ac50
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -4,10 +4,10 @@ while test $# -gt 0
do
  case "$1" in
    --debug) EXTRA_CONFIG_FLAGS=--with-debug; shift ;;
  -h | --help ) cat <<EOF; exit 0 ;;
Usage: $0 [-h|-n] [configure-options]
  --debug		Compile with DBUG enabled
EOF
    -h | --help )
      echo "Usage: $0 [-h|-n] [configure-options]"
      echo "  --debug		Compile with DBUG enabled"
      exit 0 ;;
    *)  echo "No such option '$1'" ; exit ;;
  esac
done
@@ -15,16 +15,15 @@ done
gmake -k clean || true 
/bin/rm -f */.deps/*.P config.cache
aclocal && autoheader && aclocal && automake && autoconf
(cd bdb/dist && sh s_all)
# (cd bdb/dist && sh s_all)
(cd innobase && aclocal && autoheader && aclocal && automake && autoconf)

CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused  -DHAVE_purify -DEXTRA_DEBUG -O2" CXX=gcc CXXLD=g++ CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti  -DHAVE_purify -DEXTRA_DEBUG -O2" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-berkeley-db --with-innodb $EXTRA_CONFIG_FLAGS
CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused  -DHAVE_purify -DEXTRA_DEBUG -O2" CXX=gcc CXXLD=g++ CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti  -DHAVE_purify -DEXTRA_DEBUG -O2" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --without-berkeley-db --with-embedded-server --with-innodb $EXTRA_CONFIG_FLAGS

gmake -j 4

cd sql ; mv mysqld mysqld-org ;
make CXXLD="purify -best-effort g++"  mysqld ; mv mysqld mysqld-purify
make CXXLD="quantify -best-effort g++"  mysqld ; mv mysqld mysqld-quantify
make CXXLD="purecov -best-effort g++"  mysqld ; mv mysqld mysqld-purecov
gmake CXXLD="purify -best-effort g++"  mysqld ; mv mysqld mysqld-purify
gmake CXXLD="quantify -best-effort g++"  mysqld ; mv mysqld mysqld-quantify
gmake CXXLD="purecov -best-effort g++"  mysqld ; mv mysqld mysqld-purecov
mv mysqld-org mysqld
+1 −1
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ extern char *strstr(const char *, const char *);
extern int is_prefix(const char *, const char *);

/* Conversion routines */
double my_strtod(const char *str, char **end);
double my_strtod(const char *str, char **end, int *error);
double my_atof(const char *nptr);

extern char *llstr(longlong value,char *buff);
+11 −5
Original line number Diff line number Diff line
@@ -427,6 +427,9 @@ while test $# -gt 0; do
    --fast)
      FAST_START=1
      ;;
    --use-old-data)
      USE_OLD_DATA=1;
      ;;
    -- )  shift; break ;;
    --* ) $ECHO "Unrecognized option: $1"; exit 1 ;;
    * ) break ;;
@@ -768,13 +771,15 @@ report_stats () {

mysql_install_db () {
    $ECHO "Removing Stale Files"
    $RM -rf $MASTER_MYDDIR $MASTER_MYDDIR"1" $SLAVE_MYDDIR $MY_LOG_DIR/* 
    if [ -z "$USE_OLD_DATA" ]; then
      $RM -rf $MASTER_MYDDIR $MASTER_MYDDIR"1"
      $ECHO "Installing Master Databases"
      $INSTALL_DB
      if [ $? != 0 ]; then
	error "Could not install master test DBs"
        exit 1
      fi
    fi
    if [ ! -z "$USE_NDBCLUSTER" ]
    then
      $ECHO "Installing Master Databases 1"
@@ -785,6 +790,7 @@ mysql_install_db () {
      fi
    fi
    $ECHO "Installing Slave Databases"
    $RM -rf $SLAVE_MYDDIR $MY_LOG_DIR/* 
    $INSTALL_DB -slave
    if [ $? != 0 ]; then
	error "Could not install slave test DBs"
+1 −1
Original line number Diff line number Diff line
@@ -768,7 +768,7 @@ INSERT INTO t1 VALUES (-2.2E-307,0),(+1.7E+308,+1.7E+308);
INSERT INTO t1 VALUES ('-2.2E-307',0),('+1.7E+308','+1.7E+308');
INSERT INTO t1 (col1) VALUES (-2.2E-330);
INSERT INTO t1 (col1) VALUES (+1.7E+309);
ERROR 22007: Illegal double '1.7E+309' value found during parsing
Got one of the listed errors
INSERT INTO t1 (col2) VALUES (-1.1E-3);
ERROR 22003: Out of range value adjusted for column 'col2' at row 1
INSERT INTO t1 (col1) VALUES ('+1.8E+309');
+4 −1
Original line number Diff line number Diff line
drop table if exists t1;
drop table if exists t1,t2;
SELECT 10,10.0,10.,.1e+2,100.0e-1;
10	10.0	10.	.1e+2	100.0e-1
10	10.0	10	10	10
@@ -8,6 +8,9 @@ SELECT 6e-05, -6e-05, --6e-05, -6e-05+1.000000;
SELECT 1e1,1.e1,1.0e1,1e+1,1.e+1,1.0e+1,1e-1,1.e-1,1.0e-1;
1e1	1.e1	1.0e1	1e+1	1.e+1	1.0e+1	1e-1	1.e-1	1.0e-1
10	10	10	10	10	10	0.1	0.1	0.1
SELECT 0.001e+1,0.001e-1, -0.001e+01,-0.001e-01;
0.001e+1	0.001e-1	-0.001e+01	-0.001e-01
0.01	0.0001	-0.01	-0.0001
create table t1 (f1 float(24),f2 float(52));
show full columns from t1;
Field	Type	Collation	Null	Key	Default	Extra	Privileges	Comment
Loading