diff options
Diffstat (limited to 'trunk/adodb5/drivers/adodb-db2oci.inc.php')
| -rw-r--r-- | trunk/adodb5/drivers/adodb-db2oci.inc.php | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/trunk/adodb5/drivers/adodb-db2oci.inc.php b/trunk/adodb5/drivers/adodb-db2oci.inc.php deleted file mode 100644 index f0c4113b..00000000 --- a/trunk/adodb5/drivers/adodb-db2oci.inc.php +++ /dev/null @@ -1,230 +0,0 @@ -<?php -/* -V5.18 3 Sep 2012 (c) 2000-2012 John Lim (jlim#natsoft.com). All rights reserved. - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. -Set tabs to 4 for best viewing. - - Latest version is available at http://adodb.sourceforge.net - - Microsoft Visual FoxPro data driver. Requires ODBC. Works only on MS Windows. -*/ - -// security - hide paths -if (!defined('ADODB_DIR')) die(); -include(ADODB_DIR."/drivers/adodb-db2.inc.php"); - - -if (!defined('ADODB_DB2OCI')){ -define('ADODB_DB2OCI',1); - -/* -// regex code for smart remapping of :0, :1 bind vars to ? ? -function _colontrack($p) -{ -global $_COLONARR,$_COLONSZ; - $v = (integer) substr($p,1); - if ($v > $_COLONSZ) return $p; - $_COLONARR[] = $v; - return '?'; -} - -// smart remapping of :0, :1 bind vars to ? ? -function _colonscope($sql,$arr) -{ -global $_COLONARR,$_COLONSZ; - - $_COLONARR = array(); - $_COLONSZ = sizeof($arr); - - $sql2 = preg_replace("/(:[0-9]+)/e","_colontrack('\\1')",$sql); - - if (empty($_COLONARR)) return array($sql,$arr); - - foreach($_COLONARR as $k => $v) { - $arr2[] = $arr[$v]; - } - - return array($sql2,$arr2); -} -*/ - -/* - Smart remapping of :0, :1 bind vars to ? ? - - Handles colons in comments -- and / * * / and in quoted strings. -*/ - -function _colonparser($sql,$arr) -{ - $lensql = strlen($sql); - $arrsize = sizeof($arr); - $state = 'NORM'; - $at = 1; - $ch = $sql[0]; - $ch2 = @$sql[1]; - $sql2 = ''; - $arr2 = array(); - $nprev = 0; - - - while (strlen($ch)) { - - switch($ch) { - case '/': - if ($state == 'NORM' && $ch2 == '*') { - $state = 'COMMENT'; - - $at += 1; - $ch = $ch2; - $ch2 = $at < $lensql ? $sql[$at] : ''; - } - break; - - case '*': - if ($state == 'COMMENT' && $ch2 == '/') { - $state = 'NORM'; - - $at += 1; - $ch = $ch2; - $ch2 = $at < $lensql ? $sql[$at] : ''; - } - break; - - case "\n": - case "\r": - if ($state == 'COMMENT2') $state = 'NORM'; - break; - - case "'": - do { - $at += 1; - $ch = $ch2; - $ch2 = $at < $lensql ? $sql[$at] : ''; - } while ($ch !== "'"); - break; - - case ':': - if ($state == 'COMMENT' || $state == 'COMMENT2') break; - - //echo "$at=$ch $ch2, "; - if ('0' <= $ch2 && $ch2 <= '9') { - $n = ''; - $nat = $at; - do { - $at += 1; - $ch = $ch2; - $n .= $ch; - $ch2 = $at < $lensql ? $sql[$at] : ''; - } while ('0' <= $ch && $ch <= '9'); - #echo "$n $arrsize ] "; - $n = (integer) $n; - if ($n < $arrsize) { - $sql2 .= substr($sql,$nprev,$nat-$nprev-1).'?'; - $nprev = $at-1; - $arr2[] = $arr[$n]; - } - } - break; - - case '-': - if ($state == 'NORM') { - if ($ch2 == '-') $state = 'COMMENT2'; - $at += 1; - $ch = $ch2; - $ch2 = $at < $lensql ? $sql[$at] : ''; - } - break; - } - - $at += 1; - $ch = $ch2; - $ch2 = $at < $lensql ? $sql[$at] : ''; - } - - if ($nprev == 0) { - $sql2 = $sql; - } else { - $sql2 .= substr($sql,$nprev); - } - - return array($sql2,$arr2); -} - -class ADODB_db2oci extends ADODB_db2 { - var $databaseType = "db2oci"; - var $sysTimeStamp = 'sysdate'; - var $sysDate = 'trunc(sysdate)'; - var $_bindInputArray = true; - - function ADODB_db2oci() - { - parent::ADODB_db2(); - } - - function Param($name,$type='C') - { - return ':'.$name; - } - - - function MetaTables($ttype=false,$schema=false) - { - global $ADODB_FETCH_MODE; - - $savem = $ADODB_FETCH_MODE; - $ADODB_FETCH_MODE = ADODB_FETCH_NUM; - $qid = db2_tables($this->_connectionID); - - $rs = new ADORecordSet_db2($qid); - - $ADODB_FETCH_MODE = $savem; - if (!$rs) { - $false = false; - return $false; - } - - $arr = $rs->GetArray(); - $rs->Close(); - $arr2 = array(); - // adodb_pr($arr); - if ($ttype) { - $isview = strncmp($ttype,'V',1) === 0; - } - for ($i=0; $i < sizeof($arr); $i++) { - if (!$arr[$i][2]) continue; - $type = $arr[$i][3]; - $schemaval = ($schema) ? $arr[$i][1].'.' : ''; - $name = $schemaval.$arr[$i][2]; - $owner = $arr[$i][1]; - if (substr($name,0,8) == 'EXPLAIN_') continue; - if ($ttype) { - if ($isview) { - if (strncmp($type,'V',1) === 0) $arr2[] = $name; - } else if (strncmp($type,'T',1) === 0 && strncmp($owner,'SYS',3) !== 0) $arr2[] = $name; - } else if (strncmp($type,'T',1) === 0 && strncmp($owner,'SYS',3) !== 0) $arr2[] = $name; - } - return $arr2; - } - - function _Execute($sql, $inputarr=false ) - { - if ($inputarr) list($sql,$inputarr) = _colonparser($sql, $inputarr); - return parent::_Execute($sql, $inputarr); - } -}; - - -class ADORecordSet_db2oci extends ADORecordSet_db2 { - - var $databaseType = "db2oci"; - - function ADORecordSet_db2oci($id,$mode=false) - { - return $this->ADORecordSet_db2($id,$mode); - } -} - -} //define -?>
\ No newline at end of file |
