@@ -29,9 +29,9 @@ CustomScanMethods partition_router_plan_methods;
29
29
CustomExecMethods partition_router_exec_methods ;
30
30
31
31
static TupleTableSlot * router_delete_tuple (TupleTableSlot * slot ,
32
- ItemPointer tupleid ,
33
- EPQState * epqstate ,
34
- EState * estate );
32
+ ItemPointer tupleid ,
33
+ EPQState * epqstate ,
34
+ EState * estate );
35
35
36
36
void
37
37
init_partition_router_static_data (void )
@@ -232,32 +232,34 @@ partition_router_explain(CustomScanState *node, List *ancestors, ExplainState *e
232
232
/*
233
233
* ----------------------------------------------------------------
234
234
* ExecDeleteInternal
235
- * Basicly is a copy of ExecDelete from executor/nodeModifyTable.c
235
+ * This is a modified copy of ExecDelete from executor/nodeModifyTable.c
236
236
* ----------------------------------------------------------------
237
237
*/
238
238
239
239
static TupleTableSlot *
240
240
router_delete_tuple (TupleTableSlot * slot ,
241
- ItemPointer tupleid ,
242
- EPQState * epqstate ,
243
- EState * estate )
241
+ ItemPointer tupleid ,
242
+ EPQState * epqstate ,
243
+ EState * estate )
244
244
{
245
245
ResultRelInfo * rri ;
246
246
Relation rel ;
247
247
HTSU_Result result ;
248
248
HeapUpdateFailureData hufd ;
249
249
250
- /*
251
- * get information on the (current) result relation
252
- */
250
+ EvalPlanQualSetSlot ( epqstate , slot );
251
+
252
+ /* Get information on the (current) result relation */
253
253
rri = estate -> es_result_relation_info ;
254
254
rel = rri -> ri_RelationDesc ;
255
255
256
256
/* BEFORE ROW UPDATE triggers */
257
257
if (rri -> ri_TrigDesc &&
258
258
rri -> ri_TrigDesc -> trig_update_before_row )
259
259
{
260
- elog (INFO , "kek!" );
260
+ slot = ExecBRUpdateTriggers (estate , epqstate , rri , tupleid , NULL , slot );
261
+ if (TupIsNull (slot ))
262
+ return NULL ;
261
263
}
262
264
263
265
/* BEFORE ROW DELETE triggers */
@@ -270,10 +272,8 @@ router_delete_tuple(TupleTableSlot *slot,
270
272
271
273
if (tupleid != NULL )
272
274
{
273
- EvalPlanQualSetSlot (epqstate , slot );
274
-
275
275
ldelete :
276
- /* delete the tuple */
276
+ /* Delete the tuple */
277
277
result = heap_delete_compat (rel , tupleid ,
278
278
estate -> es_output_cid ,
279
279
estate -> es_crosscheck_snapshot ,
@@ -328,8 +328,7 @@ router_delete_tuple(TupleTableSlot *slot,
328
328
elog (ERROR , "unrecognized heap_delete status: %u" , result );
329
329
}
330
330
}
331
- else
332
- elog (ERROR , "tupleid should be specified for deletion" );
331
+ else elog (ERROR , "tupleid should be specified for deletion" );
333
332
334
333
/* AFTER ROW DELETE triggers */
335
334
ExecARDeleteTriggersCompat (estate , rri , tupleid , NULL , NULL );
0 commit comments