mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
Minor code rearrangement to save a few cycles in RI_FKey_check when
the subject tuple is already deleted: we need not open the pk_rel until after we check that.
This commit is contained in:
parent
548237fc84
commit
d7c310c1fa
@ -17,7 +17,7 @@
|
||||
*
|
||||
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/ri_triggers.c,v 1.86 2006/07/14 14:52:24 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/ri_triggers.c,v 1.87 2006/08/21 19:15:29 tgl Exp $
|
||||
*
|
||||
* ----------
|
||||
*/
|
||||
@ -193,17 +193,11 @@ RI_FKey_check(PG_FUNCTION_ARGS)
|
||||
*/
|
||||
ri_CheckTrigger(fcinfo, "RI_FKey_check", RI_TRIGTYPE_INUP);
|
||||
|
||||
/*
|
||||
* Get arguments.
|
||||
*/
|
||||
tgnargs = trigdata->tg_trigger->tgnargs;
|
||||
tgargs = trigdata->tg_trigger->tgargs;
|
||||
|
||||
/*
|
||||
* Get the relation descriptors of the FK and PK tables and the new tuple.
|
||||
*
|
||||
* pk_rel is opened in RowShareLock mode since that's what our eventual
|
||||
* SELECT FOR SHARE will get on it.
|
||||
*/
|
||||
pk_rel = heap_open(trigdata->tg_trigger->tgconstrrelid, RowShareLock);
|
||||
fk_rel = trigdata->tg_relation;
|
||||
if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
|
||||
{
|
||||
old_row = trigdata->tg_trigtuple;
|
||||
@ -224,10 +218,16 @@ RI_FKey_check(PG_FUNCTION_ARGS)
|
||||
*/
|
||||
Assert(new_row_buf != InvalidBuffer);
|
||||
if (!HeapTupleSatisfiesItself(new_row->t_data, new_row_buf))
|
||||
{
|
||||
heap_close(pk_rel, RowShareLock);
|
||||
return PointerGetDatum(NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the relation descriptors of the FK and PK tables.
|
||||
*
|
||||
* pk_rel is opened in RowShareLock mode since that's what our eventual
|
||||
* SELECT FOR SHARE will get on it.
|
||||
*/
|
||||
fk_rel = trigdata->tg_relation;
|
||||
pk_rel = heap_open(trigdata->tg_trigger->tgconstrrelid, RowShareLock);
|
||||
|
||||
/* ----------
|
||||
* SQL3 11.9 <referential constraint definition>
|
||||
|
Loading…
Reference in New Issue
Block a user