[ Index ] |
|
Code source de vtiger CRM 5.0.2 |
1 <?php 2 3 /** 4 V4.90 8 June 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved. 5 Released under both BSD license and Lesser GPL library license. 6 Whenever there is any discrepancy between the two licenses, 7 the BSD license will take precedence. 8 9 Set tabs to 4 for best viewing. 10 11 */ 12 // security - hide paths 13 if (!defined('ADODB_DIR')) die(); 14 15 class ADODB2_db2 extends ADODB_DataDict { 16 17 var $databaseType = 'db2'; 18 var $seqField = false; 19 20 function ActualType($meta) 21 { 22 switch($meta) { 23 case 'C': return 'VARCHAR'; 24 case 'XL': return 'CLOB'; 25 case 'X': return 'VARCHAR(3600)'; 26 27 case 'C2': return 'VARCHAR'; // up to 32K 28 case 'X2': return 'VARCHAR(3600)'; // up to 32000, but default page size too small 29 30 case 'B': return 'BLOB'; 31 32 case 'D': return 'DATE'; 33 case 'T': return 'TIMESTAMP'; 34 35 case 'L': return 'SMALLINT'; 36 case 'I': return 'INTEGER'; 37 case 'I1': return 'SMALLINT'; 38 case 'I2': return 'SMALLINT'; 39 case 'I4': return 'INTEGER'; 40 case 'I8': return 'BIGINT'; 41 42 case 'F': return 'DOUBLE'; 43 case 'N': return 'DECIMAL'; 44 default: 45 return $meta; 46 } 47 } 48 49 // return string must begin with space 50 function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint) 51 { 52 $suffix = ''; 53 if ($fautoinc) return ' GENERATED ALWAYS AS IDENTITY'; # as identity start with 54 if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; 55 if ($fnotnull) $suffix .= ' NOT NULL'; 56 if ($fconstraint) $suffix .= ' '.$fconstraint; 57 return $suffix; 58 } 59 60 function AlterColumnSQL($tabname, $flds) 61 { 62 if ($this->debug) ADOConnection::outp("AlterColumnSQL not supported"); 63 return array(); 64 } 65 66 67 function DropColumnSQL($tabname, $flds) 68 { 69 if ($this->debug) ADOConnection::outp("DropColumnSQL not supported"); 70 return array(); 71 } 72 73 74 function ChangeTableSQL($tablename, $flds, $tableoptions = false) 75 { 76 77 /** 78 Allow basic table changes to DB2 databases 79 DB2 will fatally reject changes to non character columns 80 81 */ 82 83 $validTypes = array("CHAR","VARC"); 84 $invalidTypes = array("BIGI","BLOB","CLOB","DATE", "DECI","DOUB", "INTE", "REAL","SMAL", "TIME"); 85 // check table exists 86 $cols = &$this->MetaColumns($tablename); 87 if ( empty($cols)) { 88 return $this->CreateTableSQL($tablename, $flds, $tableoptions); 89 } 90 91 // already exists, alter table instead 92 list($lines,$pkey) = $this->_GenFields($flds); 93 $alter = 'ALTER TABLE ' . $this->TableName($tablename); 94 $sql = array(); 95 96 foreach ( $lines as $id => $v ) { 97 if ( isset($cols[$id]) && is_object($cols[$id]) ) { 98 /** 99 If the first field of $v is the fieldname, and 100 the second is the field type/size, we assume its an 101 attempt to modify the column size, so check that it is allowed 102 $v can have an indeterminate number of blanks between the 103 fields, so account for that too 104 */ 105 $vargs = explode(' ' , $v); 106 // assume that $vargs[0] is the field name. 107 $i=0; 108 // Find the next non-blank value; 109 for ($i=1;$i<sizeof($vargs);$i++) 110 if ($vargs[$i] != '') 111 break; 112 113 // if $vargs[$i] is one of the following, we are trying to change the 114 // size of the field, if not allowed, simply ignore the request. 115 if (in_array(substr($vargs[$i],0,4),$invalidTypes)) 116 continue; 117 // insert the appropriate DB2 syntax 118 if (in_array(substr($vargs[$i],0,4),$validTypes)) { 119 array_splice($vargs,$i,0,array('SET','DATA','TYPE')); 120 } 121 122 // Now Look for the NOT NULL statement as this is not allowed in 123 // the ALTER table statement. If it is in there, remove it 124 if (in_array('NOT',$vargs) && in_array('NULL',$vargs)) { 125 for ($i=1;$i<sizeof($vargs);$i++) 126 if ($vargs[$i] == 'NOT') 127 break; 128 array_splice($vargs,$i,2,''); 129 } 130 $v = implode(' ',$vargs); 131 $sql[] = $alter . $this->alterCol . ' ' . $v; 132 } else { 133 $sql[] = $alter . $this->addCol . ' ' . $v; 134 } 135 } 136 137 return $sql; 138 } 139 140 } 141 142 143 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 10:22:19 2007 | par Balluche grâce à PHPXref 0.7 |