Replace ExecBRInsertTriggersCompat with fixed code

PG12 implementation of ExecBRInsertTriggers changes given slot in
place and return Boolean indicating success, which is different from
earlier implementations where it returned new slot value. This commit
fixes a bug in the compatability macro and its usage.
This commit is contained in:
Ruslan Fomkin 2020-02-12 11:36:51 +01:00 committed by Erik Nordström
parent d2d5a484ce
commit fe87ac40be
2 changed files with 6 additions and 16 deletions

View File

@ -383,18 +383,6 @@ MakeTupleTableSlotCompat(TupleDesc tupdesc, void *tts_ops)
#endif
/* ExecBRInsertTriggers */
#if PG12_LT
#define ExecBRInsertTriggersCompat(estate, relinfo, slot) \
do \
{ \
slot = ExecBRInsertTriggers(estate, relinfo, slot); \
} while (0)
#else
#define ExecBRInsertTriggersCompat(estate, relinfo, slot) \
ExecBRInsertTriggers(estate, relinfo, slot)
#endif
/* fmgr
* In a9c35cf postgres changed how it calls SQL functions so that the number of
* argument-slots allocated is chosen dynamically, instead of being fixed. This

View File

@ -332,10 +332,12 @@ copyfrom(CopyChunkState *ccstate, List *range_table, Hypertable *ht)
/* BEFORE ROW INSERT Triggers */
if (resultRelInfo->ri_TrigDesc && resultRelInfo->ri_TrigDesc->trig_insert_before_row)
{
ExecBRInsertTriggersCompat(estate, resultRelInfo, myslot);
if (myslot == NULL) /* "do nothing" */
skip_tuple = true;
#if PG12_LT
myslot = ExecBRInsertTriggers(estate, resultRelInfo, myslot);
skip_tuple = (myslot == NULL);
#else
skip_tuple = !ExecBRInsertTriggers(estate, resultRelInfo, myslot);
#endif
}
if (!skip_tuple)