[Bioperl-l] Bio::GMOD::DB::Adapter is broken regards the public schema

Karl O. Pinc kop at meme.com
Wed Apr 30 15:41:32 UTC 2014


Hi,

Bio::GMOD::DB::Adapter has the "public" schema hardcoded in
such a way that the cache table must go in the public schema.

This is a problem for us since we don't have
(or want) a public schema,
and if we did we wouldn't want to put the cache there.
Further, users may not have permission to create tables
in the public schema.

Probably best would be a command line argument to specify
the schema and the cache table name. (Say for
gmod_bulk_load_gff3.pl)  This would allow any
user to put a cache in a place where the user
had enough permission to create a table.

Second best would be
a configuration option.

Another choice would be a command line option
that disables the cache.

The appended patch identifies where the problem is,
although all it does is create the cache as
a temporary table, which probably defeats the point.

Regards,

Karl <kop at meme.com>
Free Software:  "You don't pay back, you pay forward."
                 -- Robert A. Heinlein

P.S.  The list seems to reject patches as attachments.

-------------<snip>------------
--- /usr/local/share/perl5/Bio/GMOD/DB/Adapter.pm	2014-04-29 
15:31:57.162887710 -0400
+++ Bio/GMOD/DB/Adapter.pm	2014-04-29 15:26:56.482888495 -0400
@@ -143,44 +143,44 @@
                "SELECT synonym_id FROM synonym WHERE name=? AND 
type_id=?";
 
 use constant CREATE_CACHE_TABLE =>
-               "CREATE TEMP TABLE tmp_gff_load_cache (
+               "CREATE TABLE public.tmp_gff_load_cache (
                     feature_id int,
                     uniquename varchar(1000),
                     type_id int,
                     organism_id int
                 )";
 use constant DROP_CACHE_TABLE =>
-               "DROP TABLE tmp_gff_load_cache";
+               "DROP TABLE public.tmp_gff_load_cache";
 use constant VERIFY_TMP_TABLE =>
                "SELECT count(*) FROM pg_class WHERE relname=? and 
relkind='r'";
 use constant POPULATE_CACHE_TABLE =>
-               "INSERT INTO tmp_gff_load_cache
+               "INSERT INTO public.tmp_gff_load_cache
                 SELECT feature_id,uniquename,type_id,organism_id FROM 
feature";
 use constant CREATE_CACHE_TABLE_INDEX1 =>
                "CREATE INDEX tmp_gff_load_cache_idx1 
-                    ON tmp_gff_load_cache (feature_id)";
+                    ON public.tmp_gff_load_cache (feature_id)";
 use constant CREATE_CACHE_TABLE_INDEX2 =>
                "CREATE INDEX tmp_gff_load_cache_idx2 
-                    ON tmp_gff_load_cache (uniquename)";
+                    ON public.tmp_gff_load_cache (uniquename)";
 use constant CREATE_CACHE_TABLE_INDEX3 =>
                "CREATE INDEX tmp_gff_load_cache_idx3
-                    ON tmp_gff_load_cache 
(uniquename,type_id,organism_id)";
+                    ON public.tmp_gff_load_cache 
(uniquename,type_id,organism_id)";
 use constant VALIDATE_TYPE_ID =>
-               "SELECT feature_id FROM tmp_gff_load_cache
+               "SELECT feature_id FROM public.tmp_gff_load_cache
                     WHERE type_id = ? AND
                           organism_id = ? AND
                           uniquename = ?";
 use constant VALIDATE_ORGANISM_ID =>
-               "SELECT feature_id FROM tmp_gff_load_cache
+               "SELECT feature_id FROM public.tmp_gff_load_cache
                     WHERE organism_id = ? AND
                           uniquename = ?";
 use constant VALIDATE_UNIQUENAME =>
-               "SELECT feature_id FROM tmp_gff_load_cache WHERE 
uniquename=?";
+               "SELECT feature_id FROM public.tmp_gff_load_cache WHERE 
uniquename=?";
 use constant INSERT_CACHE_TYPE_ID =>
-               "INSERT INTO tmp_gff_load_cache 
+               "INSERT INTO public.tmp_gff_load_cache 
                   (feature_id,uniquename,type_id,organism_id) VALUES 
(?,?,?,?)";
 use constant INSERT_CACHE_UNIQUENAME =>
-               "INSERT INTO tmp_gff_load_cache (feature_id,uniquename)
+               "INSERT INTO public.tmp_gff_load_cache 
(feature_id,uniquename)
                   VALUES (?,?)";
 
 use constant INSERT_GFF_SORT_TMP =>





More information about the Bioperl-l mailing list