Received: from post.demon.co.uk by lion with SMTP (PP) id <12533-0@lion>;
         Thu, 25 Aug 1994 23:18:19 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 25 Aug 94 21:30:08 GMT
Received: from gate.demon.co.uk by post.demon.co.uk id aa06553;
         25 Aug 94 22:16 GMT-60:00
Received: from gw.home.vix.com by gate.demon.co.uk id aa16708;
         25 Aug 94 22:12 GMT-60:00
Received: by gw.home.vix.com id AA17852; Thu, 25 Aug 94 04:56:51 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA17848; Thu, 25 Aug 94 04:56:47 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id ah16943;
         25 Aug 94 12:40 GMT-60:00
Received: from ig.co.uk by lion id <05172-0@lion>;
         Thu, 25 Aug 1994 12:00:24 +0100
To: [email protected]
Subject: Re: Updated mailing list...
Date: Thu, 25 Aug 1994 12:00:24 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>


> From: Ted Lemon <[email protected]>
>
>
> I have added about 15 people to the list and removed a few bouncers
> and about three people who (amazingly enough :') weren't interested in
> the topic of conversation.  This represents almost two months of not
> getting around to doing the update - apologies to all those who were
> added very late.   I've included the list of new members below...
>
>                              _MelloN_
>
Thanks Ted.

> Allen Leibowitz <[email protected]>
> Allen Liu <[email protected]>
> Amy Ludlam <[email protected]>
> Dave Ford <[email protected]>
> David Cousins <[email protected]>
> David Ferrington <[email protected]>
> Dirk Kraemer <[email protected]>
> Eirik Danielsen <[email protected]>
> Garth Johnson <[email protected]>
> Gregory Tucker-Kellogg <[email protected]>
> Jim Fox <[email protected]>
> Joachim Baumann <[email protected]>
> John Mccarthy <[email protected]>
> Joseph J Ecker <[email protected]>
> Mile Williams <[email protected]>
> Raymond Smith <[email protected]>
> Russ Beardall <[email protected]>
> Scott Fertig <[email protected]>
> Scott Hutton <[email protected]>
> Sridhar Chekuri <[email protected]>
> Thomas J Smull <[email protected]>
> Tom Hackwood <[email protected]>
> Tristan Bostone <[email protected]>
> Troy Conner <[email protected]>
> Tye McQueen <[email protected]>
>
>
Welcome,

Things are a little quite here right now but work is progressing.
I've just spent the last 3 (long) days working on DBperl internals.

I'll be intouch again soon. The perl 5 beta may be out within a week.
The next DBperl 'model' will be based on it so if you want to play
I'd suggest you get the perl 5 beta and start getting familiar with it.

Have fun.

Regards,
Tim Bunce.

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <25242-7@lion>;
         Thu, 8 Sep 1994 07:31:48 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 08 Sep 94 01:34:08 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa09430;
         8 Sep 94 2:34 GMT-60:00
Received: by gw.home.vix.com id AA25914; Wed, 7 Sep 94 11:46:48 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA25906; Wed, 7 Sep 94 11:46:46 -0700
Received: from dax.austin.ibm.com (dax.austin.ibm.com [129.35.112.95])
         by netmail1.austin.ibm.com (8.6.9/8.6.9) with SMTP id NAA29226
         for <[email protected]>; Wed, 7 Sep 1994 13:46:40 -0500
Received: from localhost.austin.ibm.com
         by dax.austin.ibm.com (AIX 3.2/UCB 5.64/4.03-client-2.4)
         for [email protected] at austin.ibm.com; id AA12100;
         Wed, 7 Sep 1994 13:46:33 -0500
Message-Id: <[email protected]>
To: [email protected]
Subject: Building the switch......
Date: Wed, 07 Sep 1994 13:46:33 -0500
From: [email protected]


Anyone given any thought to the implementation of the switch?   I'm beginning
to do work for a perl5 <-> db2/6000 interface and am getting nowhere fast trying
to interpret the dbperl spec (0.5 or 0.6).

Any ideas or directions appreciated.

Mike

------------------------------------------------------------------------------
Michael H. Moran                  | Standard Disclaimer:  The content of
[email protected]                | this posting is independent of
Commercial Performance            | official IBM position.
IBM Corporation, Austin, Texas    |

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <26483-0@lion>;
         Thu, 8 Sep 1994 10:36:05 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 08 Sep 94 09:35:35 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa06630;
         8 Sep 94 10:35 GMT-60:00
Received: by gw.home.vix.com id AA12798; Thu, 8 Sep 94 00:12:17 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA12794; Thu, 8 Sep 94 00:12:14 -0700
X400-Received: by mta d400relay in /PRMD=dfnrelay/ADMD=d400/C=de/; Relayed;
              Thu, 8 Sep 1994 09:13:09 +0200
X400-Received: by /PRMD=TU-Berlin/ADMD=D400/C=DE/; Relayed;
              Thu, 8 Sep 1994 09:05:23 +0200
X400-Received: by /PRMD=TU-Berlin/ADMD=D400/C=DE/; Relayed;
              Thu, 8 Sep 1994 09:04:01 +0200
X400-Received: by /PRMD=leonardo/ADMD=d400-gw/C=de/; Relayed;
              Thu, 8 Sep 1994 08:54:03 +0200
X400-Received: by /PRMD=TU-Berlin/ADMD=D400/C=DE/; Relayed;
              Thu, 8 Sep 1994 08:54:03 +0200
Date: Thu, 8 Sep 1994 08:54:03 +0200
X400-Originator: [email protected]
X400-Recipients: non-disclosure:;
X400-Mts-Identifier: [/PRMD=leonardo/ADMD=d400-gw/C=de/;<[email protected]>]
X400-Content-Type: P2-1984 (2)
Content-Identifier: Announcement ...
Alternate-Recipient: Allowed
From: Andreas Koenig <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Cc: [email protected], [email protected]
Subject: Announcement (Was: Building the switch......)
Reply-To: [email protected]

> Anyone given any thought to the implementation of the switch?   I'm
beginning

> to do work for a perl5 <-> db2/6000 interface and am getting
nowhere fast trying
> to interpret the dbperl spec (0.5 or 0.6).
>

> Any ideas or directions appreciated.
>


Okay, okay, now's the time to make an ANNOUNCEMENT.



The world's first perl5 adaptor to a SQL database is available.


The Msql Perl Module is the dynamically loadable interface to David
Hughes' mSQL (Mini SQL). Actually I'm so much satisfied with this
adaptor, that I'd just call it 1.0 -- but it's not yet DBperl, so I
wait. Give it a try -- especially if you are thinking about writing
another adaptor.

Writing an extension to perl is really extremely easy, you just need
the correct instructions:) Get your instructions out of Msql.xs,
which is only some 500 lines of code.

This realization of an adaptor is not *DBperl*, of course, but I have
tried to realize as much as possible of the thoughts presented in
recent postings. The rewriting effort for being DBperl compliant,
once we know, what that is, will be very small.

As mSQL is a freely available database, this implementation could be
a good basis for any further considerations about DBperl, as really
everybody can play with it.

You can get the database stuff from

ftp://Bond.edu.au/pub/Bond_Uni/Minerva/msql/mSQL-0.2.tar.gz

watch out for patches in the same directory, currently you will find
mSQL-0.2-Patch.1 there, but at the time you read this, there might be
a second patch already. (If it is not there yet, just accept that two
tests of the test script fail currently.)

The msql directory has a subdirectory contrib/, where you will find
the perl adaptor MsqlPerl-a1.tgz. You can get the adaptor also from

ftp://ftp.zrz.TU-Berlin.DE/pub/unix/perl/MsqlPerl-a1.tgz

I would be very pleased to hear from you. Any ideas, problem reports,
applause, flames welcome. And questions too.

--andreas koenig

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <00955-2@lion>;
         Thu, 8 Sep 1994 15:46:41 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 08 Sep 94 13:25:09 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa18948;
         8 Sep 94 14:24 GMT-60:00
Received: by gw.home.vix.com id AA16991; Thu, 8 Sep 94 03:54:18 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA16987; Thu, 8 Sep 94 03:54:12 -0700
Received: from bfsec.bt.co.uk (actually major.bfsec.bt.co.uk)
         by zaphod.axion.bt.co.uk with SMTP (PP);
         Thu, 8 Sep 1994 11:53:37 +0100
Received: from bfsec.bt.co.uk by major.bfsec.bt.co.uk with SMTP (PP)
         id <[email protected]>; Thu, 8 Sep 1994 11:53:31 +0100
Received: by claudius.bfsec.bt.co.uk.bfsec (4.1/SMI-4.1) id AA12013;
         Thu, 8 Sep 94 11:55:47 BST
Date: Thu, 8 Sep 94 11:55:47 BST
From: Paul Marquess <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: Re: Building the switch......
Cc: [email protected]

From: [email protected]
>
> Anyone given any thought to the implementation of the switch?   I'm beginning
> to do work for a perl5 <-> db2/6000 interface and am getting nowhere fast trying
> to interpret the dbperl spec (0.5 or 0.6).
>
> Any ideas or directions appreciated.

I believe Tin Bunce in in the middle of imolementing the switch at the moment.

Paul

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <05867-0@lion>;
         Thu, 8 Sep 1994 18:53:00 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 08 Sep 94 17:03:49 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa08750;
         8 Sep 94 18:03 GMT-60:00
Received: by gw.home.vix.com id AA21467; Thu, 8 Sep 94 07:41:25 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA21463; Thu, 8 Sep 94 07:41:23 -0700
Original-Received: from
                  fiddich.its.Bond.edu.au by kirk.Bond.edu.au using ESMTP
                  (8.6.7)
PP-warning: Illegal Received field on preceding line
Received: from localhost by fiddich (8.6.4) id AAA25523;
         Fri, 9 Sep 1994 00:34:01 +1000
Date: Fri, 9 Sep 1994 00:34:01 +1000 (EST)
From: "David J. Hughes" <[email protected]>
To: Andreas Koenig <[email protected]>
Cc: [email protected], [email protected]
Subject: Re: Announcement (Was: Building the switch......)
In-Reply-To: <[email protected]>
Message-Id: <Pine.SOL.3.90.940909002943.25499B-100000@fiddich>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


On Thu, 8 Sep 1994, Andreas Koenig wrote:

> As mSQL is a freely available database, this implementation could be
> a good basis for any further considerations about DBperl, as really
> everybody can play with it.
>
> You can get the database stuff from
>
> ftp://Bond.edu.au/pub/Bond_Uni/Minerva/msql/mSQL-0.2.tar.gz
>
> watch out for patches in the same directory, currently you will find
> mSQL-0.2-Patch.1 there, but at the time you read this, there might be
> a second patch already. (If it is not there yet, just accept that two
> tests of the test script fail currently.)

The second patch to mSQL 0.2 mentioned above is available.  The source
distribution on Bond.edu.au is now at patch level 2 and there's a patch
in the directory to go from msql-0.2-p1 to msql-0.2-p2

This patch fixes a lot of internal memory handling bugs that don't often
cause problems but sometimes can get in the way.  A few other bugs are
also fixed.

  __                                  David J. Hughes  -  [email protected]
 /  \               /  /   /           http://Bond.edu.au/People/bambi.html
/___/ __   _   ____/  /   / _
/   \ /  \ / \ /   /  /   / / \  /   Senior Network Programmer, Bond University
\___/ \__//  / \__/   \__/ /  / /    Qld.   4229   AUSTRALIA    (+61 75 951450)


---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <06394-0@lion>;
         Thu, 8 Sep 1994 19:15:19 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 08 Sep 94 18:13:36 GMT
Received: from gate.demon.co.uk by post.demon.co.uk id aa05809;
         8 Sep 94 19:12 GMT-60:00
Received: from gw.home.vix.com by gate.demon.co.uk id aa03060;
         8 Sep 94 19:10 GMT-60:00
Received: by gw.home.vix.com id AA21899; Thu, 8 Sep 94 08:03:03 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA21889; Thu, 8 Sep 94 08:02:57 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id aa15850;
         8 Sep 94 15:42 GMT-60:00
Received: from ig.co.uk by lion id <28880-0@lion>;
         Thu, 8 Sep 1994 13:49:08 +0100
To: [email protected], [email protected]
Subject: Re: Building the switch......
Date: Thu, 8 Sep 1994 13:49:08 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>


> From: [email protected]
>
>
> Anyone given any thought to the implementation of the switch?

Time for another update!

> I'm beginning  to do work for a perl5 <-> db2/6000 interface and am getting
> nowhere fast trying to interpret the dbperl spec (0.5 or 0.6).
>
> Any ideas or directions appreciated.
>
I know it's been a long time coming but you'd be doing yourself a big favor
if you wait just a little longer.

I am actively developing the DBperl core right now.

A basic DBperl Switch interface to perl is done and I'm now working on
a C interface. There is much up in the air at the moment. The interface
spec looks something like this:


---------------------------------------------------------------
DBperl for Perl 5  -  Function Summary  (version 2a)

NOTATION

Object Handles:

 DBPERL static 'top-level' class name
 $adh   Adaptor Handle (was $modh for module handle).
 $dbh   Database Handle
 $sth   Statement Handle (was $sh).

note that database and statement objects will be destroyed if
all references to them are deleted. This is very good!

Object attributes are shown as:

 $handle->{attribute_name}  (type)

where (type) indicates the type of the value of the attribute,
if it's not a simple scalar:

 \@   reference to a list:  $h->{a}->[0]  or  @a = @{$h->{a}}
 \%   reference to a hash:  $h->{a}->{a}  or  %a = %{$h->{a}}

---------------------------------------------------------------
DBPERL OBJECTS

$adh = DBPERL->internal; # return $adh for internal Switch 'adaptor'
$adh = DBPERL->install_adaptor($adaptor_name [, %install_attributes ] );
$rv  = $anyhandle->call_func($function [, @params]);

$dbh = DBPERL->connect([$database [, $username [, $password [ ...]]]]);
$rc  = DBPERL->disconnect_all;  # disconnect all database sessions

$DBPERL::db_error   same as DBPERL->internal->{LastDbh}->{Error}
$DBPERL::db_errstr  same as DBPERL->internal->{LastDbh}->{ErrorStr}
$DBPERL::db_rows    same as DBPERL->internal->{LastSth}->{ROW_COUNT}

---------------------------------------------------------------
ADAPTOR OBJECTS (not normally used by an application)

$dbh = $adh->connect(...);

$adh->{Name}
$adh->{Type}   "Adaptor"
$adh->{Version}
$adh->{Attribution}

Additional Attributes for internal DBperl Switch 'adaptor'

$adh->{InstalledAdaptors} (@)
$adh->{LastAdh}
$adh->{LastDbh}
$adh->{LastSth}

---------------------------------------------------------------
DATABASE OBJECTS

$rc  = $dbh->disconnect;
$rc  = $dbh->commit;
$rc  = $dbh->rollback;
$sth = $dbh->prepare($statement [, %attr]);

$rv  = $dbh->handler($handler_function);
$rv  = $dbh->errstate;
@ary = $dbh->errmsg;

$sql = $dbh->quote($str);
$udt = $dbh->ndt2udt($ndt [, $local]);
$ndt = $dbh->udt2ndt($udt [, $local]);

$dbh->{Name}
$dbh->{Type}       "Database"
$dbh->{Adaptor}    (\%)

$dbh->{Error}      normally use $db_error
$dbh->{ErrorStr}   normally use $db_errstr
$dbh->{ROW_COUNT}  normally use $db_rows

---------------------------------------------------------------
STATEMENT OBJECTS

$rc  = $sth->execute(@bind_values);
@ary = $sth->fetch;
$rc  = $sth->finish;

$sth->{Name}
$sth->{Type}       "Statement"
$sth->{Database}   (\%)  # eg $sth->{Database}->{Adaptor}->{Name} !

$sth->{NAME}       (\@)
$sth->{NULLABLE}   (\@)
$sth->{TYPE}       (\@)
$sth->{PRECISION}  (\@)
$sth->{SCALE}      (\@)

---------------------------------------------------------------

I hope to release something (a pre-pre-alpha :-) soon after the
next perl 5 beta.

Basically the longer you wait the more adaptor support will be included
in DBperl and the less work you'll have to do. I aim to make writing
adaptors as simple as possible. Also many aspects of the interface are
liable to change at the moment.

I am looking at implementing and supplying a DBperl interface to the
small free mSQL database as a standard part of DBperl. This will give
users and adaptor developers something realistic to work with. Please
note that the implementation of the recently announced mSQL interface
for perl 5 has *no* relation at all to the DBperl implementation.


Implementation notes:

