Test for trigger condition accessing system attributes
Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
From: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2018-05-10T08:58:11Z
Lists: pgsql-hackers
Attachments
- 0001-Testcase-accessing-system-columns-from-a-trigger-fun.patch (text/x-patch) patch 0001
- 0002-Add-a-warning-message-when-creating-EEOP_INNER-OUTER.patch (text/x-patch) patch 0002
Hi, I was investigating the cases when the system attributes are accessed beyond the scans. After investigating set_plan_references(), I thought that we never access system attributes beyond scans. This lead me to assume that EEOP_INNER/OUTER_SYSVAR are not needed since we do not access system attributes from an inner or outer slot. I removed the defintions and code using those and ran regression. All the tests passed. So, I was about to conclude that my assumption is correct. But then looking at TriggerEnabled() I realised that we also (ab?)use INNER/OUTER Vars for OLD/NEW tuples for trigger condition. If the WHEN condition in CREATE TRIGGER command refers to a system attribute, we will end up having INNER/OUTER var refering a system attribute, thus exercising code for EEOP_INNER/OUTER_SYSVAR. Here's patch containing a testcase exercizing that code using EEOP_INNER/OUTER_SYSVAR. 0001 is the actual testcase and the output 0002 adds warnings where EEOP_OUTER/INNER_SYSVAR are used. This patch is not for commit. It is only to make sure that the code gets exercised by the test. When both the patches are applied, the test shows those warnings. -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company
Commits
-
Add test case for EEOP_INNER_SYSVAR/EEOP_OUTER_SYSVAR executor opcodes.
- 17b715c634d4 12.0 landed