summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/adodb-pdo_firebird.inc.php192
1 files changed, 106 insertions, 86 deletions
diff --git a/drivers/adodb-pdo_firebird.inc.php b/drivers/adodb-pdo_firebird.inc.php
index 00ecd4a4..fff2bbb2 100644
--- a/drivers/adodb-pdo_firebird.inc.php
+++ b/drivers/adodb-pdo_firebird.inc.php
@@ -16,12 +16,10 @@
* This version has only been tested on Firebird 3.0 and PHP 7
*/
-class ADODB_pdo_firebird extends ADODB_pdo {
-
+class ADODB_pdo_firebird extends ADODB_pdo
+{
public $dialect = 3;
-
public $metaTablesSQL = "select lower(rdb\$relation_name) from rdb\$relations where rdb\$relation_name not like 'RDB\$%'";
-
public $metaColumnsSQL = "select lower(a.rdb\$field_name), a.rdb\$null_flag, a.rdb\$default_source, b.rdb\$field_length, b.rdb\$field_scale, b.rdb\$field_sub_type, b.rdb\$field_precision, b.rdb\$field_type from rdb\$relation_fields a, rdb\$fields b where a.rdb\$field_source = b.rdb\$field_name and a.rdb\$relation_name = '%s' order by a.rdb\$field_position asc";
var $arrayClass = 'ADORecordSet_array_pdo_firebird';
@@ -42,12 +40,18 @@ class ADODB_pdo_firebird extends ADODB_pdo {
public function serverInfo()
{
$arr['dialect'] = $this->dialect;
- switch($arr['dialect']) {
- case '':
- case '1': $s = 'Firebird Dialect 1'; break;
- case '2': $s = 'Firebird Dialect 2'; break;
- default:
- case '3': $s = 'Firebird Dialect 3'; break;
+ switch ($arr['dialect']) {
+ case '':
+ case '1':
+ $s = 'Firebird Dialect 1';
+ break;
+ case '2':
+ $s = 'Firebird Dialect 2';
+ break;
+ default:
+ case '3':
+ $s = 'Firebird Dialect 3';
+ break;
}
$arr['version'] = ADOConnection::_findvers($s);
$arr['description'] = $s;
@@ -55,28 +59,29 @@ class ADODB_pdo_firebird extends ADODB_pdo {
}
/**
- * Returns the tables in the database
- * @param mixed $ttype
- * @param bool $showSchema
- * @param mixed $mask
+ * Returns the tables in the database.
+ *
+ * @param mixed $ttype
+ * @param bool $showSchema
+ * @param mixed $mask
*
- * @return string[]
+ * @return string[]
*/
- public function metaTables($ttype=false,$showSchema=false,$mask=false)
+ public function metaTables($ttype = false, $showSchema = false, $mask = false)
{
- $ret = ADOConnection::MetaTables($ttype,$showSchema);
+ $ret = ADOConnection::MetaTables($ttype, $showSchema);
return $ret;
}
- public function metaColumns($table, $normalize=true)
+ public function metaColumns($table, $normalize = true)
{
global $ADODB_FETCH_MODE;
$save = $ADODB_FETCH_MODE;
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
- $rs = $this->Execute(sprintf($this->metaColumnsSQL,strtoupper($table)));
+ $rs = $this->Execute(sprintf($this->metaColumnsSQL, strtoupper($table)));
$ADODB_FETCH_MODE = $save;
@@ -89,54 +94,67 @@ class ADODB_pdo_firebird extends ADODB_pdo {
while (!$rs->EOF) { //print_r($rs->fields);
$fld = new ADOFieldObject();
$fld->name = trim($rs->fields[0]);
- $this->_ConvertFieldType($fld, $rs->fields[7], $rs->fields[3], $rs->fields[4], $rs->fields[5], $rs->fields[6], $dialect3);
+ $this->_ConvertFieldType($fld, $rs->fields[7], $rs->fields[3], $rs->fields[4], $rs->fields[5],
+ $rs->fields[6], $dialect3);
if (isset($rs->fields[1]) && $rs->fields[1]) {
$fld->not_null = true;
}
if (isset($rs->fields[2])) {
$fld->has_default = true;
- $d = substr($rs->fields[2],strlen('default '));
- switch ($fld->type)
- {
- case 'smallint':
- case 'integer': $fld->default_value = (int) $d; break;
- case 'char':
- case 'blob':
- case 'text':
- case 'varchar': $fld->default_value = (string) substr($d,1,strlen($d)-2); break;
- case 'double':
- case 'float': $fld->default_value = (float) $d; break;
- default: $fld->default_value = $d; break;
+ $d = substr($rs->fields[2], strlen('default '));
+ switch ($fld->type) {
+ case 'smallint':
+ case 'integer':
+ $fld->default_value = (int)$d;
+ break;
+ case 'char':
+ case 'blob':
+ case 'text':
+ case 'varchar':
+ $fld->default_value = (string)substr($d, 1, strlen($d) - 2);
+ break;
+ case 'double':
+ case 'float':
+ $fld->default_value = (float)$d;
+ break;
+ default:
+ $fld->default_value = $d;
+ break;
}
- // case 35:$tt = 'TIMESTAMP'; break;
}
if ((isset($rs->fields[5])) && ($fld->type == 'blob')) {
$fld->sub_type = $rs->fields[5];
} else {
$fld->sub_type = null;
}
- if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld;
- else $retarr[strtoupper($fld->name)] = $fld;
+ if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) {
+ $retarr[] = $fld;
+ } else {
+ $retarr[strtoupper($fld->name)] = $fld;
+ }
$rs->MoveNext();
}
$rs->Close();
- if ( empty($retarr)) return false;
- else return $retarr;
+ if (empty($retarr)) {
+ return false;
+ } else {
+ return $retarr;
+ }
}
- public function metaIndexes ($table, $primary = FALSE, $owner=false)
+ public function metaIndexes($table, $primary = false, $owner = false)
{
// save old fetch mode
global $ADODB_FETCH_MODE;
$save = $ADODB_FETCH_MODE;
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
- if ($this->fetchMode !== FALSE) {
- $savem = $this->SetFetchMode(FALSE);
+ if ($this->fetchMode !== false) {
+ $savem = $this->SetFetchMode(false);
}
$table = strtoupper($table);
- $sql = "SELECT * FROM RDB\$INDICES WHERE RDB\$RELATION_NAME = '".$table."'";
+ $sql = "SELECT * FROM RDB\$INDICES WHERE RDB\$RELATION_NAME = '" . $table . "'";
if (!$primary) {
$sql .= " AND RDB\$INDEX_NAME NOT LIKE 'RDB\$%'";
} else {
@@ -166,7 +184,7 @@ class ADODB_pdo_firebird extends ADODB_pdo {
'columns' => array()
);
}
- $sql = "SELECT * FROM RDB\$INDEX_SEGMENTS WHERE RDB\$INDEX_NAME = '".$index."' ORDER BY RDB\$FIELD_POSITION ASC";
+ $sql = "SELECT * FROM RDB\$INDEX_SEGMENTS WHERE RDB\$INDEX_NAME = '" . $index . "' ORDER BY RDB\$FIELD_POSITION ASC";
$rs1 = $this->Execute($sql);
while ($row1 = $rs1->FetchRow()) {
$indexes[$index]['columns'][$row1[2]] = $row1[1];
@@ -181,7 +199,7 @@ class ADODB_pdo_firebird extends ADODB_pdo {
return $indexes;
}
- public function metaPrimaryKeys($table,$owner_notused=false,$internalKey=false)
+ public function metaPrimaryKeys($table, $owner_notused = false, $internalKey = false)
{
if ($internalKey) {
return array('RDB$DB_KEY');
@@ -191,21 +209,24 @@ class ADODB_pdo_firebird extends ADODB_pdo {
$sql = 'SELECT S.RDB$FIELD_NAME AFIELDNAME
FROM RDB$INDICES I JOIN RDB$INDEX_SEGMENTS S ON I.RDB$INDEX_NAME=S.RDB$INDEX_NAME
- WHERE I.RDB$RELATION_NAME=\''.$table.'\' and I.RDB$INDEX_NAME like \'RDB$PRIMARY%\'
+ WHERE I.RDB$RELATION_NAME=\'' . $table . '\' and I.RDB$INDEX_NAME like \'RDB$PRIMARY%\'
ORDER BY I.RDB$INDEX_NAME,S.RDB$FIELD_POSITION';
- $a = $this->GetCol($sql,false,true);
- if ($a && sizeof($a)>0) return $a;
+ $a = $this->GetCol($sql, false, true);
+ if ($a && sizeof($a) > 0) {
+ return $a;
+ }
return false;
}
public function createSequence($seqname = 'adodbseq', $startID = 1)
{
$ok = $this->execute("CREATE SEQUENCE $seqname");
- if (!$ok)
+ if (!$ok) {
return false;
+ }
- return $this->execute("ALTER SEQUENCE $seqname RESTART WITH ".($startID-1));
+ return $this->execute("ALTER SEQUENCE $seqname RESTART WITH " . ($startID - 1));
}
public function dropSequence($seqname = 'adodbseq')
@@ -217,23 +238,21 @@ class ADODB_pdo_firebird extends ADODB_pdo {
public function _affectedrows()
{
- return fbird_affected_rows( $this->_transactionID ? $this->_transactionID : $this->_connectionID );
+ return fbird_affected_rows($this->_transactionID ? $this->_transactionID : $this->_connectionID);
}
- public function genId($seqname='adodbseq',$startID=1)
+ public function genId($seqname = 'adodbseq', $startID = 1)
{
$getnext = ("SELECT Gen_ID($seqname,1) FROM RDB\$DATABASE");
$rs = @$this->execute($getnext);
- if (!$rs)
- {
- $this->execute(("CREATE SEQUENCE $seqname" ));
- $this->execute("ALTER SEQUENCE $seqname RESTART WITH ".($startID-1).';');
+ if (!$rs) {
+ $this->execute(("CREATE SEQUENCE $seqname"));
+ $this->execute("ALTER SEQUENCE $seqname RESTART WITH " . ($startID - 1) . ';');
$rs = $this->execute($getnext);
}
if ($rs && !$rs->EOF) {
- $this->genID = (integer) reset($rs->fields);
- }
- else {
+ $this->genID = (integer)reset($rs->fields);
+ } else {
$this->genID = 0; // false
}
@@ -244,44 +263,47 @@ class ADODB_pdo_firebird extends ADODB_pdo {
return $this->genID;
}
- public function selectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false, $secs=0)
+ public function selectLimit($sql, $nrows = -1, $offset = -1, $inputarr = false, $secs = 0)
{
- $nrows = (integer) $nrows;
- $offset = (integer) $offset;
+ $nrows = (integer)$nrows;
+ $offset = (integer)$offset;
$str = 'SELECT ';
- if ($nrows >= 0) $str .= "FIRST $nrows ";
- $str .=($offset>=0) ? "SKIP $offset " : '';
+ if ($nrows >= 0) {
+ $str .= "FIRST $nrows ";
+ }
+ $str .= ($offset >= 0) ? "SKIP $offset " : '';
- $sql = preg_replace('/^[ \t]*select/i',$str,$sql);
- if ($secs)
- $rs = $this->cacheExecute($secs,$sql,$inputarr);
- else
- $rs = $this->execute($sql,$inputarr);
+ $sql = preg_replace('/^[ \t]*select/i', $str, $sql);
+ if ($secs) {
+ $rs = $this->cacheExecute($secs, $sql, $inputarr);
+ } else {
+ $rs = $this->execute($sql, $inputarr);
+ }
return $rs;
}
/**
- * Sets the appropriate type into the $fld variable
- *
- * @param string $fld By reference
- * @param int $ftype
- * @param int $flen
- * @param int $fscale
- * @param int $fsubtype
- * @param int $fprecision
- * @param bool $dialect3
- */
+ * Sets the appropriate type into the $fld variable
+ *
+ * @param ADOFieldObject $fld By reference
+ * @param int $ftype
+ * @param int $flen
+ * @param int $fscale
+ * @param int $fsubtype
+ * @param int $fprecision
+ * @param bool $dialect3
+ */
final private function _convertFieldType(&$fld, $ftype, $flen, $fscale, $fsubtype, $fprecision, $dialect3)
{
$fscale = abs($fscale);
$fld->max_length = $flen;
$fld->scale = null;
- switch($ftype){
+ switch ($ftype) {
case 7:
case 8:
if ($dialect3) {
- switch($fsubtype){
+ switch ($fsubtype) {
case 0:
$fld->type = ($ftype == 7 ? 'smallint' : 'integer');
break;
@@ -297,7 +319,7 @@ class ADODB_pdo_firebird extends ADODB_pdo {
break;
} // switch
} else {
- if ($fscale !=0) {
+ if ($fscale != 0) {
$fld->type = 'decimal';
$fld->scale = $fscale;
$fld->max_length = ($ftype == 7 ? 4 : 9);
@@ -308,7 +330,7 @@ class ADODB_pdo_firebird extends ADODB_pdo {
break;
case 16:
if ($dialect3) {
- switch($fsubtype){
+ switch ($fsubtype) {
case 0:
$fld->type = 'decimal';
$fld->max_length = 18;
@@ -334,7 +356,7 @@ class ADODB_pdo_firebird extends ADODB_pdo {
$fld->type = 'char';
break;
case 27:
- if ($fscale !=0) {
+ if ($fscale != 0) {
$fld->type = 'decimal';
$fld->max_length = 15;
$fld->scale = 5;
@@ -377,26 +399,24 @@ class ADORecordSet_pdo_firebird extends ADORecordSet_pdo
/**
* returns the field object
*
- * @param int $fieldOffset Optional field offset
+ * @param int $fieldOffset Optional field offset
*
* @return object The ADOFieldObject describing the field
*/
public function fetchField($fieldOffset = 0)
{
}
-
}
class ADORecordSet_array_pdo_firebird extends ADORecordSet_array_pdo
{
-
public $databaseType = "pdo_firebird";
public $canSeek = true;
/**
* returns the field object
*
- * @param int $fieldOffset Optional field offset
+ * @param int $fieldOffset Optional field offset
*
* @return object The ADOFieldObject describing the field
*/