fix for the BACK link so it goes to the main notes screen, not the calendar
[openemr.git] / library / adodb / datadict / datadict-sybase.inc.php
blob50c7494dd73c90892948428d0b506ab3bedc0b23
1 <?php
3 /**
4 V4.20 22 Feb 2004 (c) 2000-2004 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.
9 Set tabs to 4 for best viewing.
13 class ADODB2_sybase extends ADODB_DataDict {
14 var $databaseType = 'sybase';
16 var $dropIndex = 'DROP INDEX %2$s.%1$s';
18 function MetaType($t,$len=-1,$fieldobj=false)
20 if (is_object($t)) {
21 $fieldobj = $t;
22 $t = $fieldobj->type;
23 $len = $fieldobj->max_length;
26 $len = -1; // mysql max_length is not accurate
27 switch (strtoupper($t)) {
29 case 'INT':
30 case 'INTEGER': return 'I';
31 case 'BIT':
32 case 'TINYINT': return 'I1';
33 case 'SMALLINT': return 'I2';
34 case 'BIGINT': return 'I8';
36 case 'REAL':
37 case 'FLOAT': return 'F';
38 default: return parent::MetaType($t,$len,$fieldobj);
42 function ActualType($meta)
44 switch(strtoupper($meta)) {
45 case 'C': return 'VARCHAR';
46 case 'XL':
47 case 'X': return 'TEXT';
49 case 'C2': return 'NVARCHAR';
50 case 'X2': return 'NTEXT';
52 case 'B': return 'IMAGE';
54 case 'D': return 'DATETIME';
55 case 'T': return 'DATETIME';
56 case 'L': return 'BIT';
58 case 'I': return 'INT';
59 case 'I1': return 'TINYINT';
60 case 'I2': return 'SMALLINT';
61 case 'I4': return 'INT';
62 case 'I8': return 'BIGINT';
64 case 'F': return 'REAL';
65 case 'N': return 'NUMERIC';
66 default:
67 return $meta;
72 function AddColumnSQL($tabname, $flds)
74 $tabname = $this->TableName ($tabname);
75 $f = array();
76 list($lines,$pkey) = $this->_GenFields($flds);
77 $s = "ALTER TABLE $tabname $this->addCol";
78 foreach($lines as $v) {
79 $f[] = "\n $v";
81 $s .= implode(',',$f);
82 $sql[] = $s;
83 return $sql;
86 function AlterColumnSQL($tabname, $flds)
88 $tabname = $this->TableName ($tabname);
89 $sql = array();
90 list($lines,$pkey) = $this->_GenFields($flds);
91 foreach($lines as $v) {
92 $sql[] = "ALTER TABLE $tabname $this->alterCol $v";
95 return $sql;
98 function DropColumnSQL($tabname, $flds)
100 $tabname = $this->TableName ($tabname);
101 if (!is_array($flds)) $flds = explode(',',$flds);
102 $f = array();
103 $s = "ALTER TABLE $tabname";
104 foreach($flds as $v) {
105 $f[] = "\n$this->dropCol $v";
107 $s .= implode(',',$f);
108 $sql[] = $s;
109 return $sql;
112 // return string must begin with space
113 function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint)
115 $suffix = '';
116 if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault";
117 if ($fautoinc) $suffix .= ' DEFAULT AUTOINCREMENT';
118 if ($fnotnull) $suffix .= ' NOT NULL';
119 else if ($suffix == '') $suffix .= ' NULL';
120 if ($fconstraint) $suffix .= ' '.$fconstraint;
121 return $suffix;
125 CREATE TABLE
126 [ database_name.[ owner ] . | owner. ] table_name
127 ( { < column_definition >
128 | column_name AS computed_column_expression
129 | < table_constraint > ::= [ CONSTRAINT constraint_name ] }
131 | [ { PRIMARY KEY | UNIQUE } [ ,...n ]
134 [ ON { filegroup | DEFAULT } ]
135 [ TEXTIMAGE_ON { filegroup | DEFAULT } ]
137 < column_definition > ::= { column_name data_type }
138 [ COLLATE < collation_name > ]
139 [ [ DEFAULT constant_expression ]
140 | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
142 [ ROWGUIDCOL]
143 [ < column_constraint > ] [ ...n ]
145 < column_constraint > ::= [ CONSTRAINT constraint_name ]
146 { [ NULL | NOT NULL ]
147 | [ { PRIMARY KEY | UNIQUE }
148 [ CLUSTERED | NONCLUSTERED ]
149 [ WITH FILLFACTOR = fillfactor ]
150 [ON {filegroup | DEFAULT} ] ]
152 | [ [ FOREIGN KEY ]
153 REFERENCES ref_table [ ( ref_column ) ]
154 [ ON DELETE { CASCADE | NO ACTION } ]
155 [ ON UPDATE { CASCADE | NO ACTION } ]
156 [ NOT FOR REPLICATION ]
158 | CHECK [ NOT FOR REPLICATION ]
159 ( logical_expression )
162 < table_constraint > ::= [ CONSTRAINT constraint_name ]
163 { [ { PRIMARY KEY | UNIQUE }
164 [ CLUSTERED | NONCLUSTERED ]
165 { ( column [ ASC | DESC ] [ ,...n ] ) }
166 [ WITH FILLFACTOR = fillfactor ]
167 [ ON { filegroup | DEFAULT } ]
169 | FOREIGN KEY
170 [ ( column [ ,...n ] ) ]
171 REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
172 [ ON DELETE { CASCADE | NO ACTION } ]
173 [ ON UPDATE { CASCADE | NO ACTION } ]
174 [ NOT FOR REPLICATION ]
175 | CHECK [ NOT FOR REPLICATION ]
176 ( search_conditions )
183 CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
184 ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
185 [ WITH < index_option > [ ,...n] ]
186 [ ON filegroup ]
187 < index_option > :: =
188 { PAD_INDEX |
189 FILLFACTOR = fillfactor |
190 IGNORE_DUP_KEY |
191 DROP_EXISTING |
192 STATISTICS_NORECOMPUTE |
193 SORT_IN_TEMPDB
196 function _IndexSQL($idxname, $tabname, $flds, $idxoptions)
198 $sql = array();
200 if ( isset($idxoptions['REPLACE']) || isset($idxoptions['DROP']) ) {
201 $sql[] = sprintf ($this->dropIndex, $idxname, $tabname);
202 if ( isset($idxoptions['DROP']) )
203 return $sql;
206 if ( empty ($flds) ) {
207 return $sql;
210 $unique = isset($idxoptions['UNIQUE']) ? ' UNIQUE' : '';
211 $clustered = isset($idxoptions['CLUSTERED']) ? ' CLUSTERED' : '';
213 if ( is_array($flds) )
214 $flds = implode(', ',$flds);
215 $s = 'CREATE' . $unique . $clustered . ' INDEX ' . $idxname . ' ON ' . $tabname . ' (' . $flds . ')';
217 if ( isset($idxoptions[$this->upperName]) )
218 $s .= $idxoptions[$this->upperName];
220 $sql[] = $s;
222 return $sql;