From 721e53785d837d48dc33dd68aa77c42ece7c9afb Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 12 Aug 2005 01:36:05 +0000 Subject: Solve the problem of OID collisions by probing for duplicate OIDs whenever we generate a new OID. This prevents occasional duplicate-OID errors that can otherwise occur once the OID counter has wrapped around. Duplicate relfilenode values are also checked for when creating new physical files. Per my recent proposal. --- src/backend/commands/trigger.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/backend/commands/trigger.c') diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 9df00d8cbea..4ea973ae7fa 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.190 2005/08/01 20:31:07 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.191 2005/08/12 01:35:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -184,7 +184,9 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint) * Generate the trigger's OID now, so that we can use it in the name * if needed. */ - trigoid = newoid(); + tgrel = heap_open(TriggerRelationId, RowExclusiveLock); + + trigoid = GetNewOid(tgrel); /* * If trigger is an RI constraint, use specified trigger name as @@ -252,7 +254,6 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint) * NOTE that this is cool only because we have AccessExclusiveLock on the * relation, so the trigger set won't be changing underneath us. */ - tgrel = heap_open(TriggerRelationId, RowExclusiveLock); ScanKeyInit(&key, Anum_pg_trigger_tgrelid, BTEqualStrategyNumber, F_OIDEQ, -- cgit v1.2.3