Thread: Timestamp data type problems

Timestamp data type problems

From
Olivier PRENANT
Date:
Please help!

I'm having troubles with the timestamp type:
here's a psql output :

Script started on Mon May 29 13:32:08 2000
~ 13:32:08: psql pyrenet
Welcome to psql, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms      \h for help with SQL commands      \? for help on internal slash commands
    \g or terminate with semicolon to execute query      \q to quit
 

pyrenet=# select 'today'::date; ?column?  
------------29-05-2000
(1 row)

pyrenet=# select 'today'::timestamp                ?column?                  
-------------------------------------------Mon 29 May 00:00:00 2000 MET DST(ÎäÍ^A
(1 row)

script done on Mon May 29 13:44:30 2000

As you can see, there's no \0 after TZ.

Checking to code led me to EncodeTimeSpan that does strcpy and strncpy and
never puts a null character.

Could this be a bug?

That's breaking all my scripts because if I add a timespan value to it,
then the backend complains about bad formated external timestamp.

Please help!

This is V7.0 on Unixware 7.0.1 compiled with cc.

-- 
Olivier PRENANT             Tel:    +33-5-61-50-97-00 (Work)
Quartier d'Harraud Turrou           +33-5-61-50-97-01 (Fax)
31190 AUTERIVE                      +33-6-07-63-80-64 (GSM)
FRANCE                      Email: ohp@pyrenet.fr
------------------------------------------------------------------------------
Make your life a dream, make your dream a reality. (St Exupery)



Re: Timestamp data type problems

From
Tom Lane
Date:
Olivier PRENANT <ohp@pyrenet.fr> writes:
> pyrenet=# select 'today'::timestamp
>                  ?column?                  
> -------------------------------------------
>  Mon 29 May 00:00:00 2000 MET DST(���^A
> (1 row)

> script done on Mon May 29 13:44:30 2000

> As you can see, there's no \0 after TZ.

OK, patched for 7.0.1 (I increased MAXTZLEN as well as made the code
more careful about overrun of the allowed length).
        regards, tom lane


Re: Timestamp data type problems

From
Olivier PRENANT
Date:
I made a patch against 7.0. Do you need it?

Actually it's quite simple and only ocurs and datetime.c.

afterline 2156, I added : *(str + 28 + MAXSTZLEN) = '\0';

and after line 2166, I added : *(str + 25 + MAXTZLEN) = '\0';

It works for me !!

Regards,
On Mon, 29 May 2000, Tom Lane wrote:

> Olivier PRENANT <ohp@pyrenet.fr> writes:
> > pyrenet=# select 'today'::timestamp
> >                  ?column?                  
> > -------------------------------------------
> >  Mon 29 May 00:00:00 2000 MET DST(ÎäÍ^A
> > (1 row)
> 
> > script done on Mon May 29 13:44:30 2000
> 
> > As you can see, there's no \0 after TZ.
> 
> OK, patched for 7.0.1 (I increased MAXTZLEN as well as made the code
> more careful about overrun of the allowed length).
> 
>             regards, tom lane
> 

-- 
Olivier PRENANT             Tel:    +33-5-61-50-97-00 (Work)
Quartier d'Harraud Turrou           +33-5-61-50-97-01 (Fax)
31190 AUTERIVE                      +33-6-07-63-80-64 (GSM)
FRANCE                      Email: ohp@pyrenet.fr
------------------------------------------------------------------------------
Make your life a dream, make your dream a reality. (St Exupery)



Re: Timestamp data type problems

From
Tom Lane
Date:
Olivier PRENANT <ohp@pyrenet.fr> writes:
> I made a patch against 7.0. Do you need it?
> Actually it's quite simple and only ocurs and datetime.c.
> afterline 2156, I added : *(str + 28 + MAXSTZLEN) = '\0';
> and after line 2166, I added : *(str + 25 + MAXTZLEN) = '\0';
> It works for me !!

I used StrNCpy instead, but thanks for confirming that that fixes it
for you.
        regards, tom lane