@@ -93,11 +93,12 @@ func (t *TriggerExecutor) CheckPrivileges(ctx *sql.Context, opChecker sql.Privil
9393}
9494
9595type triggerIter struct {
96- child sql.RowIter
97- executionLogic sql.Node
98- triggerTime TriggerTime
99- triggerEvent TriggerEvent
100- ctx * sql.Context
96+ child sql.RowIter
97+ executionLogic sql.Node
98+ triggerTime TriggerTime
99+ triggerEvent TriggerEvent
100+ triggerDefinition sql.TriggerDefinition
101+ ctx * sql.Context
101102}
102103
103104// prependRowInPlanForTriggerExecution returns a transformation function that prepends the row given to any row source in a query
@@ -172,9 +173,15 @@ func (t *triggerIter) Next(ctx *sql.Context) (row sql.Row, returnErr error) {
172173 // For some logic statements, we want to return the result of the logic operation as our row, e.g. a Set that alters
173174 // the fields of the new row
174175 if ok , returnRow := shouldUseLogicResult (logic , logicRow ); ok {
176+ if t .triggerDefinition .Callback != nil {
177+ t .triggerDefinition .Callback ()
178+ }
175179 return returnRow , nil
176180 }
177181
182+ if t .triggerDefinition .Callback != nil {
183+ t .triggerDefinition .Callback ()
184+ }
178185 return childRow , nil
179186}
180187
@@ -228,11 +235,12 @@ func (t *TriggerExecutor) RowIter(ctx *sql.Context, row sql.Row) (sql.RowIter, e
228235 }
229236
230237 return & triggerIter {
231- child : childIter ,
232- triggerTime : t .TriggerTime ,
233- triggerEvent : t .TriggerEvent ,
234- executionLogic : t .right ,
235- ctx : ctx ,
238+ child : childIter ,
239+ triggerTime : t .TriggerTime ,
240+ triggerEvent : t .TriggerEvent ,
241+ triggerDefinition : t .TriggerDefinition , // add this
242+ executionLogic : t .right ,
243+ ctx : ctx ,
236244 }, nil
237245}
238246
0 commit comments