On 2015-05-28 14:37:43 -0700, Peter Geoghegan wrote:
> To fix, allow ParseState to reflect that an individual statement can be
> both p_is_insert and p_is_update at the same time.
> /* Process DO UPDATE */
> if (onConflictClause->action == ONCONFLICT_UPDATE)
> {
> + /* p_is_update must be set here, after INSERT targetlist processing */
> + pstate->p_is_update = true;
> +
It's not particularly pretty that you document in the commit message
that both is_insert and is_update can be set at the same time, and then
it has constraints like the above.
But that's more crummy API's fault than yours.
I'm right now not really coming up with a better idea how to fix
this. So I guess I'll apply something close to this tomorrow.