Commit 34479d9a authored by Peter Eisentraut's avatar Peter Eisentraut

Remove dead foreign key optimization code

The ri_KeysEqual() calls in the foreign-key trigger functions to
optimize away some updates are useless because since
adfeef55 those triggers are not enqueued
at all.  (It's also not useful to keep these checks as some kind of
backstop, since it's also semantically correct to just run the full
check even with equal keys.)
Reviewed-by: default avatarDaniel Gustafsson <daniel@yesql.se>
parent 5fde047f
...@@ -744,20 +744,6 @@ ri_restrict(TriggerData *trigdata, bool is_no_action) ...@@ -744,20 +744,6 @@ ri_restrict(TriggerData *trigdata, bool is_no_action)
break; break;
} }
/*
* In UPDATE, no need to do anything if old and new keys are equal
*/
if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
{
HeapTuple new_row = trigdata->tg_newtuple;
if (ri_KeysEqual(pk_rel, old_row, new_row, riinfo, true))
{
heap_close(fk_rel, RowShareLock);
return PointerGetDatum(NULL);
}
}
/* /*
* If another PK row now exists providing the old key values, we * If another PK row now exists providing the old key values, we
* should not do anything. However, this check should only be * should not do anything. However, this check should only be
...@@ -1098,15 +1084,6 @@ RI_FKey_cascade_upd(PG_FUNCTION_ARGS) ...@@ -1098,15 +1084,6 @@ RI_FKey_cascade_upd(PG_FUNCTION_ARGS)
break; break;
} }
/*
* No need to do anything if old and new keys are equal
*/
if (ri_KeysEqual(pk_rel, old_row, new_row, riinfo, true))
{
heap_close(fk_rel, RowExclusiveLock);
return PointerGetDatum(NULL);
}
if (SPI_connect() != SPI_OK_CONNECT) if (SPI_connect() != SPI_OK_CONNECT)
elog(ERROR, "SPI_connect failed"); elog(ERROR, "SPI_connect failed");
...@@ -1316,20 +1293,6 @@ ri_setnull(TriggerData *trigdata) ...@@ -1316,20 +1293,6 @@ ri_setnull(TriggerData *trigdata)
break; break;
} }
/*
* In UPDATE, no need to do anything if old and new keys are equal
*/
if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
{
HeapTuple new_row = trigdata->tg_newtuple;
if (ri_KeysEqual(pk_rel, old_row, new_row, riinfo, true))
{
heap_close(fk_rel, RowExclusiveLock);
return PointerGetDatum(NULL);
}
}
if (SPI_connect() != SPI_OK_CONNECT) if (SPI_connect() != SPI_OK_CONNECT)
elog(ERROR, "SPI_connect failed"); elog(ERROR, "SPI_connect failed");
...@@ -1536,20 +1499,6 @@ ri_setdefault(TriggerData *trigdata) ...@@ -1536,20 +1499,6 @@ ri_setdefault(TriggerData *trigdata)
break; break;
} }
/*
* In UPDATE, no need to do anything if old and new keys are equal
*/
if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
{
HeapTuple new_row = trigdata->tg_newtuple;
if (ri_KeysEqual(pk_rel, old_row, new_row, riinfo, true))
{
heap_close(fk_rel, RowExclusiveLock);
return PointerGetDatum(NULL);
}
}
if (SPI_connect() != SPI_OK_CONNECT) if (SPI_connect() != SPI_OK_CONNECT)
elog(ERROR, "SPI_connect failed"); elog(ERROR, "SPI_connect failed");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment