/*
 * $Id: INTERFACE,v 1.4 1997/03/20 01:11:25 tom Exp $
 *
 * Copyright (c) 1997  Thomas K. Wenrich
 * portions Copyright (c) 1994,1995,1996  Tim Bunce
 *
 * You may distribute under the terms of either the GNU General Public
 * License or the Artistic License, as specified in the Perl README file.
 *
 */
The DBD::Solid Interface

The interface to the DBD::Solid is modelled according to the draft of
a DBI interface specification published in December '96 within
the dbi-users mailing list (J. Douglas Dunlop" <dunlop@eol.ists.ca>,
"[Announce] DBI 0.73 Draft Spec.").

Please notice that Tim is about to prepare a new version of the 
DBI specification which will obsolete many of the herein mentioned
tied hash variables.

However, there are some features I copied from the DBD::Oracle interface
and some points are not real clear in the DBI spec. 
This is the complete list of maybe 'nonstandard' functions:

1. parameters for $dbh->prepare():

cursorname and blob_size can be set either via the tie hash interface
or as attributes for the $dbh->prepare() call.
E.g. 
	$attribs = { 
		'blob_size'  => 4096
		};
	$sth=$dbh->prepare(...,\$attribs);

    is equivalent to

	$sth=$dbh->prepare(...);
	$sth->{blob_size} = 4096;
		
The DBD::Solid $dbh->prepare accepts both the SQL standard '?' placeholder
syntax and the :1,:2,.. Oracle placeholders.
:1,:2 is handsome for using the same parameter twice in a query, e.g. 
	SELECT a .. WHERE x = :1
	  UNION
	SELECT b .. WHERE y = :1
can be bound with only one parameter.
:foo, :bar style placeholders should also work (but I didn't test this).

2. tied hash readable/writeable

$dbh->{AutoCommit} 	is only writeable with DBD::Oracle, with 
			DBD::Solid this can be read, too.

$sth->{blob_size}  	is used to specify the buffer length for fetching 
		   	LONG VARCHAR or LONG VARBINARY data. There is 
		   	currently *no* blob_read() function like in
			DBD::Oracle; the SQLGetData() function
			seems to be not implemented by Solid.

3. tied hash read/only

$sth->{CursorName} 	can be used to retrieve a cursorname 
	           	for use with UPDATE ... CURRENT OF. 
			This name is generated by DBD::Solid
			("dbd_cursor_xxxx"). xxxx is a big hex number
			(the value of the statement handle), so ensuring 
			unique cursor names.

$sth->{NUM_OF_PARAMS}
$sth->{NUM_OF_FIELDS}
$sth->{NAME}   		are working and should do the same thing like 
			with other DBD drivers.

$sth->{TYPE}		returns an array ref, ok. But the spec doesn't 
			say what's inside the array (SQL standard type 
			names ?). DBD::Solid returns the names found
			in the Solid user documentation.

$sth->{NULLABLE}	returns the value of the SQLColAttributes() call.
$sth->{PRECISION}	returns the value of the SQLColAttributes() call.
$sth->{SCALE}		returns the value of the SQLColAttributes() call.

$sth->{sol_type}	returns the numeric Solid data types.
$sth->{sol_length}	returns the results from SQLColAttributes(). 



4. DBI methods

$sth->rows 		derived from SQLRowCount() value. Valid 
			only for UPDATE, DELETE and INSERT.



