Re: Are scalar type's in/out functions implicitly STRICT?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Are scalar type's in/out functions implicitly STRICT?
Дата
Msg-id 1341.1046400277@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Are scalar type's in/out functions implicitly STRICT?  (Denis Zaitsev <zzz@cd-club.ru>)
Ответы Re: Are scalar type's in/out functions implicitly STRICT?  (Denis Zaitsev <zzz@cd-club.ru>)
Список pgsql-sql
Denis Zaitsev <zzz@cd-club.ru> writes:
> So, I create some new scalar type and I don't declare its in/out
> functions as STRICT.  But PostgreSQL copes with them such as they
> would be STRICT - they never get the NULL value.

This is likely true in many places --- for example, COPY has a shortcut
because it wants to substitute \N for nulls.  It would not be a bright
idea to assume that it's true in every place and forevermore.  In
general, if you have a C function and don't want to be bothered with
explicit PG_ISNULL testing, you'd better mark it STRICT.

An example of an easy way to crash an I/O function without such guards
is to invoke it explicitly:

regression=# select textin(null::cstring);textin
--------

(1 row)

regression=# select textout(null::text);textout
---------

(1 row)

        regards, tom lane


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

Предыдущее
От: Denis Zaitsev
Дата:
Сообщение: Are scalar type's in/out functions implicitly STRICT?
Следующее
От: Bruno Wolff III
Дата:
Сообщение: Re: Are scalar type's in/out functions implicitly STRICT?