@@ -66,6 +66,7 @@ public class ScriptTrigger implements Trigger
6666 @ NotNull protected final TableInfo _table ;
6767 @ NotNull protected final ScriptReference _script ;
6868 @ Nullable protected volatile ManagedColumns _managedColumns = null ;
69+ protected volatile Boolean _isManagedColumnsEnabled = null ;
6970
7071 protected ScriptTrigger (@ NotNull Container c , @ NotNull TableInfo table , @ NotNull ScriptReference script )
7172 {
@@ -119,25 +120,34 @@ public boolean canStream()
119120 public @ Nullable ManagedColumns getManagedColumns ()
120121 {
121122 if (_managedColumns == null )
122- _managedColumns = resolveManagedColumns ();
123+ {
124+ var user = _table .getUserSchema () != null ? _table .getUserSchema ().getUser () : null ;
125+ var result = _invokeTableScript (_container , user , Object .class , "managedColumns" , null , () -> null );
126+ _isManagedColumnsEnabled = !(result instanceof Boolean enabled ) || enabled ;
127+
128+ if (result instanceof Map <?, ?> map )
129+ {
130+ var insert = managedColumnsFromScriptMap (map , "insert" );
131+ var update = managedColumnsFromScriptMap (map , "update" );
132+ var ignored = managedColumnsFromScriptMap (map , "ignored" );
133+
134+ _managedColumns = new ManagedColumns (insert , update , ignored );
135+ }
136+ else
137+ _managedColumns = ManagedColumns .empty ();
138+ }
123139
124140 return _managedColumns ;
125141 }
126142
127- private @ NotNull ManagedColumns resolveManagedColumns ()
143+ @ Override
144+ public boolean isManagedColumnsEnabled ()
128145 {
129- var user = _table .getUserSchema () != null ? _table .getUserSchema ().getUser () : null ;
130- var result = _invokeTableScript (_container , user , Object .class , "managedColumns" , null , () -> null );
131- if (result instanceof Map <?, ?> map )
132- {
133- var insert = managedColumnsFromScriptMap (map , "insert" );
134- var update = managedColumnsFromScriptMap (map , "update" );
135- var ignored = managedColumnsFromScriptMap (map , "ignored" );
136-
137- return new ManagedColumns (insert , update , ignored );
138- }
146+ // Ensure the flag is initialized
147+ if (_isManagedColumnsEnabled == null )
148+ getManagedColumns ();
139149
140- return ManagedColumns . empty () ;
150+ return _isManagedColumnsEnabled ;
141151 }
142152
143153 private @ NotNull Set <String > managedColumnsFromScriptMap (@ NotNull Map <?, ?> map , String key )
0 commit comments