Andrew Dunstan <andrew@dunslane.net> writes:
> Tom Lane wrote:
>> ... Seems like it's nearly a one-liner fix, too.
> Well, what I have in mind is a bit bigger, but not large. See attached
> patch.
Hmm, you do need two instances of the loop, don't you? Might be
better to refactor along the lines of
if (has_lock_conflicts(te, running_te) || has_lock_conflicts(running_te, te)) // has a conflict
...
// true if te1 requires exclusive lock on any dependency of te2
static bool
has_lock_conflicts(te1, te2)
{for (j = 0; j < te1->nLockDeps; j++){ for (k = 0; k < te2->nDeps; k++) { if (te1->lockDeps[j] ==
te2->dependencies[k]) return true; }}return false;
}
regards, tom lane