Re: Check constraint on domain over an array not executed for array literals - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Check constraint on domain over an array not executed for array literals
Date
Msg-id 4AFDB873.8030404@enterprisedb.com
Whole thread Raw
In response to Re: Check constraint on domain over an array not executed for array literals  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
List pgsql-hackers
Heikki Linnakangas wrote:
> Tom Lane wrote:
>> Hm.  I concur that this special-case code is failing to consider the
>> possibility that the target type is domain-over-array-type rather than
>> just array-type.  I think though that this patch is a bit of a kluge,
>> because it delivers a mislabeled expression tree.  The result of the
>> transformArrayExpr() is not really of type myintarray.  What it is is
>> a plain int[] value; we shouldn't label it as being already myintarray,
>> because it hasn't passed the domain checks.  At the moment there is
>> probably not any visible effect of that, but in the future it could
>> lead to misoptimization, so I think it's important to get it right.
>>
>> My inclination is to apply getBaseTypeAndTypmod to the targetType and
>> pass that as the array type to transformArrayExpr, then instead of
>> considering the job done, fall through to transformTypeCast, which will
>> either do nothing or attach a domain coercion node.
> 
> Hmm, yeah that's more accurate.

Ok, committed another patch doing exactly that.

--  Heikki Linnakangas EnterpriseDB   http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: "Florian G. Pflug"
Date:
Subject: Re: Inspection of row types in pl/pgsql and pl/sql
Next
From: Heikki Linnakangas
Date:
Subject: Hot standby, overflowed snapshots, testing