Example #1
0
function DB_lo_close($id)
{
    if (strcmp(phpversion(), '4.2.0') < 0) {
        return pg_loclose($id);
    } else {
        return pg_lo_close($id);
    }
}
 function BlobDecode($blob, $maxsize = false, $hastrans = true)
 {
     if (!$this->GuessOID($blob)) {
         return $blob;
     }
     if ($hastrans) {
         @pg_exec($this->_connectionID, "begin");
     }
     $fd = @pg_lo_open($this->_connectionID, $blob, "r");
     if ($fd === false) {
         if ($hastrans) {
             @pg_exec($this->_connectionID, "commit");
         }
         return $blob;
     }
     if (!$maxsize) {
         $maxsize = $this->maxblobsize;
     }
     $realblob = @pg_loread($fd, $maxsize);
     @pg_loclose($fd);
     if ($hastrans) {
         @pg_exec($this->_connectionID, "commit");
     }
     return $realblob;
 }
 function BlobDecode($blob)
 {
     @pg_exec("begin");
     $fd = @pg_lo_open($blob, "r");
     if ($fd === false) {
         @pg_exec("commit");
         return $blob;
     }
     $realblob = @pg_loreadall($fd);
     @pg_loclose($fd);
     @pg_exec("commit");
     return $realblob;
 }
 function BlobDecode($blob, $maxsize = false, $hastrans = true)
 {
     if (!$this->GuessOID($blob)) {
         return $blob;
     }
     if ($hastrans) {
         pg_query($this->_connectionID, 'begin');
     }
     $fd = @pg_lo_open($this->_connectionID, $blob, 'r');
     if ($fd === false) {
         if ($hastrans) {
             pg_query($this->_connectionID, 'commit');
         }
         return $blob;
     }
     if (!$maxsize) {
         $maxsize = $this->maxblobsize;
     }
     $realblob = @pg_lo_read($fd, $maxsize);
     @pg_loclose($fd);
     if ($hastrans) {
         pg_query($this->_connectionID, 'commit');
     }
     return $realblob;
 }
Example #5
0
 function GetLOBFieldValue($prepared_query, $parameter, $lob, &$value)
 {
     if (!$this->Connect()) {
         return 0;
     }
     if ($this->auto_commit && !@pg_Exec($this->connection, "BEGIN")) {
         return 0;
     }
     $success = 1;
     if ($lo = pg_locreate($this->connection)) {
         if ($handle = pg_loopen($this->connection, $lo, "w")) {
             while (!MetabaseEndOfLOB($lob)) {
                 if (MetabaseReadLOB($lob, $data, $this->lob_buffer_length) < 0) {
                     $this->SetError("Get LOB field value", MetabaseLOBError($lob));
                     $success = 0;
                     break;
                 }
                 if (!pg_lowrite($handle, $data)) {
                     $this->SetError("Get LOB field value", pg_ErrorMessage($this->connection));
                     $success = 0;
                     break;
                 }
             }
             pg_loclose($handle);
             if ($success) {
                 $value = strval($lo);
             }
         } else {
             $this->SetError("Get LOB field value", pg_ErrorMessage($this->connection));
             $success = 0;
         }
         if (!$success) {
             pg_lounlink($this->connection, $lo);
         }
     } else {
         $this->SetError("Get LOB field value", pg_ErrorMessage($this->connection));
         $success = 0;
     }
     if ($this->auto_commit) {
         @pg_Exec($this->connection, "END");
     }
     return $success;
 }
Example #6
0
 function BlobDecode($blob)
 {
     if (strlen($blob) > 24) {
         return $blob;
     }
     @pg_exec($this->_connectionID, "begin");
     $fd = @pg_lo_open($this->_connectionID, $blob, "r");
     if ($fd === false) {
         @pg_exec($this->_connectionID, "commit");
         return $blob;
     }
     $realblob = @pg_loreadall($fd);
     @pg_loclose($fd);
     @pg_exec($this->_connectionID, "commit");
     return $realblob;
 }
Example #7
0
 /**
  * Convert a text value into a DBMS specific format that is suitable to
  * compose query statements.
  *
  * @param resource  $prepared_query query handle from prepare()
  * @param           $parameter
  * @param           $lob
  * @return string text string that represents the given argument value in
  *      a DBMS specific format.
  * @access private
  */
 function _getLobValue($prepared_query, $parameter, $lob)
 {
     $connect = $this->connect();
     if (MDB::isError($connect)) {
         return $connect;
     }
     if ($this->auto_commit && !@pg_exec($this->connection, 'BEGIN')) {
         return $this->raiseError(MDB_ERROR, NULL, NULL, '_getLobValue: error starting transaction');
     }
     if ($lo = @pg_locreate($this->connection)) {
         if ($handle = @pg_loopen($this->connection, $lo, 'w')) {
             while (!$this->endOfLob($lob)) {
                 $result = $this->readLob($lob, $data, $this->options['lob_buffer_length']);
                 if (MDB::isError($result)) {
                     break;
                 }
                 if (!@pg_lowrite($handle, $data)) {
                     $result = $this->raiseError(MDB_ERROR, NULL, NULL, 'Get LOB field value: ' . @pg_errormessage($this->connection));
                     break;
                 }
             }
             @pg_loclose($handle);
             if (!MDB::isError($result)) {
                 $value = strval($lo);
             }
         } else {
             $result = $this->raiseError(MDB_ERROR, NULL, NULL, 'Get LOB field value: ' . @pg_errormessage($this->connection));
         }
         if (MDB::isError($result)) {
             $result = @pg_lounlink($this->connection, $lo);
         }
     } else {
         $result = $this->raiseError(MDB_ERROR, NULL, NULL, 'Get LOB field value: ' . pg_ErrorMessage($this->connection));
     }
     if ($this->auto_commit) {
         @pg_exec($this->connection, 'END');
     }
     if (MDB::isError($result)) {
         return $result;
     }
     return $value;
 }
Example #8
0
 /**
  * Free any resources allocated during the lifetime of the large object
  * handler object.
  *
  * @param int $lob handle to a lob created by the createLOB() function
  * @access private
  */
 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');
             }
         }
         $db->lobs[$lob] = '';
     }
 }