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; }
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; }
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; }
/** * 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; }
/** * 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] = ''; } }