Commit cce1ecfc authored by Robert Haas's avatar Robert Haas

Adjust assertion in GetCurrentCommandId.

currentCommandIdUsed is only used to skip redundant increments of the
command counter, and CommandCounterIncrement() is categorically denied
under parallelism anyway.  Therefore, it's OK for
GetCurrentCommandId() to mark the counter value used, as long as it
happens in the leader, not a worker.

Prior to commit e9baa5e9, the slightly
incorrect check didn't matter, but now it does.  A test case added by
commit 18042840 uncovered the problem
by accident; it caused failures with force_parallel_mode=on/regress.

Report and review by Andres Freund.  Patch by me.

Discussion: http://postgr.es/m/20171221143106.5lhtygohvmazli3x@alap3.anarazel.de
parent 6719b238
......@@ -683,12 +683,12 @@ GetCurrentCommandId(bool used)
if (used)
{
/*
* Forbid setting currentCommandIdUsed in parallel mode, because we
* have no provision for communicating this back to the master. We
* Forbid setting currentCommandIdUsed in a parallel worker, because
* we have no provision for communicating this back to the master. We
* could relax this restriction when currentCommandIdUsed was already
* true at the start of the parallel operation.
*/
Assert(CurrentTransactionState->parallelModeLevel == 0);
Assert(!IsParallelWorker());
currentCommandIdUsed = true;
}
return currentCommandId;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment