Neil Conway <[EMAIL PROTECTED]> writes:
> I've attached a slightly revised version of the patch, which I've
> applied to CVS HEAD.
*sigh*, actually attached this time.
-Neil
Index: src/backend/utils/adt/float.c
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/backend/utils/adt/float.c,v
retrieving revision 1.97
diff -c -r1.97 float.c
*** a/src/backend/utils/adt/float.c 4 Mar 2004 21:47:18 -0000 1.97
--- b/src/backend/utils/adt/float.c 11 Mar 2004 01:54:13 -0000
***************
*** 185,198 ****
errno = 0;
val = strtod(num, &endptr);
! if (*endptr != '\0')
{
/*
! * XXX we should accept "Infinity" and "-Infinity" too, but what
! * are the correct values to assign? HUGE_VAL will provoke an
! * error from CheckFloat4Val.
*/
! if (strcasecmp(num, "NaN") == 0)
val = NAN;
else
ereport(ERROR,
--- 185,221 ----
errno = 0;
val = strtod(num, &endptr);
!
! if (errno == ERANGE)
! ereport(ERROR,
! (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
! errmsg("\"%s\" is out of range for type real", num)));
!
! if (num == endptr)
{
/*
! * We didn't find anything that looks like a float in the input
! *
! * In releases prior to 7.5, we accepted an empty string as
! * valid input (yielding a float8 of 0). In 7.5, we accept
! * empty strings, but emit a warning noting that the feature
! * is deprecated. In 7.6+, the warning should be replaced by
! * an error.
! *
! * XXX we should accept "Infinity" and "-Infinity" too, but
! * what are the correct values to assign? HUGE_VAL will
! * provoke an error from CheckFloat4Val.
*/
! if (*num == '\0')
! {
! ereport(WARNING,
! (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
! errmsg("deprecated input syntax for type real: \"\""),
! errdetail("This input will be rejected in "
! "a future release of PostgreSQL.")));
! Assert(val == 0.0);
! }
! else if (strcasecmp(num, "NaN") == 0)
val = NAN;
else
ereport(ERROR,
***************
*** 200,225 ****
errmsg("invalid input syntax for type real: \"%s\"",
num)));
}
- else
- {
- if (errno == ERANGE)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("\"%s\" is out of range for type real", num)));
- }
! /*
! * In releases prior to 7.5, we accepted an empty string as valid
! * input (yielding a float4 of 0). In 7.5, we accept empty
! * strings, but emit a warning noting that the feature is
! * deprecated. In 7.6+, the warning should be replaced by an error.
! */
! if (num == endptr)
! ereport(WARNING,
! (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
! errmsg("deprecated input syntax for type real: \"\""),
! errdetail("This input will be rejected in "
! "a future release of PostgreSQL.")));
/*
* if we get here, we have a legal double, still need to check to see
--- 223,239 ----
errmsg("invalid input syntax for type real: \"%s\"",
num)));
}
! /* skip trailing whitespace */
! while (*endptr != '\0' && isspace(*endptr))
! endptr++;
!
! /* if there is any junk left at the end of the string, bail out */
! if (*endptr != '\0')
! ereport(ERROR,
! (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
! errmsg("invalid input syntax for type real: \"%s\"",
! num)));
/*
* if we get here, we have a legal double, still need to check to see
***************
*** 300,308 ****
errno = 0;
val = strtod(num, &endptr);
! if (*endptr != '\0')
{
! if (strcasecmp(num, "NaN") == 0)
val = NAN;
else if (strcasecmp(num, "Infinity") == 0)
val = HUGE_VAL;
--- 314,346 ----
errno = 0;
val = strtod(num, &endptr);
!
! if (errno == ERANGE)
! ereport(ERROR,
! (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
! errmsg("\"%s\" is out of range for type double precision", num)));
!
! if (num == endptr)
{
! /*
! * We didn't find anything that looks like a float in the input
! *
! * In releases prior to 7.5, we accepted an empty string as
! * valid input (yielding a float8 of 0). In 7.5, we accept
! * empty strings, but emit a warning noting that the feature
! * is deprecated. In 7.6+, the warning should be replaced by
! * an error.
! */
! if (*num == '\0')
! {
! ereport(WARNING,
! (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
! errmsg("deprecated input syntax for type double precision: \"\""),
! errdetail("This input will be rejected in "
! "a future release of PostgreSQL.")));
! Assert(val == 0.0);
! }
! else if (strcasecmp(num, "NaN") == 0)
val = NAN;
else if (strcasecmp(num, "Infinity") == 0)
val = HUGE_VAL;
***************
*** 314,339 ****
errmsg("invalid input syntax for type double precision: \"%s\"",
num)));
}
- else
- {
- if (errno == ERANGE)
- ereport(ERROR,
- (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
- errmsg("\"%s\" is out of range for type double precision", num)));
- }
! /*
! * In releases prior to 7.5, we accepted an empty string as valid
! * input (yielding a float8 of 0). In 7.5, we accept empty
! * strings, but emit a warning noting that the feature is
! * deprecated. In 7.6+, the warning should be replaced by an error.
! */
! if (num == endptr)
! ereport(WARNING,
! (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
! errmsg("deprecated input syntax for type double precision: \"\""),
! errdetail("This input will be rejected in "
! "a future release of PostgreSQL.")));
CheckFloat8Val(val);
--- 352,368 ----
errmsg("invalid input syntax for type double precision: \"%s\"",
num)));
}
! /* skip trailing whitespace */
! while (*endptr != '\0' && isspace(*endptr))
! endptr++;
!
! /* if there is any junk left at the end of the string, bail out */
! if (*endptr != '\0')
! ereport(ERROR,
! (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
! errmsg("invalid input syntax for type double precision: \"%s\"",
! num)));
CheckFloat8Val(val);
Index: src/backend/utils/adt/int8.c
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/backend/utils/adt/int8.c,v
retrieving revision 1.51
diff -c -r1.51 int8.c
*** a/src/backend/utils/adt/int8.c 3 Feb 2004 08:29:56 -0000 1.51
--- b/src/backend/utils/adt/int8.c 11 Mar 2004 01:54:13 -0000
***************
*** 113,120 ****
tmp = newtmp;
}
! /* trailing junk? */
! if (*ptr)
{
if (errorOK)
return false;
--- 113,123 ----
tmp = newtmp;
}
! /* allow trailing whitespace, but not other trailing chars */
! while (*ptr != '\0' && isspace(*ptr))
! ptr++;
!
! if (*ptr != '\0')
{
if (errorOK)
return false;
Index: src/backend/utils/adt/numutils.c
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/backend/utils/adt/numutils.c,v
retrieving revision 1.61
diff -c -r1.61 numutils.c
*** a/src/backend/utils/adt/numutils.c 18 Feb 2004 00:01:33 -0000 1.61
--- b/src/backend/utils/adt/numutils.c 11 Mar 2004 01:58:50 -0000
***************
*** 19,24 ****
--- 19,25 ----
#include <errno.h>
#include <math.h>
#include <limits.h>
+ #include <ctype.h>
#include "utils/builtins.h"
***************
*** 45,54 ****
/*
* pg_atoi: convert string to integer
*
! * size is the sizeof() the desired integral result (1, 2, or 4 bytes).
*
! * c, if not 0, is the terminator character that may appear after the
! * integer. If 0, the string must end after the integer.
*
* Unlike plain atoi(), this will throw ereport() upon bad input format or
* overflow.
--- 46,57 ----
/*
* pg_atoi: convert string to integer
*
! * 'size' is the sizeof() the desired integral result (1, 2, or 4 bytes).
*
! * allows any number of leading or trailing whitespace characters.
! *
! * 'c' is the character that terminates the input string (after any
! * number of whitespace characters).
*
* Unlike plain atoi(), this will throw ereport() upon bad input format or
* overflow.
***************
*** 57,63 ****
pg_atoi(char *s, int size, int c)
{
long l;
! char *badp = NULL;
/*
* Some versions of strtol treat the empty string as an error, but
--- 60,66 ----
pg_atoi(char *s, int size, int c)
{
long l;
! char *badp;
/*
* Some versions of strtol treat the empty string as an error, but
***************
*** 74,90 ****
errno = 0;
l = strtol(s, &badp, 10);
! /*
! * strtol() normally only sets ERANGE. On some systems it also may
! * set EINVAL, which simply means it couldn't parse the input string.
! * This is handled by the second "if" consistent across platforms.
! */
! if (errno && errno != ERANGE && errno != EINVAL)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for integer: \"%s\"",
s)));
! if (badp && *badp && *badp != c)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for integer: \"%s\"",
--- 77,97 ----
errno = 0;
l = strtol(s, &badp, 10);
! /* We made no progress parsing the string, so bail out */
! if (s == badp)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for integer: \"%s\"",
s)));
!
! /*
! * Skip any trailing whitespace; if anything but whitespace
! * remains before the terminating character, bail out
! */
! while (*badp != c && isspace(*badp))
! badp++;
!
! if (*badp != c)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for integer: \"%s\"",
Index: src/backend/utils/adt/oid.c
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/backend/utils/adt/oid.c,v
retrieving revision 1.55
diff -c -r1.55 oid.c
*** a/src/backend/utils/adt/oid.c 4 Mar 2004 21:47:18 -0000 1.55
--- b/src/backend/utils/adt/oid.c 11 Mar 2004 01:54:13 -0000
***************
*** 33,38 ****
--- 33,51 ----
char *endptr;
Oid result;
+ /*
+ * In releases prior to 7.5, we accepted an empty string as valid
+ * input (yielding an OID of 0). In 7.5, we accept empty strings,
+ * but emit a warning noting that the feature is deprecated. In
+ * 7.6+, the warning should be replaced by an error.
+ */
+ if (*s == '\0')
+ ereport(WARNING,
+ (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
+ errmsg("deprecated input syntax for type oid: \"\""),
+ errdetail("This input will be rejected in "
+ "a future release of PostgreSQL.")));
+
errno = 0;
cvt = strtoul(s, &endptr, 10);
***************
*** 47,66 ****
errmsg("invalid input syntax for type oid: \"%s\"",
s)));
! /*
! * In releases prior to 7.5, we accepted an empty string as valid
! * input (yielding an OID of 0). In 7.5, we accept empty strings,
! * but emit a warning noting that the feature is deprecated. In
! * 7.6+, the warning should be replaced by an error.
! */
! if (*s == '\0')
! ereport(WARNING,
! (errcode(ERRCODE_WARNING_DEPRECATED_FEATURE),
! errmsg("deprecated input syntax for type oid: \"\""),
! errdetail("This input will be rejected in "
! "a future release of PostgreSQL.")));
!
! if (endptr == s && *s)
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for type oid: \"%s\"",
--- 60,66 ----
errmsg("invalid input syntax for type oid: \"%s\"",
s)));
! if (endptr == s && *s != '\0')
ereport(ERROR,
(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
errmsg("invalid input syntax for type oid: \"%s\"",
Index: src/test/regress/expected/float4.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/float4.out,v
retrieving revision 1.9
diff -c -r1.9 float4.out
*** a/src/test/regress/expected/float4.out 25 Sep 2003 06:58:06 -0000 1.9
--- b/src/test/regress/expected/float4.out 11 Mar 2004 01:54:13 -0000
***************
*** 2,10 ****
-- FLOAT4
--
CREATE TABLE FLOAT4_TBL (f1 float4);
! INSERT INTO FLOAT4_TBL(f1) VALUES ('0.0');
! INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30');
! INSERT INTO FLOAT4_TBL(f1) VALUES ('-34.84');
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
-- test for over and under flow
--- 2,10 ----
-- FLOAT4
--
CREATE TABLE FLOAT4_TBL (f1 float4);
! INSERT INTO FLOAT4_TBL(f1) VALUES (' 0.0');
! INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30 ');
! INSERT INTO FLOAT4_TBL(f1) VALUES (' -34.84 ');
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
-- test for over and under flow
***************
*** 16,21 ****
--- 16,58 ----
ERROR: type "real" value out of range: underflow
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
ERROR: type "real" value out of range: underflow
+ -- bad input
+ INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
+ ERROR: invalid input syntax for type real: " "
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
+ ERROR: invalid input syntax for type real: "xyz"
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
+ ERROR: invalid input syntax for type real: "5.0.0"
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
+ ERROR: invalid input syntax for type real: "5 . 0"
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
+ ERROR: invalid input syntax for type real: "5. 0"
+ INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
+ ERROR: invalid input syntax for type real: " - 3.0"
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
+ ERROR: invalid input syntax for type real: "123 5"
+ -- special inputs
+ SELECT 'NaN'::float4;
+ float4
+ --------
+ NaN
+ (1 row)
+
+ SELECT 'nan'::float4;
+ float4
+ --------
+ NaN
+ (1 row)
+
+ SELECT ' NAN '::float4;
+ float4
+ --------
+ NaN
+ (1 row)
+
+ -- bad special inputs
+ SELECT 'N A N'::float4;
+ ERROR: invalid input syntax for type real: "N A N"
SELECT '' AS five, FLOAT4_TBL.*;
five | f1
------+-------------
Index: src/test/regress/expected/float8.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/float8.out,v
retrieving revision 1.17
diff -c -r1.17 float8.out
*** a/src/test/regress/expected/float8.out 25 Sep 2003 06:58:06 -0000 1.17
--- b/src/test/regress/expected/float8.out 11 Mar 2004 01:54:13 -0000
***************
*** 2,12 ****
-- FLOAT8
--
CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
SELECT '' AS five, FLOAT8_TBL.*;
five | f1
------+----------------------
--- 2,58 ----
-- FLOAT8
--
CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES (' 0.0 ');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30 ');
! INSERT INTO FLOAT8_TBL(f1) VALUES (' -34.84');
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
+ -- test for underflow and overflow
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
+ ERROR: "10e400" is out of range for type double precision
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
+ ERROR: "-10e400" is out of range for type double precision
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
+ ERROR: "10e-400" is out of range for type double precision
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
+ ERROR: "-10e-400" is out of range for type double precision
+ -- bad input
+ INSERT INTO FLOAT8_TBL(f1) VALUES (' ');
+ ERROR: invalid input syntax for type double precision: " "
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
+ ERROR: invalid input syntax for type double precision: "xyz"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
+ ERROR: invalid input syntax for type double precision: "5.0.0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
+ ERROR: invalid input syntax for type double precision: "5 . 0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0');
+ ERROR: invalid input syntax for type double precision: "5. 0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3');
+ ERROR: invalid input syntax for type double precision: " - 3"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5');
+ ERROR: invalid input syntax for type double precision: "123 5"
+ -- special inputs
+ SELECT 'NaN'::float8;
+ float8
+ --------
+ NaN
+ (1 row)
+
+ SELECT 'nan'::float8;
+ float8
+ --------
+ NaN
+ (1 row)
+
+ SELECT ' NAN '::float8;
+ float8
+ --------
+ NaN
+ (1 row)
+
+ -- bad special inputs
+ SELECT 'N A N'::float8;
+ ERROR: invalid input syntax for type double precision: "N A N"
SELECT '' AS five, FLOAT8_TBL.*;
five | f1
------+----------------------
Index: src/test/regress/expected/int2.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/int2.out,v
retrieving revision 1.10
diff -c -r1.10 int2.out
*** a/src/test/regress/expected/int2.out 25 Sep 2003 06:58:06 -0000 1.10
--- b/src/test/regress/expected/int2.out 11 Mar 2004 01:54:13 -0000
***************
*** 4,22 ****
-- Some of these answers are consequently numerically incorrect.
--
CREATE TABLE INT2_TBL(f1 int2);
! INSERT INTO INT2_TBL(f1) VALUES ('0');
! INSERT INTO INT2_TBL(f1) VALUES ('1234');
! INSERT INTO INT2_TBL(f1) VALUES ('-1234');
INSERT INTO INT2_TBL(f1) VALUES ('34.5');
ERROR: invalid input syntax for integer: "34.5"
! -- largest and smallest values
INSERT INTO INT2_TBL(f1) VALUES ('32767');
INSERT INTO INT2_TBL(f1) VALUES ('-32767');
! -- bad input values -- should give warnings
INSERT INTO INT2_TBL(f1) VALUES ('100000');
ERROR: value "100000" is out of range for type shortint
INSERT INTO INT2_TBL(f1) VALUES ('asdf');
ERROR: invalid input syntax for integer: "asdf"
SELECT '' AS five, INT2_TBL.*;
five | f1
------+--------
--- 4,32 ----
-- Some of these answers are consequently numerically incorrect.
--
CREATE TABLE INT2_TBL(f1 int2);
! INSERT INTO INT2_TBL(f1) VALUES ('0 ');
! INSERT INTO INT2_TBL(f1) VALUES (' 1234 ');
! INSERT INTO INT2_TBL(f1) VALUES (' -1234');
INSERT INTO INT2_TBL(f1) VALUES ('34.5');
ERROR: invalid input syntax for integer: "34.5"
! -- largest and smallest values
INSERT INTO INT2_TBL(f1) VALUES ('32767');
INSERT INTO INT2_TBL(f1) VALUES ('-32767');
! -- bad input values -- should give errors
INSERT INTO INT2_TBL(f1) VALUES ('100000');
ERROR: value "100000" is out of range for type shortint
INSERT INTO INT2_TBL(f1) VALUES ('asdf');
ERROR: invalid input syntax for integer: "asdf"
+ INSERT INTO INT2_TBL(f1) VALUES (' ');
+ ERROR: invalid input syntax for integer: " "
+ INSERT INTO INT2_TBL(f1) VALUES ('- 1234');
+ ERROR: invalid input syntax for integer: "- 1234"
+ INSERT INTO INT2_TBL(f1) VALUES ('4 444');
+ ERROR: invalid input syntax for integer: "4 444"
+ INSERT INTO INT2_TBL(f1) VALUES ('123 dt');
+ ERROR: invalid input syntax for integer: "123 dt"
+ INSERT INTO INT2_TBL(f1) VALUES ('');
+ ERROR: invalid input syntax for integer: ""
SELECT '' AS five, INT2_TBL.*;
five | f1
------+--------
Index: src/test/regress/expected/int4.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/int4.out,v
retrieving revision 1.12
diff -c -r1.12 int4.out
*** a/src/test/regress/expected/int4.out 25 Sep 2003 06:58:06 -0000 1.12
--- b/src/test/regress/expected/int4.out 11 Mar 2004 01:54:13 -0000
***************
*** 4,22 ****
-- Some of these answers are consequently numerically incorrect.
--
CREATE TABLE INT4_TBL(f1 int4);
! INSERT INTO INT4_TBL(f1) VALUES ('0');
! INSERT INTO INT4_TBL(f1) VALUES ('123456');
! INSERT INTO INT4_TBL(f1) VALUES ('-123456');
INSERT INTO INT4_TBL(f1) VALUES ('34.5');
ERROR: invalid input syntax for integer: "34.5"
! -- largest and smallest values
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
! -- bad input values -- should give warnings
INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
ERROR: value "1000000000000" is out of range for type integer
INSERT INTO INT4_TBL(f1) VALUES ('asdf');
ERROR: invalid input syntax for integer: "asdf"
SELECT '' AS five, INT4_TBL.*;
five | f1
------+-------------
--- 4,32 ----
-- Some of these answers are consequently numerically incorrect.
--
CREATE TABLE INT4_TBL(f1 int4);
! INSERT INTO INT4_TBL(f1) VALUES (' 0 ');
! INSERT INTO INT4_TBL(f1) VALUES ('123456 ');
! INSERT INTO INT4_TBL(f1) VALUES (' -123456');
INSERT INTO INT4_TBL(f1) VALUES ('34.5');
ERROR: invalid input syntax for integer: "34.5"
! -- largest and smallest values
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
! -- bad input values -- should give errors
INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
ERROR: value "1000000000000" is out of range for type integer
INSERT INTO INT4_TBL(f1) VALUES ('asdf');
ERROR: invalid input syntax for integer: "asdf"
+ INSERT INTO INT4_TBL(f1) VALUES (' ');
+ ERROR: invalid input syntax for integer: " "
+ INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
+ ERROR: invalid input syntax for integer: " asdf "
+ INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
+ ERROR: invalid input syntax for integer: "- 1234"
+ INSERT INTO INT4_TBL(f1) VALUES ('123 5');
+ ERROR: invalid input syntax for integer: "123 5"
+ INSERT INTO INT4_TBL(f1) VALUES ('');
+ ERROR: invalid input syntax for integer: ""
SELECT '' AS five, INT4_TBL.*;
five | f1
------+-------------
***************
*** 117,130 ****
| 2147483647
(3 rows)
! -- positive odds
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
one | f1
-----+------------
| 2147483647
(1 row)
! -- any evens
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
three | f1
-------+---------
--- 127,140 ----
| 2147483647
(3 rows)
! -- positive odds
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
one | f1
-----+------------
| 2147483647
(1 row)
! -- any evens
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
three | f1
-------+---------
Index: src/test/regress/expected/int8.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/int8.out,v
retrieving revision 1.7
diff -c -r1.7 int8.out
*** a/src/test/regress/expected/int8.out 27 Mar 2003 16:35:31 -0000 1.7
--- b/src/test/regress/expected/int8.out 11 Mar 2004 01:54:13 -0000
***************
*** 3,13 ****
-- Test int8 64-bit integers.
--
CREATE TABLE INT8_TBL(q1 int8, q2 int8);
! INSERT INTO INT8_TBL VALUES('123','456');
! INSERT INTO INT8_TBL VALUES('123','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','123');
INSERT INTO INT8_TBL VALUES('4567890123456789','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','-4567890123456789');
SELECT * FROM INT8_TBL;
q1 | q2
------------------+-------------------
--- 3,28 ----
-- Test int8 64-bit integers.
--
CREATE TABLE INT8_TBL(q1 int8, q2 int8);
! INSERT INTO INT8_TBL VALUES(' 123 ',' 456');
! INSERT INTO INT8_TBL VALUES('123 ','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','123');
INSERT INTO INT8_TBL VALUES('4567890123456789','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','-4567890123456789');
+ -- bad inputs
+ INSERT INTO INT8_TBL(q1) VALUES (' ');
+ ERROR: invalid input syntax for type bigint: " "
+ INSERT INTO INT8_TBL(q1) VALUES ('xxx');
+ ERROR: invalid input syntax for type bigint: "xxx"
+ INSERT INTO INT8_TBL(q1) VALUES ('3908203590239580293850293850329485');
+ ERROR: integer out of range
+ INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340329840934');
+ ERROR: integer out of range
+ INSERT INTO INT8_TBL(q1) VALUES ('- 123');
+ ERROR: invalid input syntax for type bigint: "- 123"
+ INSERT INTO INT8_TBL(q1) VALUES (' 345 5');
+ ERROR: invalid input syntax for type bigint: " 345 5"
+ INSERT INTO INT8_TBL(q1) VALUES ('');
+ ERROR: invalid input syntax for type bigint: ""
SELECT * FROM INT8_TBL;
q1 | q2
------------------+-------------------
Index: src/test/regress/expected/numeric.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/numeric.out,v
retrieving revision 1.12
diff -c -r1.12 numeric.out
*** a/src/test/regress/expected/numeric.out 25 Sep 2003 06:58:06 -0000 1.12
--- b/src/test/regress/expected/numeric.out 11 Mar 2004 01:54:13 -0000
***************
*** 670,675 ****
--- 670,687 ----
-13430913.592242320700
(1 row)
+ SELECT STDDEV(val) FROM num_data;
+ stddev
+ -------------------------------
+ 27791203.28758835329805617386
+ (1 row)
+
+ SELECT VARIANCE(val) FROM num_data;
+ variance
+ --------------------------------------
+ 772350980172061.69659105821915863601
+ (1 row)
+
-- Check for appropriate rounding and overflow
CREATE TABLE fract_only (id int, val numeric(4,4));
INSERT INTO fract_only VALUES (1, '0.0');
***************
*** 1112,1114 ****
--- 1124,1167 ----
| -0.01
(1 row)
+ --
+ -- Input syntax
+ --
+ CREATE TABLE num_input_test (n1 numeric);
+ -- good inputs
+ INSERT INTO num_input_test(n1) VALUES (' 123');
+ INSERT INTO num_input_test(n1) VALUES (' 3245874 ');
+ INSERT INTO num_input_test(n1) VALUES (' -93853');
+ INSERT INTO num_input_test(n1) VALUES ('555.50');
+ INSERT INTO num_input_test(n1) VALUES ('-555.50');
+ INSERT INTO num_input_test(n1) VALUES ('NaN ');
+ ERROR: invalid input syntax for type numeric: "NaN "
+ INSERT INTO num_input_test(n1) VALUES (' nan');
+ ERROR: invalid input syntax for type numeric: " nan"
+ -- bad inputs
+ INSERT INTO num_input_test(n1) VALUES (' ');
+ ERROR: invalid input syntax for type numeric: " "
+ INSERT INTO num_input_test(n1) VALUES (' 1234 %');
+ ERROR: invalid input syntax for type numeric: " 1234 %"
+ INSERT INTO num_input_test(n1) VALUES ('xyz');
+ ERROR: invalid input syntax for type numeric: "xyz"
+ INSERT INTO num_input_test(n1) VALUES ('- 1234');
+ ERROR: invalid input syntax for type numeric: "- 1234"
+ INSERT INTO num_input_test(n1) VALUES ('5 . 0');
+ ERROR: invalid input syntax for type numeric: "5 . 0"
+ INSERT INTO num_input_test(n1) VALUES ('5. 0 ');
+ ERROR: invalid input syntax for type numeric: "5. 0 "
+ INSERT INTO num_input_test(n1) VALUES ('');
+ ERROR: invalid input syntax for type numeric: ""
+ INSERT INTO num_input_test(n1) VALUES (' N aN ');
+ ERROR: invalid input syntax for type numeric: " N aN "
+ SELECT * FROM num_input_test;
+ n1
+ ---------
+ 123
+ 3245874
+ -93853
+ 555.50
+ -555.50
+ (5 rows)
+
Index: src/test/regress/expected/oid.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/oid.out,v
retrieving revision 1.9
diff -c -r1.9 oid.out
*** a/src/test/regress/expected/oid.out 4 Mar 2004 21:47:18 -0000 1.9
--- b/src/test/regress/expected/oid.out 11 Mar 2004 01:54:13 -0000
***************
*** 7,17 ****
--- 7,35 ----
INSERT INTO OID_TBL(f1) VALUES ('987');
INSERT INTO OID_TBL(f1) VALUES ('-1040');
INSERT INTO OID_TBL(f1) VALUES ('99999999');
+ INSERT INTO OID_TBL(f1) VALUES ('5 ');
+ INSERT INTO OID_TBL(f1) VALUES (' 10 ');
+ -- leading/trailing hard tab is also allowed
+ INSERT INTO OID_TBL(f1) VALUES (' 15 ');
-- bad inputs
INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
ERROR: invalid input syntax for type oid: "asdfasd"
INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
ERROR: invalid input syntax for type oid: "99asdfasd"
+ INSERT INTO OID_TBL(f1) VALUES ('5 d');
+ ERROR: invalid input syntax for type oid: "5 d"
+ INSERT INTO OID_TBL(f1) VALUES (' 5d');
+ ERROR: invalid input syntax for type oid: " 5d"
+ INSERT INTO OID_TBL(f1) VALUES ('5 5');
+ ERROR: invalid input syntax for type oid: "5 5"
+ INSERT INTO OID_TBL(f1) VALUES (' ');
+ ERROR: invalid input syntax for type oid: " "
+ INSERT INTO OID_TBL(f1) VALUES (' - 500');
+ ERROR: invalid input syntax for type oid: " - 500"
+ INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
+ ERROR: value "32958209582039852935" is out of range for type oid
+ INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
+ ERROR: value "-23582358720398502385" is out of range for type oid
SELECT '' AS six, OID_TBL.*;
six | f1
-----+------------
***************
*** 20,26 ****
| 987
| 4294966256
| 99999999
! (5 rows)
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234;
one | f1
--- 38,47 ----
| 987
| 4294966256
| 99999999
! | 5
! | 10
! | 15
! (8 rows)
SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234;
one | f1
***************
*** 35,54 ****
| 987
| 4294966256
| 99999999
! (4 rows)
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234';
three | f1
-------+------
| 1234
| 987
! (2 rows)
SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234';
two | f1
-----+-----
| 987
! (1 row)
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234';
four | f1
--- 56,84 ----
| 987
| 4294966256
| 99999999
! | 5
! | 10
! | 15
! (7 rows)
SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234';
three | f1
-------+------
| 1234
| 987
! | 5
! | 10
! | 15
! (5 rows)
SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234';
two | f1
-----+-----
| 987
! | 5
! | 10
! | 15
! (4 rows)
SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234';
four | f1
Index: src/test/regress/output/misc.source
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/output/misc.source,v
retrieving revision 1.39
diff -c -r1.39 misc.source
*** a/src/test/regress/output/misc.source 20 Jul 2003 21:56:35 -0000 1.39
--- b/src/test/regress/output/misc.source 11 Mar 2004 01:54:13 -0000
***************
*** 631,636 ****
--- 631,637 ----
num_exp_power_10_ln
num_exp_sqrt
num_exp_sub
+ num_input_test
num_result
onek
onek2
***************
*** 660,666 ****
toyemp
varchar_tbl
xacttest
! (96 rows)
--SELECT name(equipment(hobby_construct(text 'skywalking', text 'mer'))) AS equip_name;
SELECT hobbies_by_name('basketball');
--- 661,667 ----
toyemp
varchar_tbl
xacttest
! (97 rows)
--SELECT name(equipment(hobby_construct(text 'skywalking', text 'mer'))) AS equip_name;
SELECT hobbies_by_name('basketball');
Index: src/test/regress/sql/float4.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/float4.sql,v
retrieving revision 1.4
diff -c -r1.4 float4.sql
*** a/src/test/regress/sql/float4.sql 4 Jan 2000 16:21:02 -0000 1.4
--- b/src/test/regress/sql/float4.sql 11 Mar 2004 01:54:13 -0000
***************
*** 4,28 ****
CREATE TABLE FLOAT4_TBL (f1 float4);
! INSERT INTO FLOAT4_TBL(f1) VALUES ('0.0');
!
! INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30');
!
! INSERT INTO FLOAT4_TBL(f1) VALUES ('-34.84');
!
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
-
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
-- test for over and under flow
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e40');
-
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e40');
-
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-40');
-
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
SELECT '' AS five, FLOAT4_TBL.*;
--- 4,36 ----
CREATE TABLE FLOAT4_TBL (f1 float4);
! INSERT INTO FLOAT4_TBL(f1) VALUES (' 0.0');
! INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30 ');
! INSERT INTO FLOAT4_TBL(f1) VALUES (' -34.84 ');
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20');
INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20');
-- test for over and under flow
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e40');
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e40');
INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-40');
INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-40');
+ -- bad input
+ INSERT INTO FLOAT4_TBL(f1) VALUES (' ');
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz');
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0');
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0');
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0');
+ INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0');
+ INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5');
+
+ -- special inputs
+ SELECT 'NaN'::float4;
+ SELECT 'nan'::float4;
+ SELECT ' NAN '::float4;
+ -- bad special inputs
+ SELECT 'N A N'::float4;
SELECT '' AS five, FLOAT4_TBL.*;
Index: src/test/regress/sql/float8.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/float8.sql,v
retrieving revision 1.8
diff -c -r1.8 float8.sql
*** a/src/test/regress/sql/float8.sql 19 Oct 2002 02:08:19 -0000 1.8
--- b/src/test/regress/sql/float8.sql 11 Mar 2004 01:54:13 -0000
***************
*** 4,19 ****
CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
!
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30');
!
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
!
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
-
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
SELECT '' AS five, FLOAT8_TBL.*;
--- 4,36 ----
CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES (' 0.0 ');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30 ');
! INSERT INTO FLOAT8_TBL(f1) VALUES (' -34.84');
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
+ -- test for underflow and overflow
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
+
+ -- bad input
+ INSERT INTO FLOAT8_TBL(f1) VALUES (' ');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0');
+ INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5');
+
+ -- special inputs
+ SELECT 'NaN'::float8;
+ SELECT 'nan'::float8;
+ SELECT ' NAN '::float8;
+ -- bad special inputs
+ SELECT 'N A N'::float8;
SELECT '' AS five, FLOAT8_TBL.*;
Index: src/test/regress/sql/int2.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/int2.sql,v
retrieving revision 1.4
diff -c -r1.4 int2.sql
*** a/src/test/regress/sql/int2.sql 4 Jan 2000 16:21:02 -0000 1.4
--- b/src/test/regress/sql/int2.sql 11 Mar 2004 01:54:13 -0000
***************
*** 6,28 ****
CREATE TABLE INT2_TBL(f1 int2);
! INSERT INTO INT2_TBL(f1) VALUES ('0');
! INSERT INTO INT2_TBL(f1) VALUES ('1234');
! INSERT INTO INT2_TBL(f1) VALUES ('-1234');
INSERT INTO INT2_TBL(f1) VALUES ('34.5');
! -- largest and smallest values
INSERT INTO INT2_TBL(f1) VALUES ('32767');
INSERT INTO INT2_TBL(f1) VALUES ('-32767');
! -- bad input values -- should give warnings
INSERT INTO INT2_TBL(f1) VALUES ('100000');
-
INSERT INTO INT2_TBL(f1) VALUES ('asdf');
SELECT '' AS five, INT2_TBL.*;
--- 6,32 ----
CREATE TABLE INT2_TBL(f1 int2);
! INSERT INTO INT2_TBL(f1) VALUES ('0 ');
! INSERT INTO INT2_TBL(f1) VALUES (' 1234 ');
! INSERT INTO INT2_TBL(f1) VALUES (' -1234');
INSERT INTO INT2_TBL(f1) VALUES ('34.5');
! -- largest and smallest values
INSERT INTO INT2_TBL(f1) VALUES ('32767');
INSERT INTO INT2_TBL(f1) VALUES ('-32767');
! -- bad input values -- should give errors
INSERT INTO INT2_TBL(f1) VALUES ('100000');
INSERT INTO INT2_TBL(f1) VALUES ('asdf');
+ INSERT INTO INT2_TBL(f1) VALUES (' ');
+ INSERT INTO INT2_TBL(f1) VALUES ('- 1234');
+ INSERT INTO INT2_TBL(f1) VALUES ('4 444');
+ INSERT INTO INT2_TBL(f1) VALUES ('123 dt');
+ INSERT INTO INT2_TBL(f1) VALUES ('');
SELECT '' AS five, INT2_TBL.*;
Index: src/test/regress/sql/int4.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/int4.sql,v
retrieving revision 1.6
diff -c -r1.6 int4.sql
*** a/src/test/regress/sql/int4.sql 14 Mar 2000 23:06:58 -0000 1.6
--- b/src/test/regress/sql/int4.sql 11 Mar 2004 01:54:13 -0000
***************
*** 6,28 ****
CREATE TABLE INT4_TBL(f1 int4);
! INSERT INTO INT4_TBL(f1) VALUES ('0');
! INSERT INTO INT4_TBL(f1) VALUES ('123456');
! INSERT INTO INT4_TBL(f1) VALUES ('-123456');
INSERT INTO INT4_TBL(f1) VALUES ('34.5');
! -- largest and smallest values
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
! -- bad input values -- should give warnings
INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
-
INSERT INTO INT4_TBL(f1) VALUES ('asdf');
SELECT '' AS five, INT4_TBL.*;
--- 6,32 ----
CREATE TABLE INT4_TBL(f1 int4);
! INSERT INTO INT4_TBL(f1) VALUES (' 0 ');
! INSERT INTO INT4_TBL(f1) VALUES ('123456 ');
! INSERT INTO INT4_TBL(f1) VALUES (' -123456');
INSERT INTO INT4_TBL(f1) VALUES ('34.5');
! -- largest and smallest values
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
! -- bad input values -- should give errors
INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
INSERT INTO INT4_TBL(f1) VALUES ('asdf');
+ INSERT INTO INT4_TBL(f1) VALUES (' ');
+ INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
+ INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
+ INSERT INTO INT4_TBL(f1) VALUES ('123 5');
+ INSERT INTO INT4_TBL(f1) VALUES ('');
SELECT '' AS five, INT4_TBL.*;
***************
*** 51,60 ****
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
! -- positive odds
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
! -- any evens
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
--- 55,64 ----
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
! -- positive odds
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
! -- any evens
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
Index: src/test/regress/sql/int8.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/int8.sql,v
retrieving revision 1.5
diff -c -r1.5 int8.sql
*** a/src/test/regress/sql/int8.sql 26 Jan 2001 22:50:26 -0000 1.5
--- b/src/test/regress/sql/int8.sql 11 Mar 2004 01:54:13 -0000
***************
*** 4,15 ****
--
CREATE TABLE INT8_TBL(q1 int8, q2 int8);
! INSERT INTO INT8_TBL VALUES('123','456');
! INSERT INTO INT8_TBL VALUES('123','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','123');
INSERT INTO INT8_TBL VALUES('4567890123456789','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','-4567890123456789');
SELECT * FROM INT8_TBL;
SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL;
--- 4,24 ----
--
CREATE TABLE INT8_TBL(q1 int8, q2 int8);
! INSERT INTO INT8_TBL VALUES(' 123 ',' 456');
! INSERT INTO INT8_TBL VALUES('123 ','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','123');
INSERT INTO INT8_TBL VALUES('4567890123456789','4567890123456789');
INSERT INTO INT8_TBL VALUES('4567890123456789','-4567890123456789');
+ -- bad inputs
+ INSERT INTO INT8_TBL(q1) VALUES (' ');
+ INSERT INTO INT8_TBL(q1) VALUES ('xxx');
+ INSERT INTO INT8_TBL(q1) VALUES ('3908203590239580293850293850329485');
+ INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340329840934');
+ INSERT INTO INT8_TBL(q1) VALUES ('- 123');
+ INSERT INTO INT8_TBL(q1) VALUES (' 345 5');
+ INSERT INTO INT8_TBL(q1) VALUES ('');
+
SELECT * FROM INT8_TBL;
SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL;
Index: src/test/regress/sql/numeric.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/numeric.sql,v
retrieving revision 1.7
diff -c -r1.7 numeric.sql
*** a/src/test/regress/sql/numeric.sql 7 Apr 2000 19:17:50 -0000 1.7
--- b/src/test/regress/sql/numeric.sql 11 Mar 2004 01:54:13 -0000
***************
*** 639,644 ****
--- 639,646 ----
-- ******************************
-- numeric AVG used to fail on some platforms
SELECT AVG(val) FROM num_data;
+ SELECT STDDEV(val) FROM num_data;
+ SELECT VARIANCE(val) FROM num_data;
-- Check for appropriate rounding and overflow
CREATE TABLE fract_only (id int, val numeric(4,4));
***************
*** 701,703 ****
--- 703,732 ----
SELECT '' AS to_number_11, to_number('.-01', 'S99.99');
SELECT '' AS to_number_12, to_number('.01-', '99.99S');
SELECT '' AS to_number_13, to_number(' . 0 1 -', ' 9 9 . 9 9 S');
+
+ --
+ -- Input syntax
+ --
+
+ CREATE TABLE num_input_test (n1 numeric);
+
+ -- good inputs
+ INSERT INTO num_input_test(n1) VALUES (' 123');
+ INSERT INTO num_input_test(n1) VALUES (' 3245874 ');
+ INSERT INTO num_input_test(n1) VALUES (' -93853');
+ INSERT INTO num_input_test(n1) VALUES ('555.50');
+ INSERT INTO num_input_test(n1) VALUES ('-555.50');
+ INSERT INTO num_input_test(n1) VALUES ('NaN ');
+ INSERT INTO num_input_test(n1) VALUES (' nan');
+
+ -- bad inputs
+ INSERT INTO num_input_test(n1) VALUES (' ');
+ INSERT INTO num_input_test(n1) VALUES (' 1234 %');
+ INSERT INTO num_input_test(n1) VALUES ('xyz');
+ INSERT INTO num_input_test(n1) VALUES ('- 1234');
+ INSERT INTO num_input_test(n1) VALUES ('5 . 0');
+ INSERT INTO num_input_test(n1) VALUES ('5. 0 ');
+ INSERT INTO num_input_test(n1) VALUES ('');
+ INSERT INTO num_input_test(n1) VALUES (' N aN ');
+
+ SELECT * FROM num_input_test;
Index: src/test/regress/sql/oid.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/oid.sql,v
retrieving revision 1.5
diff -c -r1.5 oid.sql
*** a/src/test/regress/sql/oid.sql 4 Mar 2004 21:47:18 -0000 1.5
--- b/src/test/regress/sql/oid.sql 11 Mar 2004 01:54:13 -0000
***************
*** 5,23 ****
CREATE TABLE OID_TBL(f1 oid);
INSERT INTO OID_TBL(f1) VALUES ('1234');
-
INSERT INTO OID_TBL(f1) VALUES ('1235');
-
INSERT INTO OID_TBL(f1) VALUES ('987');
-
INSERT INTO OID_TBL(f1) VALUES ('-1040');
-
INSERT INTO OID_TBL(f1) VALUES ('99999999');
-- bad inputs
INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
SELECT '' AS six, OID_TBL.*;
--- 5,30 ----
CREATE TABLE OID_TBL(f1 oid);
INSERT INTO OID_TBL(f1) VALUES ('1234');
INSERT INTO OID_TBL(f1) VALUES ('1235');
INSERT INTO OID_TBL(f1) VALUES ('987');
INSERT INTO OID_TBL(f1) VALUES ('-1040');
INSERT INTO OID_TBL(f1) VALUES ('99999999');
+ INSERT INTO OID_TBL(f1) VALUES ('5 ');
+ INSERT INTO OID_TBL(f1) VALUES (' 10 ');
+ -- leading/trailing hard tab is also allowed
+ INSERT INTO OID_TBL(f1) VALUES (' 15 ');
-- bad inputs
INSERT INTO OID_TBL(f1) VALUES ('asdfasd');
INSERT INTO OID_TBL(f1) VALUES ('99asdfasd');
+ INSERT INTO OID_TBL(f1) VALUES ('5 d');
+ INSERT INTO OID_TBL(f1) VALUES (' 5d');
+ INSERT INTO OID_TBL(f1) VALUES ('5 5');
+ INSERT INTO OID_TBL(f1) VALUES (' ');
+ INSERT INTO OID_TBL(f1) VALUES (' - 500');
+ INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935');
+ INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385');
SELECT '' AS six, OID_TBL.*;
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]