On Mon, Mar 23, 2015 at 12:36:25AM -0400, Tom Lane wrote: > Bruce Momjian <br...@momjian.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. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers