Skip site navigation (1) Skip section navigation (2)

Re: to_char PL/MI fix

From: Karel Zak <zakkr(at)zf(dot)jcu(dot)cz>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>
Cc: pgsql-patches <pgsql-patches(at)postgreSQL(dot)org>
Subject: Re: to_char PL/MI fix
Date: 2003-02-25 08:38:54
Message-ID: 20030225083853.GB26629@zf.jcu.cz (view raw or flat)
Thread:
Lists: pgsql-patches
On Mon, Feb 24, 2003 at 08:16:07PM +0100, Peter Eisentraut wrote:
> Karel Zak writes:
> 
> >  Peter found bug in the to_char() routine for PL/MI options. This
> >  patch fix it -- but this patch doesn't contains tests or docs fixes. I
> >  will send it later.
> 
> I think there is still a problem with PL.  It puts the '+' in aligned
> position and '-' anchored to the number.  Is that correct?  If PL were to

 Yes, it's correct. The MI/PL/SG is PostgreSQL extension, the Oracle
 knows very limited version of MI only -- it means we can implement it
 by our idea.

> behave like the converse of MI and like it is documented, it would put a
> '+' in aligned position and never put a '-' anywhere.  Also, due to this
> apparent problem, PL creates extra whitespace in front of the number.

 PL shows '+' or ' ' on wanted position and not disable '-' beacuse
 the negative number without '-' is other number. I think disable '-' 
 for PL will produce mazy outputs (there is not problem implement it, 
 but I don't think it's good idea, if you need something like this you 
 can use abs() or define format that handle '-').

 The anchored '-' is disabled only if output format contains other option which 
 handle '-' (like S/SG/MI).

 The extra space for PL is for anchored '-', if format option contains MI or SG
 this space is not used.

select to_char(x, 'PL9999.999') as pl, to_char(x, 'PLMI9999.999') as plmi from num;
     pl     |    plmi    
------------+------------
 +  123.000 | +  123.000
   -123.000 |  - 123.000
  -1231.000 |  -1231.000
 + 1231.000 | + 1231.000
 +    1.900 | +    1.900
     -1.900 |  -   1.900
      -.900 |  -    .900
 +     .900 | +     .900
 +     .945 | +     .945
      -.945 |  -    .945
   -150.945 |  - 150.945
 +  150.945 | +  150.945
 
  in the 'pl' column is '-' angored to number because is there no other way
how show it.


test=# select to_char(x, '"Number:"PL9999.999MI') as pl from num;
        pl         
-------------------
 Number:+ 123.000 
 Number:  123.000-
 Number: 1231.000-
 Number:+1231.000 
 Number:+   1.900 
 Number:    1.900-
 Number:     .900-
 Number:+    .900 
 Number:+    .945 
 Number:     .945-
 Number:  150.945-
 Number:+ 150.945 

 there is not extra space beacuse MI is used.

    Karel

-- 
 Karel Zak  <zakkr(at)zf(dot)jcu(dot)cz>
 http://home.zf.jcu.cz/~zakkr/

In response to

Responses

pgsql-patches by date

Next:From: Tom LaneDate: 2003-02-25 14:35:58
Subject: Re: performance: use pread instead of lseek+read
Previous:From: Manfred SpraulDate: 2003-02-25 06:35:13
Subject: Re: performance: use pread instead of lseek+read

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group