Re: Re: [pgsql-ru-general] индекс по полю JSON без функции

From: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
To: Sergey Konoplev <gray(dot)ru(at)gmail(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Re: [pgsql-ru-general] индекс по полю JSON без функции
Date: 2013-09-25 22:20:06
Message-ID: 20130925222006.GB4400@vdsl.uvw.ru
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

>> хочу построить по нему индекс
>>
>> CREATE INDEX ON "table" (("field"->>'time'))
>> WHERE ("field"->>'time') IS NOT NULL;
>>
>> но поскольку в SQL запросах хочется оперировать полем time именно как
>> TIMESTAMP (а там CHECKER еще накинут на то что проверяет что time
>> это либо null либо timestamp).
>> то соответственно хочется индекс строить по типу timestamp (иначе
>> после приведения этот индекс не используется)
>>
>> CREATE INDEX ON "table" ((("field"->>'time')::timestamp(0)))
>> WHERE ("field"->>'time') IS NOT NULL;
>>
>> ругается что должно быть immutable.

> immutable cast из text в timestamp(tz) в postgres нет, т.к. результат
> зависит от внешних факторов, таких как time zone сервера (если без tz)
> и DateStyle. Можно написать функцию, например,
> full_iso8601_to_timestamp(text), где будет проверка на то что текст в
> полном ISO 8601 формате (со всем чем можно и таймзоной), тогда это
> будет действительно immutable, и это смело можно будет применять в
> индексах. Либо в соответствии с какой-то другой договорённостью,
> главное чтобы небыло неоднозначностей.

у меня в тех JSON время хранится с зоной

POSIX::strftime('%F %T %z', localtime)

Постгрис зону тут отлично распознает

я просто функцию не хотел городить выделенную.
функции вещь - хреново документируемая.
--

. ''`. Dmitry E. Oboukhov
: :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537

In response to

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Sergey Konoplev 2013-09-25 22:34:55 Re: [pgsql-ru-general] Re: [pgsql-ru-general] индекс по полю JSON без функции
Previous Message Sergey Konoplev 2013-09-25 20:36:51 Re: [pgsql-ru-general] индекс по полю JSON без функции