Re: UPDATE of partition key
Amit Kapila <amit.kapila16@gmail.com>
On Fri, Jun 2, 2017 at 4:37 PM, Amit Khandekar <amitdkhan.pg@gmail.com> wrote: > On 2 June 2017 at 01:17, Robert Haas <robertmhaas@gmail.com> wrote: >> On Thu, Jun 1, 2017 at 7:41 AM, Amit Khandekar <amitdkhan.pg@gmail.com> wrote: >>>> Regarding the trigger issue, I can't claim to have a terribly strong >>>> opinion on this. I think that practically anything we do here might >>>> upset somebody, but probably any halfway-reasonable thing we choose to >>>> do will be OK for most people. However, there seems to be a >>>> discrepancy between the approach that got the most votes and the one >>>> that is implemented by the v8 patch, so that seems like something to >>>> fix. >>> >>> Yes, I have started working on updating the patch to use that approach >>> (BR and AR update triggers on source and destination partition >>> respectively, instead of delete+insert) The approach taken by the >>> patch (BR update + delete+insert triggers) didn't require any changes >>> in the way ExecDelete() and ExecInsert() were called. Now we would >>> require to skip the delete/insert triggers, so some flags need to be >>> passed to these functions, >>> I thought you already need to pass an additional flag for special handling of ctid in Delete case. For Insert, a new flag needs to be passed and need to have a check for that in few places. > or else have stripped down versions of >>> ExecDelete() and ExecInsert() which don't do other things like >>> RETURNING handling and firing triggers. >> >> See, that strikes me as a pretty good argument for firing the >> DELETE+INSERT triggers... >> >> I'm not wedded to that approach, but "what makes the code simplest?" >> is not a bad tiebreak, other things being equal. > > Yes, that sounds good to me. > I am okay if we want to go ahead with firing BR UPDATE + DELETE + INSERT triggers for an Update statement (when row movement happens) on the argument of code simplicity, but it sounds slightly odd behavior. > But I think we want to wait for other's > opinion because it is quite understandable that two triggers firing on > the same partition sounds odd. > Yeah, but I think we have to rely on docs in this case as behavior is not intuitive. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Avoid referencing off the end of subplan_partition_offsets.
- 945f71db8452 11.0 landed
-
Allow UPDATE to move rows between partitions.
- 2f178441044b 11.0 landed
-
Remove useless lookup of root partitioned rel in ExecInitModifyTable().
- dca48d145e0e 11.0 cited
-
Factor error generation out of ExecPartitionCheck.
- 19c47e7c8202 11.0 landed
-
Minor preparatory refactoring for UPDATE row movement.
- ef6087ee5fa8 11.0 landed
-
Simplify and encapsulate tuple routing support code.
- cc6337d2fed5 11.0 landed
-
Avoid coercing a whole-row variable that is already coerced.
- 1c497fa72df7 11.0 landed
-
Use ResultRelInfo ** rather than ResultRelInfo * for tuple routing.
- 60f7c0abef03 11.0 landed
-
Make RelationGetPartitionDispatchInfo expand depth-first.
- 77b6b5e9ceca 11.0 cited
-
Expand partitioned tables in PartDesc order.
- 30833ba154e0 11.0 cited
-
Use a real RT index when setting up partition tuple routing.
- f81a91db4d1c 10.0 cited
-
Fix transition tables for partition/inheritance.
- 501ed02cf6f4 10.0 cited
-
Fix confusion about number of subplans in partitioned INSERT setup.
- 78a030a44196 10.0 cited
-
Prevent BEFORE triggers from violating partitioning constraints.
- 15ce775faa42 10.0 cited
-
Fire per-statement triggers on partitioned tables.
- e180c8aa8caf 10.0 cited
-
Fix reporting of violations in ExecConstraints, again.
- c0a8ae7be392 10.0 cited
-
Don't scan partitioned tables.
- d3cc37f1d801 10.0 cited
-
Allow FDWs to push down quals without breaking EvalPlanQual rechecks.
- 5fc4c26db512 9.6.0 cited