Re: Issue in Behavior of Interval Datatype

Поиск
Список
Период
Сортировка
От Amit Kapila
Тема Re: Issue in Behavior of Interval Datatype
Дата
Msg-id 001f01cd7208$fa440900$eecc1b00$@kapila@huawei.com
обсуждение исходный текст
Ответ на Re: Issue in Behavior of Interval Datatype  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Issue in Behavior of Interval Datatype
Список pgsql-hackers
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Saturday, August 04, 2012 1:48 AM
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.

Yes, this is right that tmask need not be changed, also one more thing I
have noticed that
in file Interval.c also there is a function DecodeInterval() which is
currently little different
from DecodeInterval() in datetime.c for DTK_TZ case.
For example Assert check is commented.
Why the Assert check is commented out there?
May be due to some defect, but I am not able to think the reason for same.

Shouldn't we make this change (don't change tmask in case of DTK_TZ) in
Interval.c?

>Will fix.

Thank you very much.

With Regards,
Amit Kapila.



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Craig Ringer
Дата:
Сообщение: Re: [PATCH] Docs: Make notes on sequences and rollback more obvious
Следующее
От: Amit Kapila
Дата:
Сообщение: Re: [WIP] Performance Improvement by reducing WAL for Update Operation