Thinking back to my 'DBperl object implementation issues' posting a
while back, I am implementing DBperl using Switched method dispatch.
All application visible handles are references to DBperl::XX classes
but are 'tagged' with magic which stores the (stash of the)
'implementor' package for the handle. The DBperl Switch code dispatches
a method call to the same method name in the implementors package.


The C interface will skip the second method lookup and call a function
pointer directly, gaining a slight speed advantage. The DBperl Switch
will support both Perl and C style adaptors simultaneously.


I anticipate that subclassing will look something like this:

       $sth = $dbh->prepare(..., Class => 'ScrollCursor')


All application handles are blessed (outer) refs to tied (inner) hashes.
Normally ordinary methods get passed the outer ref and tie access methods
(FETCH STORE etc) are passed the inner ref. The DBperl dispatcher
passes the inner ref to all methods. This means that ordinary methds
don't have the STORE/FETCH overhead when accessing elements of the hash.


I *need* an oracle and ingres DBperl adaptor asap so I'm devoting as
much time as possible to DBperl and perl 5.

> Mike
>
Regards,
Tim Bunce.

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <11467-2@lion>;
         Thu, 8 Sep 1994 21:58:17 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 08 Sep 94 19:55:25 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa14171;
         8 Sep 94 20:55 GMT-60:00
Received: by gw.home.vix.com id AA22361; Thu, 8 Sep 94 08:21:48 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA22357; Thu, 8 Sep 94 08:21:47 -0700
Received: from dax.austin.ibm.com (dax.austin.ibm.com [129.35.112.95])
         by netmail1.austin.ibm.com (8.6.9/8.6.9) with SMTP id KAA16493;
         Thu, 8 Sep 1994 10:21:42 -0500
Received: from localhost.austin.ibm.com
         by dax.austin.ibm.com (AIX 3.2/UCB 5.64/4.03-client-2.4)
         for [email protected] at austin.ibm.com; id AA11764;
         Thu, 8 Sep 1994 10:21:39 -0500
Message-Id: <[email protected]>
To: Tim Bunce <[email protected]>
Cc: [email protected], [email protected]
Subject: Re: Building the switch......
In-Reply-To: Your message of Thu, 08 Sep 1994 13:49:08 CDT. <[email protected]>
Date: Thu, 08 Sep 1994 10:21:38 -0500
From: [email protected]


Tim Bunce <[email protected]>  writes:
>
> Time for another update!
>
> I know it's been a long time coming but you'd be doing yourself a big favor
> if you wait just a little longer.

The problem is that I need to get it done before they (IBM) ships me to
Germany again.  Once, I get the interface (DB2/6000<->Perl5) done, there are
a couple dozen people who can support current activities.  Otherwise, its
just me :-(

>
> I hope to release something (a pre-pre-alpha :-) soon after the
> next perl 5 beta.

So, I guess the big question is "When is the next perl5 beta?".  Followed
closely by "How soon afterward can I get a copy?"

Thanks for the information.

Mike

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <26319-3@lion>;
         Wed, 14 Sep 1994 07:31:32 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Wed, 14 Sep 94 00:42:37 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa18726;
         14 Sep 94 1:42 GMT-60:00
Received: by gw.home.vix.com id AA20516; Tue, 13 Sep 94 11:01:33 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA20512; Tue, 13 Sep 94 11:01:31 -0700
Received: from dax.austin.ibm.com (dax.austin.ibm.com [129.35.112.95])
         by netmail1.austin.ibm.com (8.6.9/8.6.9) with SMTP id NAA25457
         for <[email protected]>; Tue, 13 Sep 1994 13:00:14 -0500
Received: from localhost.austin.ibm.com
         by dax.austin.ibm.com (AIX 3.2/UCB 5.64/4.03-client-2.4)
         for [email protected] at austin.ibm.com; id AA15642;
         Tue, 13 Sep 1994 12:58:50 -0500
Message-Id: <[email protected]>
To: [email protected]
Subject: Ideas needed towards solution
Date: Tue, 13 Sep 1994 12:58:50 -0500
From: [email protected]


Well, I just ran into the proverbial wall while working on my implementation
of DBperl for DB2/6000 and I need some additional ideas.

The problem given the current structure:

&db'connect
&db'prepare
&db'execute

is I can't deal with parameters for dynamic sql until &db'execute.
Unfortunately,
by the time the end user gets around to call &db'execute I don't have any
of the information needed to do the parameter substitution.

Thus, far I have come up with 3 possible solutions, but I don't think any
of them are satisfactory.

1)  &db'prepare becomes a no-op and everything is done in &db'execute.
   drawback:  I have to carry data under the covers

2)  simply carry the data need for parameter substitution under the covers
   drawback:  lots of tracking and management

3)  use the database
   drawback:  restricts usefullness, in that the installer has to have
              permission to create tables in the db in question.

Any other ideas, or preferences for any of the above.

Mike

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <26320-4@lion>;
         Wed, 14 Sep 1994 07:31:39 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Wed, 14 Sep 94 01:54:56 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa29524;
         14 Sep 94 2:54 GMT-60:00
Received: by gw.home.vix.com id AA19129; Tue, 13 Sep 94 10:01:26 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA19124; Tue, 13 Sep 94 10:01:23 -0700
Received: by post.demon.co.uk id aa23572; 13 Sep 94 16:39 GMT-60:00
Received: from ignite.demon.co.uk by post.demon.co.uk id aa16488;
         13 Sep 94 16:19 GMT-60:00
Received: from ig.co.uk by lion id <17168-0@lion>;
         Tue, 13 Sep 1994 16:19:06 +0100
To: [email protected], [email protected]
Subject: New name for DBperl ?
Date: Tue, 13 Sep 1994 16:19:06 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>

I'm posting this to both perl5-porters (re: 'Nested Modules') and
perldb-interest (re: the DBperl name).

Over the last few months I've been thinking that the name 'DBperl' does
not really suit a Perl 5 extension. This gets worse when trying to
decide on a naming scheme for database adaptors.

The perl 4 scheme had the 'advantage' that each perl extension was
typically statically linked into an individual perl binary. Thus
oraperl, ingperl, sybperl etc were good names for these binaries and
everyone understood what it meant and was happy.

The advent of true DynamicLinking in Perl 5 muddies the water somewhat.
You can't really use a handy term like 'oraperl' anymore. You have to
talk in terms of 'the XYZ perl extension'.

After the recent discussion about Nested Modules and namespace problems
on the perl5-porters mailing list I've been thinking about this again.

I propose calling the adaptors

       DbAdaptor::Oracle
       DbAdaptor::Ingres
       DbAdaptor::Informix
       DbAdaptor::Sybase
       DbAdaptor:: ...
       etc

People can then talk in terms of 'the Oracle database adaptor for perl'.
The nested namespace avoids having to name them OracleAd or AdOracle or
somesuch horror.

For the core of DBperl I think

       DbSwitch
or      DbSwitcher

would work well but I'm not so sure about it.

Any thoughts?

Regards,
Tim Bunce.

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <20286-13@lion>;
         Thu, 15 Sep 1994 07:32:56 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Wed, 14 Sep 94 20:57:54 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa07048;
         14 Sep 94 21:57 GMT-60:00
Received: by gw.home.vix.com id AA17746; Wed, 14 Sep 94 08:44:51 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA17742; Wed, 14 Sep 94 08:44:50 -0700
Received: from dax.austin.ibm.com (dax.austin.ibm.com [129.35.112.95])
         by netmail1.austin.ibm.com (8.6.9/8.6.9) with SMTP id KAA22640;
         Wed, 14 Sep 1994 10:44:47 -0500
Received: from localhost.austin.ibm.com
         by dax.austin.ibm.com (AIX 3.2/UCB 5.64/4.03-client-2.4)
         for [email protected] at austin.ibm.com; id AA16195;
         Wed, 14 Sep 1994 10:43:25 -0500
Message-Id: <[email protected]>
To: Tim Bunce <[email protected]>
Cc: [email protected]
Subject: Re: Ideas needed towards solution
In-Reply-To: Your message of Wed, 14 Sep 1994 15:57:32 CDT. <[email protected]>
Date: Wed, 14 Sep 1994 10:43:25 -0500
From: [email protected]


Tim Bunce <[email protected]>  writes:
> > 2)  simply carry the data need for parameter substitution under the covers
> >     drawback:  lots of tracking and management
> >
> This is the way it has to be done.
>
> It's also the method DBperl will assist you with. DBperl will provide the
> mechanisms 'to carry data under the covers' - specifically a pointer/ref.

My problem is, specifically, that DB2/6000 requires me to parse the incoming
sql and programmatically call one function for each and every parameter that
must be substituted and one function for each column returned.  Each of these
functions requires a complete description of the parameter/column.

That means that I must maintain a copy of each select statement and must
write a select/insert/update/delete sql parser.  :-(   Although, I haven't
looked into doing it from with in perl :-)

Mike

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <20286-16@lion>;
         Thu, 15 Sep 1994 07:33:14 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Wed, 14 Sep 94 22:09:19 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa02376;
         14 Sep 94 23:08 GMT-60:00
Received: by gw.home.vix.com id AA16817; Wed, 14 Sep 94 08:19:27 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA16811; Wed, 14 Sep 94 08:19:15 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id ab08417;
         14 Sep 94 16:08 GMT-60:00
Received: from ig.co.uk by lion id <09533-0@lion>;
         Wed, 14 Sep 1994 15:57:32 +0100
To: [email protected], [email protected]
Subject: Re: Ideas needed towards solution
Date: Wed, 14 Sep 1994 15:57:32 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>


> From: [email protected]
>
>
> Well, I just ran into the proverbial wall while working on my implementation
> of DBperl for DB2/6000 and I need some additional ideas.
>
> The problem given the current structure:
>
> &db'connect
> &db'prepare
> &db'execute
>
You are *well* out of date. We droped &db' many months ago.

Sadly I also stopped updating the spec at that point. I'll restart that
once we have some stability.

Meanwhile here's a reminder of the new style and my current (trivial)
test application.


DBperl for Perl 5  -  Function Summary  (version 2a)

---------------------------------------------------------------
NOTATION

Object Handles:

 DBPERL static 'top-level' class name
 $adh   Adaptor Handle (was $modh for module handle).
 $dbh   Database Handle
 $sth   Statement Handle (was $sh).

note that database and statement objects will be destroyed if
all references to them are deleted. This is very good!

Object attributes are shown as:

 $handle->{attribute_name}  (type)

where (type) indicates the type of the value of the attribute,
if it's not a simple scalar:

 \@   reference to a list:  $h->{a}->[0]  or  @a = @{$h->{a}}
 \%   reference to a hash:  $h->{a}->{a}  or  %a = %{$h->{a}}


---------------------------------------------------------------
DBPERL OBJECTS

$adh = DBPERL->internal; # return $adh for internal Switch 'adaptor'
$adh = DBPERL->install_adaptor($adaptor_name [, %install_attributes ] );
$rv  = $anyhandle->call_func($function [, @params]);

$dbh = DBPERL->connect([$database [, $username [, $password [ ...]]]]);
$rc  = DBPERL->disconnect_all;  # disconnect all database sessions

$DBPERL::db_error   same as DBPERL->internal->{LastDbh}->{Error}
$DBPERL::db_errstr  same as DBPERL->internal->{LastDbh}->{ErrorStr}
$DBPERL::db_rows    same as DBPERL->internal->{LastSth}->{ROW_COUNT}


---------------------------------------------------------------
ADAPTOR OBJECTS (not normally used by an application)

$dbh = $adh->connect(...);

$adh->{Name}
$adh->{Type}   "Adaptor"
$adh->{Version}
$adh->{Attribution}

Additional Attributes for internal DBperl Switch 'adaptor'

$adh->{InstalledAdaptors} (@)
$adh->{LastAdh}
$adh->{LastDbh}
$adh->{LastSth}


---------------------------------------------------------------
DATABASE OBJECTS

$rc  = $dbh->disconnect;
$rc  = $dbh->commit;
$rc  = $dbh->rollback;
$sth = $dbh->prepare($statement [, %attr]);

$rv  = $dbh->handler($handler_function);
$rv  = $dbh->errstate;
@ary = $dbh->errmsg;

$sql = $dbh->quote($str);
$udt = $dbh->ndt2udt($ndt [, $local]);
$ndt = $dbh->udt2ndt($udt [, $local]);

$dbh->{Name}
$dbh->{Type}       "Database"
$dbh->{Adaptor}    (\%)

$dbh->{Error}      normally use $db_error
$dbh->{ErrorStr}   normally use $db_errstr
$dbh->{ROW_COUNT}  normally use $db_rows


---------------------------------------------------------------
STATEMENT OBJECTS

$rc  = $sth->execute(@bind_values);
@ary = $sth->fetch;
$rc  = $sth->finish;

$sth->{Name}
$sth->{Type}       "Statement"
$sth->{Database}   (\%)  # eg $sth->{Database}->{Adaptor}->{Name} !

$sth->{NAME}       (\@)
$sth->{NULLABLE}   (\@)
$sth->{TYPE}       (\@)
$sth->{PRECISION}  (\@)
$sth->{SCALE}      (\@)

---------------------------------------------------------------


#!../../perl -ws

BEGIN {
       print <<'EOM';
       DBperl application $Revision: 1.19 $ $Date: 1994/09/13 20:10:38 $
EOM
       $| = 1;
       unshift(@INC, ".", "../../lib");
}

use DBperl;
use strict;

DBperl::debug_dispatch(1);

#  --- the dummy application ---

# first, get connected using either of these methods:

my($ad, $db);
if (1){
       $db = DBperl->connect('oracle', 'sales_database', 'password', 'DBstub');
}else{
       $ad = DBperl->install_adaptor('DBstub');
       print "Adaptor installed as $ad\n";
       $db = $ad->connect('oracle', 'sales_database', 'password');
}
print "Connected as $db\n\n";

$db->commit;

print "\$db->{Type}: $db->{'Type'}\n"; print "\n";

my($csr_a) = $db->prepare("select 1,3 from ps|head");
print "Prepared as $csr_a\n";

my($csr_b) = $db->prepare("select 0,1 from cat /usr/man/man*/* 2>&1");
print "Prepared as $csr_b\n";


# Test object attributes

$csr_a->{'HANDLER'} = 'default';
print "Number of fields: $csr_a->{'NUM_OF_FIELDS'}\n";
print "Data type of first field: $csr_a->{'DATA_TYPE'}->[0]\n";
print "Value of HANDLER: $csr_a->{'HANDLER'}\n"; # fetch prev stored value
print "Chain: $csr_a->{'Database'}->{'Adaptor'}->{'Type'}\n";

print "Fetching data from both cursors:\n";
my(@row_a, @row_b);
while((@row_a = $csr_a->fetchrow)
  && (@row_b = $csr_b->fetchrow)){
       print "@row_a, @row_b\n";
}


print "Preparing new cursor a:\n";
# NOTE: This will DESTROY (and hence &finish) the current $csr_a!
# This is a major win with DBperl for Perl 5
$csr_a = $db->prepare("select 0,1,2,3 from date");
$csr_a->debug(1);

print "Fetching row from cursor a:\n";
print join(' ',$csr_a->fetchrow),"\n";
$csr_a->finish;

# Now ask for some information from the DBperl Switch
my($switch) = DBperl->internal;
print "Switch: $switch->{'Name'}, $switch->{'Version'}, $switch->{'Name'}\n";

print "$0 Done. (global destruction will follow)\n\n";
exit 0;




> 2)  simply carry the data need for parameter substitution under the covers
>     drawback:  lots of tracking and management
>
This is the way it has to be done.

It's also the method DBperl will assist you with. DBperl will provide the
mechanisms 'to carry data under the covers' - specifically a pointer/ref.

> Any other ideas, or preferences for any of the above.
>
I may be biased but I'd strongly suggest waiting till early next week.
I anticipate releasing the first alpha then.


> Mike
>
Regards,
Tim Bunce.

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <25484-2@lion>;
         Thu, 15 Sep 1994 14:03:02 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 15 Sep 94 12:55:28 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa15175;
         15 Sep 94 13:55 GMT-60:00
Received: by gw.home.vix.com id AA11156; Thu, 15 Sep 94 04:18:23 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA11151; Thu, 15 Sep 94 04:18:19 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id ac15510;
         15 Sep 94 12:09 GMT-60:00
Received: from ig.co.uk by lion id <22319-0@lion>;
         Thu, 15 Sep 1994 11:21:24 +0100
To: [email protected]
Subject: Re: Ideas needed towards solution
Cc: [email protected]
Date: Thu, 15 Sep 1994 11:21:24 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>


