Hello again, I've not heard anything from anybody regarding my previous post. My first thought is that everyone is caught up in the release activities, but I would appreciate any comments that anyone might be able to offer.
Thanks, Diggy "Diggy Bell" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > Hello All, > > I have recently been approached by Birdstep about updating the PHP module to > support their database engine for an internal project. In the past (v4.1.2 > and earlier IIRC), PHP has provided support for the Birdstep (formerly > Velocis) database as part of the distribution. Since v4.1.2 (IIRC) this > support has been dropped in the standard source tree. But, I was able to > locate the old code under ./ext/odbc and so I have resurrected the module. > In the process, I have made a number of modifications and additions to the > library to bring it up to date with the latest version of Birdstep's > product. > > My main question is: Is this module something that the community would like > to have available again? If so, I am willing to pick up the maintenance > duties on the module. I'm a former employee of the company and have access > to 'back-door' support when necessary. > > I've taken a bit of time and put together some notes on the modifications > that I have made to this point. These notes are copied below for review. > I've also attached the modified source files. (NOTE: I realize these > aren't formatted to PHP standards...please let me slide on that one while > I'm making more significant changes :-P) If there is interest, I am also > considering addiing some enhancements for connection management and error > handling. > > Any thoughts/comments would be appreciated. > > -- > William D. 'Diggy' Bell > Principal > DB Software Development > http://www.dbsoftdev.com > > /***** CUT HERE *****/ > > Birdstep PHP Extension > Design Specification > > Date: 11/14/2002 > By: William D. 'Diggy' Bell > > INTRODUCTION > > The Birdstep PHP Extension allows PHP applications to access the Birdstep > RDM Server database engine. > > REQUIREMENTS > > 1. Support for LONG VARCHAR columns > 2. Positioned fetch operations > 3. Support for birdstep_fetch_array() > 4. Support for birdstep_num_fields() > 5. Support for birdstep_affected_rows() > > DESIGN CONSIDERATIONS > > 1. API conflict between SQLFetchScroll and SQLGetData > > There is a current design limitation in the RDM Server that prevents the use > of SQLGetData() with rowsets that have been retrieved using > SQLFetchScroll(). This > limitation strongly impacts how LONG VARCHAR fields can be handled. Two > methods are described below. > > a. Use SQLFetch() instead of SQLFetchScroll(). > > The requirement for positioned fetch operations eliminates this option. > > b. Use a maximum sized buffer for LONG VARCHAR columns > > In this method, a buffer of a fixed maximum size would be allocated for each > LONG VARCHAR column. The column would then be bound using SQLBindCol() to > retrieve the data in one operation. > > Option (b) was chosen because it allows support for SQLFetchScroll(). This > can have > significant implications on applications that have a large number of LONG > VARCHAR > columns due to unnecessarily high memory requirements. > > NOTE: There are additional limitations in the RDM Server engine that have > prevented > implementation of cursor positioning. SQLFetchScroll will continue to be > used for > smoothest migration when RDM Server support for cursor positioning is added. > > INTERNAL DATA STRUCTURES > > typedef struct VConn { > HDBC hdbc; > long index; > int connected; > } VConn; > > typedef struct { > char name[32]; > char* value; > long vallen; > SDWORD valtype; > } VResVal; > > typedef struct Vresult { > HSTMT hstmt; > VConn* conn; > long index; > VResVal* values; > long numcols; > int fetched; > } Vresult; > > typedef struct _php_birdstep_globals > { > long num_links; > long max_links; > int le_link; > int le_result; > } php_birdstep_globals; > > INTERNAL FUNCTIONS > > PHP_MINIT_FUNCTION(birdstep) > PHP_MSHUTDOWN_FUNCTION(birdstep) > PHP_RINIT_FUNCTION(birdstep) > PHP_RSHUTDOWN_FUNCTION(birdstep) > PHP_MINFO_FUNCTION(birdstep) > > APPLICATION PROGRAMMING INTERFACE > > birdstep_connect($server, $user, $password) > --------------------------------------------------------------------- > Parameters: > > $server - RDM Server name > $user - database user name > $password - user's password > > Returns: > > connection handle > > Description: > > This function will connection to the RDM Server identified by $server. > The > $user and $password must be valid users on the server. > > birdstep_close($conn) > --------------------------------------------------------------------- > Parameters: > > $conn - connection handle to close > > Returns: > > TRUE if successful, FALSE if an error occurred. > > Description: > > This function will close the specified connection to the RDM Server > > birdstep_exec($conn, $sql) > --------------------------------------------------------------------- > Parameters: > > $conn - database connection handle > $sql - SQL statement to be executed > > Returns: > > Result index if successful, Zero if an error occurred. > > Description: > > This function will execute the $sql statement on the server identified by > $conn > > birdstep_fetch($result) > --------------------------------------------------------------------- > Parameters: > > $result - result set index (from birdstep_exec()) > > Returns: > > TRUE if successful, FALSE if an error occurred. > > Description: > > This function will retrieve the next row from a result set. > > birdstep_fetch_array($result) > --------------------------------------------------------------------- > Parameters: > > $result - result set index (from birdstep_exec()) > > Returns: > > Associative array of column values with column names as key names. > > Description: > > This function will retrieve a row from a result set and return the > results as an > associative array. The column names will be assigned to the key names. > The > data values will be assigned to the array elements. > > birdstep_result($result, $index) > --------------------------------------------------------------------- > Parameters: > > $result - result set index (from birdstep_exec()) > $index - column index to be retrieved > > Returns: > > The value of the column specified by $index in the result set, $result. > FALSE > if an error occurred. > > Description: > > This function is used to retrieve a column value from the current row in > the > result set. > > birdstep_freeresult($result) > --------------------------------------------------------------------- > Parameters: > > $result - result set index (from birdstep_exec()) > > Returns: > > TRUE if successful, FALSE if an error occurred. > > Description: > > This function will free a result set that has been previously allocated > using > the birdstep_exec() function. > > birdstep_autocommit($conn) > --------------------------------------------------------------------- > Parameters: > > $conn - database connection handle > > Returns: > > TRUE if successful, FALSE if an error occurred. > > Description: > > This function will enable the auto-commit feature of RDM Server. > > birdstep_off_autocommit($conn) > --------------------------------------------------------------------- > Parameters: > > $conn - database connection handle > > Returns: > > TRUE if successful, FALSE if an error occurred. > > Description: > > This function will disable the auto-commit feature of RDM Server. > > birdstep_commit($conn) > --------------------------------------------------------------------- > Parameters: > > $conn - database connection handle > > Returns: > > TRUE if successful, FALSE if an error occurred. > > Description: > > This function will commit changes to the database during a transaction. > > birdstep_rollback($conn) > --------------------------------------------------------------------- > Parameters: > > $conn - database connection handle > > Returns: > > TRUE if successful, FALSE if an error occurred. > > Description: > > This function will rollback changes to the database during a transaction. > > birdstep_num_fields($result) > --------------------------------------------------------------------- > Parameters: > > $result - result set index (from birdstep_exec()) > > Returns: > > Number of columns in result set, or FALSE if an error occurred. > > Description: > > This function will retrieve the number of columns in the result set. > > birdstep_field_name($result $index) > --------------------------------------------------------------------- > Parameters: > > $result - result set index (from birdstep_exec()) > $index - column index of column name to retrieve > > Returns: > > Column name, or FALSE if an error occurred. > > Description: > > This function will retrieve the name of the column represented by $index. > > OPEN ITEMS > > 1. LONG VARCHAR Max Length > > The maximum length for a LONG VARCHAR column is currently a #define. This > should be moved to an INI entry and managed through the Zend INI interface. > > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php