PLs and domain constraints

From: Neil Conway <neilc(at)samurai(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: PLs and domain constraints
Date: 2005-12-23 23:28:10
Message-ID: 43AC880A.90707@samurai.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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.

Attachment Content-Type Size
pl_domain_constr-1.patch.gz application/x-tgz 4.8 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2005-12-23 23:38:39 Re: PLs and domain constraints
Previous Message Tom Lane 2005-12-23 23:22:36 Re: default resource limits