Re: [HACKERS] 9.3 reference constraint regression

2013-12-18 Thread Alvaro Herrera
Alvaro Herrera wrote: > Andres Freund wrote: > > > I have to say, it makes me really uncomfortable to take such > > shortcuts. In other branches we are doing liveliness checks with > > MultiXactIdIsRunning() et al. Why isn't that necessary here? And how > > likely is that this won't cause breakage

Re: [HACKERS] 9.3 reference constraint regression

2013-12-18 Thread Alvaro Herrera
Andres Freund wrote: > I have to say, it makes me really uncomfortable to take such > shortcuts. In other branches we are doing liveliness checks with > MultiXactIdIsRunning() et al. Why isn't that necessary here? And how > likely is that this won't cause breakage somewhere down the line because >

Re: [HACKERS] 9.3 reference constraint regression

2013-12-18 Thread Andres Freund
Hi, On 2013-12-17 18:27:26 -0300, Alvaro Herrera wrote: > > Well, it would help if those cases weren't dead code. Neither > > heap_update nor heap_delete are ever called in the "no wait" case at > > all. Yea, that sucks, maybe we ought to change that in HEAD. But there very well might be externa

Re: [HACKERS] 9.3 reference constraint regression

2013-12-17 Thread Alvaro Herrera
Alvaro Herrera wrote: > Well, it would help if those cases weren't dead code. Neither > heap_update nor heap_delete are ever called in the "no wait" case at > all. Only heap_lock_tuple is, and I can't see any misbehavior there > either, even with HeapTupleBeingUpdated returned when there's a > n

Re: [HACKERS] 9.3 reference constraint regression

2013-12-17 Thread Alvaro Herrera
Andres Freund wrote: > On 2013-12-16 17:43:37 -0300, Alvaro Herrera wrote: > > Alvaro Herrera wrote: > > > > > This POC patch changes the two places in HeapTupleSatisfiesUpdate that > > > need to be touched for this to work. This is probably too simplistic, > > > in that I make the involved cases

Re: [HACKERS] 9.3 reference constraint regression

2013-12-16 Thread Andres Freund
On 2013-12-16 17:43:37 -0300, Alvaro Herrera wrote: > Alvaro Herrera wrote: > > > This POC patch changes the two places in HeapTupleSatisfiesUpdate that > > need to be touched for this to work. This is probably too simplistic, > > in that I make the involved cases return HeapTupleBeingUpdated wit

Re: [HACKERS] 9.3 reference constraint regression

2013-12-16 Thread Alvaro Herrera
Alvaro Herrera wrote: > This POC patch changes the two places in HeapTupleSatisfiesUpdate that > need to be touched for this to work. This is probably too simplistic, > in that I make the involved cases return HeapTupleBeingUpdated without > checking that there actually are remote lockers, which

Re: [HACKERS] 9.3 reference constraint regression

2013-12-16 Thread Alvaro Herrera
Alvaro Herrera wrote: > The fix for the immediate bug is to add some code to HTSU so that it > checks for locks by other transactions even when the tuple was created > by us. I haven't looked at the other tqual routines yet, but I imagine > they will need equivalent fixes. This POC patch changes

Re: [HACKERS] 9.3 reference constraint regression

2013-12-11 Thread Alvaro Herrera
Daniel Wood wrote: > In 9.3 I can delete the parent of a parent-child relation if the child row > is an uncommitted insert and I first update the parent. Interesting test case, thanks. I traced through it and promptly noticed that the problem is that HeapTupleSatisfiesUpdate is failing to conside

[HACKERS] 9.3 reference constraint regression

2013-12-11 Thread Daniel Wood
In 9.3 I can delete the parent of a parent-child relation if the child row is an uncommitted insert and I first update the parent. USER1: drop table child; drop table parent; create table parent (i int, c char(3)); create unique index parent_idx on parent (i); insert into parent values (1, 'AAA');