2017-12-30 0:16 GMT+01:00 Tom Lane <t...@sss.pgh.pa.us>:

> I wrote:
> > I'll stick this into the January commitfest, but I'd like to get it
> > reviewed and committed pretty soon, because there are follow-on patches
> > that need to get done in time for v11 --- in particular, we need to close
> > out the lack of plpgsql support for domains-over-composite.
>
> I hacked on the domain-support problem a bit and it worked out well,
> so attached is a revised patch that incorporates that.  This caused
> me to revise some assumptions about what expandedrecord.c's internal
> invariants ought to be, so it's probably better to look at this as
> a new patch rather than a diff from v1.
>
> Mostly this is changes internal to expandedrecord.c, but I cleaned up
> some code in plpgsql that tests for domain-ness, and I also added support
> in ExecEvalFieldSelect for extracting a field directly from an expanded
> record without flattening it into a tuple first.  It hadn't been clear
> that that was worth the trouble before, but it definitely does come up
> while applying domain constraints.  For example, having that fast path
> makes about a 2X speed difference in a test like this:
>
> create type two_ints as (f1 int, f2 int);
> create domain ordered_ints as two_ints check((value).f1 <= (value).f2);
>
> \timing on
>
> do $$
> declare d ordered_ints;
> begin
>   for i in 1..3000000 loop
>     d.f2 := i;
>     d.f1 := i;
>   end loop;
> end$$;
>
>
> There are still a couple of soft spots having to do with enforcing
> domain constraints against null composite values, e.g. if there's
> a constraint that would reject a null value we don't notice that
> at DECLARE time.  I think there's not much point in being strict
> about that until we have support for initializers for composite
> variables.  Which is definitely worth doing but it seems like it
> could be a separate patch.
>
> The patches in <11986.1514407...@sss.pgh.pa.us> still apply over this
> with just some line-number offsets, so I won't post a new version
> of those.
>
>
all test passed on my comp too.

I think so these patches can be useful for schema variables too.

Regards

Pavel


>                         regards, tom lane
>
>

Reply via email to