On 2022-Jan-17, Japin Li wrote: > So for NOT MATCHED, we are expected not use the target table columns. > > The code comes from execMerge.c says: > > /* > * Make source tuple available to ExecQual and ExecProject. We don't need > * the target tuple, since the WHEN quals and the targetlist can't refer > to > * the target columns. > */ > econtext->ecxt_scantuple = NULL; > econtext->ecxt_innertuple = slot; > econtext->ecxt_outertuple = NULL; > > It will set econtext->ecxt_scantuple to NULL, which leads the crash.
Right. So this was broken by the fact that I recently allowed MATCHED actions to target DO NOTHING; previously, only NOT MATCHED actions could do so. So the bug was present, but it wasn't accessible. > Should we setNamespaceVisibilityForRTE() for CMD_NOTHING? I try to set it > and it works as expected. OTOH, the system attributes from target table > also cannot be accessible. I'm not sure the v6 patch how to implement this > limitation. I changed this block so that it depends on whether the clause is MATCHED or NOT MATCHED, rather than the action. I think it was pretty nonsensical for it to be keyed on action type, and it made the code needlessly longer. Thank you! -- Álvaro Herrera Valdivia, Chile — https://www.EnterpriseDB.com/ "All rings of power are equal, But some rings of power are more equal than others." (George Orwell's The Lord of the Rings)