accessing driver prefix ...

Jens Rehsack <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
Hi Tim,

as talked in IRC I'd like to submit attached patch to DBI.pm

It's primarily for common method injections (and registration) for
DBD::File based drivers.
Further, it seems I found 3 more DBD's not listed in $dbd_prefix_registry ...

Jens
DBI-driver-registry.patch (application/octet-stream, 1.5 KB)
Index: DBI.pm
===================================================================
--- DBI.pm	(revision 14093)
+++ DBI.pm	(working copy)
@@ -342,7 +342,9 @@
   pg_      => { class => 'DBD::Pg',		},
   pgpp_    => { class => 'DBD::PgPP',		},
   plb_     => { class => 'DBD::Plibdata',	},
+  po_      => { class => 'DBD::PO',		},
   proxy_   => { class => 'DBD::Proxy',		},
+  ram_     => { class => 'DBD::RAM',		},
   rdb_     => { class => 'DBD::RDB',		},
   sapdb_   => { class => 'DBD::SAP_DB',		},
   solid_   => { class => 'DBD::Solid',		},
@@ -350,6 +352,7 @@
   sql_     => { class => 'SQL::Statement',	},
   sqlite_  => { class => 'DBD::SQLite',  	},
   syb_     => { class => 'DBD::Sybase',		},
+  sys_     => { class => 'DBD::Sys',		},
   tdat_    => { class => 'DBD::Teradata',	},
   tmpl_    => { class => 'DBD::Template',	},
   tmplss_  => { class => 'DBD::TemplateSS',	},
@@ -363,6 +366,10 @@
   yaswi_   => { class => 'DBD::Yaswi',		},
 };
 
+my %dbd_class_registry = map { $dbd_prefix_registry->{$_}->{class} => { prefix => $_ } }
+			     grep { exists $dbd_prefix_registry->{$_}->{class} }
+			     keys %{$dbd_prefix_registry};
+
 sub dump_dbd_registry {
     require Data::Dumper;
     local $Data::Dumper::Sortkeys=1;
@@ -968,6 +975,11 @@
 
 *internal = \&DBD::Switch::dr::driver;
 
+sub driver_prefix {
+    my ($class, $driver) = @_;
+    return $dbd_class_registry{$driver}->{prefix} if exists $dbd_class_registry{$driver};
+    return;
+}
 
 sub available_drivers {
     my($quiet) = @_;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.