Re: UPDATE run check constraints for affected columns only
jian he <jian.universality@gmail.com>
From: jian he <jian.universality@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-03-06T02:17:35Z
Lists: pgsql-hackers
Attachments
- v6-0001-skip-unnecessary-check-constraint-verification-for-UPDATE.patch (text/x-patch) patch v6-0001
hi. We cache ri_CheckConstraintExprs in ExecConstraints and must initialize them all if different actions like INSERT and UPDATE, happen together in a query. Both INSERT and UPDATE need to use these ri_CheckConstraintExprs. Invoke INSERT AND UPDATE together can happen within MERGE command. We confirm it's a MERGE operation by checking that resultRelInfo->ri_MergeActions is not NIL. See ExecMergeNotMatched and ExecMergeMatched. For cross-partition updates (ExecCrossPartitionUpdate), the operation splits into an INSERT and DELETE, we can treat it as a single action. -- jian https://www.enterprisedb.com/