> From: [email protected]
>
>
> Tim Bunce <[email protected]>  writes:
> > > 2)  simply carry the data need for parameter substitution under the covers
> > >     drawback:  lots of tracking and management
> > >
> > This is the way it has to be done.
> >
> > It's also the method DBperl will assist you with. DBperl will provide the
> > mechanisms 'to carry data under the covers' - specifically a pointer/ref.
>
> My problem is, specifically, that DB2/6000 requires me to parse the incoming
> sql and programmatically call one function for each and every parameter that
> must be substituted and one function for each column returned.  Each of these
> functions requires a complete description of the parameter/column.
>
> That means that I must maintain a copy of each select statement and must
> write a select/insert/update/delete sql parser.  :-(   Although, I haven't
> looked into doing it from with in perl :-)
>
Trust IBM to make life difficult. :-)

Ok, send me as much info as possible (function man pages etc) and I'll see
if there is anything I can add to the implementation to cater for your needs.
(No promises though :-)

> Mike
>
Regards,
Tim Bunce.

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <04483-6@lion>;
         Fri, 16 Sep 1994 07:31:30 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 15 Sep 94 19:49:03 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa09359;
         15 Sep 94 20:48 GMT-60:00
Received: by gw.home.vix.com id AA14533; Thu, 15 Sep 94 06:45:02 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA14523; Thu, 15 Sep 94 06:44:58 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id aa28746;
         15 Sep 94 14:38 GMT-60:00
Received: from ig.co.uk by lion id <26210-0@lion>;
         Thu, 15 Sep 1994 14:38:33 +0100
To: [email protected], [email protected]
Subject: New name for DBperl - LAST CALL!
Cc: [email protected]
Date: Thu, 15 Sep 1994 14:38:33 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>


> From: Larry Wall <[email protected]>
>
> :     LW> The only trouble with DB is that it'll be confused with Berkeley DB.
> :     LW> DA or DBA or DBAD maybe?  I dunno.  I'm in favor of something short.
> :
> : RDB ('cos most of them will be), or DBMS.
>
> There are already two separate things out there called "rdb".
>
> RDAD?  RDA?  DAD?
>
> RAD maybe?
>
> Then there's SQL Adaptor, or SAD.  :-)
>
:-)

I'd rather avoid 'S'ql because I intend DBperl to support non-sql
databases some point in the future.  The same applies, to a lesser
extent, with 'R'elational.

> I could go for a simple
>
>       DA      Database Adaptor
>       DS      Database Switch
>
> or if you like the B
>
>       DBA
>       DBS
>
Sadly DBA is firmly fixed in peoples minds as DB Administrator.

> or if you're into French or Japanese, and like debuggers
>
>       ADB
>       SDB
>
> :-)
>
Er, no thanks!

> But names which are typically going to be used *very* frequently as
> package name prefixes should be short to type and easy to pronounce.
> I knew COBOL was hopeless the moment I saw that they picked PERFORM
> when they could have picked DO.  As for IDENTIFICATION DIVISION,
> and ASSIGN CORRESPONDING...
>
True.

> Let's remember that we're trying to be practical, not sound elegant.
> Somebody is going to use up the short names eventually anyway, and the
> earlier stuff is likelier to be more important than the later stuff.
>
> Maybe it should be DS and DSA.  "The Perl DS extension" is pretty easy
> to type.  I have the feeling we're going to be typing it a lot.
>
My problem with DS is that it's almost meaningless out of context.

I guess one answer to that is to make DS (DBperl) as common as perl.
Would you be happy to ship DS as a standard part of perl Larry? :-)

I can live with DS and DSA, I think they'll grow on me (and save me
lots of typing :-).

Ok, *LAST CALL*, does anyone have an objections to, or comments on:

       DS      - "Database Switch"
       DSA     - "Database Switch Adaptor"

> Larry
>
Regards,
Tim Bunce.

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <04485-9@lion>;
         Fri, 16 Sep 1994 07:32:04 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 15 Sep 94 20:54:09 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa02167;
         15 Sep 94 21:53 GMT-60:00
Received: by gw.home.vix.com id AA21074; Thu, 15 Sep 94 12:23:02 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA21067; Thu, 15 Sep 94 12:22:58 -0700
Received: from scalpel.netlabs.com by netlabs.com (4.1/SMI-4.1) id AA05325;
         Thu, 15 Sep 94 12:21:20 PDT
Received: from localhost.netlabs.com by scalpel.netlabs.com (4.1/SMI-4.1)
         id AA22120; Thu, 15 Sep 94 12:23:34 PDT
Message-Id: <[email protected]>
To: Tim Bunce <[email protected]>
Cc: [email protected], [email protected]
Subject: Re: New name for DBperl - LAST CALL!
In-Reply-To: Your message of "Thu, 15 Sep 94 14:38:33 BST." <[email protected]>
Date: Thu, 15 Sep 94 12:23:33 -0700
From: Larry Wall <[email protected]>

: I guess one answer to that is to make DS (DBperl) as common as perl.
: Would you be happy to ship DS as a standard part of perl Larry? :-)

You bet.

Larry

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <04483-14@lion>;
         Fri, 16 Sep 1994 07:32:41 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 15 Sep 94 23:27:04 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa19345;
         16 Sep 94 0:26 GMT-60:00
Received: by gw.home.vix.com id AA21120; Thu, 15 Sep 94 12:27:47 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA21116; Thu, 15 Sep 94 12:27:45 -0700
Received: by rain.org (4.1/25-eef) id AA29149; Thu, 15 Sep 94 12:24:18 PDT
Date: Thu, 15 Sep 1994 12:24:18 -0700 (PDT)
From: Joe McDonald <[email protected]>
Subject: Re: New name for DBperl - LAST CALL!
To: Tim Bunce <[email protected]>
Cc: [email protected], [email protected], [email protected]
In-Reply-To: <[email protected]>
Message-Id: <[email protected]>
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Thu, 15 Sep 1994, Tim Bunce wrote:

>       DS      - "Database Switch"
>       DSA     - "Database Switch Adaptor"

I like DSA, DS is often used to represent a "Dynaset" in Microsoft
Access, which hopefully will be controlled by PERL in the future.

regards,
-joe


---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <04483-17@lion>;
         Fri, 16 Sep 1994 07:33:11 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 01:36:58 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa14325;
         16 Sep 94 2:36 GMT-60:00
Received: by gw.home.vix.com id AA24948; Thu, 15 Sep 94 15:37:28 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA24944; Thu, 15 Sep 94 15:37:24 -0700
Received: from wabash.UUCP by netcomsv.netcom.com with UUCP (8.6.4/SMI-4.1)
         id PAA17477; Thu, 15 Sep 1994 15:31:50 -0700
Received: from speedy.acuson.com by wabash.acuson.com (4.1/Acuson/SMI-4.0)
         id AA05816; Thu, 15 Sep 94 15:09:48 PDT
Received: from himalaya.acuson.com by speedy.acuson.com (4.1/SMI-4.1)
         id AA05707; Thu, 15 Sep 94 15:09:48 PDT
Received: by himalaya.acuson.com (4.1/SMI-4.1) id AA06621;
         Thu, 15 Sep 94 15:06:35 PDT
Date: Thu, 15 Sep 94 15:06:35 PDT
From: Sarvesh Mathur <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: Re: New name for DBperl - LAST CALL!

>My problem with DS is that it's almost meaningless out of context.
>
>I guess one answer to that is to make DS (DBperl) as common as perl.
>Would you be happy to ship DS as a standard part of perl Larry? :-)
>
>I can live with DS and DSA, I think they'll grow on me (and save me
>lots of typing :-).
>
> Ok, *LAST CALL*, does anyone have an objections to, or comments on:
>
>       DS      - "Database Switch"
>       DSA     - "Database Switch Adaptor"
>

I agree that DS/DSA seem unintuitve, and find:

DI      - "Database Interface"
DBI     - "Data Base Interface"

Slightly more intuitive ;-)
--------

If I didn't know about the package, I would probably be able to guess
what DBI meant, but DSA would be really hard.

Just my $0.02.

P.S.

I'm thinking of developing a GUI front end using D? Perl that has a smart
table view (like PowerBuilder/SQL Windows) widget that is based on Wafe/Mofe
(Motif Front End by Gustaf Newman).  I have already implemented a prototype
in ingperl/wafeperl.

Would anyone find this a useful module?


---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <04486-18@lion>;
         Fri, 16 Sep 1994 07:33:27 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 05:04:13 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa21711;
         16 Sep 94 6:03 GMT-60:00
Received: by gw.home.vix.com id AA29472; Thu, 15 Sep 94 18:48:05 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA29468; Thu, 15 Sep 94 18:48:04 -0700
Received: from kiwi.rand.org by rand.org with SMTP id AA11165 (5.67a/IDA-1.5
         for [email protected]); Thu, 15 Sep 1994 18:48:03 -0700
Received: from localhost by kiwi.rand.org; Thu, 15 Sep 94 18:48:02 PDT
Message-Id: <[email protected]>
To: [email protected]
Subject: Re: New name for DBperl - LAST CALL!
Date: Thu, 15 Sep 1994 18:48:01 -0700
From: Terry West <[email protected]>

Another possibility might be DBX for Data Base eXtensions..

   Terry West

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <07676-0@lion>;
         Fri, 16 Sep 1994 13:49:58 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 08:13:43 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa00523;
         16 Sep 94 9:13 GMT-60:00
Received: by gw.home.vix.com id AA01730; Thu, 15 Sep 94 20:43:34 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA01726; Thu, 15 Sep 94 20:43:33 -0700
Received: by habanero.ucs.indiana.edu (Smail3.1.28.1 #1) id m0qlUCn-0008hjC;
         Thu, 15 Sep 94 22:43 EST
Message-Id: <[email protected]>
To: Terry West <[email protected]>
Cc: [email protected]
Reply-To: Scott Hutton <[email protected]>
Subject: Re: New name for DBperl - LAST CALL!
In-Reply-To: <[email protected]>
Date: Thu, 15 Sep 1994 22:43:20 -0500
From: Scott Hutton <[email protected]>

At 18:48 on Thu, 15 Sep, Terry West wrote:
| Another possibility might be DBX for Data Base eXtensions..
|
|     Terry West

It's also the name of a lovely debugger...

How about Data Access and Manipulation, Naturally (DAMN).

-Scott

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <07677-1@lion>;
         Fri, 16 Sep 1994 13:50:05 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 08:39:51 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa07642;
         16 Sep 94 9:39 GMT-60:00
Received: by gw.home.vix.com id AA04204; Thu, 15 Sep 94 22:35:28 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA04200; Thu, 15 Sep 94 22:35:27 -0700
Received: from drax.isi.edu by drax.isi.edu (5.65c/5.61+local-16) id <AA10113>;
         Thu, 15 Sep 1994 22:35:24 -0700
To: [email protected]
Subject: Re: New name for DBperl - LAST CALL!
In-Reply-To: Your message of "Thu, 15 Sep 1994 22:43:20 CDT." <[email protected]>
Date: Thu, 15 Sep 94 22:35:23 PDT
Message-Id: <[email protected]>
From: Craig Milo Rogers <[email protected]>

       Well, since this thread is going nonlinear...

UDB::   Universal DataBase

DEC::   Database Extension Commutator

DBMS::  DataBase Multiplexing Switch
       DataBase Multiplexing System
       DataBase Manglement System

PHD::   Perl Helper for Databases

RX::    Relational eXtension

RAP::   Relational Adaptor for Perl


       Actually, all things considered, DBMS:: is concise (not as much
as DS::, of course) and appropriate, though a little boring.  So:

DBMS::  DataBase Multiplex Switch
DBMA::  DataBase Multiplex Adaptor

       Hmmm, DBMA:: doesn't sound right.  How about:

DBMS::  DataBase Module Switch
DBM::   Database Module

       Well, that almost makes sense.  Of course, now they are
database modules instead of adaptors. :-)

                                       Craig Milo Rogers

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <07674-3@lion>;
         Fri, 16 Sep 1994 13:50:13 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 10:26:04 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa07032;
         16 Sep 94 11:25 GMT-60:00
Received: by gw.home.vix.com id AA08670; Fri, 16 Sep 94 02:20:57 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA08666; Fri, 16 Sep 94 02:20:56 -0700
Received: from pony.ingres.com by ingres.com (4.1/SMI-4.1/INGRES/zool/02.09.94)
         id AA13514; Fri, 16 Sep 94 02:20:50 PDT
Received: from bigblue.ingres.com (bigblue)
         by pony.ingres.com (5.65c8+/INGRES/Router/pony/08.16.93) id AA21939;
         Fri, 16 Sep 1994 02:20:45 -0700
Received: by bigblue.ingres.com (AIX 3.2/UCB 5.64/4.03) id AA17399;
         Fri, 16 Sep 1994 10:17:57 GMT
Date: Fri, 16 Sep 1994 10:17:57 GMT
From: Duncan Mackinder <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: Re: New name for DBperl - LAST CALL!
Cc:

Since we seem to be having a lot of trouble picking a letter to go
with D which appears in the majority of suggestions, how about simply
D? for database, or even data?  ;-)

Duncan Mackinder



---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <07674-4@lion>;
         Fri, 16 Sep 1994 13:50:20 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 10:50:47 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa14043;
         16 Sep 94 11:50 GMT-60:00
Received: by gw.home.vix.com id AA07318; Fri, 16 Sep 94 01:11:04 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA07311; Fri, 16 Sep 94 01:10:59 -0700
Received: from meteor.auspex.fr by relay1.fnet.fr (5.65c8d/92.02.29)
         via Fnet/EUnet-France id AA02151;
         Fri, 16 Sep 1994 10:09:44 +0200 (MET)
Received: from balzac.auspex.fr.auspex.fr by auspex.fr (4.1/SMI-4.1) id AA12113;
         Fri, 16 Sep 94 09:58:25 +0200
Received: from nova.auspex.fr.auspex.fr
         by balzac.auspex.fr.auspex.fr (4.1/SMI-4.1) id AA18499;
         Fri, 16 Sep 94 09:49:28 +0100
Date: Fri, 16 Sep 94 09:49:28 +0100
From: Kevin Stock <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: Re: New name for DBperl - LAST CALL!
Cc: [email protected]


> DI    - "Database Interface"
> DBI   - "Data Base Interface"

I think we should keep DB in the name somewhere, because it automatically
makes people think of databases. Nothing else has that sort of instant
recognition.

DBI seems reasonable.

       Kevin

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <14729-5@lion>;
         Fri, 16 Sep 1994 17:06:58 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 15:49:11 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa19376;
         16 Sep 94 16:48 GMT-60:00
Received: by gw.home.vix.com id AA10642; Fri, 16 Sep 94 04:27:07 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA10638; Fri, 16 Sep 94 04:27:04 -0700
Received: from turing.ncl.ac.uk by cheviot.ncl.ac.uk
         id <[email protected]> (5.65cVUW/NCL-CMA.1.35
         for <[email protected]>) with SMTP;
         Fri, 16 Sep 1994 12:26:56 +0100
From: "Martin R.J. Cleaver" <[email protected]>
Message-Id: <[email protected]>
Subject: Re: New name for DBperl - LAST CALL!
To: Myself and I <[email protected]>
Date: Fri, 16 Sep 1994 12:26:51 +0100 (BST)
Cc: [email protected]
In-Reply-To: <[email protected]> from "Terry West" at Sep 15, 94 06:48:01 pm
X-Mailer: ELM [version 2.4 PL23]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 282

Terry West writes:

   Another possibility might be DBX for Data Base eXtensions..

Or even DFP for "Databases For Perl".

Martin.

--
Email : [email protected] or [email protected]
CS Graduate, Uni Newcastle. Currently on MSc Comp.SW and Systems Design.

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <14730-5@lion>;
         Fri, 16 Sep 1994 17:07:01 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 15:55:12 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa21871;
         16 Sep 94 16:54 GMT-60:00
Received: by gw.home.vix.com id AA12129; Fri, 16 Sep 94 05:11:38 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA12125; Fri, 16 Sep 94 05:11:37 -0700
Received: from dax.austin.ibm.com (dax.austin.ibm.com [129.35.112.95])
         by netmail1.austin.ibm.com (8.6.9/8.6.9) with SMTP id HAA40077;
         Fri, 16 Sep 1994 07:11:35 -0500
Received: from localhost.austin.ibm.com
         by dax.austin.ibm.com (AIX 3.2/UCB 5.64/4.03-client-2.4)
         for [email protected] at austin.ibm.com; id AA10028;
         Fri, 16 Sep 1994 07:10:07 -0500
Message-Id: <[email protected]>
To: Scott Hutton <[email protected]>
Cc: Terry West <[email protected]>, [email protected]
Subject: Re: New name for DBperl - LAST CALL!
In-Reply-To: Your message of Thu, 15 Sep 1994 22:43:20 CDT. <[email protected]>
Date: Fri, 16 Sep 1994 07:10:07 -0500
From: [email protected]


