| Source for file pgsql.phpDocumentation is available at pgsql.php 
// +----------------------------------------------------------------------+// +----------------------------------------------------------------------+// | 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: Paul Cooper <pgc@ucecom.com>                                 |// +----------------------------------------------------------------------+// $Id: pgsql.php,v 1.4 2004/03/28 12:12:11 lsmith Exp $require_once 'MDB2/Driver/Datatype/Common.php'; * @author  Paul Cooper <pgc@ucecom.com>     * convert a value to a RDBMS indepdenant 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 $this->_baseConvertResult($value, $type) ;    // {{{ getTextDeclaration()     * Obtain DBMS specific SQL code portion needed to declare an text type     * field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param string $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] ;        $type = isset($field['length']) ? 'VARCHAR (' .$field['length'] .')' : 'TEXT' ;        $default = isset($field['default']) ? ' DEFAULT TIME' .        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' ' .$type .$default .$notnull ;    // {{{ getCLOBDeclaration()     * Obtain DBMS specific SQL code portion needed to declare an character     * large object type field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param string $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.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' OID' .$notnull ;    // {{{ getBLOBDeclaration()     * Obtain DBMS specific SQL code portion needed to declare an binary large     * object type field to be used in statements like CREATE TABLE.     * @param string $name   name the field to be declared.     * @param string $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.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' OID' .$notnull ;    // {{{ getBooleanDeclaration()     * Obtain DBMS specific SQL code portion needed to declare a boolean type     * field to be used in statements like CREATE TABLE.     * @param string $name name the field to be declared.     * @param string $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:     *            Boolean 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] ;        $default = isset($field['default']) ? ' DEFAULT ' .        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' BOOLEAN' .$default .$notnull ;    // {{{ 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 string $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.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $default = isset($field['default']) ? ' DEFAULT ' .        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' DATE' .$default .$notnull ;    // {{{ 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 string $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.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $default = isset($field['default']) ? ' DEFAULT ' .        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' TIME without time zone' .$default .$notnull ;    // {{{ 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 string $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.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $default = isset($field['default']) ? ' DEFAULT ' .        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' TIMESTAMP without time zone' .$default .$notnull ;    // {{{ 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 string $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.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $default = isset($field['default']) ? ' DEFAULT ' .        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' FLOAT8' .$default .$notnull ;    // {{{ 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 string $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.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $default = isset($field['default']) ? ' DEFAULT ' .        $notnull = isset($field['notnull']) ? ' NOT NULL' : '' ;        return $name.' NUMERIC(18, ' .$db-> options['decimal_places'] .')' .$default .$notnull ;     * Convert a text value into a DBMS specific format that is suitable to     * compose query statements.     * @param resource  $prepared_query query handle from prepare()     * @return string text string that represents the given argument value in     *       a DBMS specific format.        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $connect = $db-> connect() ;        $prepared_query = $GLOBALS['_MDB2_LOBs'][$lob]-> prepared_query;        $parameter = $GLOBALS['_MDB2_LOBs'][$lob]-> parameter;        if ($db->auto_commit && !@ pg_exec($db-> connection, 'BEGIN')) {                'error starting transaction');        if (($lo = @ pg_locreate($db-> connection))) {            if (($handle = @ pg_loopen($db-> connection, $lo, 'w'))) {                    $result = $this->readLOB($lob, $data, $db-> options['lob_buffer_length']) ;                    if (!pg_lowrite($handle, $data)) {                        $result = $db-> raiseError() ;                $result = $db-> raiseError() ;                $result = @ pg_lounlink($db-> connection, $lo) ;            $result = $db-> raiseError() ;            @pg_exec($db-> connection, 'END') ;     * 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] ;        return $this->_quoteLOB($clob) ;     * 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] ;        return $this->_quoteLOB($blob) ;     * 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 ($value === null) ? 'NULL' : ($value ? "'t'" : "'f'") ;     * 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 ($value === null) ? 'NULL' : $value ;     * 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 ($value === null) ? 'NULL' : $value ;     * 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    function _retrieveLOB($lob)        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        if (!isset($db-> lobs[$lob])) {                'did not specified a valid lob');        if (!isset($db-> lobs[$lob]['handle'])) {                if (!pg_exec($db-> connection, 'BEGIN')) {                    return $db->raiseError() ;                $db->lobs[$lob]['in_transaction'] = true;            $db->lobs[$lob]['handle'] =                @pg_loopen($db-> connection, $db-> lobs[$lob]['value'], 'r') ;            if (!$db->lobs[$lob]['handle']) {                if (isset($db-> lobs[$lob]['in_transaction'])) {                    @pg_Exec($db-> connection, 'END') ;                    unset($db-> lobs[$lob]['in_transaction']) ;                unset($db-> lobs[$lob]['value']) ;                return $db->raiseError() ;     * 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    function _endOfResultLOB($lob)        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $lobresult = $this-> _retrieveLOB($lob) ;        return isset($db-> lobs[$lob]['end_of_LOB']) ;     * 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    function _readResultLOB($lob, &$data, $length)        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        $lobresult = $this-> _retrieveLOB($lob) ;        $data = @ pg_loread($db-> lobs[$lob]['handle'], $length) ;             return $db->raiseError() ;        if (($length = strlen($data)) == 0) {            $db->lobs[$lob]['end_of_LOB'] = true;    // {{{ _destroyResultLOB()     * Free any resources allocated during the lifetime of the large object     * @param int $lob handle to a lob created by the createLOB() function    function _destroyResultLOB($lob)        $db =& $GLOBALS['_MDB2_databases'][$this->db_index] ;        if (isset($db-> lobs[$lob])) {            if (isset($db-> lobs[$lob]['value'])) {                @pg_loclose($db-> lobs[$lob]['handle']) ;                if (isset($db-> lobs[$lob]['in_transaction'])) {                    @pg_Exec($db-> connection, 'END') ;
		    
 
		    Documentation generated on Mon, 11 Mar 2019 10:15:54 -0400 by phpDocumentor 1.4.4 . PEAR Logo Copyright ©  PHP Group 2004.
	       |