Skip to content

Commit

Permalink
Change search_path setting to public when creating objects
Browse files Browse the repository at this point in the history
  • Loading branch information
gluefinance committed Jan 14, 2011
1 parent 7d3cee2 commit ea1a7e6
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions sql/schema/public/functions/pov.sql
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ _RevisionID := New_Revision();
-- If unmodified, only update its heartbeat and return its SnapshotID.
UPDATE Snapshots SET Heartbeat = now() WHERE Active = 1 AND RevisionID = _RevisionID RETURNING SnapshotID INTO _SnapshotID;
IF FOUND THEN
SET LOCAL search_path TO DEFAULT;
SET LOCAL search_path TO public;
RETURN;
END IF;

Expand All @@ -29,7 +29,7 @@ UPDATE Snapshots SET Active = 0 WHERE Active = 1;
INSERT INTO Snapshots (RevisionID) VALUES (_RevisionID) RETURNING SnapshotID INTO STRICT _SnapshotID;

-- Return _SnapshotID and _RevisionID
SET LOCAL search_path TO DEFAULT;
SET LOCAL search_path TO public;
RETURN;

END;
Expand Down Expand Up @@ -87,13 +87,15 @@ IF NOT FOUND THEN
RAISE EXCEPTION 'ERROR_POV_SNAPSHOT_NOT_FOUND SnapshotID %', _RestoreSnapshotID;
END IF;

SET LOCAL search_path TO public;

-- Drop objects not part of the revision.
_Num_Objects := array_upper(_CurrentObjectIDs,1);
FOR _i IN 1.._Num_Objects
LOOP
_ObjectID := _CurrentObjectIDs[_Num_Objects-_i+1];
IF NOT _ObjectID = ANY(_ObjectIDs) THEN
SELECT Content[_TYPE], Content[_DROP] INTO STRICT _ObjectType, _SQL FROM Objects WHERE ObjectID = _ObjectID;
SELECT Content[_TYPE], Content[_DROP] INTO STRICT _ObjectType, _SQL FROM pov.Objects WHERE ObjectID = _ObjectID;
RAISE DEBUG E'\n-%\n%\n%', _ObjectID, '- ' || _ObjectType, '- ' || replace(_SQL,E'\n',E'\n- ');
EXECUTE _SQL;
END IF;
Expand All @@ -105,22 +107,20 @@ FOR _i IN 1.._Num_Objects
LOOP
_ObjectID := _ObjectIDs[_i];
IF NOT _ObjectID = ANY(_CurrentObjectIDs) THEN
SELECT Content[_TYPE], Content[_CREATE] INTO STRICT _ObjectType, _SQL FROM Objects WHERE ObjectID = _ObjectID;
SELECT Content[_TYPE], Content[_CREATE] INTO STRICT _ObjectType, _SQL FROM pov.Objects WHERE ObjectID = _ObjectID;
RAISE DEBUG E'\n-%\n%\n%', _ObjectID, '+ ' || _ObjectType, '+ ' || replace(_SQL,E'\n',E'\n+ ');
EXECUTE _SQL;
END IF;
END LOOP;

SET LOCAL search_path TO public;

SELECT * INTO STRICT _SnapshotID, _RestoredRevisionID FROM pov();

IF _RevisionID <> _RestoredRevisionID THEN
RAISE EXCEPTION 'ERROR_POV_REVISION_DIFF RevisionID % RestoredRevisionID %', _RevisionID, _RestoredRevisionID;
END IF;

-- Return new _SnapshotID and the restored _RevisionID.
SET LOCAL search_path TO DEFAULT;
SET LOCAL search_path TO public;
RETURN;
END;
$BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER;

0 comments on commit ea1a7e6

Please sign in to comment.