Scott Hutton <[email protected]>  writes:
> At 18:48 on Thu, 15 Sep, Terry West wrote:
> | Another possibility might be DBX for Data Base eXtensions..
> |
> |     Terry West
>
> It's also the name of a lovely debugger...
>
> How about Data Access and Manipulation, Naturally (DAMN).
>
>  -Scott

So referring to it usage would be "DAMN PERL" or would that be
"PERL DAMN"   :-)

Mike

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <15187-1@lion>;
         Fri, 16 Sep 1994 18:01:52 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 16:27:47 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa03060;
         16 Sep 94 17:27 GMT-60:00
Received: by gw.home.vix.com id AA10792; Fri, 16 Sep 94 04:39:49 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA10788; Fri, 16 Sep 94 04:39:44 -0700
Received: from meteor.auspex.fr by relay1.fnet.fr (5.65c8d/92.02.29)
         via Fnet/EUnet-France id AA13293;
         Fri, 16 Sep 1994 13:39:36 +0200 (MET)
Received: from balzac.auspex.fr.auspex.fr by auspex.fr (4.1/SMI-4.1) id AA12448;
         Fri, 16 Sep 94 13:23:01 +0200
Received: from nova.auspex.fr.auspex.fr
         by balzac.auspex.fr.auspex.fr (4.1/SMI-4.1) id AA18687;
         Fri, 16 Sep 94 13:14:15 +0100
Date: Fri, 16 Sep 94 13:14:15 +0100
From: Kevin Stock <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: Re: New name for DBperl - LAST CALL!



> DBMS::
>       DataBase Manglement System

Yeah! Like it. We could use this for the 'DBMS really stands for ... but don't
tell anybody I said that' line.

       Kevin

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <20719-3@lion>;
         Sat, 17 Sep 1994 18:11:27 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 18:52:03 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa21938;
         16 Sep 94 19:51 GMT-60:00
Received: by gw.home.vix.com id AA14002; Fri, 16 Sep 94 06:50:03 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA13970; Fri, 16 Sep 94 06:50:01 -0700
Received: by rmy.rmy.emory.edu (5.65/Emory_rmy.3.4.0) via MAILPROG id AA12168 ;
         Fri, 16 Sep 94 09:54:31 -0400
Return-Path: [email protected]
Date: Fri, 16 Sep 94 09:54:31 -0400
From: Walt Hultgren <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: Re: New name for DBperl - LAST CALL!

> I think we should keep DB in the name somewhere, because it automatically
> makes people think of databases. Nothing else has that sort of instant
> recognition.

I agree.  I was about to make that same point when the above message reached
my site.

I admit to being somewhat of a lurker here, knowing only the slightest bit
about Perl.  However, I expect that DBperl (or its subsequent descendant)
will motivate me to take the plunge.  From that perspective, simply "D"
brings to mind "Distributed" or to a lesser extent "Dynamic".

I suppose the intuitive or connotative value of any short acronym will
depend a lot on context.  We may have to just pick one and stare at it
until we're comfortable with it. :-)  I personally have a strong preference
to have "DB" in there somewhere, though.  I'll leave the choice of what
goes before or after it (if anything) to those more steeped in the Perl
idiom.

Walt.

--
Walt Hultgren              Internet: [email protected]       (IP 128.140.8.1)
Emory University               UUCP: {...,gatech,rutgers,uunet}!emory!rmy!walt
954 Gatewood Road, NE        BITNET: walt@EMORY
Atlanta, GA  30329  USA       Voice: +1 404 727 0648

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <20721-6@lion>;
         Sat, 17 Sep 1994 18:11:51 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 16 Sep 94 23:10:22 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa08809;
         17 Sep 94 0:09 GMT-60:00
Received: by gw.home.vix.com id AA23475; Fri, 16 Sep 94 13:45:07 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA23471; Fri, 16 Sep 94 13:45:04 -0700
Received: from barney.salestech.com
         by gatekeeper.salestech.com (AIX 3.2/UCB 5.64/4.03) id AA16700;
         Fri, 16 Sep 1994 16:41:50 -0400
Received: by barney.salestech.com (AIX 3.2/UCB 5.64/4.03) id AA31577;
         Fri, 16 Sep 1994 16:42:36 -0400
Date: Fri, 16 Sep 1994 16:42:36 -0400
From: Miles Duke <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
In-Reply-To: <[email protected]> ([email protected])
Subject: Re: New name for DBperl - LAST CALL!
Reply-To: [email protected]

Okay, I've mostly lurked, being new to Perl, and completely ignorant
of object-oriented Perl and any naming standards it might suggest.
Here are my entries.

   DB::Independence     <Self Explanatory>

   PDBA                 <Perl DataBase Adaptors>

   PDBI                 <Perl DataBase Interface>

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <20719-8@lion>;
         Sat, 17 Sep 1994 18:11:57 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Sat, 17 Sep 94 01:08:45 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa04637;
         17 Sep 94 2:08 GMT-60:00
Received: by gw.home.vix.com id AA25119; Fri, 16 Sep 94 15:12:39 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA25115; Fri, 16 Sep 94 15:12:34 -0700
Received: from mario.ses.com by uu10.psi.com (5.65b/4.0.061193-PSI/PSINet)
         via SMTP; id AA07127 for [email protected];
         Fri, 16 Sep 94 18:15:22 -0400
Date: Fri, 16 Sep 94 17:12:10 CDT
From: Jeff Bone <[email protected]>
Received: from slacker.ses.com (slacker.ARPA)
         by ses.com (4.1/3.1.012693-SES - Scientific and Engineering Software);
         id AA10993 for [email protected]; Fri, 16 Sep 94 17:12:10 CDT
Message-Id: <[email protected]>
To: [email protected], [email protected]
Subject: Re: New name for DBperl - LAST CALL!



My $0.02...


       "D", or if that's too minimal, "DP".


:)


jb

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <15102-4@lion>;
         Mon, 19 Sep 1994 20:05:07 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Mon, 19 Sep 94 18:52:47 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa03434;
         19 Sep 94 19:51 GMT-60:00
Received: by gw.home.vix.com id AA01976; Mon, 19 Sep 94 06:19:04 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA01969; Mon, 19 Sep 94 06:18:55 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id aa01283;
         19 Sep 94 14:12 GMT-60:00
Received: from ig.co.uk by lion id <28069-0@lion>;
         Mon, 19 Sep 1994 14:12:03 +0100
To: [email protected], [email protected]
Subject: New name for DBperl - LAST CALL - SUMMARY
Date: Mon, 19 Sep 1994 14:12:02 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>

Wow, that certainly brought out the lurkers! Over thirty messages...

Recent suggestions include:

       PDPDBE
       DBMA
       DBMS
       PDBA
       PDBI
       DAMN
       DBS
       DBE
       DBI
       BDE
       DEL
       DBX
       UDB
       DEC
       PHD
       RAP
       DBM
       DBX
       DFP
       RX
       DS
       DP
       D

I've been away for a few days and I've been giving the name
considerable thought.  (My fiancee, Jo, has also been thinking about
this.  Her best suggestion was to call it... "Jo" ;-)

In my last message I said:

       I'd rather avoid 'S'ql because I intend DBperl to support
       non-sql databases some point in the future.

       The same applies, to a lesser extent, with 'R'elational.

I'd now add (in line with several of your comments):

       A 'D'atabase needs a 'B' to be recognisable.

For the 'core' or 'switch' I'm now settled on DBI.

       "The Perl Database Interface"
       "The Database Interface for Perl"
       "The Perl DBI"

