Re: A bug in mapping attributes in ATExecAttachPartition()
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>,
Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>,
Amit Langote <amitlangote09@gmail.com>
Date: 2017-06-13T21:28:40Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > OK, I think I see the problem here. predicate_implied_by() and > predicate_refuted_by() differ in what they assume about the predicate > evaluating to NULL, but both of them assume that if the clause > evaluates to NULL, that's equivalent to false. So there's actually no > option to get the behavior we want here, which is to treat both > operands using CHECK-semantics (null is true) rather than > WHERE-semantics (null is false). > Given that, Ashutosh's proposal of passing an additional flag to > predicate_implied_by() seems like the best option. Here's a patch > implementing that. I've not reviewed the logic changes in predtest.c in detail, but I think this is a reasonable direction to go in. Two suggestions: 1. predicate_refuted_by() should grow the extra argument at the same time. There's no good reason to be asymmetric. 2. It might be clearer, and would certainly be shorter, to call the extra argument something like "null_is_true". regards, tom lane
Commits
-
Fix inconsistent capitalization.
- 29f021160ea7 10.0 landed
- 42651bdd68a1 11.0 landed
-
Fix bug in deciding whether to scan newly-attached partition.
- f85f88bcc270 10.0 landed
-
Fix lock upgrade hazard in ATExecAttachPartition.
- 972b6ec20bf0 10.0 landed
-
Code beautification for ATExecAttachPartition.
- 583df3b5c562 10.0 landed
-
Teach predtest.c about CHECK clauses to fix partitioning bugs.
- b08df9cab777 10.0 landed
-
Don't explicitly mark range partitioning columns NOT NULL.
- 3ec76ff1f2cf 10.0 cited