Bizarre 7.3.2 bug
On one machine (installed as 7.3.1, upgraded to 7.3.2):
usa=# select version();
version
---------------------------------------------------------------------
PostgreSQL 7.3.2 on i386-portbld-freebsd4.7, compiled by GCC 2.95.4
(1 row)
usa=# select ''::integer;
ERROR: pg_atoi: zero-length string
On another machine (installed as 7.3.2):
australia=# select version();
version
---------------------------------------------------------------------
PostgreSQL 7.3.2 on i386-portbld-freebsd4.4, compiled by GCC 2.95.3
(1 row)
australia=# select ''::integer;
WARNING: pg_atoi: zero-length string
int4
------
0
(1 row)
What the???
Chris
On Mon, 2003-04-21 at 22:23, Christopher Kings-Lynne wrote:
usa=# select ''::integer;
ERROR: pg_atoi: zero-length string
australia=# select ''::integer;
WARNING: pg_atoi: zero-length string
int4
------
0
(1 row)What the???
Looks like the FreeBSD maintainer (you know who you are, seanc :-) ) has
decided to be clever:
Frankly, this is exactly the kind of modification that distributions
should *not* be making, IMHO.
Cheers,
Neil
--On Monday, April 21, 2003 22:44:23 -0400 Neil Conway <neilc@samurai.com>
wrote:
On Mon, 2003-04-21 at 22:23, Christopher Kings-Lynne wrote:
usa=# select ''::integer;
ERROR: pg_atoi: zero-length stringaustralia=# select ''::integer;
WARNING: pg_atoi: zero-length string
int4
------
0
(1 row)What the???
Looks like the FreeBSD maintainer (you know who you are, seanc :-) ) has
decided to be clever:http://www.freebsd.org/cgi/cvsweb.cgi/ports/databases/postgresql7/files/p
atch-src%3a%3abackend%3a%3autils%3a%3aadt%3a%3anumutils.c?rev=1.1&content
-type=text/x-cvsweb-markupFrankly, this is exactly the kind of modification that distributions
should *not* be making, IMHO.
I had asked that it be ****OPTIONAL****, and Sean had ignored that request.
LER
Cheers,
Neil
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
--
Larry Rosenman http://www.lerctr.org/~ler
Phone: +1 972-414-9812 E-Mail: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
australia=# select ''::integer;
WARNING: pg_atoi: zero-length string
That's got to be a locally-modified copy. The "zero-length string"
text has only existed since last August, and it's always been an ERROR.
regards, tom lane
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
australia=# select ''::integer;
WARNING: pg_atoi: zero-length stringThat's got to be a locally-modified copy. The "zero-length string"
text has only existed since last August, and it's always been an ERROR.
Yes, I agree the distro should not modify this, but I do think it would have
been better to have it as a WARNING at least for one release...
Chris
usa=# select ''::integer;
ERROR: pg_atoi: zero-length stringaustralia=# select ''::integer;
WARNING: pg_atoi: zero-length string
int4
------
0
(1 row)What the???
Looks like the FreeBSD maintainer (you know who you are, seanc :-) )
has decided to be clever:
I don't think it was clever so much as bowing to the whining masses of
RT and Horde users and I caved...
I had asked that it be ****OPTIONAL****, and Sean had ignored that
request.
LER, you were only one of thirty people that nagged me on this, but
you were the one who submitted the patch and were the 1st to point it
out. :)
australia=# select ''::integer;
WARNING: pg_atoi: zero-length stringThat's got to be a locally-modified copy. The "zero-length string"
text has only existed since last August, and it's always been an ERROR.
Hrm, well, if I don't get any criticism or a heads up for when the
7.3.3 release is (hint hint) in the next 48hrs, I'll dawn my flame
retardant suite and hope that the Horde/RT folks have a less broken
product at this time. I'll remove the patch and bump the port version
for those interested.
Yes, I agree the distro should not modify this, but I do think it
would have been better to have it as a WARNING at least for one
release...
One of the goals of the FreeBSD ports system is to mitigate these
inconsistencies in programs/packages and to help provide an easier to
use platform that is more controlled than native programs found out in
the wild. These kinds of patches are pretty common, but it is rare
that PostgreSQL has 'em because of it's releng process is
substantially better than other projects out there. -sc
--
Sean Chittenden
Import Notes
Reply to msg id not found: 014901c3087ca69e12506500a8c0@fhp.internal19394.1050980347@sss.pgh.pa.us2390000.1050980237@lerlaptop.lerctr.org1050979463.382.7.camel@tokyo008701c30876194dad306500a8c0@fhp.internal
--On Monday, April 21, 2003 21:24:40 -0700 Sean Chittenden
<sean@chittenden.org> wrote:
usa=# select ''::integer;
ERROR: pg_atoi: zero-length stringaustralia=# select ''::integer;
WARNING: pg_atoi: zero-length string
int4
------
0
(1 row)What the???
Looks like the FreeBSD maintainer (you know who you are, seanc :-) )
has decided to be clever:http://www.freebsd.org/cgi/cvsweb.cgi/ports/databases/postgresql7/files/
patch-src%3a%3abackend%3a%3autils%3a%3aadt%3a%3anumutils.c?rev=1.1&conte
nt-type=text/x-cvsweb-markupI don't think it was clever so much as bowing to the whining masses of
RT and Horde users and I caved...I had asked that it be ****OPTIONAL****, and Sean had ignored that
request.LER, you were only one of thirty people that nagged me on this, but
you were the one who submitted the patch and were the 1st to point it
out. :)australia=# select ''::integer;
WARNING: pg_atoi: zero-length stringThat's got to be a locally-modified copy. The "zero-length string"
text has only existed since last August, and it's always been an ERROR.Hrm, well, if I don't get any criticism or a heads up for when the
7.3.3 release is (hint hint) in the next 48hrs, I'll dawn my flame
retardant suite and hope that the Horde/RT folks have a less broken
product at this time. I'll remove the patch and bump the port version
for those interested.
both **STILL** need it :-(
Yes, I agree the distro should not modify this, but I do think it
would have been better to have it as a WARNING at least for one
release...One of the goals of the FreeBSD ports system is to mitigate these
inconsistencies in programs/packages and to help provide an easier to
use platform that is more controlled than native programs found out in
the wild. These kinds of patches are pretty common, but it is rare
that PostgreSQL has 'em because of it's releng process is
substantially better than other projects out there. -sc
hehe.
can we find someway to MAKE THE PATCH OPTIONAL in the Port?
LER
--
Sean Chittenden
--
Larry Rosenman http://www.lerctr.org/~ler
Phone: +1 972-414-9812 E-Mail: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
Sean Chittenden <sean@chittenden.org> writes:
Hrm, well, if I don't get any criticism or a heads up for when the
7.3.3 release is (hint hint) in the next 48hrs,
I doubt 7.3.3 will be out in the next 48hrs, but I do think we are
overdue for it. Core already discussed this some weeks ago and agreed
in principle that it was time. Either Bruce or I have been out-of-town
most of the time since then, but right now I don't think there's
anything much standing in the way of pushing out a release.
regards, tom lane
Hrm, well, if I don't get any criticism or a heads up for when the
7.3.3 release is (hint hint) in the next 48hrs,I doubt 7.3.3 will be out in the next 48hrs, but I do think we are
overdue for it. Core already discussed this some weeks ago and
agreed in principle that it was time. Either Bruce or I have been
out-of-town most of the time since then, but right now I don't think
there's anything much standing in the way of pushing out a release.
Hrm, alright, well, with the coming of 7.3.3 soon-ish, and given that
RT and Horde are still broken (does anyone have any pull with that
crowd and the ability to submit patches?), I'll make sure to
conditionalize patch when the next version comes out, but I'm not
going to force admins to rebuild their DBs unless really necessary.
For those interested, just nuke
postgresql7/files/patch-src::backend::utils::adt::numutils.c before
building the port and you'll get the originally intended behavior.
-sc
--
Sean Chittenden
--On Monday, April 21, 2003 21:43:54 -0700 Sean Chittenden
<sean@chittenden.org> wrote:
Hrm, well, if I don't get any criticism or a heads up for when the
7.3.3 release is (hint hint) in the next 48hrs,I doubt 7.3.3 will be out in the next 48hrs, but I do think we are
overdue for it. Core already discussed this some weeks ago and
agreed in principle that it was time. Either Bruce or I have been
out-of-town most of the time since then, but right now I don't think
there's anything much standing in the way of pushing out a release.Hrm, alright, well, with the coming of 7.3.3 soon-ish, and given that
RT and Horde are still broken (does anyone have any pull with that
crowd and the ability to submit patches?), I'll make sure to
conditionalize patch when the next version comes out, but I'm not
going to force admins to rebuild their DBs unless really necessary.
RT's author hasn't released a release in a LONG time, and I don't have any
pull.
As to Horde, I don't have any insight. Sorry.
LER
For those interested, just nuke
postgresql7/files/patch-src::backend::utils::adt::numutils.c before
building the port and you'll get the originally intended behavior.
-sc--
Sean Chittenden
--
Larry Rosenman http://www.lerctr.org/~ler
Phone: +1 972-414-9812 E-Mail: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
Larry Rosenman <ler@lerctr.org> writes:
--On Monday, April 21, 2003 21:43:54 -0700 Sean Chittenden
<sean@chittenden.org> wrote:Hrm, alright, well, with the coming of 7.3.3 soon-ish, and given that
RT and Horde are still broken (does anyone have any pull with that
crowd and the ability to submit patches?), I'll make sure to
conditionalize patch when the next version comes out, but I'm not
going to force admins to rebuild their DBs unless really necessary.
RT's author hasn't released a release in a LONG time, and I don't have any
pull.
As to Horde, I don't have any insight. Sorry.
The obvious solution to this sort of problem would be to introduce a
GUC variable ("allow_zero_length_integers" or some such name). I do
not recall why we decided not to do that to begin with --- should we
reconsider, or is it too late to worry about it?
regards, tom lane
Hrm, alright, well, with the coming of 7.3.3 soon-ish, and given
that RT and Horde are still broken (does anyone have any pull
with that crowd and the ability to submit patches?), I'll make
sure to conditionalize patch when the next version comes out, but
I'm not going to force admins to rebuild their DBs unless really
necessary.RT's author hasn't released a release in a LONG time, and I don't
have any pull.As to Horde, I don't have any insight. Sorry.
The obvious solution to this sort of problem would be to introduce a
GUC variable ("allow_zero_length_integers" or some such name). I do
not recall why we decided not to do that to begin with --- should we
reconsider, or is it too late to worry about it?
I'd bury it behind a #define + configure option, if anything. I
wouldn't want any runtime cycles spent on something like this.
I hate to take the side of legacy and know it'd be feature thrash, but
I'd think it'd be appropriate to have this be a WARNING for the life
of 7.3.X and then make it an error in 7.4 where major changes/breakage
like this are expected. -sc
--
Sean Chittenden
The obvious solution to this sort of problem would be to
introduce a GUC variable ("allow_zero_length_integers" or some
such name). I do not recall why we decided not to do that to
begin with --- should we reconsider, or is it too late to worry
about it?I agree that, in the future, using a GUC variable is the best way
to manage these kinds of backward-incompatible changes. When this
was suggested for the pg_atoi problem some time after the 7.3
release, someone (you, I believe) suggested that it was too late
to add a GUC variable at that point.I think I did opine that way --- but I too am open to being
persuaded. Adding a simple boolean GUC variable is foolproof enough
that I don't believe it could break anything, and so the rationale
for the "no new features in stable releases" rule doesn't really
apply. The argument that has to be answered at this point is
"hasn't everyone who's not completely asleep at the wheel already
fixed their application code? How much should we cater to them as
are asleep?"
Well, as I mentioned to Neil on IRC, too much time has been spent on
this as is, IMHO so minimal effort/time should be spent on it. Here
are my thoughts on this:
1) Roll the ERROR back to a WARNING: doesn't really break anything
other than POLS re: an out of the way error condition that broken
code depends on. Please correct my assertion if I'm wrong.
2) Keep things as an error in 7.4.
3) Add an upgrading note in the 7.4 release notes to the extent of
''::INT is now an error and code must be fixed accordingly. Major
version bumps are the only time that most developers fix their code
and look at release notes anyway.
4) Don't use a GUC for this feature. Using a GUC sets a precedent for
supporting a feature that's been depreciated and tool authors will
cater to the list of GUCs available. Putting this behind a #define
would be better. Supporting every quirk of external applications
when PostgreSQL changes its behavior is an anti-feature that should
be avoided.
What's the harm/problem with changing things back to a warning? -sc
--
Sean Chittenden
Import Notes
Reply to msg id not found: 648.1050990058@sss.pgh.pa.us
Sean Chittenden <sean@chittenden.org> writes:
3) Add an upgrading note in the 7.4 release notes to the extent of
''::INT is now an error and code must be fixed accordingly.
How exactly would this differ from the statement already prominently
made in the 7.3 release notes?
An empty string (<literal>''</literal>) is no longer allowed as
the input into an integer field. Formerly, it was silently
interpreted as 0.
I'm not sure that giving a warning for one release cycle would really
reduce the pain all that much. There are way too many client-side
setups in which notices and warnings disappear into the bit-bucket.
regards, tom lane
3) Add an upgrading note in the 7.4 release notes to the extent of
''::INT is now an error and code must be fixed accordingly.How exactly would this differ from the statement already prominently
made in the 7.3 release notes?An empty string (<literal>''</literal>) is no longer allowed as
the input into an integer field. Formerly, it was silently
interpreted as 0.
Hrm... good point. ::shrugs:: Horde and RT be damned. It's been
~8mo since that change was made so I'm not that inclined to continue
to support their brokenness and would rather remove the patch and bring
BSD inline than be the catalyst for having PostgreSQL make a bad
change (adding a GUC) to support this. User communities need to chirp
to their nearby Horde/RT developer to have them fix their code. The
patch will live on in CVS if people really need this behavior.
Actually, the "correct" behavior is for a patch to be made for horde
and RT to fix their behavior and for that to be submitted back to the
respective horde && RT developers. Once such a patches exist, I can
add them to the ports so that FreeBSD folks still continue to have
their applications function as expected. -sc
--
Sean Chittenden
At 09:43 PM 21/04/2003 -0700, Sean Chittenden wrote:
RT and Horde are still broken
I know that RT3 works with 7.3, and I *think* 2.1 does as well. It's under
pretty active development, current version is 3.01, and there's 3.02pre3
out as well.
----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 03 5330 3172 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/
On Mon, 21 Apr 2003, Sean Chittenden wrote:
this as is, IMHO so minimal effort/time should be spent on it. Here
are my thoughts on this:1) Roll the ERROR back to a WARNING: doesn't really break anything
other than POLS re: an out of the way error condition that broken
code depends on. Please correct my assertion if I'm wrong.2) Keep things as an error in 7.4.
3) Add an upgrading note in the 7.4 release notes to the extent of
''::INT is now an error and code must be fixed accordingly. Major
version bumps are the only time that most developers fix their code
and look at release notes anyway.4) Don't use a GUC for this feature. Using a GUC sets a precedent for
supporting a feature that's been depreciated and tool authors will
cater to the list of GUCs available. Putting this behind a #define
would be better. Supporting every quirk of external applications
when PostgreSQL changes its behavior is an anti-feature that should
be avoided.What's the harm/problem with changing things back to a warning? -sc
I can see the situation where, rightly or wrongly, someone is actually relying
on the transaction being aborted and detecting an error in the broken statement
will be caught out by changing to a warning.
I say leave as an error. Let *BSD patch if they want, but let's not encourage
empty string to take meanings it doesn't have. This is just as bad as assuming
empty string means null. Indeed, given the call for empty string to mean null
from 'compatibility' folk when exactly should the backend assume 0 and not
null?
--
Nigel J. Andrews