sign parsing (was: Re: [HACKERS] to_char/to_number loses sign)

Karel Zak <zakkr@zf.jcu.cz>

From: Karel Zak <zakkr@zf.jcu.cz>
To: Tom Lane <tgl@sss.pgh.pa.us>, List pgsql-patches <pgsql-patches@postgreSQL.org>
Date: 2004-10-27T11:59:38Z
Lists: pgsql-hackers

Attachments

On Tue, 2004-10-26 at 13:27 -0400, Tom Lane wrote:
> Karel Zak <zakkr@zf.jcu.cz> writes:
> > Yes, you're right. It strange, but NUM_S missing there. The conversion
> > from string to number is less stable part of formatting.c...
> 
> > The patch is in the attachment.
> 
> This patch causes the regression tests to fail.  I think you need to
> consider the to_char() side of it more carefully.

Sorry of this in beta version... 

The problem was bigger than I expected. I hope it's fixed in actual
patch. All regression tests pass.

The patch changes two lines in regression test too. It's because old
version of to_number() allows to use wrong number input and this input
was in regression test. The call to_char(-0.01, ' 9 9 . 9 9 S'); never
produced ' . 0 1 -' but always ' . 0 1-' only.

-SELECT '' AS to_number_13, to_number(' . 0 1 -', ' 9 9 . 9 9 S');
+SELECT '' AS to_number_13, to_number(' . 0 1-', ' 9 9 . 9 9 S');
                                            ^^^
 'S' = locale sign and it must be always anchored to last or first
number.

Again sorry,
  Karel

-- 
Karel Zak
http://home.zf.jcu.cz/~zakkr