PLs and domain constraints
От | Neil Conway |
---|---|
Тема | PLs and domain constraints |
Дата | |
Msg-id | 43AC880A.90707@samurai.com обсуждение исходный текст |
Ответы |
Re: PLs and domain constraints
|
Список | 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 по дате отправления: