| From: | Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com> | 
|---|---|
| To: | PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org> | 
| Subject: | multirange constructor strictness | 
| Date: | 2021-04-21 20:56:54 | 
| Message-ID: | 0f783a96-8d67-9e71-996b-f34a7352eeef@enterprisedb.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
The multirange constructors created in makeMultirangeConstructors() are:
multirange_constructor0 -> not strict
multirange_constructor1 -> strict
multirange_constructor2 -> not strict
And both multirange_constructor1 and multirange_constructor2 contain 
code like
/*
  * These checks should be guaranteed by our signature, but let's do them
  * just in case.
  */
if (PG_ARGISNULL(0))
     ereport(ERROR,
             (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
              errmsg("multirange values cannot contain NULL members")));
In case of multirange_constructor2 the "should be guaranteed" comment is 
not actually true right now.  In case of multirange_constructor1, maybe 
this should be downgraded to an elog or assert or just removed.
Is there a reason why we can't make them all three strict or all not 
strict?  (Obviously, it doesn't matter for multirange_constructor0.)  Is 
the fact that multirange_constructor2 is variadic the issue?  Maybe at 
least some more comments would be helpful.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2021-04-21 20:58:40 | Re: when the startup process doesn't | 
| Previous Message | Tom Lane | 2021-04-21 20:55:28 | Re: when the startup process doesn't |