On Thu, Dec 05, 2002 at 10:54:14AM -0600, Stephen R. Wilcoxon wrote:
> On Wed 2002/12/04 21:38:12 PST, Jonathan Leffler <[EMAIL PROTECTED]> write
> s:
> > Stephen R. Wilcoxon wrote:
> > > Is it possible to get the driver specific prefix programmatically with a
> > > database handle (or statement handle)? For example if I do:
> > >
> > > $dbh = DBI->connect('dbi:Sybase:...');
> > > $sth = $dbh->execute('select 1');
> > >
> > > Is there any way to get 'syb' or 'syb_' from the $dbh or $sth (since that
> > > is the driver prefix for Sybase)?
> >
> > Why would you need to do so? What would you be able to do with the
> > information that you can't do without it?
>
> I have a module that can have schema information retrieved from multiple
> $dbh's (possibly different dbms) and it would be handy (though not
> critical) to only get driver-specific information from DBI::column_info if
> the $dbh used to call column_info matched the driver used to create
> previously gathered information. I suppose I could get this indirectly
> (check $dbh->{Driver}->{Name} against a stored value gotten from the
> original call and then just check for lowercase names (since all
> driver-specific values are supposed to be the only lower-case ones)). The
> other obvious "solution" was to hard-code a hash of values from the DBI
> docs of all the driver names and abbreviations (which is not ideal since it
> would have to be updated every time a new DBD driver was created).
I still don't get it. Just let the source driver put whatever extra
it wants into the DBI::column_info results (with lowercase column names)
and let whatever code might use it look for specific driver-private
names *that it knows what to do with*.
Tim.