| Source for file ibase.phpDocumentation is available at ibase.php 
// vim: set et ts=4 sw=4 fdm=marker:// +----------------------------------------------------------------------+// | PHP versions 4 and 5                                                 |// +----------------------------------------------------------------------+// | Copyright (c) 1998-2004 Manuel Lemos, Tomas V.V.Cox,                 |// | Stig. S. Bakken, Lukas Smith                                         |// | All rights reserved.                                                 |// +----------------------------------------------------------------------+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |// | API as well as database abstraction for PHP applications.            |// | This LICENSE is in the BSD license style.                            |// | Redistribution and use in source and binary forms, with or without   |// | modification, are permitted provided that the following conditions   |// | Redistributions of source code must retain the above copyright       |// | notice, this list of conditions and the following disclaimer.        |// | Redistributions in binary form must reproduce the above copyright    |// | notice, this list of conditions and the following disclaimer in the  |// | documentation and/or other materials provided with the distribution. |// | Neither the name of Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |// | Lukas Smith nor the names of his contributors may be used to endorse |// | or promote products derived from this software without specific prior|// | written permission.                                                  |// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  |// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT    |// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS    |// | FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE      |// | REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,          |// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |// | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS|// |  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED  |// | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT          |// | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY|// | WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE          |// | POSSIBILITY OF SUCH DAMAGE.                                          |// +----------------------------------------------------------------------+// | Author: Lukas Smith <smith@backendmedia.com>                         |// |         Lorenzo Alberton <l.alberton@quipo.it>                       |// +----------------------------------------------------------------------+// $Id: ibase.php,v 1.28 2005/04/19 12:53:41 lsmith Exp $require_once 'MDB2/Driver/Datatype/Common.php'; * MDB2 Firebird/Interbase driver * @author  Lukas Smith <smith@backendmedia.com> * @author  Lorenzo Alberton <l.alberton@quipo.it>     * convert a value to a RDBMS independent MDB2 type     * @param mixed  $value   value to be converted     * @param int    $type    constant that specifies which type to convert to     * @return mixed converted value or a MDB2 error on failure        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;            return sprintf('%.'.$db-> options['decimal_places'] .'f', doubleval($value) /pow( 10.0, $db-> options['decimal_places'])) ;    // {{{ _getTypeDeclaration()     * Obtain DBMS specific SQL code portion needed to declare an text type     * field to be used in statements like CREATE TABLE.     * @param array $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Integer value that determines the maximum length of the text     *           field. If this argument is missing the field should be     *           declared to have the longest length allowed by the DBMS.     *           Text value to be used as default for this field.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        switch ($field['type']) {            $length = ( isset($field['length']) ? $field['length'] : (! PEAR:: isError($length = $db-> options['default_text_field_length']) ? $length : 4000)) ;            return 'VARCHAR ('.$length .')' ;            return 'BLOB SUB_TYPE 1';            return 'BLOB SUB_TYPE 0';            return 'DOUBLE PRECISION';            return 'DECIMAL(18,'.$db-> options['decimal_places'] .')' ;    // {{{ _getTextDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a text type     * field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param array  $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Integer value that determines the maximum length of the text     *           field. If this argument is missing the field should be     *           declared to have the longest length allowed by the DBMS.     *           Text value to be used as default for this field.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $default = isset($field['default']) ? ' DEFAULT' .            $this->quote($field['default'], 'text') : '' ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' ' .$type .$default .$notnull ;    // {{{ _getCLOBDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a character     * large object type field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param array $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Integer value that determines the maximum length of the large     *           object field. If this argument is missing the field should be     *           declared to have the longest length allowed by the DBMS.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;    // {{{ _getBLOBDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a binary large     * object type field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param array $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Integer value that determines the maximum length of the large     *           object field. If this argument is missing the field should be     *           declared to have the longest length allowed by the DBMS.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;    // {{{ _getDateDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a date type     * field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param array $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Date value to be used as default for this field.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $default = isset($field['default']) ? ' DEFAULT ' .            $this->quote($field['default'], 'date') : '' ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;    // {{{ _getTimeDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a time     * field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param array $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Time value to be used as default for this field.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $default = isset($field['default']) ? ' DEFAULT ' .            $this->quote($field['default'], 'time') : '' ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;    // {{{ _getTimestampDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a timestamp     * field to be used in statements like CREATE TABLE.     * @param string  $name   name the field to be declared.     * @param array   $field  associative array with the name of the properties     *        of the field being declared as array indexes. Currently, the types     *        of supported field properties are as follows:     *            Timestamp value to be used as default for this field.     *            Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *                  declare the specified field.        $default = isset($field['default']) ? ' DEFAULT ' .            $this->quote($field['default'], 'timestamp') : '' ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;    // {{{ _getFloatDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a float type     * field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param array $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Float value to be used as default for this field.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $default = isset($field['default']) ? ' DEFAULT ' .            $this->quote($field['default'], 'float') : '' ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;    // {{{ _getDecimalDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a decimal type     * field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param array $field  associative array with the name of the properties     *       of the field being declared as array indexes. Currently, the types     *       of supported field properties are as follows:     *           Decimal value to be used as default for this field.     *           Boolean flag that indicates whether this field is constrained     * @return string  DBMS specific SQL code portion that should be used to     *       declare the specified field.        $default = isset($field['default']) ? ' DEFAULT ' .            $this->quote($field['default'], 'decimal') : '' ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;     * Convert a text value into a DBMS specific format that is suitable to     * compose query statements.     * @return string text string that represents the given argument value in     *       a DBMS specific format.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        if (PEAR:: isError($connect = $db-> connect())) {        } elseif (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {            if ($match[1] == 'file://') {            $value = @fopen($value, 'r') ;        if ($db->in_transaction) {            $value = @ ibase_blob_import($db-> transaction_id, $value) ;            $value = @ ibase_blob_import($db-> connection, $value) ;     * Convert a text value into a DBMS specific format that is suitable to     * compose query statements.     * @return string text string that represents the given argument value in     *       a DBMS specific format.     * Convert a text value into a DBMS specific format that is suitable to     * compose query statements.     * @return string text string that represents the given argument value in     *       a DBMS specific format.     * Convert a text value into a DBMS specific format that is suitable to     * compose query statements.     * @param string $value text string value that is intended to be converted.     * @return string text string that represents the given argument value in     *        a DBMS specific format.        return ($value ? "'Y'" : "'N'") ;     * Convert a text value into a DBMS specific format that is suitable to     * compose query statements.     * @param string $value text string value that is intended to be converted.     * @return string text string that represents the given argument value in     *       a DBMS specific format.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        return (strval(round($value*pow( 10.0, $db-> options['decimal_places'])))) ;     * retrieve LOB from the database     * @param int $lob handle to a lob created by the createLob() function     * @return mixed MDB2_OK on success, a MDB2 error on failure        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        if (!isset($db-> lobs[$lob])) {                '_retrieveLOB: it was not specified a valid lob');        if (!isset($db-> lobs[$lob]['handle'])) {            $db->lobs[$lob]['handle'] =                @ibase_blob_open($db-> lobs[$lob]['value']) ;            if (!$db->lobs[$lob]['handle']) {                unset($db-> lobs[$lob]['value']) ;                    '_retrieveLOB: Could not open fetched large object field' . @ ibase_errmsg()) ;     * Determine whether it was reached the end of the large object and     * therefore there is no more data to be read for the its input stream.     * @param int    $lob handle to a lob created by the createLOB() function     * @return mixed true or false on success, a MDB2 error on failure        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        if (PEAR:: isError($lobresult)) {        return isset($db-> lobs[$lob]['EndOfLOB']) ;     * Read data from large object input stream.     * @param int $lob handle to a lob created by the createLob() function     * @param blob $data reference to a variable that will hold data to be     *       read from the large object input stream     * @param int $length integer value that indicates the largest ammount of     *       data to be read from the large object input stream.     * @return mixed length on success, a MDB2 error on failure        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        if (PEAR:: isError($lobresult = $this->_retrieveLOB($lob))) {        $data = @ ibase_blob_get($db-> lobs[$lob]['handle'], $length) ;                'Read Result LOB: ' . @ ibase_errmsg()) ;        if (($length = strlen($data)) == 0) {            $db->lobs[$lob]['EndOfLOB'] = 1;    // {{{ _destroyResultLOB()     * Free any resources allocated during the lifetime of the large object     * @param int $lob handle to a lob created by the createLob() function        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        if (isset($db-> lobs[$lob])) {            if (isset($db-> lobs[$lob]['value'])) {               @ibase_blob_close($db-> lobs[$lob]['handle']) ;    // {{{ mapNativeDatatype()     * Maps a native array description of a field to a MDB2 datatype and length     * @param array  $field native field description     * @return array containing the various possible types and the length        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $length = $field['attlen'] ;            $length = $field['atttypmod'] -4;                'getTableFieldDefinition: unknown database attribute type');        return array($type, $length) ;
		    
 
		    Documentation generated on Mon, 11 Mar 2019 14:20:17 -0400 by phpDocumentor 1.4.4 . PEAR Logo Copyright ©  PHP Group 2004.
	       |