PLs and domain constraints

Поиск
Список
Период
Сортировка
От Neil Conway
Тема PLs and domain constraints
Дата
Msg-id 43AC880A.90707@samurai.com
обсуждение исходный текст
Ответы Re: PLs and domain constraints  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
I'd like to take a look at fixing the fact that procedural languages do
not check the constraints associated with domain types. I think there
are two separate issues:

(1) In PL/PgSQL, we need to check domain constraints whenever we assign
a new value to a variable of a domain type.

(2) When the return value of a PL function is of a domain type, the
domain's constraints should be checked before the return value is used.

AFAICS, #1 is merely a Small Matter of Programming: attached is a quick
and dirty patch that implements it (no docs or regression tests, and the
exec_cast_* APIs are somewhat uglified -- I'm planning to look at
whether that can be simplified).

For #2, I'm not sure where the right place to check domain constraints
is. I was thinking about adding the check to the fmgr function call
logic[1], but the domain checking code needs an ExprContext in which to
evaluate the constraint, which wouldn't easily be accessible.

Another alternative is to add the check to the implementation of each
PL. This wouldn't be _too_ bad (the number of PLs is relatively small),
but it would be easy for PL authors to forget about, and it would be
nice to do the check in a single place rather than N places.

Comments?

-Neil

[1] As a thunk that called into the PL's handler function, to avoid
overhead for the function call critical paths.

Вложения

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

Предыдущее
От: Qingqing Zhou
Дата:
Сообщение: Re: Questions related to xlog
Следующее
От: Tom Lane
Дата:
Сообщение: Re: PLs and domain constraints