diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2020-11-16 16:39:59 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2020-11-16 16:39:59 -0500 |
commit | 54a94064407375ac3c108e1b791303a42baf030a (patch) | |
tree | d0a69f0c53fa619d3f481b6898a302fa207ea86b /src/backend/executor/nodeBitmapOr.c | |
parent | 029fa664ecb8687eb60633b4ccf230b457a1fb77 (diff) | |
download | postgresql-54a94064407375ac3c108e1b791303a42baf030a.tar.gz postgresql-54a94064407375ac3c108e1b791303a42baf030a.zip |
Do not return NULL for error cases in satisfies_hash_partition().
Since this function is used as a CHECK constraint condition,
returning NULL is tantamount to returning TRUE, which would have the
effect of letting in a row that doesn't satisfy the hash condition.
Admittedly, the cases for which this is done should be unreachable
in practice, but that doesn't make it any less a bad idea. It also
seems like a dartboard was used to decide which error cases should
throw errors as opposed to returning NULL.
For the checks for NULL input values, I just switched it to returning
false. There's some argument that an error would be better; but the
case really should be can't-happen in a generated hash constraint,
so it's likely not worth more code for.
For the parent-relation-open-failure case, it seems like we might
as well let relation_open throw an error, instead of having an
impossible-to-diagnose constraint failure.
Back-patch to v11 where this code came in.
Discussion: https://postgr.es/m/24067.1605134819@sss.pgh.pa.us
Diffstat (limited to 'src/backend/executor/nodeBitmapOr.c')
0 files changed, 0 insertions, 0 deletions