On Wed, Aug 04, 2004 at 05:57:50PM +0100, Tim Bunce wrote:
> On Wed, Aug 04, 2004 at 08:02:28AM -0700, Tim Howell wrote:
> > As I get started I'm interested in three things:
> >
> > 1. How are you using DBD::Proxy? What platform for the proxy server,
> > what platform for the client, and what DBD:: driver are you using on the
> > server? What version of Perl are you using? Are you using this for web
> > work or something else?
>
> The perl -V output would be useful. Also what --mode=??? is the proxy server
> running (thread, fork, or single).
>
> Tim.
I have a DBD::Proxy (DBI version 1.41) server that serves up DBD::Ingres
(version 0.51) with mode=fork. Server and clients are all Sun Solaris.
DBD::Proxy encapsulates the Ingres specifics, so that other Sun boxes in my
environment can get to legacy data on my one Ingres box (without having to
install Ingres on each box). Server 'perl -V' is:
Summary of my perl5 (revision 5.0 version 8 subversion 3) configuration:
Platform:
osname=solaris, osvers=2.6, archname=sun4-solaris-thread-multi
uname='sunos neuron.mct.rochester.edu 5.6 generic_105181-28 sun4u sparc
sunw,ultra-250 '
config_args='-des -Dcc=gcc -Dprefix=/opt/perl/5.8.3 -Dusethreads
-Dotherlibdirs=/opt/study_tk/lib:/u/pgmr/perllib:/opt/ert -Ubincompat5005
-Dld=/usr/ccs/bin/ld -Doptimize=-pipe -O3 -fomit-frame-pointer -mcpu=ultrasparc'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-D_REENTRANT -fno-strict-aliasing -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-pipe -O3 -fomit-frame-pointer -mcpu=ultrasparc',
cppflags='-D_REENTRANT -fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='3.3.1', gccosandvers='solaris2.6'
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='/usr/ccs/bin/ld', ldflags =' -L/usr/local/lib '
libpth=/usr/local/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldl -lm -lpthread -lc
perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
Built under solaris
Compiled at Feb 27 2004 18:05:10
%ENV:
PERL5LIB="/u/pgmr/pgmr/perllib"
@INC:
/u/pgmr/pgmr/perllib
/opt/perl/5.8.3/lib/5.8.3/sun4-solaris-thread-multi
/opt/perl/5.8.3/lib/5.8.3
/opt/perl/5.8.3/lib/site_perl/5.8.3/sun4-solaris-thread-multi
/opt/perl/5.8.3/lib/site_perl/5.8.3
/opt/perl/5.8.3/lib/site_perl
/opt/study_tk/lib
/u/pgmr/perllib
/opt/ert
.
>
> > 2. What bugs (undocumented features) are you having to work around in
> > the current implementation?
One thing that I found is that I could not use DBI's table_info routine.
For example, I get this error no matter what arguments I pass:
DBD::Proxy::db table_info failed: Server returned error: Failed to execute method
CallMethod: Can't call method "execute" without a package or object reference at
/opt/perl/5.8.3/lib/site_perl/5.8.3/sun4-solaris-thread-multi/DBD/Ingres.pm line 151,
<FH> line 1.
At one point earlier this year I set up DBD::Proxy with Postgres or Oracle
being served and I think I got a similar error, so I don't think it is
specific to the underlying DBD. (I am able to use table_info when using
a non-proxy connection to DBD::Ingres.)
Another thing I noticed was that there seemed to be a memory leak somewhere
with my DBD::Proxy server serving DBD::Ingres. Over a 24 hr period it
would grab more and more memory. I didn't look into it much, instead I just
restart the thing each day. I wrote a script whose intent was to live
in /etc/init.d so I could start/stop DBD::Proxy like a normal daemon, I'd be
happy to share it if you want it (email me). Let me know if you want help
testing Tim (Howell).
> >
> > 3. What features would you like to see added? Is there something about
> > DBD::Proxy that isn't "magical"? (Damian Conway and Sufficiently
> > Advanced Technologies)
> >
> > Thanks!
> >
> > --Tim Howell
> > --MIS Supervisor, First Evangelical Free Church of Fullerton
> >
>