aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/xml.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-01-12 00:11:39 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-01-12 00:11:39 +0000
commit208d0a232147609a58a5c8a3f21c4764baf136f2 (patch)
treeea07e9c6b7e18cb773bb1dfd3f82c62de55b7b72 /src/backend/utils/adt/xml.c
parent89c0a87fda06aade58831976c9dbc97134032d18 (diff)
downloadpostgresql-208d0a232147609a58a5c8a3f21c4764baf136f2.tar.gz
postgresql-208d0a232147609a58a5c8a3f21c4764baf136f2.zip
Fix logical errors in constraint exclusion: we cannot assume that a CHECK
constraint yields TRUE for every row of its table, only that it does not yield FALSE (a NULL result isn't disallowed). This breaks a couple of implications that would be true in two-valued logic. I had put in one such mistake in an 8.2.5 patch: foo IS NULL doesn't refute a strict operator on foo. But there was another in the original 8.2 release: NOT foo doesn't refute an expression whose truth would imply the truth of foo. Per report from Rajesh Kumar Mallah. To preserve the ability to do constraint exclusion with one partition holding NULL values, extend relation_excluded_by_constraints() to check for attnotnull flags, and add col IS NOT NULL expressions to the set of constraints we hope to refute.
Diffstat (limited to 'src/backend/utils/adt/xml.c')
0 files changed, 0 insertions, 0 deletions