23 case 'C':
return 'VARCHAR';
24 case 'XL':
return 'VARCHAR(32000)';
25 case 'X':
return 'VARCHAR(4000)';
27 case 'C2':
return 'VARCHAR';
28 case 'X2':
return 'VARCHAR(4000)';
30 case 'B':
return 'BLOB';
32 case 'D':
return 'DATE';
34 case 'T':
return 'TIMESTAMP';
36 case 'L':
return 'SMALLINT';
37 case 'I':
return 'INTEGER';
38 case 'I1':
return 'SMALLINT';
39 case 'I2':
return 'SMALLINT';
40 case 'I4':
return 'INTEGER';
41 case 'I8':
return 'INTEGER';
43 case 'F':
return 'DOUBLE PRECISION';
44 case 'N':
return 'DECIMAL';
52 if (!is_string($name)) {
58 if ( !is_object($this->connection) ) {
62 $quote = $this->connection->nameQuote;
65 if ( preg_match(
'/^`(.+)`$/', $name, $matches) ) {
66 return $quote . $matches[1] . $quote;
70 if ( !preg_match(
'/^[' . $this->nameRegex .
']+$/', $name) ) {
71 return $quote . $name . $quote;
74 return $quote . $name . $quote;
79 $options = $this->
_Options($options);
82 $sql[] =
"DECLARE EXTERNAL FUNCTION LOWER CSTRING(80) RETURNS CSTRING(80) FREE_IT ENTRY_POINT 'IB_UDF_lower' MODULE_NAME 'ib_udf'";
89 if (strpos($t,
'.') !==
false) {
90 $tarr = explode(
'.',$t);
91 return 'DROP GENERATOR '.$tarr[0].
'."gen_'.$tarr[1].
'"';
93 return 'DROP GENERATOR "GEN_'.$t;
97 function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned)
101 if (strlen($fdefault)) $suffix .=
" DEFAULT $fdefault";
102 if ($fnotnull) $suffix .=
' NOT NULL';
103 if ($fautoinc) $this->seqField = $fname;
104 if ($fconstraint) $suffix .=
' '.$fconstraint;
120 if (!$this->seqField)
return array();
122 $tab1 = preg_replace(
'/"/',
'', $tabname );
124 $t = strpos($tab1,
'.');
125 if ($t !==
false) $tab = substr($tab1,$t+1);
128 $seqname = $this->schema.
'.'.$this->seqPrefix.$tab;
129 $trigname = $this->schema.
'.trig_'.$this->seqPrefix.$tab;
132 $seqname = $this->seqPrefix.$tab1;
133 $trigname =
'trig_'.$seqname;
135 if (isset($tableoptions[
'REPLACE']))
136 {
$sql[] =
"DROP GENERATOR \"$seqname\"";
137 $sql[] =
"CREATE GENERATOR \"$seqname\"";
138 $sql[] =
"ALTER TRIGGER \"$trigname\" BEFORE INSERT OR UPDATE AS BEGIN IF ( NEW.$seqField IS NULL OR NEW.$seqField = 0 ) THEN NEW.$seqField = GEN_ID(\"$seqname\", 1); END";
141 {
$sql[] =
"CREATE GENERATOR \"$seqname\"";
142 $sql[] =
"CREATE TRIGGER \"$trigname\" FOR $tabname BEFORE INSERT OR UPDATE AS BEGIN IF ( NEW.$seqField IS NULL OR NEW.$seqField = 0 ) THEN NEW.$seqField = GEN_ID(\"$seqname\", 1); END";
145 $this->seqField =
false;
_CreateSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned)
_Triggers($tabname, $tableoptions)
CreateDatabase($dbname, $options=false)