18#include "utils/fmgrprotos.h"
40 (
errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
41 errmsg(
"suppress_redundant_updates_trigger: must be called as trigger")));
46 (
errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
47 errmsg(
"suppress_redundant_updates_trigger: must be called on update")));
52 (
errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
53 errmsg(
"suppress_redundant_updates_trigger: must be called before update")));
58 (
errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
59 errmsg(
"suppress_redundant_updates_trigger: must be called for each row")));
65 newheader = newtuple->
t_data;
66 oldheader = oldtuple->t_data;
69 if (newtuple->
t_len == oldtuple->t_len &&
70 newheader->t_hoff == oldheader->t_hoff &&
73 ((newheader->t_infomask & ~HEAP_XACT_MASK) ==
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define HeapTupleHeaderGetNatts(tup)
#define SizeofHeapTupleHeader
if(TABLE==NULL||TABLE_index==NULL)
static Datum PointerGetDatum(const void *X)
Datum suppress_redundant_updates_trigger(PG_FUNCTION_ARGS)
#define TRIGGER_FIRED_BEFORE(event)
#define CALLED_AS_TRIGGER(fcinfo)
#define TRIGGER_FIRED_FOR_ROW(event)
#define TRIGGER_FIRED_BY_UPDATE(event)