Re: Zero-padding and zero-masking fixes for to_char(float)

From: Noah Misch <noah(at)leadboat(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, David Rowley <dgrowleyml(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Zero-padding and zero-masking fixes for to_char(float)
Date: 2015-03-23 06:49:15
Message-ID: 20150323064915.GA805525@tornado.leadboat.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Mar 23, 2015 at 12:36:25AM -0400, Tom Lane wrote:
> Bruce Momjian <bruce(at)momjian(dot)us> writes:
> > On Sun, Mar 22, 2015 at 12:46:08PM -0400, Noah Misch wrote:
> >> I recommend adding a "configure" test to use our snprintf.c replacements if
> >> sprintf("%.*f", 65536, 99999999999.0) gives unexpected output.
>
> > Do we really want to go to our /port snprintf just to handle 512+
> > digits?
>
> I'd rather not go that direction (that is, to using a configure test).
> It assumes that all copies of libc on a particular platform behave the
> same, which seems like a bad bet to me. I think we'd be better off to
> avoid asking libc to do anything that might not work everywhere.
>
> On the other hand, this line of thought might end up having you
> reimplement in formatting.c the same logic I put into snprintf.c
> recently, which seems a bit silly.

We already assume that a positive PGAC_FUNC_SNPRINTF_LONG_LONG_INT_MODIFIER,
PGAC_FUNC_SNPRINTF_ARG_CONTROL and PGAC_FUNC_SNPRINTF_SIZE_T_SUPPORT will hold
forever. While one can construct counterexamples, I don't recall much push to
change that. This %1000f problem evades casual testing and will fade from
hacker memory. We're liable to introduce similar bugs if everyone hacking
high level code like src/backend/utils/adt needs to remember it.

A potential compromise is to verify the configure-detected behavior during
startup_hacks(). The DBA will see clearly when the runtime libraries exhibit
a bug absent at build time.

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2015-03-23 06:51:30 Re: Display of multi-target-table Modify plan nodes in EXPLAIN
Previous Message Heikki Linnakangas 2015-03-23 06:38:03 Re: Display of multi-target-table Modify plan nodes in EXPLAIN