You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -1996,6 +1990,11 @@ public void fireRowTrigger(Container c, User user, TriggerType type, boolean bef
1996
1990
1997
1991
if (newRow != null && before)
1998
1992
{
1993
+
varmanaged = script.getManagedColumns();
1994
+
Set<String> managedCols = null;
1995
+
if (managed != null)
1996
+
managedCols = managed.getColumns(type);
1997
+
1999
1998
// Verify the trigger did not add or remove columns that are not managed
2000
1999
if (!newRow.keySet().equals(keysBeforeTrigger))
2001
2000
{
@@ -2006,10 +2005,15 @@ public void fireRowTrigger(Container c, User user, TriggerType type, boolean bef
2006
2005
removed.removeAll(newRow.keySet());
2007
2006
2008
2007
// managed column removals are intentional
2009
-
if (managed != null)
2008
+
if (managedCols != null)
2010
2009
{
2011
-
added.removeAll(managed);
2012
-
removed.removeAll(managed);
2010
+
added.removeAll(managedCols);
2011
+
removed.removeAll(managedCols);
2012
+
if (managed.ignored() != null)
2013
+
{
2014
+
added.removeAll(managed.ignored());
2015
+
removed.removeAll(managed.ignored());
2016
+
}
2013
2017
}
2014
2018
2015
2019
if (!added.isEmpty() || !removed.isEmpty())
@@ -2024,12 +2028,12 @@ public void fireRowTrigger(Container c, User user, TriggerType type, boolean bef
2024
2028
}
2025
2029
}
2026
2030
2027
-
// Verify the trigger handled every declared column it was responsible for
2028
-
if (managed != null)
2031
+
// Verify that update triggers handle every managed column
2032
+
if (managedCols != null && type == TriggerType.UPDATE)
2029
2033
{
2030
-
for (varcol : managed)
2034
+
for (varcol : managedCols)
2031
2035
{
2032
-
if (newRow.get(col) == Trigger.COLUMN_SENTINEL)
2036
+
if (!newRow.containsKey(col))
2033
2037
errors.addFieldError(col, "Trigger '" + script.getName() + "' declared column '" + col + "' in getManagedColumns() but did not set a value for it. Set null to clear or provide a value.");
0 commit comments