all sound simple, clear and precise.  'Interface' is a very apt
description.  I'm open to comments but they'd better be good (and
quick, as I'll be editing the code soon!)

All we need now is a corresponding module name for the Adaptors.
My preferred options are:

       DBD     - "Database Driver"
       DBIA    - "Database Interface Adaptor"

Whatever we pick needs to read well ...

       "The Oracle Database Driver for Perl"
etc

Regards,
Tim Bunce.

p.s. Prize for the most humorous suggestion goes to Randal.  The only
suggestion that had me laughing out loud. Thanks Randal!  I'll repeat
it here for those on the perldb-interest list who did not see the original:

How about

       Perl Distribution Public Data Base Engine

so that when I use its abbreviation in my perl class,

       PDPDBE

I can follow it with

       "buck!"

(if you don't get this, you never watched "Buck Rogers in the 25th century"...)

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <03493-1@lion>;
         Tue, 20 Sep 1994 12:57:35 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Tue, 20 Sep 94 11:36:19 GMT
Received: from gw.home.vix.com by post.demon.co.uk id aa25817;
         20 Sep 94 12:36 GMT-60:00
Received: by gw.home.vix.com id AA02988; Tue, 20 Sep 94 01:40:44 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA02984; Tue, 20 Sep 94 01:40:33 -0700
Received: from meteor.auspex.fr by relay1.fnet.fr (5.65c8d/92.02.29)
         via Fnet/EUnet-France id AA10053;
         Tue, 20 Sep 1994 10:39:41 +0200 (MET)
Received: from balzac.auspex.fr.auspex.fr by auspex.fr (4.1/SMI-4.1) id AA21722;
         Tue, 20 Sep 94 10:24:42 +0200
Received: from nova.auspex.fr.auspex.fr
         by balzac.auspex.fr.auspex.fr (4.1/SMI-4.1) id AA20347;
         Tue, 20 Sep 94 10:15:52 +0100
Date: Tue, 20 Sep 94 10:15:52 +0100
From: Kevin Stock <[email protected]>
Message-Id: <[email protected]>
To: [email protected], [email protected], [email protected]
Subject: Re: New name for DBperl - LAST CALL - SUMMARY


> For the 'core' or 'switch' I'm now settled on DBI.
>
>       "The Perl Database Interface"
>       "The Database Interface for Perl"
>       "The Perl DBI"
>
> all sound simple, clear and precise.  'Interface' is a very apt
> description.  I'm open to comments but they'd better be good (and
> quick, as I'll be editing the code soon!)

Seems fine. I prefer the 1st and 3rd ways of expressing it.

> All we need now is a corresponding module name for the Adaptors.
> My preferred options are:
>
>       DBD     - "Database Driver"
>       DBIA    - "Database Interface Adaptor"
>
> Whatever we pick needs to read well ...
>
>       "The Oracle Database Driver for Perl"

Do we really need to make the distinction? "DBI" refers to the switch,
"Oracle DBI" indicates the bit which makes it apply to Oracle. If we
do want a term, then DBIA is better because it makes the link with DBI
which DBD doesn't.

> (if you don't get this, you never watched "Buck Rogers in the 25th century"...)

No, I didn't, and I don't understand this at all.

       Kevin

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <15511-6@lion>;
         Fri, 30 Sep 1994 07:31:52 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Fri, 30 Sep 94 01:43:26 GMT
Received: from gw.ramona.vix.com by post.demon.co.uk id aa06951;
         30 Sep 94 2:42 GMT-60:00
Received: by gw.home.vix.com id AA24938; Thu, 29 Sep 94 16:21:45 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AB24920; Thu, 29 Sep 94 16:21:43 -0700
Received: by uucp-gw-2.pa.dec.com; id AA15431; Thu, 29 Sep 94 15:31:41 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id aa24911;
         29 Sep 94 22:23 GMT-60:00
Received: from ig.co.uk by lion id <13836-0@lion>;
         Thu, 29 Sep 1994 22:22:46 +0100
To: [email protected]
Subject: Status update
Date: Thu, 29 Sep 1994 22:22:46 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>

The Perl 5 DBI switch is almost ready for alpha release!

I plan to release the first alpha shortly after perl 5 goes live.

I have included below a test script and the sample perl driver it
uses.  I'm starting work on a sample C driver now.

Please don't get too worked up about these samples. I don't want
to spend too much time answering questions right now (sorry). I will
just explain this much:

  The sample driver implements a pathetically simple 'fstat' database.

  A prepare() defines the fields of interest.

  An execute() defines the directory to 'query'.

  The DBI Switch implements a 'quick FETCH' which will return
  any defined attributes without calling the drivers FETCH method.
  If the stored value is a CODE ref the Switch executes it and
  returns the result. See NUM_OF_FIELDS in prepare() for example.

  Error handling is very minimal just now. I've got as far as allowing
  a driver to say:  return anerror $handle "message", $value;
  This may well change (actually _anything_ may well change :-).

  I hope you agree that not much code is required to implement a
  driver in perl.

  The XS file only defines 3 significant XS functions! The entire
  DBI interface is constructed at runtime via install_method()!

  The Switch includes good debugging trace facilities. For example,
  executing:
       $csr_a->debug(2);
       $csr_a->fetchrow;
       $csr_a->debug(0);
  prints:
       DBI::st=HASH(0xb3898) debug level set to 2
       -> *DBD::ExampleP::st::fetchrow DBI::st=HASH(0x133314)
       <- fetchrow= 'fred'
       -> *DBD::ExampleP::st::debug DBI::st=HASH(0x133314) '0'
       DBI::st=HASH(0xb3898) debug level set to 0
       <- debug= '0'
  This does not place a burden on speed!

  Debug levels are passed on to generated handles. E.g., a database
  session handle will pass it's debug level on to any statements
  that are prepared for that session.


Regards,
Tim Bunce.

Oh yes, I almost forgot. The DBperl effort is two years old today!

------ snip ------

use DBI;
use strict;

# Ask for some information from the DBI Switch
my($switch) = DBI->internal;
$switch->debug(0); # 2=detailed handle trace

print "Switch: $switch->{'Attribution'}, $switch->{'Version'}\n";

$switch->{'DebugDispatch'} = 1; # 2=detailed trace of all dispatching
print "DebugDispatch: $switch->{'DebugDispatch'}\n";

print "Available Drivers: ",join(", ",DBI->available_drivers()),"\n";

# first, get connected using either of these methods:

my($dbh);
if (0){
       $dbh = DBI->connect('', '', '', 'ExampleP');
}else{
       my($drh) = DBI->install_driver('ExampleP');
       print "Driver installed as $drh\n";
       $dbh = $drh->connect('', '', '');
}
#$dbh->debug(2);

run_test($dbh);

print "$0 Done. (global destruction will follow)\n\n";
exit 0;


sub run_test{
       my($dbh) = @_;

       print "Connected as $dbh\n\n";

       $dbh->commit;

       print "Name: $dbh->{'Name'}\n"; print "\n";

       my($csr_a) = $dbh->prepare("select name,mode,ino from ?");
       print "Prepared as $csr_a\n";

       my($csr_b) = $dbh->prepare("select name,size,blocks from ?");
       print "Prepared as $csr_b\n";

       # Test object attributes

       print "Number of fields: $csr_a->{'NUM_OF_FIELDS'}\n";
       print "Data type of first field: $csr_a->{'DATA_TYPE'}->[0]\n";
       print "Chain: $csr_a->{'Database'}->{'Driver'}->{'Name'}\n";

       $csr_a->execute('/usr');
       $csr_b->execute('/usr/spool');

       print "Fetching data from both cursors:\n";
       my(@row_a, @row_b);
       while((@row_a = $csr_a->fetchrow)
          && (@row_b = $csr_b->fetchrow)){
               print "@row_a, @row_b\n";
       }

       print "Preparing new cursor a:\n";
       # NOTE: This will DESTROY (and hence &finish) the current $csr_a!
       # This is a major win with DBI for Perl 5
       $csr_a = $dbh->prepare("select mtime from ?");
       $csr_a->execute('../..');

       $csr_a->debug(0); # 2=detailed handle trace

       print "Fetching row from cursor a:\n";
       print join(' ',$csr_a->fetchrow),"\n";
       $csr_a->finish;
}

------ snip ------
{
       package DBD::ExampleP;

       require DynaLoader;
       @ISA = (DynaLoader);
       # Do NOT @EXPORT anything.

       bootstrap DBD::ExampleP;

       @statnames = qw(dev ino mode nlink uid gid
                               rdev size atime mtime ctime blksize blocks name);
       @statnames{@statnames} = (0 .. @statnames-1);
       @stattypes = qw(1 1 1 1 1 1 1 1 3 3 3 1 1 2);
       @stattypes{@statnames} = @stattypes;

       # $drh a handle for this driver

       sub driver{
               return $drh if $drh;
               $drh = DBD::ExampleP::dr->new({
                       'Name' => 'ExampleP',
                       'Version' => '$Revision: 1.3 $',
                       'Attribution' => 'DBD Example Perl stub by Tim Bunce',
                       });
       }

       1;
}


{       package DBD::ExampleP::dr; # ====== ADAPTOR ======
       @ISA=qw(DBD::_::dr);
       use strict;

       sub connect {
               my($drh, $dbname, $user, $auth)= @_;
               my($this) = DBD::ExampleP::db->new($drh, {
                       'Name' => $dbname,
                       'User' => $user,
                       });
               $this;
       }
}


{       package DBD::ExampleP::db; # ====== DATABASE ======
       @ISA=qw(DBD::_::db);

       sub prepare {
               my($dbh, $statement)= @_;
               my($fields, $param) = $statement =~ m/^select ([\w,\s]+) from (.*)/i;
               my(@fields) = split(/\s*,\s*/, $fields);

               my(@bad) = map($DBD::ExampleP::statnames{$_} ? () : $_, @fields);
               return anerror $dbh "Unknown field names: @bad" if @bad;

               my($outer, $sth) = DBD::ExampleP::st->new($dbh, {
                       'Statement'     => $statement,
                       'fields'        => \@fields,
                       'NUM_OF_FIELDS' => sub { scalar(@{$sth->{'fields'}}) },
                       });

               print "DBD::ExampleP::db::prepare=$outer (inner=$sth)\n\n"
                       if $dbh->debug;
               $outer;
       }

}


{       package DBD::ExampleP::st; # ====== STATEMENT ======
       @ISA=qw(DBD::_::st);

       $gensym = "SYM000";

       sub execute {
               my($sth, $dir) = @_;
               $sth->finish;
               $sth->{'datahandle'} = "DBD::ExampleP::st::".++$gensym;
               opendir($sth->{'datahandle'}, $dir)
                       or return anerror $sth "opendir($dir): $!";
               $sth->{'dir'} = $dir;
               1;
       }

       sub fetchrow {
               my($sth) = @_;
               my $f = readdir($sth->{'datahandle'});
               unless($f){
                       $sth->finish;     # no more data so finish
                       return ();
               }
               my(%s); # fancy a slice of a hash?
               # put in all the data fields
               @s{@DBD::ExampleP::statnames} = (stat("$sth->{'dir'}/$f"), $f);
               # return just what fields the query asks for
               @s{@{$sth->{'fields'}}};
       }

       sub finish {
               my($sth) = @_;
               return unless $sth->{'datahandle'};
               closedir($sth->{'datahandle'});
       }

       sub FETCH {
               my ($sth, $attrib) = @_;

               # in reality this would interrogate the database engine
               # to return dynamic values that cannot be precomputed.
               if ($attrib eq 'DATA_TYPE'){
                       my(@t) = @DBD::ExampleP::stattypes{@{$sth->{'fields'}}};
                       return \@t;
               }

               warn "$sth: fetch unknown attribute '$attrib'\n";
               return undef; # unknown attribute
       }

       sub STORE {
               my ($sth, $attrib, $value) = @_;
               # would normally validate and only store known attributes
               warn "$sth: store unknown attribute '$attrib'\n";
               $sth->{$attrib} = $value;
       }

}

1;

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <14764-0@lion>;
         Thu, 13 Oct 1994 02:26:32 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Thu, 13 Oct 94 01:25:50 GMT
Received: from gw.ramona.vix.com by post.demon.co.uk id aa04661;
         13 Oct 94 2:25 GMT-60:00
Received: by gw.home.vix.com id AA16726; Wed, 12 Oct 94 15:05:33 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA16719; Wed, 12 Oct 94 15:04:46 -0700
Received: from ignite.demon.co.uk by post.demon.co.uk id ab21333;
         12 Oct 94 22:22 GMT-60:00
Received: from ig.co.uk by lion id <13251-0@lion>;
         Wed, 12 Oct 1994 22:21:56 +0100
To: [email protected], [email protected]
Subject: Alpha DBI Module Release (v0.2)
Content-Type: X-sun-attachment
Date: Wed, 12 Oct 1994 22:21:56 +0100
From: Tim Bunce <[email protected]>
Sender: [email protected]
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Message-Id: <[email protected]>

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 82

Well, here it is, finally, the Perl 5 Database Interface Module.

Larry has kindly agreed to ship the DBI as a standard part of Perl 5.

Rather than drop it into the release at the last moment and possibly
suffer portability problems which would reflect badly on Perl, I want
to release a version now for testing.

This DBI comes with just one driver, a trivial example perl script.

Please build and test using Perl 5 beta 3h (or later). For those not on
the perl5-porters list, a beta 3h (or later) version of perl can be
found on ftp://ftp.funet.fi/pub/languages/perl/ports/perl5/perl5beta
(see the Meta-FAQ posted to comp.lang.perl for other locations).

The ext/DBI directory contains a dbitest script which should produce
output something like this:

--- snip ---
DBI test application $Revision: 1.14 $
Switch: DBI Switch by Tim Bunce, $Revision: 1.18 $
DebugDispatch: 0
Available Drivers: ExampleP
Driver installed as DBI::dr=HASH(0x185a24)
Connected as DBI::db=HASH(0x19c6f0)

Prepared as DBI::st=HASH(0x19c768)
Prepared as DBI::st=HASH(0xda8f8)
Number of fields: 3
Data type of first field: 1
Driver name: ExampleP
Fetching data from both cursors:
16877 2 ., 2 512 .
16877 2 .., 2 512 ..
16877 3 lost+found, 2 512 mqueue
17901 2688 export, 2 512 mail
17901 10752 bin, 2 512 cron
17901 16128 ucb, 2 512 rwho
17901 18816 etc, 2 512 uucp
17901 32256 include, 2 512 uucppublic
17901 75280 5lib, 2 512 locks
17901 77954 lib, 2 512 secretmail
17901 34974 share, 2 512 lpd
17901 69902 hosts, 2 4 lpd.lock
17901 59190 boot, 10 5120 news
16877 6144 local, 2 512 calendar
17901 75300 old, 2 512 clink

Automatic method parameter usage check:
DBI commit: invalid number of parameters (handle+1)
Usage: $h->commit() at ./dbitest line 91.

Preparing new $cursor_a to replace current $cursor_a:
(we enable debugging on cursor to watch it's destruction)
   DBI::st=HASH(0xda850) debug level set to 2
   -> *DBD::_::common::_untied ((DBD::ExampleP::st)DBI::st=HASH(0x19c768))
   <- _untied= undef
   -> *DBD::_::st::DESTROY ((DBD::ExampleP::st)DBI::st=HASH(0xda850))
   -> *DBD::ExampleP::st::finish ((DBD::ExampleP::st)DBI::st=HASH(0xda850))
   <- finish= undef
   <- DESTROY= undef
Fetching one row from new $cursor_a:
781991744 .
test done (scoped objects will be destroyed now)
/dbitest Done. (global destruction will follow)
--- snip ---

You can use the -d n and -h n options to enable various levels of dispatcher
and handle debugging.

No documentation at the moment, sorry. The core functionality of the
DBI is complete. Areas such as error handling still need work.

Please test this release and send any comments you have back to me ASAP.

Have fun :-)

Regards,
Tim Bunce.

p.s. An Oracle module is 'in-the-works' but it's early days yet. I hope to
release a skeleton driver in C for other to start working on in the near future.
----------
X-Sun-Data-Type: default
X-Sun-Data-Name: DBI-0.2.tar.Z
X-Sun-Encoding-Info: uuencode
X-Sun-Content-Lines: 470

begin 600 DBI-0.2.tar.Z
M'YV01(0D>0&@H,&#"!,J7,BPH<.'$!&"F'BC(@@ $T'0J$'C8D80,61X_$@2
MQL0:-FC<@%$C!@P:'2?"E'$#8\2;.'/JW,FSI\^?0(,*'4JTZ,.  YL$<9+$
M2)$I5(Q*'9H19D>,,CF.G!AR*TF.-DZFM%&1[(T8&5'6@&%SJMNW<./*G4NW
MKE2D+N"T 4$%31D01,+0"2,FS)R_2=S0*2/'3)@Q?YN\(5.'S5\HC-F &#.Y
MC *\>.;P]0M8,&'#B!4S=@P9A&3*ED%@F;*Y\V>!LUV@&?T7J6S::50W?OS7
[email protected]<-XC@*E3)U"?1YF31DS:2R[@,*$M^OJU[/_/5/&#6/!QV\G^2*$
M=M_> D&(>?.&SAPZ<L+  4'>?'XZZ16!1QAMP&$9%'GM%00(S,F1!PASI%%@
M;&4,.&%ORC4(0AN35>89&6*DL=A]("P8X84@C$@'"/H9F,88@J7QAAL@U!&A
M&V> (""!!I:!H%X*T/%"&\&YL.*"^"V71AB:J0CA&,K!L:)QR)W0!G@IEG'?
M"0K8Y>671"'U E*YH0'FF57!M-5&5WW4%58DR9!23"BIQ!)+-\0$0@T<U=#6
MF8 &*NB@A!:JTPLJ@$!"$F3H !AN4^C&@AT@N8!6##GD0,,++G$J4@PUZ! #
M#CK0E**$\^F(QWXD* """JXF.L0;<.2AW!EHK(C"&"F E"D-+/ E(0A"U.$&
M9+'&"D(6;]2Q81@/DI'&?<J)4<=B-;I!!F,IDK:8'&V(]H89()0AHE_(T4':
M$4Y4 <(1Y9VG&11UB,'&B\HR\6)YAX%P7+=_!2$''=,2/ 8(^D+FQF'!&@8A
M'&6,D09V99 !0G  @X"9')I)44001#11! C8:1?K"[email protected]"0V+>L]1:>
M&R+*N##)_P9$A&L=6B::"B@K,$)P8[!1Q[8@B% $%E04(843NHD@--%&(RT"
MQ!Q'/?6Q5?\EPFQ5"*&URHF^S)@;3(* 1!C:QA8$'4E:.^*K*(^P+7;FL8Q$
M$%\DT0044 4Q!1(9F03"RE)8X2^Y]QFVV[B;L6&8:!+VV$9Y!.,( AILDQ$;
MT$+?'1Q\2>S=]]]$!$'%@AFA=7BBB:?XQL477J[8<:+!D:%@?[TAAAH1KTC2
M1*#;/3/IIA-1A!!5'#&\2*^S#,*VUN9X&-S!Y4AEM]-NWGELP],=^O%Z\PU%
M$!X[005),TR$N.( 7NR&?]ZWW3NY<(0A!^;^(F?LW1\IGNCRAA33*04+X=.(
M^Q*%@C;8:$5BZ%W>SK _WJ6+<S1"0QIPI:45E2X(O2)>T(*@N$2!* UH^ (*
MPP""+Z  !5,H(08]5X84I& 'T0O.M]#&AF =AG0I_. 72/@L*,T.=&3[CA%%
M$[_'0&8.HC&;''BHMN\%#&[5NI:67#"1(+"A27[IUY66Z*J)[(\.=9@BBV@4
M0Q5PL0K]4M=?[* _&=D(!%.P Q;V" *L:6:,<G@#$V=W)9K!H3*\ U@;7*"
M*50N-I=3UV1 @ *Y08@-;[@#SI!CAC+080P:U%PA'R28N&EQ#BG001DG@I0@
MFBZ&*)BA91J&Q33(K88[4( 1#/.M%-WA#2UH''DVY$DT3')[G?QD*',T2A;5
M\I9S4.5'PD"I'K#,E7PC82RM>,-57K-OIG,*%8: !!10DY:F7$P,NOF15H*3
M;^(DISGM@,XL+D8&[,R(.X48SW*>TYGI+,,,NBE \NW3=-I$0P@3F!$4G#"%
M*XRE#<>'-R"^\PO]G"<+2EFM$*) !=3\0C)!^4)JIB!8YGSF24$R4>-5])M"
MA"4:-JK2X1T4GD489SEO.D0K2!2E'+7E1+MD*+J("31S**I<TM2FK#25*R*!
M4T9F,(,;M$0L=EI+#6[0OI.TI"874:I8QTK6LIH5)RM;5*-8YH+03*I2,0@+
MIC3%*1AX"B2A&E6I;G"J-J1*0*Q*UJM ,*M:W2I7E.25KS05+"H,JUC'\LRK
ME,4L9UTI6@6SYU_^QRTY9@E<XB*7N>1XP;^PRUWP\D_:Z&4O? TV8?SJ76E+
M-+""O0AA^UI8&1HFFCE 3&(4LQC&/+NQCGTL9",K61D8*;ZM%>UH7B-3I- @
M@@0D8&6^.61K#Z;#U1!GDX\BP@E$<P?EP*T\\B-L I#8.(.! ).:.^$7J%>'
M'%D3!KEL[VUU.!'YTO<,7X"#'2Q#(VO*  ;XC=Z5\/!>]$*.CD;3DNSZJ!S%
M@. .?J'1?\^0O?6B3+\' Z7^IA>B+UR)PP>SY@G\<(+\#L:],7R5Y.[S!5F6
MX0MSL(.+8W0P(R2!"2-3@7PQ:5\(T6%;<I!#+I-8H1W*;T5^G&\'Y5"',=#A
M"Y9A#AMPB,2529&*32CF)-\64-&D=#"@K-B$I>5;P8"2F)(D WDS++_&?;%B
M*? P14?G,J5\H0E)< +ZCC"%!,!@SWGS&]\...A"QP#1B/%SHQ,@ TCW>=%!
M0& "9G#=1#F01)?S5]XXM+]NL>V]^B,/B13]A41!N Y_*>A+69W1<P95#!X%
MJ1U$ZDF2SG.E9^YHL-:9@I2E#,1X+*$"T+!K$9VMR3F.)3U!8)T\!.N,!,[S
MRK9E&6S-J#5,T)^#6$0&.5]L1?%CM@L.!KJ/($&&.O:FB)&C A54.Y<?2<(,
M1*(";)<GEWOP)A*"[!=\9V1BE*0D::S);!7NL,G2MB$(>F#-=C&!"<5.P!G3
M2".+,\'@Q*OVQ#?7[&]5.Y:[!8&_W9!/,WJ2XR1W.&,@+.U@^:6;?3CVBV]K
MAS>D@0P*D.]\ZA,<$:&@V '_R,K<4!\0Y,&3$/+D"VRDYG9G9,97MC&.*37R
M,^QZI&@0, I$@!0=Z #K-;:B"(+%%RE4H0C!BN&5$]=R/-K!8R![@A.8D(4O
MS @%:-=ZCNN>QR94@0E46,_? V_%K>/<V,B>]V3-(Y@<BWWPG=8=?UE(,#*0
M<@X22P.#F 3K8&UOP]D3-1L>9/6)Q#A1.0:X-Z$B!2 [H<%N /EF.$=O.U@3
MAG9XPA)0,/A>_<#N4/!ICEF0;1 X2@2<-8,(=/]Z.,3>FRN+_K6O(YK.@< -
M=?!K<_@#=::GJ()TL-V*6G\Q<J$@!'D4/O'MT"L^\,'N4I#_X$%@?[LG0?_T
MQW_WET=. ( 3I7$OIT;QIG2)LCW4DCWD]1?W0B3H1AH$=@;JLD86@Q]L,P>2
M@RV<L2T_@S(?87W5!"&[)@.D-AAL@ +F<0<Q)'8B< )K1VRZAW" AUX^0&)I
M(&75$V #5AXI$' )D&-? "-T(&!N@ (F&"S3YE]E\(,"EFVY5(2[AH1BUT?+
MES0NT(4B4'=]4 9L<!A$:(18: =+V(0,$BQ4J !6>(2"D85J.(-?J'LYQX 0
M8DR583%%4P9L4P?[,6^B@2Y_T4#Z41N*$4B:(8@39ABA5RZ?U"OLMW%JE$?)
MQX3+AS:/ES(KTP*>^(F@&(JB.(JD6(JF:(K-M3)50##W0@</8@;&8F4V(QH,
M58NV>(O#PUX[=S"O%W0A E'SPQ@H<!S3AF&"H6V)PAENT" KTBR]%#_!03\V
M5BYC^!=&5!WB\Q&O1XPXE$"=IG+7L3C^HD7(P3ESL!OL)WDJ8(QTL /6M3*,
M$4C($2YG$"P>UP/F=XUKH('@B$9JY''BDW09H11'D 1#\"IM< ;4)T-RL( '
MYW[P=W?R1XSU-X!V0 59  5% 'R),XP-*7$A8$UR]P7)]VY#Z(8X& +LF'$?
M08D==W@?YX;Z.'8E,(A6! (G4),G<#&BP70KPD+FN!O[TTG[$UEKYX8)P(YQ
M9P>72(PLH(E@Z$TI67A!4)!#$ 1,P)$^19$524D)V0,)*5+!009:Z9'TQP(G
M  4G('$4!P(>=Y+?>%D1=&[CQ2)L4$&>MT;R(XU6U(5<!#H)@(-AB3=DF4<=
M29$L(%\G]B*]TI9O280?D9(KB90NZ98P684?,9,B4)/U0T,XJ9,\^7U-QT*^
M86-':5T?H93(MY4-^91A8$-5F',)@ 8-.7+<&#UWX#!,@I>D)#W3&(W<$I39
MF!%A6(U$2)LGF) MX -AZ3MJT(TK YSEZ#CB2#"Q1H+$F3)XV&3YL7L1LP:4
M0RX1E'KYDQ],]W/#.1$X"(75 P(F8 *4%)'Y-WS(V95YA)$:69;UV2LAF6Q7
M5I)68$-$*)F<0P<LF1&5Z7%5J)GY0S-CX"B<*9V=&1LY.0<[V3T^R2+><X[@
M*'TL@)2J:8D^A9RN"9O>=(<(FH 9U)"YE'.<F"BG&*,R.J,T*CXK8P2Q2# S
M,DC/@C;#1)KQ,8V&B&+\>&NG!(F\PD4D@41$!"L/I4*<$TL?&3UGI!QEP!P9
M\V5ILS;V4R+/=*3B!BWIF6RO@IS0F2A#*8X2^B_.&)S4B0(2VCV.<1^,(8DH
M(Y 309 &B9 **97NYY5G )8 1ICZ^9'!HIAA@&)L67$P"9>JV 9M$"QR^1<B
M4I>GUJ;3:3]<]*02JH_A*9IT\)<HDP!?.9AC69:<&HQR(*73)@*<RCE?N%*(
MJJAVZ$V5B0(DI (I8)@^I9S,"6#.N8D*@&P]]W.^B$(X]G)PD';V8Y;!4CE'
M.&-S$"SEB3G/6B#S91J#-WLE=)L)M#)I"CF8NJ'HB)T3H8[06C23LY"O4JV*
MP:XJ *UDH*WQAJ=DJ@+7YVXE!*V-<XZZ]VYE:D6ZIX[Q2(\C)P)#P#8GL")/
M>CV R*R>"3F<&3\U":%S,'W>I*<'J0()":\KM'5;4$"8A@5=X+&<\P4L*I46
M]E\U-G+XI9T/F7!PBJW]NAO6Y'4X-ACG*';I*[email protected]%L*B6>7'%ED S
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
M),%YCGH%P@F=5U)R B8\E)LH!XU@(=+"#! E_B&U/%F)  %JP'> ET0H!ZR@
MYYP(UQ%OZ:T>Q+>\WT183B+0S*S$FM02D>>\))-(*0$$3\ Y/'?FX.Q<K&F#
MU)C0)3LW"9SJ 37S8O  W(=#5L *2 ,9)P&$S^PW/K',=O1;[#-8!$#+8P>*
M'IRBE?US@69'\KD=D\8ZQ(DI(P% @2HP.)2"%!@^5R+>S3D%HS_VD?-R=V<@
M_&".[G,&PL!0FQWM+J+132BB2$1-J?Q&RQ);J O!D#$8)8W8>- P--V'#7FI
MU*:5D0\^XQ!ZPB8RY+"+0# [R4A:\2,5X)-:)"L3 D0 BV+1R#$Y+HPQ$2,8
MLWN,)QQ111-%-WP#UF&?C8;N$:_F0#(Z#OOCB7H?3480YY+DD /DH5QRH(4!
MO5S #Y69DDPT6),HTQFWSNE$;@E00EP.T?6-(!Z11"Q8 P\V09+!-L9 B4PR
M_T*6I)Z$B+VFAYA" 55*06*S2#2F*&46A'YQ"W$Z*H/'1_;'9BLUF&3XC9[(
M9[P0I@OJ%? ./+&(&HHQ %/ZJTI!(-#@$-\"ZZP)(@T7."0,,)C?PTS[F:/\
M H7A,/2*%0 2<(@;TJ -M'Q^!![0SPI72^2:\Q '*<"_ )^.P!"1 E(@"&2!
M P4^?^<&=:#=CY* +05Z'/YG@A$]M/"9YCX08$ 1J.*LI]<PG'90"'JQV,X$
M'8 55#TBT%;H?M:I>WH7[S2>SM.#2C+LJ4+-I[UB"\"_<Y-(NT!+%*CS$)QN
MO^YW'J.2-ZF/.04_.H%A="UPG[!2=:TNI[:Z5S?K?$-Q>3+>I36@ );&0F9#
MKV@< V,0H4 N,@322%%RAFDLC'S,4O/JYAE096.:0:O! 60X,$B&*=M17"2(
M_@6O5VZ079NQ=GMTF;$5O=!<FD!3.SPCPYKXAHEP/H; $JA*<95EI PA\ 2>
M !60)AE!Z-"'S&%T1)=W4P#)*G"MK3(P?S17]:16XDLQ:*YY5<+P40B+8154
MB1VMC/!ZK)#.HS>!"5M53^6F A( ]"*MH75945;#8 >\"6$K H"UOW@OAR6X
MK$ACQ5V;:VK1S:<Z6>F5Z.I%7Z!3JA!LM5I1%VK-,:Z5JL56$& ?K0!6 F$P
MR I$F].EOI1/T10B'$QU@)"D!P*>0!6@ B/TKWJ3YHJ54H8.0:Q@C R85;>&
M!L1D\B23)$,\U!.L9UFCZWK<K.<J(I(JT2E9/N?.4Z#B ;5BM.2J/):KO8I.
M"X,%:0:V$1KG4>3\?R]@C<4,RT@::ITB9'%N[E6,@1/T@H8=W_P-QFX]U#K3
M(QYNF.$L,8>3.BI0C[I2^Q995:_,#W%Q 3J0-_4?[%R \=4R=#'UY'YJW/#!
M:*H1/EVY_'2Z@*R:$W3.-4 1(<-4!(S $% ?WVL,E"4CR_CX11JA5"NB<10W
M=]<LM 4:''M@0PB<O0V;]G09VT,.(LG,!1NL!X9P)J7JL<'GQSX35 *7<M,4
M&3LO=KTZL_3I*-X8Y3@#3&=_6 P7-)J>IP![$$.))7ZH=LA?H])'(*_=P9K4
MS"OX$;PK>/VNRQ72FE?%@%A95JV[K5E&#/4 WX=?[Y5GC4R*(0&$6C9 8&$K
M]H$=/>T-W,X7$,N2#/\(9V%U=AR_-_M]0IA/^PL9BL,P!QK1YRC)J@5TUH34
M?E,6JQWSJ3Z)#\PO5Q[;ZS%AX-]Y=&U:INY VN[5@_Z+[O%](V?5ZI[H=&*[
[email protected]&*4,MFB.6*7":P<!P&19G:<-KILTISI4)&)OSZH-JV.#:0JNV
M!RBQX]I:42V46[6M=KDBCE@[:VOM4_VUN7;WL(UA@G!>T*\%5?PAMA%;%@=I
MK9PH3%^K\J+ DBT4*^,7=\5!O; MB00Q=VS[$Z25F+ 'ZI!,P&2$KH<,JZZW
MM>3.2FPKAE(JL^6@SG8B<"9I"V_-6K4E ]?V<E6NV[5J'6U&J+>8=KSBV_*:
M,@[KUJ$,!<*XCKM7<6HS A2  J]UN:[email protected]#%8%PZLQ)98NT[F28F!
M<FS7I%T+JEF7S @H%]H""](>V_->UAM$# -'Y=BUA[-B%)C*FM *4N5-,!0:
M #WJA S@$R%!!NB)&C #5,*?(+R8-_-JWLT[%^[N@C 0W\68W$YN042#VC#C
MM)-V"AP$3   !( XJ   @ (   . %_0"0H &!2$+%     $ 0 "@ P @";B
M@A  >J_K)00   , @ 70!,"#<MD.3, @!  @T'K%P>Z5O0?@A*@(@R  "H+K
M-0#)=_GNB OQ(]H  .A!0X>PT@'Y6'5]#M!)K _KWTZ;GL6Y=JNUPJVK-<?4
M5\QZ7PGN9^6Z]!>*H-;3NG5+*PECK0G7V\U6M25_':ON8E_XU[<N&> J7 ^P
MUN6L):3K3H2P*W6I0+Z%KC%DNJI9G$MRC>;I@ (=;+O6':@K7A_MU-6W"H#?
MIE<]JTS<Z_L,O,+7]G+>GV!XX02;\ J*EWW(B1C05>K$2M J7"4MJ 0_$59V
ML!-^PE X"C.$@+.U[";IL+N*@E$XBMH;J2A%#+ 4.&"Q;(I.T15 A:@@%::B
M$/Z55:$HA(;0("RTPE9L$,2R*WK%7 $6PF(O0!9D,0+><&4I?C_N =V2;(%D
M,L:W"!?B*)MUEG71+MY%O,@/\Z)>P,@W#%MTR^7S+ *#8"S1@U&)&0:3?!@1
M8V(H2.%R1$G#3\4[R"7'+I>4,1$!RR9C#+ED(A*!/( VF, ; &.P6 $  ?2W
M(*Q)'+@#*, 5#PQN,8MK\2U&,MT$""P-*/ 8U\?OF7-W=U(I1,;@*'YQ RV&
MR$&^Q"-JH<<"R1T0#:1VR4S$!V1E8G&_2%AR8+TI !)0=G0 N+TON>1W)HU
MLU;;P'G,@NS8[/J^)9-^J<4A0@I+I@2TXU&G8"O&?)$#YTL^3H1HK!_ \4-#
M#N^01Q'D>:9F8)N&L#'.(67<W5A7C G$BPB14,(/"=$OVC*FP&#0%OK#8DB1
MF)$RVH#+) 'WH2R.G.BS9%PR"@ "CJ4,K(USU#>,@&]$ 0G@[J86QG!;<K+%
MV,F[8243!S=T ARCQ]A)+FP'P>0CD[CZ"52>.%(Y)B]:>YD$I !46 )%( N<
M ,.E*+0R3G("2X,*@&6QC)7+,E5FRDL#_5&!*0"5R?)4)@.):P=^#"EPE>VR
M5F;*9C+_L&6__):[B4T& K,"4LV(GOR3@[+^@AG?99K)HAU5&Q3S$9T=5M4W
M5$\MP939!C;>288K >R!$U %QK(/V (S@ 6DYA-  BX'%/%:P8($G)%P=@*Z
M0!_8RO^E+_L T4R:3?,6B $L0 :@I2U  EC6JNT"M?DV,^4&MQBRU6 PS:.Y
M-!NNW\P"8H!M_E"BRR8+Y&/7%'PC)7',1(!\>!;?H)0A@RKQ)B? H8'F'=0%
MP;-IR*88(K8AA_+L&1+ "5!&YL'*K.>/$)U],W"N <.Y.(L!$+ %6  )H#K(
MH4"3@/P!1>Z Q2C07* $<)0N0*&1\W5FRFP&/P</K_=%]G-_GL[ V3HKYP2
MF(\7AW #/7G1XF0%B913](G:?QDA/8L!#VU=[FY@& SP&8]HB0A1S8: %J7/
M3)DS0*I*11+(\H<^S2'Z0MMG1<0&"@/7TLV\63HCZ>JLI!G<,11?5[DM'^DX
MJ)K1TE3F'>*R0(. "(W1+/2(/@$V1@YD:2/=FZ>S<!;.)X +F( TG9RW\C9^
M,64 2F_I)'VF9U>6UM)M>DJ+:-P\+32T?L;*4=H_4^D17:(MLXLFT3FY13<%
M&*T3*35.VA):ND;C$3PM+GUT&072]KG3&;4\C:CW- N  <,9"*2:.6"FMS+8
M\<;K.0%H'Q!P=_,10)Q6H@F&XFI0Z%N6&="QSWAC6J"!_9RH0?2B5M&)^40_
MZA6MDQV'BZ9?V+DFO^3'JBB 8#>A$I]Q-Y" ZDE)J)L(1 J,V5YI9\?)8<P
M>RP!>R ?KX>FD*ZK9Q_H [H'6S\&;3TE48"W+@'D>F+ ):2PG";R%S$Q9'#L
MM&,2L ?<M=EIS62P)6Y)@9 @%E?\7-"/<V*D:R#8!Z*2B[J[1<#+0HZBLR(L
MF[%!;T3 7LECLF-V0?8]1CCJVNSL8V]7J&=$?KXR\XS]ICJM-J#]-1L V'%&
M7+_D$Q*;:Z*B4"ZQF:.P1R#P!0:62$P:-AMGZS-'T0V9Q#=LDZSY'=(@CFHL
MHJBBH)=^H V\ "_0CKG '5@!9L=KKP 2\ )TS]U51LP()V$204*J20!',8$Z
M9'9@!SR@9L2@:\"8HG)$>).[NTDU7H:<:TMN#J^(3KDAW@!SL!@?+6L]F=DQ
M&[S)8:Z$0=O$4A*WC46>)@IPVR.'<N.'Y=2?*S9<(@&5< O,P<P=!I:3Z"Y9
MCCD3-AHW!+JOQ&]V8-;$;9MNZ^R.[BZCX8BL.W3+ -BM*$KW:=[=%/ $M!C'
MO+KIES?)LY^6!/AL$@"T)[?05IUC&@A4PM<9?6[J1O9$WH%?^P!#O2*,0""Q
M,$2 /G"2K^H&CDV]0$0O6V=?;FI=G-\S:HC-"#HV,^@]B9<5A45F#$$;BPSM
MHHT%VS>.1@V9&[U9@=$,K@."\#P!?2!;6&W_?1H.@^XIS@\Y(\1N 4[ CQT1
MD *CT&D@< 6^H^WW0[:9%(:_D.PDL)RX]^5>K? 9?A\&.2"_)X>#CLWWFX7W
M;OU]'CDJRF['*_MO*4B<9!+)PQ86""7<90</%$"<002!-M (^H@O:!?^H&%X
M!(?0$AJ+5&@*G0*XQ/?DX#QT?6O1,A '<!)2P)?PB6B# !Y@36S CD5$G82'
MCO @'HRLS-'9#$X5<Y1+\U QEEH,]UM5NX-#</D,PFTR!)^ L7L@)UB*#&,1
M<KJ.X?#:F^3Q+#Y *L8)1\C!, '\\9&CO9-V#'_D\CE_XX<$^B^441H7#2+
MDC]D3-X@&J0-M0QD0$[VQXPPLK4W]\Z#J6>/:X@8[L'1P,DF%RG;':-8WM?'
M=[88 .2UG(V_[!/NOCWQ@5[A+;Q!ET7=T\J!^/86XD\T=H,(6PZY\#$.W^75
M X0+:#1 R,SW@,[0T!QF?Q&1C?V2!@YOV6U<G&L&HGW+%<4U-[?9W)O(:Y(2
MSD3#=DX"9L=F&V2'IE"($ GX LL)G*=S#MV"+#;D.=^B7#ZK[VVMNV0Y8\"2
ML3EI^]G]#<*;.0GW 0E=0[#S:G[#]3$VKR_?=H>? !NQ!ROY(/_7E]RARP$L
M><3'=!2O>UV@BKNA16YF&'H9Y>)>7" \."^KTEFZ]R':9'R@@/#KW<\P2:GS
M+!Z['D*8I%&%2[K9%4NV- QT$ARR/PY<J=$9!SN&8TE5?JYFQ"='VB?]9J=T
MK?X.3;EX6"LD  CX+90-!)AY.5_C&#VL'V3Y3,H?>ED/?K@8Z7)T7/[.^VV?
MVMNP#GO/MDW*%,?26/0+P41A2)AF&1!S1#5C9P]9GG.V>?TR@;%#(S%&)I*;
M'W*\(DX 9FLQ;LB/5T_V2++#J X@V&3]__6!@_T%,%8", ]X@/:1BT9.EH#
M'A !!-M@ZP!>+ (J=A4Z).?H)M_VW"ZM5OMNGP)!H+>77=/^!5C[/K6S-"*4
MR_6Q_I"Q9"HQ:X H>O-B\&+3H4@-O^(='9_K<[email protected]_F1R#J*L=89 Q:+ID?
MF3<!W7+=SXZ</9# :;JBD.B]3$OH'C_.S]GCE4H;I?U@[X'4?CGZ0$ ?Y5P
MOMN9FSW1N?IF.-H!_K03>$I%,PB&T]:#SM$QG'5'D=;QN!M8X/S\:8: M%[1
MW[I)7_!SO4'4]95^UZ4Y0F[GN3R'9X1<KL\+.1HXY-7]'29P%\_-WSL_[^;#
M"J'#/7ME&..'"<#J.F *\$F5+0>8/!]7 #/[?%.34TX8+$.*;P[J&PC$<%Q=
MG&.SN3;;2-+[*)=I1*ZGQT^+'W"@!HB!]N'LQ(!S^ B;/4D\46M,LU&)[LFE
M\5$%M./S)P7JSCS7UH-V%SN!(0"70,GQ4KO%&1JK6XZQ)R;>8  ![:,]88P1
M$ )<P OP=2T@"=R+ >T@]P(5Z"!F9VU,D1WMAF#[BK#O+<!BX'8R,"; J&NG
M%1BOI:E*\<[G^U9Q;O5$8)_^^9^]T#8992LWLG[/=^5(#N>;#!87#<Q[X@BT
M.? "N$""(-MEFZ,"]_:JY1\RE__R;D@V%0VV+1QGO=GA\TYW(E1[^9S[H/Q!
M']#-USJD>\9@!N> O;J[E:E:0AW((=^[&6E8]^L>.9B \N)LUKUR>>/MW69X
M$YEM;- [%-@=V,)N-[+)3".VQQ! /ZG'"?A:W]"_?(8W;R$O:+$N=/8-@36W
M#&_=JM4T4/3WSKU4S$ZR[TO\J8)P3][!18![O .+58M/CNMN?CCVDEBP^5TT
M"-OR\-T_@GU/4QZ_7'3Q$[ W!@=H=]PO.0!/QMC-43CW"4@"CP] R %/#44V
M>'I(@Q#^Y<?\[HY*',73C_K'@>I;*("B63#NSH=<)5Z$?P2)KTFX/B79'B _
MM^)JZ-4#4C[F6(=("0?%^(^>(V0I"(?N24/K#RZN?]V;]KT0+F ?.7!KUJST
M=]+9[_D9 >4K?66_(5Z V7$H<H /@ @^<!]2 -D>ZG,TR6V.R99#[Y>&\@WW
M([email protected] <M7.02FBQ^8+]MY%CS6YC!FA!,1^1<&^.4HW@O=\[4_R)0Z%
M D[/0RZU,7'DV(L.'J%W/]<_E,,#^/,ZWDF.3&#Q_Q<O\B,_LF(#V)>E)DFO
MSX)(W4 RAC&97S!]\\]6O,/?VMJL8F)$%ZT-O>,?8/LSR+#@R%[[OM;MV^7=
MX!W]0]U'H-R=TO?=Z7U]78HU_=0=E4GR9]\=08/!H:5[7&X'$^CV>.P!&<'=
MA2WQ#XZ0A!!^("+MEI4A^-A[Q(R"5)?L"K83[K3D&&[KS.P0&I1:3=TP@<,I
M&1#"^99X% %%'^%  2Y_/-0_][J! (E<"5(W.77B'8BP3,F 45(-" +<@ O<
M%[ #]H"LW _H II=]\$0.*#-@$8@$JC'*8'6&0_8S=U=[T$<09NH5<I(!RCU
M!3#0TIV!.T55S(RU=_%I??Q<%W2V$7+RP8. Y/$ ,=P[Y ,X>2I>J27:-70V
M'Y/@]6 1[Y^!X)R])B,'T;;?O63/FS5!A'Q]ED/@,_5)*_L9U[=HE0#P7<W@
M!W(46QD5X ^99NF9FF:I,8$3@>!G6RUL0: G2(A=!YK<Q_=(#(*;",V&\84P
M\\4OYP9F3*A<'!A>F!UTX$-F!S)Y9H<)IP?N; A91%?AW7Q_('X0"(IU(E\A
MR+]]!'[<*CC:96[\G-,']36"D(_8A\ ]<,Z@%A700 B6GSLF!Y!M*IL8$.UE
M)EY=RV=Q@0B/7 28#<Y\1TS3<?;I);2<:4*U?7AZ7#3H XQFFB#$L,'A=)T@
M:,<,(H+ZVWS'E$V#J8PC: VV92#?S?98N2&48!_(X &"3%D^2*I%93@)B."P
MV6=$P$,6"?)SGZ#N(0HV*Z1@.+BXU'*IX#'("G9SKJ#6=Q_<>(Y99Z1FB %R
M(!B%"]:!_\\=J,N9';I#&5"M'!U(WPGWRPF#EN!#: S>=Q,"*Z@,'H*7VSH(
M1;!'VYPTF/A9@Z @42@(<FO;(+,7#H*#9Y>0,+"4@VJ<Q74?^(3J8%$XVK6#
M@YO&I:&@< "</"BKT8-9'- WS0E].5T0.*/Q(TWA/7@"2(3[X-!G$=8=?EPB
M> 0.A$\A)(@0*H73"D-8"5IX0B$+%Q%N@D7:#C)>T $7X994S)%J=MDTUQ$>
M;QG?X!(29H4CX397$DJ%R.!@L(DD<'<7QB..9!=.X%\ >L!Z!5]@IU.]AJO.
M&T9Q6!.S#HJ4-O@&2IZBM!M8'V7 T3 [=(+RV4Y"%5(<*0,%.!&T@/"!:9<;
MYD#>H.ZQBR%W(X<UAN0U=][@IF0!N@'H0EG3Z9$?_L%M$<,I<N>8_J".54/G
M6PQ'A"2 (1[*]N,Y9BP$<L@?($=,0@C5#*HJ\U Z* SZ!^Q1.\8&(F0HP,*F
M'"YYWN!(2(389T[ _[.F.8;+(2AQ$=IG5D!S8#/L9ZR9%'"E3 LV@Z/PA8T*
MBL*">'=A8KW,*=,]T':?6+4DY35)Y8*%T",@)2= WO8@MF6N( 4XPN$1?)(M
MZ%CH8;'(U\(#+EKTRSS$\D$1 IM,F.3%B!P;)W76A0!?R+$WN85X8@Y\AQ]6
M(?G8?Z@;\H+>8(]GO,DQYUL_083P=\&@HE!MC'Q$CAJAO?EU--B;@;*)'/Q@
M>%8] $AGE8)8A4!W8T<58+5@+33") ?AL&;5!@TR#]%DE%9&X HZ947 E0@,
M1H >CJ(0SG")>A^9./29B?4%FLA>K25_X17W)7I:R4X-1@(,BOW3WD?>%1F3
M(NE1!L0FU$B_H"9-!&RB". F7BV91)P8XLV))$"=6(><@F9 /F2\I3I$'6PH
M*\XHLF%;\@1  8F'WO%<94**1G<@9@DMA 4/- 4(+;2!$? 820]ECQ"P _5
M3P%_TP-H9"" )=4[C4<OQ=VP\+ !U X9),V$4OI#&V"U!7Q@U1MF27TT9!,=
M8'K\"Q4"CS!+[#XO!9#"W)D=]P%.>*7M#SRA F <TDU<BU/W+NH 0MJ)AD/<
M7;/A; B'66;R 0#'K8&+-T/ 2!SZ?/T"9X=#3$3HV'A8 ;)-H8Z)]MAA9O',
M-$+E1!-8T'48%#((C,&#D %>"9X1*)6IT!#=$PC0PU$JO<4P8\QH#O>"=0#J
M+%=W5XJ2Z'AF)B,7TH6X9GH0>>"7M$2RF8KR!9!,*!LVIGNX@CBC/.(G0H"Q
M&1T0V\5FLQF3P"7NB,B>T]B.L&Y1XY:1)XHMY2'O<R^2!/JA^6);$6TKE$Y$
M)0YHS-F-L5I1@/IA!49<F0:7FQ(X!\TYKM3=U1\090<#%2@X$ [6HNF3%2U7
MKJ KDQ%0@-$'#[B0!6+L%2!FO3 S?@BV>&&<"Z#.V8@P/48CP^ HSZ1C2</8
M5#916VH/V6=+'"F0@PXX!_DM=%+@V)5]96'9$<@J\H"2(UK&-*QE$P'AJ"V$
M(Z7C^1:7006T0>S(+JHX<>/IMIQD%#J@=29QD(83AF9S94F.>AGZP)]=COL!
MPJ*PK C)HQ2@*,B-)A7K2!X.:('9A*0Z%HZUXX#V)BD&HYCNR#W2:H]C/#.7
M< B'FZC1&ER J@'0D>K<B^[A=,CD_7[.HL!XP65PTJ/"^"Q^!,]A+P8"2(<^
M(G78+\X(=<<X)N==C0SC7Q Q@G"NX"M' =9JQP')6"ZA@$G&S[$MN '!@B4!
ME'0.U.*U2 >$=G\B#"<&+&\(FG=F"(*0EQN2DQ\^=1G?-&<?-HH?P0E0(%X.
M&^$("3]=<:39"A<)QF\<E6_'NB$YM<KU&(AQ;P1=HX@E*A36Q FY%MX-M<K[
MV 3FBT_@OB@$'H[Z(V"@7?V*<97"Z$WTC]$A,"8_\HL6(\NA>QB0RD$YA@6Y
M@KM-?? 76(YX7@ORS_E&AB W> *\ ,+;"_#[S"#_' V"0Q"/Z,\3@$=$ 4Q
MI2%$][email protected](+W:/*(6LU:773]GA(6H]Z8GF(SJ5OJV/.X40>AZGA+:@#
M4(=1(!6I,"),JD,1(#*H#_7CPI@1<)&^F!<90/:"860!V3 >D SD^2:J?3H4
M(%J02 9K'(HC"4 DDMDC@D0!BHY=P'*"2[97O8(EF3),6E_ %P"R)9,I@V^P
M/?Q4-<#Y-!$L?,[1%!!^I% /0FFD$TX_.4"Q,2M^DZ1(RE" K ZYHA.0,K!^
MP,,35?%I"><9*Q$?(!L+"ZW0 JQ:PJ$6]0Z5$9,<*Q'!K9.41'ZP/Y1+/P2-
M\"]T2)O5-J=/3(:@$@V!3ZZ$G!6GQC^LDRF#3T+,3$'09/FX8%T+QPN/$2(M
M1X%$M(!0[E$.):?EG 0/GXI5-92@0)$%CR)'[ 7BR^[3;50,C(0"@$ZN3?)=
M2ZG)*&Z&03NI*-@83M\;@R5M<$"-/\3]81C3T(0C5,H/TL+9A!?].7[;'*$I
M5B>DP1OSH1Q/D"$)])- ")',D\ DZ \Z)1< !*0HTU-DT8B\%P6#H[!3<FYA
M@(%WFHUNEP\(H*H5@ND:&H!6OFME1(0&5J*4K4%?$Y28E3'17#E73@3_@@C$
M0E@3Z%I?>0^FE:D..*E8@B+J07<E!"@!1< 0,)>E#).<7.7,V89;!OF('B)D
MX 5F"2/JAA6A1KB.A7B6Y467T0DC/9WD)*:1:3D?".# =!.R&==16O9K<MW5
MQ/4I;9.!ER<>J);! FL)TXDN!N5L^<RE<T0< Y>CB6G'W-G0)B&7"T\&LEJ^
M=-4"JU:AP99RP,% R3ES MW+1M#1C]DE38GI()2' 10QBU"6U]P7@(WIB6V2
MPV#2[1!, N<6;MP'1, OIU;N 46 R9AS['WF99+!C4$(Z:7Y<UG"/>XE+Q%?
MH@'S97TICYAD<L!]65YZ8[2(V-)?L@RT)7O)!@28]X%)1F!R;OG'%? %3#5/
M$A606"Z6B^5G@,%9 4Z#8PE92I:T :&U(@1:$N2#T"'9@J=&]A<C$9"4Y5O(
MXPES0UP1AU BEP@:;]F[70N[P18  O@E4QSW]\=Q;A)A C<\N"IR@-1P9-Z#
M,V09H&22!"Y(FP0YQ'#!PG)Q!K@ P<(3D!_T(<7&D[D'-(B1C\UP7]J#>X"*
M.".X*$$ L/?(I UYFX2Q/7B6N&&,"!PV"%S":(F0<6Z(XAF@*#HS9^:>>0\F
M!@M>Q9 1DGL)W$T69J*9[R4=T&82F'JF7'D/-IH#9J I:>X!C::%^6&"F.#D
M9W!%"@XCPQ/P6$:6D^4Z5ETJ/G5A=VE&RF;6I33WRP5Q0]K5R&JBFM/<<L*D
M.6EK0"XQE9TO=6%.N!-^:0<0__!<3FC 96T"#;Z:/D":!@%:$2L=PDA=RI;V
M&[)YI_$.N82J-FZXFI+F[+)DP&1Q0+P5;4J::>1B<+E1"[#ET; B8)O+B;9
M!\@ YN;EIFZV="1 &QG3Z9KO)KKI YB;,H"Z>;F9F_"FO E<UIKW8)(9/K@J
M8H"3"7#N 5'FE/D15)FGS6R'4-Y(-TGWP+VE@(LFLKD'')H-@L))241H1N;!
M:6 >!QJG: (NA$@3D8"67\HCHZ7%^7'* 0CFE,EBDIS]@LEYI\D!*>>EF6%N
MF-Z5^J!DOIQ?A(L9<X((*$LFD9$I )RF8ME(D).B)'JS/HB:)V:I.6MF;BOA
M<C)+BIM 0(B@+0R-FJ*=IXOI#P]"[!9U^@!@AZYY:D*=ZH(P673X*Y3EU[D'
M")Q+YGW@9*J="><ZIG;>: V<E-E0<)R'8QF0(^R:?.9D.%]BG(S!?)EP CII
M9]D)9=)/(>?&"02$F7 G3!($" % QI2) GB5C*?AN79B.8GGY+EXRIV6)Q3@
M,0P!Z,__X00HF9IGY7EI3@%72>0Y/)2>*4/1V6F2?)'5N8F3G'QL(;('O:Q\
M7"$H]Q'2$#[email protected]@\?HWSW^$$N\Z#5!O2)"4*"%.839 05033I@R%>;D)4
M48L8#G6"#4 3P  R@)Q0%9 %-,#EI7Q^G^!G^*E4()]#0I$ ?(F?#@'SR2<<
M7D\%2"!]A@\V $N 59 %*4'VZ3KL"6>!#>!]HI_\9__I?[H%E%X7\@((H'Y$
MRC"R?6$N  UP'BT951UO<]4)!/'86P='@00+J'E5(/AZ )D",+)-H#) !2IW
MQHC")6:92Z!2X0A,%B.6B?J8FF9\A' 6A@@P@<X ]YBC,+)E*"^H!SKN-0B*
M%(3I TQYV4&5IS9:>PK9W45$60:\!$XR?O4(:LDKTT=1>(4FT'&3;7DKZ :Z
MCRB@U9P,^M;1H%.H!VJ"ZH8!'>^S'NF:B9(RX?3UF7^F,K'!P6,&J 2:A:)]
M*<-(LR*\+#QGN51R ITS9\V)83X!&B:'J7-.!'&HS_D7F)P,IK'A>K8Z8H*_
M)QY 7_^G09 6K)_/9_L9A)$$Y,\-T'BE!"L!XR5Y=14@P%C A"6BG&@GZHGJ
M! &HI2> 9H"8GO EBEIZFQXKUB\("'3 *I(=1!,Z +X''[email protected]_T"VCH
MOF=>E &&J&6  K@A5X,:"3[Z@9O>Q=*6B0"G2:!QD)!ER.BB=?Y !<+3,8H4
MG"8DIE<F>AZC,( +( ,<):++&V8B9)6RJ'7PO @2@X%?\0S]20N>&%,BJHL4
M368P/[email protected]@;#\+8(*0* !%1@[1 !)T@30!K$;"D %W(HIP NP
MZ>%Z+\ 1>B D"#H'CV%V* J1D!.PC^H,_FA'E#)X'C_/B_"0D@ 1Z40*1E6D
M1F9'2@7PHR"IHZ"0^@@,*8G&D38!2X#Z@P3T"ASI0 H%%*0'J<X X.P%+0 N
M!P3()/O!25I^0:0R*4UJ2R"D*0.7X**X@DW /.J.%0Q]R*EAKW );,8G082Z
M 6:E!S25WJ2P#KG0B\8: HV0H +X 3*)Q="%X! -X#VS89$+N-T5(Y<)3RE
M"\"15J-3@.@ITS2 ?@M'BD6F91G'&""6N@ XA)"6$ZIQ'.DS2@6PI6XI"@"7
MRJ5&@OX@-8!V*(H(X'9RGI=FW,EWWH-T)WPF>>*=Y*/>Z99=FI4I:O!W/F2"
MIVI'>$*FG)OPE'E2GJ0IE.EX0IY%P&6Z>4ZFEZ=&<IJ^IFJGYQE9AIYZ!^F)
MFL*FJ"=6TIJNGJ@IT3F(RHK]6\DW>QJ)=M^[@@51C8%?9FA;$7Z_IT/H.9Y!
MPZ?4<,7]?"6HF*!]=1"?:$&PB#J?50'TV3J\GU_!5N$Z&&%W0OR)B=H +H$,
ML']VI_!I?)J(AJ(#J*6'Z=T!T*):X2ALI_?!6W$A1I-W6%UQ5\@ ,8"H0 /H
M %1%7[&&!19]V-U56,AA15(=)H8U%H]%C>B&W5U_V&41B 44I^!L<8B%%N7"
MN;"(F1:-V% &B6D,DAB^<'=U8N(,)E9;;&*XA<+@B3D,O1IP$3Y*09>!.XJ*
MB0RJ6$S)!?YMW4/E!&K$A"V#DP!Z1 GF(EUB57YB3>GSQ!;5!DNH\]$"<']"
M0!%0D-P>1,C(1@*8!$# H&$%5*"F53D7!UR<\8&3(&-J2W&BA,C2\&A4*5P1
M39( ?8 +( * J23 _2%I]:7&!*(W!CAH(P<8  <X:&# G&,LG",3P_HEZ T!
M5(N<"A/MJ:R> "J ;GI@BXLBBT&@JJAIX4D00F:'+88CF&.J(2Q)63(Y9@<A
M-%^X++HFJ*H#B*KGR\NB , +=, 3("7,(OTA&= #I $C(9HVJS**_X*TX#6L
MC!R>2; %I'K?AP/SJ^X&;H"P2A->#EV !XHERF=,H9=ZN@5O/BEHMX%*"?-%
MW6>JBJIZW5J'RUVKU"H9$(&*<*BJM6I#4:6G*K5*S6FKU=JX&JJ:JUB8]\<D
MJ4O_PB85'*@V:.KI\R"-9_%!@H@&* !^7!@*2JR0IB7< X;R25UH]7"Y<:M9
MAZ(G XQ:GL0I%Q3=)!P(LJ"!OG7Z*H?GKUZ:*6*'.",@<+'9Q>KTD9EL*@*G
MA7JL=B$9&BDJB#M>NAH<K*M7AK=*/BZLV\)@<-:=']\%O8?IG*S+Q,0JPIFL
M:2(:8+$2K"4K[U.&HJP>Z,@6!- 1/>CREQR0>\\'"Y ]!0=C!]7" FAO/*CD
ML/Q=>9'/T7%2S*EL*+_JRUTP$R-V$/DDJ83;Q&DQV BIAR(F#O$Z4A7%J$K@
M($J,/V=CZJ FG/"6N-2JG6$,AW.X64OC'P>PTI8H'G7'K/YV)EX$5^-]8G\<
MG3JW/IEU*]YZMSX>J:872@*@JJ)+5/,%J A@H>BBI9H$X9MYP$6@ ,>1[Y V
M<)3-T2E3 QD'DLT=D/]4H&XH"*"JQJ/I'8JF(BQTT]S(YTV,;+-".J=F. S;
MW./B@7X$=2$A>37VA-M:&L'0K'2$H+WI:XHO8\=A8!D\41S"ML "! =O@&L2
M:FR'/P!ZQ,J]=0>?3BB^6 R\:ZUUO'H]%>AYQ_L9K\>!UU.PUA<H #[1RZUO
MZ.M*AVL<FY+F\DHO.J;DT1-E+P@_X D+$"'H ;L%YH3Z9*]UQ\C6O58KX"NR
M)[ZFKV) ^3HQ%J^1#P.[OIX![>L9QP5V$&E3.OF3Y'SVWUOG!(0?$<3:&E^)
M(7(&A[? (J].7[O0!'P!3X 1@%%$24P $4"7]0$.['%HXOE%3"6Y(+:2"!3#
M[63"QJ_J:\FJ77T!9 X"9[K-034L"[HBD!T1W#OTPT:P*&S).AD:L26K1CA?
MRI &(@W;M0*O)VP0.W4R5G.DC:""/G!=K!@@==)MHUI_.'7, 7+ "^!;T =L
MP%J2]K6@1D#5E'JL5O;J7C ?9" G;#21Q!YFWIC7$RP  8$LKJ%[8!CBP0M!
MR&827D_FUL7Z;J]:)E%J902PT"(+\PUHL5L9*TQ63=X8L;>]BG"6K"#K5A:R
M2:R+$J:*<(]+$(!15CNWQ91$#D42W ))-TPP=CI $OO?:0:_), IO,:JUV0>
MP"@F<DF)_A#=I76_ZR?;@AZP=83F8'$E>(_LA'$,20ZM@</%/S"S0*S]XX&>
MLBTH"M#NE <^Z.Y3/7 8FD,U(\TB01?&GH75D*X,WSI$QE:S$VP%J\TUL\KK
MO,A8X:_/*[53" 6P;1+VJKU.!!#L^.J[?;']H:/J LBQ':P(5\<J$ZE'*>6-
MY;&]EB9!S4*Q7D\MRX:6(.7<T[J$["2+2S^;OD*RG*PDV[<DL1IM%#M,SK%+
MK)- +A8BJR'$D/&T?AJ2^<@XCDA/A\6 M:BSYMX;AO$P$JO5R/</)H5BH;3"
M%!Z<C&!!6 U"@E%A0BCW47Y6H2Z'%=X'XZ 'E'LF#5[A^N49@H9R7RHA)OBD
M"4(GVH.%IXXH>?H1L*<P %^Q)U"B=\)6$4U.!#; 5C$#O*?R:5OKUBJ?(ELF
MB>3YI,[A,M:,=9%!*& P.XR3;J5=*P6L#VK/R[AEYJ=:F*K CI9?_JD+T#X$
MJ&38IY!7H&%\A1HV.P 6;5B#"H<9%H);8F&'_0H4*HT865RHRT*S (A%I64?
M9^&A,@:(&.2@MF8,IX4CIEI$8ML%)99;] O_@HNJB;D7+"IO 8K9J&H&CJHQ
MZ*C'!8_Z?&%!0$![$9'AM=L"I4"]%FY(PX<7'.PCO$W\8ZQH',DM5@G .A,2
MPI)SSVX&VZV] )ZD =?M_MH'?1__3]U1W+X8$=D><-X*!A%9RGKN#)E<Q'I+
M!T1D\I!SV%YLC'CMI0 2[+?ZK7[;/ORW_.T!:-^^&!NC>FO<_C]S0,HJWVZ,
MVAQIR2K6;J/?[>20R6<AT+=!X06%TT+%\-[U!W- 'K 76!,BP!20!30!" 8,
M,'V0CR\F3&ADF!T ;8/T+XQY5D1&)D2:AW!.HC/)J8<(616R!]9?'A^7Z/:Y
M " ND^?:I8, J]FQ'[97DB ,&:-%F1!BM(HCQF@@ZXI(ED6($R*;:B$JMAGB
MDSL19*SIA)3K&.H,ABV*\%/=!^>;BCLC$@LUXD68(S*)/YYYUSH >?"C7.LC
M^J3S(_E81=Z/U6@IN3]&?J]D&8E 3HSMSD34-SJ.#D4OVRN\<D!036LO/I%6
MF"9)Y^IR_Z*>:T6N#EBDG@L>=JI^;BR)-LJS1N37VK&&E 9*$LF_D2HO60\K
M9[1P^4$;P!2V%Y(,_[ -:FU>@/.Z-A%Q7AL+P 6P:BM @X3ZH  N@*X28>FX
M+A,08.HN?0]#*X("-'MVE*UK1[T NB4)JW6BD%4G&,,>70F(WEQK(AX(\")Z
MB^"F:U]  H?R] H<WA<PR Z[\U"\YQ_((]]FTC JPHDC[.U$WKIFCD*TF\IE
M0?+NDD'J7FZ8RJ<+S.F'&=]*"!8&"Y\B3F*2@6F8PY]&F!&\DA5'=0(,NW^:
M!+>#>)7#KI9[EE4!*VP+^\(6 3$L7<8BGF\4(.BQ5:XJMATPZ?0QO.]:,2GQ
M^I"L&Z;R %V2^&*C:^T>MMENI%M%!@Y-PRCIC&F1":21D>GF:IP=3O+91;HP
MPD34YJ4R&E(& N/:#S)N)#F@?;&=[KBI+L!P+8V/^W6.M*R;VIF>F08VQAEJ
MSLVYUZZ/8':( "Z  =4DFAV/+H?KX<9,$(.V(.O!IE?O8)#UWF;V6]2+E!A#
M/4W2^"_LFDD#K*?VKBK%6=3+X1&)3*+5*QQIO7TO+9H 3%I3HA 9R6H2?>M*
MR"6Z9+R>-8&7='ML[VKU]MZ)M>?E9JX%O)/I2$L20)"%6ZF!Q]Y PR1'=:N
M4/=NXQ+I.@;'0F_B@>P+XL@&>8[\ &[(W75(T#[/4SS#SOA%PZX;4MRJMR\O
M^97MLK<(KGO;7HP=E6]+@\"] ,S;%^+ES4/ 7Z(CI!I!4]"PFS'L-B'CN[HM
MTIPDFKOG5J9K5B_)F\!%A:Z4*SA,-KV[)I=8F12.*)_@B_5:$=>@3())'$)K
MK_OK]L*_/J0D9_^& 6_O3'9(/D!"I"OC)TYN*V$J*%0<A;6O_I(7B0A15??P
M2Q!$:[email protected],P,0ED>@+/$S!N0 *^VE0E&ZI$=#/6<J=&QL0T9RER2$_JE
M6L2O=G>]N%43/P(CI!G3Z:<3 @,(LT.%D/9&"%@*FG=2*A.,1.'DO#T3<.&6
M-,06L0_1FA3L&BB%8/"+A Z_<(,_Y.Z%O.&O@B3A(G#O6O]4F7B55V,"()L
M?KC=2N@HK$O& JF(4^9W.(G'9TO$:6QHET@CT&0H[IM8*L; BX&;RS4.:'QB
MITL /[TS7-P0FPV*"+!C]@"[NWUH3?-S)!+>Q[1H9' VU :[ZV>Y(5SPKNDH
MW%*;A1L\!G.HK-FM@0:[=K"I&2P&I*R98H2Q\AZ3 ,==N DF</S@7H@4]K@"
MH7U&$+:Z0^WD$ D2AI/@84@,8H*+H3[8&%YJD.%6UID>!C7D3'&B>(3.*4C8
MCFT)(F0$B E2M3EM-T<\FH:0 VH(1:J&Q(MG "T.IR$FP-B6U(:?4IT)6O*&
MOF%H&1R243S4;%@<,KKZHME1L3:'6^1VETJJ2E*D'& =R@_9X92 ^MR-9>0[
M*I^Y"F]M/JP/[\/\<#_L#__# '% 3!?0IP2H.]H"X*=OF'[*@Z@(B2VH((8)
MJ%T!@6J@(JCM@V2K*C"H;]B#>ECH"HK%'=;9HKF?K66;H8HII.WGB"V8MH88
M:@NBKK:>16MKHJX6*>H8(-O*J"TJ:9")V1:<V&R;<M"HOX4HUMN68CDJH[>C
M)A>'*+28\ 2IEA/DZQL8J5!"&B E&$!U"4X3ZDREGUA9,Q"YNW.)#C"E[E56
M*CV6I;YU6ZI;Z:6"J?+8F+H48[!GJG-$ JBI%.*,<.4ZQ'"JG$JGVJG=U.Y!
M*ZQO?*HUX:<"JH+JPJ!!F &&JC*:J+9$N!VC6I\>QI#J)C*I)@'B6+_ JF*J
M.H"FVJ>0D2_"\-J:J:OE:LM*JJYC"&N^X[HN&:RJJ_K(S &QZJV:N* !MVJO
MD*ON<*)BSU@&]*H$&K!:K,;&Q*JQJ@O^/\EJU[JLEG*9F[,ZNO4?)T"T^JVV
MH-BJN+JR9L;S!8S7&7NK.BMQ;*X:Q^0JJJH<8\:H:KLZV1@&\"IR(*^Z ?1J
MAH?ZX*LE&9_DM8Z;?-+?&M=)F ,K%^H#_!<'*W5LKBJL#*O,6@MJC%^F-#RR
M5:QE&= ZFJF99!/<NX6*H79AE+NQ:K$8RP>J'A-P0BO.2O@NQY$NS-JPSJP1
MZ_UP%=4ZV4-SO,3RK.S5SWH@;TD)<L\JLG:M1BO2:K7&!H!GY-.T6K11:](P
MM3IS5:L/BK62QC;$1ZL;?ZUEX]VUPY*M4(?9"LMI#JMM4XE&Q1D<(]SZN<VM
MKEPXUQ\ZKK.G$S>X0GE\*PKIMUZ7 [email protected]=/-0*V>XAG6[*[+'SRFNOQPT
M*&@VKG?KXTK(1*X&Z^3Z'C.@QL+EVD%DKDO&YJK7>JZ41.B:'(E(S!'#9U'B
M#*GKZLJ&MJZOJRMHN<ZNQ&OMB@#?KF]=[OJR9<G?IN^ZQ<YXNJR))B*\KR&M
MU_/3(IOVZSPKZT*OG<'TRG18K\7! +O/*K%) S(K:"&NCVP2>W=%RKX;>^R^
M8D&B'1 [O\:SWNO]>BE#$+E4__J_XK/7JZ=<P'*O\FP">[Y"M WL1/O :K+K
ML1>Z*@-VGQZ),%+J41PLH2S"?;#AD#@R[#ZQ_FP*2_&RL"ZLCX'QRK ?LH/7
MRN&P_I"TW-+PL%(P6O?(CJ%#,)9#Q9YN2:R53.$ZL;]RM2S%_F^\\!5;(E.Q
MHQF32R"_L^RL#P#0AK%L+$'+Q;K*9ZRG(VX"S&WL&RMK$;3.,AUKQ\87O"_J
ML\?N!GVL1.O@ ;*,;!@PR!:R=0<BZXO>9('L8!DO;[2;K#+1R59&E6PAZ\@2
MS&!G1ZNZ%L$V+"@;,F_,C&RP[."9LB-;*KO*WC:NK/Y0#L6RKC$?M 98S+K'
M+:LZ!J^.\OJ5GO6RO^R:*,PF#<3LHAPS'[/S8NJQS*+*SJQ.",U:(W&<A?'0
M^K-$<P@ULFFS?P$WJ[0*2XX=C3#.HALXE#E;5=+)5$8Z"]*>R\6RP7HL#\P0
MK<C<:\JSS6O^:L]FMYPR0TO KK-Y<\&<QIX  BW#3-$:M ]SVGS93#;;X=7\
MR(;-B[.%@2)CM 8:W;SX;JUS<[],]3;,)2T&>](N--'P2JO!MK2:P5S"49)(
M:L9,6X%>;'C7/A-T)(.B[BE,&$[*&.LJK'Z$?40M-MC3EE%583<((BRU6J&\
M\=2* %'MOTO5CH57;==;?FFU,H&:T(@"85YM1@#6BK7H*1)VUF:B:BU;*Q!_
%S^"S6P#M

end

---+++---
Received: from post.demon.co.uk by lion with SMTP (PP) id <17448-0@lion>;
         Tue, 18 Oct 1994 07:31:05 +0100
Received: from post.demon.co.uk via puntmail for [email protected];
         Mon, 17 Oct 94 21:41:15 GMT
Received: from gw.ramona.vix.com by post.demon.co.uk id aa22540;
         17 Oct 94 22:40 GMT-60:00
Received: by gw.home.vix.com id AA07891; Mon, 17 Oct 94 10:21:26 -0700
X-Btw: vix.com is also gw.home.vix.com and vixie.sf.ca.us
Received: by gw.home.vix.com id AA07887; Mon, 17 Oct 94 10:21:24 -0700
Received: from scalpel.netlabs.com by netlabs.com (4.1/SMI-4.1) id AA11642;
         Mon, 17 Oct 94 10:21:30 PDT
Received: from localhost.netlabs.com by scalpel.netlabs.com (4.1/SMI-4.1)
         id AA07048; Mon, 17 Oct 94 10:21:26 PDT
Message-Id: <[email protected]>
To: Tim Bunce <[email protected]>
Cc: [email protected], [email protected]
Subject: Re: Pull DBI from Perl 5.000
In-Reply-To: Your message of "Mon, 17 Oct 94 14:57:30 BST." <[email protected]>
Date: Mon, 17 Oct 94 10:21:26 -0700
From: Larry Wall <[email protected]>

: I've given this some more thought today whilst working on the Oracle DBD.
:
: While the DBI (0.3) is very functional it's not mature, changes will be made.
: Freezing it now would be detrimental to development of the drivers. Not freezing
: it would make it obsolete too soon and lessen any benefits to be had by making it
: universally available.
:
: So, Larry, please pull the DBI from Perl 5.000.  :-(
:
: (Thanks for putting it in the gamma release, that meant a lot to me.)

If it's any comfort, I'd already put the 0.3 patch into my copy...

But I suspect you're making the right decision here.  It's not as if
there's a competing thing that you need to beat to standardhood.  And
the important thing is you'll have the new MakeMaker to work with in
5.000.

And we can always drop it in later.  5.000 isn't the end of the line.

Larry

---+++---