[Checkins] SVN: relstorage/branches/postgres_blob_oid/relstorage/adapters/schema.py Support using the trigger from other tables.

Martijn Pieters mj at zopatista.com
Tue Jun 14 14:30:15 EDT 2011


Log message for revision 121934:
  Support using the trigger from other tables.
  
  Now we can use it for temp_blob_chunk too, which means we'll clean up blobs uploaded during tpc_vote but never copied to blob_chunk because tpc_finish was never called.

Changed:
  U   relstorage/branches/postgres_blob_oid/relstorage/adapters/schema.py

-=-
Modified: relstorage/branches/postgres_blob_oid/relstorage/adapters/schema.py
===================================================================
--- relstorage/branches/postgres_blob_oid/relstorage/adapters/schema.py	2011-06-14 18:07:35 UTC (rev 121933)
+++ relstorage/branches/postgres_blob_oid/relstorage/adapters/schema.py	2011-06-14 18:30:15 UTC (rev 121934)
@@ -401,10 +401,15 @@
     -- Version: %s
     -- Unlink large object data file after blob_chunck row deletion
     DECLARE
+        expect integer;
         cnt integer;
     BEGIN
+        expect = 1; -- The number of rows where we'll unlink the oid
+        IF (TG_TABLE_NAME != 'blob_chunk') THEN
+            expect = 0; -- Deleting from elsewhere means we expect 0
+        END IF;
         SELECT count(*) into cnt FROM blob_chunk WHERE chunk=OLD.chunk;
-        IF (cnt = 1) THEN
+        IF (cnt = expect) THEN
             -- Last reference to this oid, unlink
             PERFORM lo_unlink(OLD.chunk);
         END IF;



More information about the checkins mailing list