Re: Issue in Behavior of Interval Datatype - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Issue in Behavior of Interval Datatype
Date
Msg-id 10515.1344025083@sss.pgh.pa.us
Whole thread Raw
In response to Issue in Behavior of Interval Datatype  (Amit Kapila <amit.kapila@huawei.com>)
Responses Re: Issue in Behavior of Interval Datatype
List pgsql-hackers
Amit Kapila <amit.kapila@huawei.com> writes:
> select (interval '56:48'  minute to second);
> result$B!'(B00:56:48
> select (interval '-56:48'  minute to second);
> result$B!'(B-56:48:00
> select (interval '+56:48'  minute to second);
> result$B!'(B56:48:00

> I have checked the code and found that in function DecodeInterval(), for
> timezone case (DTK_TZ) it uses INTERVAL_FULL_RANGE irrespective of range
> passed by user.

> However if use the range passed as argument in function DecodeInterval(),
> the result of using $B!F(B+$B!G(B or $B!F(B-$B!F(B is same as without using it.

> Is there any particular reason for ignoring the range for DTK_TZ case in
> DecodeInterval() function?

I think you are right; this if-block should be exactly like the DTK_TIME
case except for handling the prepended sign.  That also raises the
question why it is changing the tmask value returned by DecodeTime.
It seems to be doing exactly the wrong thing there.  Test case:

regression=# select (interval '56:48 56:48'  );
ERROR:  invalid input syntax for type interval: "56:48 56:48"
LINE 1: select (interval '56:48 56:48'  );                        ^
regression=# select (interval '56:48 +56:48'  );interval 
----------56:48:00
(1 row)

The second one fails to fail because an inappropriate tmask value got
included into fmask.

Will fix.
        regards, tom lane


pgsql-hackers by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: [PATCH] Docs: Make notes on sequences and rollback more obvious
Next
From: Craig Ringer
Date:
Subject: Re: [PATCH] Docs: Make notes on sequences and rollback more obvious