ona  18.1.1
About: OpenNetAdmin provides a database managed inventory of your IP network (with Web and CLI interface).
  Fossies Dox: ona-18.1.1.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

datadict-oci8.inc.php
Go to the documentation of this file.
1 <?php
2 
15 // security - hide paths
16 if (!defined('ADODB_DIR')) die();
17 
18 class ADODB2_oci8 extends ADODB_DataDict {
19 
20  var $databaseType = 'oci8';
21  var $seqField = false;
22  var $seqPrefix = 'SEQ_';
23  var $dropTable = "DROP TABLE %s CASCADE CONSTRAINTS";
24  var $trigPrefix = 'TRIG_';
25  var $alterCol = ' MODIFY ';
26  var $typeX = 'VARCHAR(4000)';
27  var $typeXL = 'CLOB';
28 
29  function MetaType($t, $len=-1, $fieldobj=false)
30  {
31  if (is_object($t)) {
32  $fieldobj = $t;
33  $t = $fieldobj->type;
34  $len = $fieldobj->max_length;
35  }
36  switch (strtoupper($t)) {
37  case 'VARCHAR':
38  case 'VARCHAR2':
39  case 'CHAR':
40  case 'VARBINARY':
41  case 'BINARY':
42  if (isset($this) && $len <= $this->blobSize) return 'C';
43  return 'X';
44 
45  case 'NCHAR':
46  case 'NVARCHAR2':
47  case 'NVARCHAR':
48  if (isset($this) && $len <= $this->blobSize) return 'C2';
49  return 'X2';
50 
51  case 'NCLOB':
52  case 'CLOB':
53  return 'XL';
54 
55  case 'LONG RAW':
56  case 'LONG VARBINARY':
57  case 'BLOB':
58  return 'B';
59 
60  case 'TIMESTAMP':
61  return 'TS';
62 
63  case 'DATE':
64  return 'T';
65 
66  case 'INT':
67  case 'SMALLINT':
68  case 'INTEGER':
69  return 'I';
70 
71  default:
72  return 'N';
73  }
74  }
75 
76  function ActualType($meta)
77  {
78  switch($meta) {
79  case 'C': return 'VARCHAR';
80  case 'X': return $this->typeX;
81  case 'XL': return $this->typeXL;
82 
83  case 'C2': return 'NVARCHAR2';
84  case 'X2': return 'NVARCHAR2(4000)';
85 
86  case 'B': return 'BLOB';
87 
88  case 'TS':
89  return 'TIMESTAMP';
90 
91  case 'D':
92  case 'T': return 'DATE';
93  case 'L': return 'NUMBER(1)';
94  case 'I1': return 'NUMBER(3)';
95  case 'I2': return 'NUMBER(5)';
96  case 'I':
97  case 'I4': return 'NUMBER(10)';
98 
99  case 'I8': return 'NUMBER(20)';
100  case 'F': return 'NUMBER';
101  case 'N': return 'NUMBER';
102  case 'R': return 'NUMBER(20)';
103  default:
104  return $meta;
105  }
106  }
107 
108  function CreateDatabase($dbname, $options=false)
109  {
110  $options = $this->_Options($options);
111  $password = isset($options['PASSWORD']) ? $options['PASSWORD'] : 'tiger';
112  $tablespace = isset($options["TABLESPACE"]) ? " DEFAULT TABLESPACE ".$options["TABLESPACE"] : '';
113  $sql[] = "CREATE USER ".$dbname." IDENTIFIED BY ".$password.$tablespace;
114  $sql[] = "GRANT CREATE SESSION, CREATE TABLE,UNLIMITED TABLESPACE,CREATE SEQUENCE TO $dbname";
115 
116  return $sql;
117  }
118 
119  function AddColumnSQL($tabname, $flds)
120  {
121  $tabname = $this->TableName($tabname);
122  $f = array();
123  list($lines,$pkey) = $this->_GenFields($flds);
124  $s = "ALTER TABLE $tabname ADD (";
125  foreach($lines as $v) {
126  $f[] = "\n $v";
127  }
128 
129  $s .= implode(', ',$f).')';
130  $sql[] = $s;
131  return $sql;
132  }
133 
134  function AlterColumnSQL($tabname, $flds, $tableflds='', $tableoptions='')
135  {
136  $tabname = $this->TableName($tabname);
137  $f = array();
138  list($lines,$pkey) = $this->_GenFields($flds);
139  $s = "ALTER TABLE $tabname MODIFY(";
140  foreach($lines as $v) {
141  $f[] = "\n $v";
142  }
143  $s .= implode(', ',$f).')';
144  $sql[] = $s;
145  return $sql;
146  }
147 
148  function DropColumnSQL($tabname, $flds, $tableflds='', $tableoptions='')
149  {
150  if (!is_array($flds)) $flds = explode(',',$flds);
151  foreach ($flds as $k => $v) $flds[$k] = $this->NameQuote($v);
152 
153  $sql = array();
154  $s = "ALTER TABLE $tabname DROP(";
155  $s .= implode(', ',$flds).') CASCADE CONSTRAINTS';
156  $sql[] = $s;
157  return $sql;
158  }
159 
160  function _DropAutoIncrement($t)
161  {
162  if (strpos($t,'.') !== false) {
163  $tarr = explode('.',$t);
164  return "drop sequence ".$tarr[0].".seq_".$tarr[1];
165  }
166  return "drop sequence seq_".$t;
167  }
168 
169  // return string must begin with space
170  function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned)
171  {
172  $suffix = '';
173 
174  if ($fdefault == "''" && $fnotnull) {// this is null in oracle
175  $fnotnull = false;
176  if ($this->debug) ADOConnection::outp("NOT NULL and DEFAULT='' illegal in Oracle");
177  }
178 
179  if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault";
180  if ($fnotnull) $suffix .= ' NOT NULL';
181 
182  if ($fautoinc) $this->seqField = $fname;
183  if ($fconstraint) $suffix .= ' '.$fconstraint;
184 
185  return $suffix;
186  }
187 
188 /*
189 CREATE or replace TRIGGER jaddress_insert
190 before insert on jaddress
191 for each row
192 begin
193 select seqaddress.nextval into :new.A_ID from dual;
194 end;
195 */
196  function _Triggers($tabname,$tableoptions)
197  {
198  if (!$this->seqField) return array();
199 
200  if ($this->schema) {
201  $t = strpos($tabname,'.');
202  if ($t !== false) $tab = substr($tabname,$t+1);
203  else $tab = $tabname;
204  $seqname = $this->schema.'.'.$this->seqPrefix.$tab;
205  $trigname = $this->schema.'.'.$this->trigPrefix.$this->seqPrefix.$tab;
206  } else {
207  $seqname = $this->seqPrefix.$tabname;
208  $trigname = $this->trigPrefix.$seqname;
209  }
210 
211  if (strlen($seqname) > 30) {
212  $seqname = $this->seqPrefix.uniqid('');
213  } // end if
214  if (strlen($trigname) > 30) {
215  $trigname = $this->trigPrefix.uniqid('');
216  } // end if
217 
218  if (isset($tableoptions['REPLACE'])) $sql[] = "DROP SEQUENCE $seqname";
219  $seqCache = '';
220  if (isset($tableoptions['SEQUENCE_CACHE'])){$seqCache = $tableoptions['SEQUENCE_CACHE'];}
221  $seqIncr = '';
222  if (isset($tableoptions['SEQUENCE_INCREMENT'])){$seqIncr = ' INCREMENT BY '.$tableoptions['SEQUENCE_INCREMENT'];}
223  $seqStart = '';
224  if (isset($tableoptions['SEQUENCE_START'])){$seqIncr = ' START WITH '.$tableoptions['SEQUENCE_START'];}
225  $sql[] = "CREATE SEQUENCE $seqname $seqStart $seqIncr $seqCache";
226  $sql[] = "CREATE OR REPLACE TRIGGER $trigname BEFORE insert ON $tabname FOR EACH ROW WHEN (NEW.$this->seqField IS NULL OR NEW.$this->seqField = 0) BEGIN select $seqname.nextval into :new.$this->seqField from dual; END;";
227 
228  $this->seqField = false;
229  return $sql;
230  }
231 
232  /*
233  CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
234  [table_options] [select_statement]
235  create_definition:
236  col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
237  [PRIMARY KEY] [reference_definition]
238  or PRIMARY KEY (index_col_name,...)
239  or KEY [index_name] (index_col_name,...)
240  or INDEX [index_name] (index_col_name,...)
241  or UNIQUE [INDEX] [index_name] (index_col_name,...)
242  or FULLTEXT [INDEX] [index_name] (index_col_name,...)
243  or [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
244  [reference_definition]
245  or CHECK (expr)
246  */
247 
248 
249 
250  function _IndexSQL($idxname, $tabname, $flds,$idxoptions)
251  {
252  $sql = array();
253 
254  if ( isset($idxoptions['REPLACE']) || isset($idxoptions['DROP']) ) {
255  $sql[] = sprintf ($this->dropIndex, $idxname, $tabname);
256  if ( isset($idxoptions['DROP']) )
257  return $sql;
258  }
259 
260  if ( empty ($flds) ) {
261  return $sql;
262  }
263 
264  if (isset($idxoptions['BITMAP'])) {
265  $unique = ' BITMAP';
266  } elseif (isset($idxoptions['UNIQUE'])) {
267  $unique = ' UNIQUE';
268  } else {
269  $unique = '';
270  }
271 
272  if ( is_array($flds) )
273  $flds = implode(', ',$flds);
274  $s = 'CREATE' . $unique . ' INDEX ' . $idxname . ' ON ' . $tabname . ' (' . $flds . ')';
275 
276  if ( isset($idxoptions[$this->upperName]) )
277  $s .= $idxoptions[$this->upperName];
278 
279  if (isset($idxoptions['oci8']))
280  $s .= $idxoptions['oci8'];
281 
282 
283  $sql[] = $s;
284 
285  return $sql;
286  }
287 
288  function GetCommentSQL($table,$col)
289  {
290  $table = $this->connection->qstr($table);
291  $col = $this->connection->qstr($col);
292  return "select comments from USER_COL_COMMENTS where TABLE_NAME=$table and COLUMN_NAME=$col";
293  }
294 
295  function SetCommentSQL($table,$col,$cmt)
296  {
297  $cmt = $this->connection->qstr($cmt);
298  return "COMMENT ON COLUMN $table.$col IS $cmt";
299  }
300 }
ADODB2_oci8\SetCommentSQL
SetCommentSQL($table, $col, $cmt)
Definition: datadict-oci8.inc.php:295
ADODB2_oci8
Definition: datadict-oci8.inc.php:18
$sql
$sql
Definition: server.php:84
ADODB_DataDict\_Options
_Options($opts)
Definition: adodb-datadict.inc.php:909
ADODB2_oci8\_CreateSuffix
_CreateSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned)
Definition: datadict-oci8.inc.php:170
ADODB2_oci8\GetCommentSQL
GetCommentSQL($table, $col)
Definition: datadict-oci8.inc.php:288
$tab
$tab
Definition: app_config_type_list.inc.php:29
ADODB2_oci8\$typeXL
$typeXL
Definition: datadict-oci8.inc.php:27
ADODB2_oci8\$databaseType
$databaseType
Definition: datadict-oci8.inc.php:20
$password
$password
Definition: collate-convert.php:17
ADODB2_oci8\MetaType
MetaType($t, $len=-1, $fieldobj=false)
Definition: datadict-oci8.inc.php:29
ADODB2_oci8\ActualType
ActualType($meta)
Definition: datadict-oci8.inc.php:76
ADODB2_oci8\_IndexSQL
_IndexSQL($idxname, $tabname, $flds, $idxoptions)
Definition: datadict-oci8.inc.php:250
ADODB_DataDict
Definition: adodb-datadict.inc.php:166
ADODB2_oci8\_Triggers
_Triggers($tabname, $tableoptions)
Definition: datadict-oci8.inc.php:196
ADODB2_oci8\$trigPrefix
$trigPrefix
Definition: datadict-oci8.inc.php:24
ADODB2_oci8\AlterColumnSQL
AlterColumnSQL($tabname, $flds, $tableflds='', $tableoptions='')
Definition: datadict-oci8.inc.php:134
ADODB2_oci8\_DropAutoIncrement
_DropAutoIncrement($t)
Definition: datadict-oci8.inc.php:160
ADODB_DataDict\NameQuote
NameQuote($name=NULL, $allowBrackets=false)
Definition: adodb-datadict.inc.php:334
ADODB2_oci8\CreateDatabase
CreateDatabase($dbname, $options=false)
Definition: datadict-oci8.inc.php:108
ADODB_DataDict\_GenFields
_GenFields($flds, $widespacing=false)
Definition: adodb-datadict.inc.php:597
ADODB_DataDict\TableName
TableName($name)
Definition: adodb-datadict.inc.php:363
ADODB2_oci8\$seqField
$seqField
Definition: datadict-oci8.inc.php:21
ADODB2_oci8\AddColumnSQL
AddColumnSQL($tabname, $flds)
Definition: datadict-oci8.inc.php:119
ADODB2_oci8\$alterCol
$alterCol
Definition: datadict-oci8.inc.php:25
ADODB2_oci8\DropColumnSQL
DropColumnSQL($tabname, $flds, $tableflds='', $tableoptions='')
Definition: datadict-oci8.inc.php:148
ADODB2_oci8\$typeX
$typeX
Definition: datadict-oci8.inc.php:26
ADODB2_oci8\$seqPrefix
$seqPrefix
Definition: datadict-oci8.inc.php:22
ADODB2_oci8\$dropTable
$dropTable
Definition: datadict-oci8.inc.php:23