PL/Python: Remove procedure cache invalidation
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 13 May 2015 02:52:18 +0000 (22:52 -0400)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 13 May 2015 02:52:18 +0000 (22:52 -0400)
This was added to react to changes in the pg_transform catalog, but
building with CLOBBER_CACHE_ALWAYS showed that PL/Python was not
prepared for having its procedure cache cleared.  Since this is a
marginal use case, and we don't do this for other catalogs anyway, we
can postpone this to another day.

src/pl/plpython/plpy_procedure.c

index 858cecc64d211aa3c27587477a2c68ca15834409..00405f0adac00ac0438cc3b3437e89414d9e331e 100644 (file)
@@ -29,7 +29,6 @@
 static HTAB *PLy_procedure_cache = NULL;
 
 static PLyProcedure *PLy_procedure_create(HeapTuple procTup, Oid fn_oid, bool is_trigger);
-static void invalidate_procedure_caches(Datum arg, int cacheid, uint32 hashvalue);
 static bool PLy_procedure_argument_valid(PLyTypeInfo *arg);
 static bool PLy_procedure_valid(PLyProcedure *proc, HeapTuple procTup);
 static char *PLy_procedure_munge_source(const char *name, const char *src);
@@ -45,29 +44,6 @@ init_procedure_caches(void)
        hash_ctl.entrysize = sizeof(PLyProcedureEntry);
        PLy_procedure_cache = hash_create("PL/Python procedures", 32, &hash_ctl,
                                                                          HASH_ELEM | HASH_BLOBS);
-       CacheRegisterSyscacheCallback(TRFTYPELANG,
-                                                                 invalidate_procedure_caches,
-                                                                 (Datum) 0);
-}
-
-static void
-invalidate_procedure_caches(Datum arg, int cacheid, uint32 hashvalue)
-{
-       HASH_SEQ_STATUS status;
-       PLyProcedureEntry *hentry;
-
-       Assert(PLy_procedure_cache != NULL);
-
-       /* flush all entries */
-       hash_seq_init(&status, PLy_procedure_cache);
-
-       while ((hentry = (PLyProcedureEntry *) hash_seq_search(&status)))
-       {
-               if (hash_search(PLy_procedure_cache,
-                                               (void *) &hentry->key,
-                                               HASH_REMOVE, NULL) == NULL)
-                       elog(ERROR, "hash table corrupted");
-       }
 }
 
 /*