Collection report bug fix and an internationalization issue fix
[openemr.git] / library / adodb / tests / test-datadict.php
blob8a6563de1ce1cd18d5603619798fc2701cc45ace
1 <?php
2 /*
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 error_reporting(E_ALL);
14 include_once('../adodb.inc.php');
16 foreach(array('sybase','mysql','access','oci8','postgres','odbc_mssql','odbc','sybase','firebird','informix','db2') as $dbType) {
17 echo "<h3>$dbType</h3><p>";
18 $db = NewADOConnection($dbType);
19 $dict = NewDataDictionary($db);
21 if (!$dict) continue;
22 $dict->debug = 1;
24 $opts = array('REPLACE','mysql' => 'TYPE=ISAM', 'oci8' => 'TABLESPACE USERS');
26 /* $flds = array(
27 array('id', 'I',
28 'AUTO','KEY'),
30 array('name' => 'firstname', 'type' => 'varchar','size' => 30,
31 'DEFAULT'=>'Joan'),
33 array('lastname','varchar',28,
34 'DEFAULT'=>'Chen','key'),
36 array('averylonglongfieldname','X',1024,
37 'NOTNULL','default' => 'test'),
39 array('price','N','7.2',
40 'NOTNULL','default' => '0.00'),
42 array('MYDATE', 'D',
43 'DEFDATE'),
44 array('TS','T',
45 'DEFTIMESTAMP')
46 );*/
48 $flds = "
49 ID I AUTO KEY,
50 FIRSTNAME VARCHAR(30) DEFAULT 'Joan',
51 LASTNAME VARCHAR(28) DEFAULT 'Chen' key,
52 averylonglongfieldname X(1024) DEFAULT 'test',
53 price N(7.2) DEFAULT '0.00',
54 MYDATE D DEFDATE,
55 BIGFELLOW X NOTNULL,
56 TS T DEFTIMESTAMP";
59 $sqla = $dict->CreateDatabase('KUTU',array('postgres'=>"LOCATION='/u01/postdata'"));
60 $dict->SetSchema('KUTU');
62 $sqli = ($dict->CreateTableSQL('testtable',$flds, $opts));
63 $sqla =& array_merge($sqla,$sqli);
65 $sqli = $dict->CreateIndexSQL('idx','testtable','firstname,lastname',array('BITMAP','FULLTEXT','CLUSTERED','HASH'));
66 $sqla =& array_merge($sqla,$sqli);
67 $sqli = $dict->CreateIndexSQL('idx2','testtable','price,lastname');//,array('BITMAP','FULLTEXT','CLUSTERED'));
68 $sqla =& array_merge($sqla,$sqli);
70 $addflds = array(array('height', 'F'),array('weight','F'));
71 $sqli = $dict->AddColumnSQL('testtable',$addflds);
72 $sqla =& array_merge($sqla,$sqli);
73 $addflds = array(array('height', 'F','NOTNULL'),array('weight','F','NOTNULL'));
74 $sqli = $dict->AlterColumnSQL('testtable',$addflds);
75 $sqla =& array_merge($sqla,$sqli);
78 printsqla($dbType,$sqla);
80 if (file_exists('d:\inetpub\wwwroot\php\phplens\adodb\adodb.inc.php'))
81 if ($dbType == 'mysql') {
82 $db->Connect('localhost', "root", "", "test");
83 $dict->SetSchema('');
84 $sqla2 = $dict->ChangeTableSQL('adoxyz',$flds);
85 if ($sqla2) printsqla($dbType,$sqla2);
87 if ($dbType == 'postgres') {
88 $db->Connect('localhost', "tester", "test", "test");
89 $dict->SetSchema('');
90 $sqla2 = $dict->ChangeTableSQL('adoxyz',$flds);
91 if ($sqla2) printsqla($dbType,$sqla2);
96 function printsqla($dbType,$sqla)
98 print "<pre>";
99 //print_r($dict->MetaTables());
100 foreach($sqla as $s) {
101 $s = htmlspecialchars($s);
102 print "$s;\n";
103 if ($dbType == 'oci8') print "/\n";
105 print "</pre><hr>";
108 /***
110 Generated SQL:
112 mysql
114 CREATE DATABASE KUTU;
115 DROP TABLE KUTU.testtable;
116 CREATE TABLE KUTU.testtable (
117 id INTEGER NOT NULL AUTO_INCREMENT,
118 firstname VARCHAR(30) DEFAULT 'Joan',
119 lastname VARCHAR(28) NOT NULL DEFAULT 'Chen',
120 averylonglongfieldname LONGTEXT NOT NULL,
121 price NUMERIC(7,2) NOT NULL DEFAULT 0.00,
122 MYDATE DATE DEFAULT CURDATE(),
123 PRIMARY KEY (id, lastname)
124 )TYPE=ISAM;
125 CREATE FULLTEXT INDEX idx ON KUTU.testtable (firstname,lastname);
126 CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
127 ALTER TABLE KUTU.testtable ADD height DOUBLE;
128 ALTER TABLE KUTU.testtable ADD weight DOUBLE;
129 ALTER TABLE KUTU.testtable MODIFY COLUMN height DOUBLE NOT NULL;
130 ALTER TABLE KUTU.testtable MODIFY COLUMN weight DOUBLE NOT NULL;
133 --------------------------------------------------------------------------------
135 oci8
137 CREATE USER KUTU IDENTIFIED BY tiger;
139 GRANT CREATE SESSION, CREATE TABLE,UNLIMITED TABLESPACE,CREATE SEQUENCE TO KUTU;
141 DROP TABLE KUTU.testtable CASCADE CONSTRAINTS;
143 CREATE TABLE KUTU.testtable (
144 id NUMBER(16) NOT NULL,
145 firstname VARCHAR(30) DEFAULT 'Joan',
146 lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
147 averylonglongfieldname CLOB NOT NULL,
148 price NUMBER(7,2) DEFAULT 0.00 NOT NULL,
149 MYDATE DATE DEFAULT TRUNC(SYSDATE),
150 PRIMARY KEY (id, lastname)
151 )TABLESPACE USERS;
153 DROP SEQUENCE KUTU.SEQ_testtable;
155 CREATE SEQUENCE KUTU.SEQ_testtable;
157 CREATE OR REPLACE TRIGGER KUTU.TRIG_SEQ_testtable BEFORE insert ON KUTU.testtable
158 FOR EACH ROW
159 BEGIN
160 select KUTU.SEQ_testtable.nextval into :new.id from dual;
161 END;
163 CREATE BITMAP INDEX idx ON KUTU.testtable (firstname,lastname);
165 CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
167 ALTER TABLE testtable ADD (
168 height NUMBER,
169 weight NUMBER);
171 ALTER TABLE testtable MODIFY(
172 height NUMBER NOT NULL,
173 weight NUMBER NOT NULL);
177 --------------------------------------------------------------------------------
179 postgres
180 AlterColumnSQL not supported for PostgreSQL
183 CREATE DATABASE KUTU LOCATION='/u01/postdata';
184 DROP TABLE KUTU.testtable;
185 CREATE TABLE KUTU.testtable (
186 id SERIAL,
187 firstname VARCHAR(30) DEFAULT 'Joan',
188 lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
189 averylonglongfieldname TEXT NOT NULL,
190 price NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
191 MYDATE DATE DEFAULT CURRENT_DATE,
192 PRIMARY KEY (id, lastname)
194 CREATE INDEX idx ON KUTU.testtable USING HASH (firstname,lastname);
195 CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
196 ALTER TABLE KUTU.testtable ADD height FLOAT8;
197 ALTER TABLE KUTU.testtable ADD weight FLOAT8;
200 --------------------------------------------------------------------------------
202 odbc_mssql
204 CREATE DATABASE KUTU;
205 DROP TABLE KUTU.testtable;
206 CREATE TABLE KUTU.testtable (
207 id INT IDENTITY(1,1) NOT NULL,
208 firstname VARCHAR(30) DEFAULT 'Joan',
209 lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
210 averylonglongfieldname TEXT NOT NULL,
211 price NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
212 MYDATE DATETIME DEFAULT GetDate(),
213 PRIMARY KEY (id, lastname)
215 CREATE CLUSTERED INDEX idx ON KUTU.testtable (firstname,lastname);
216 CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
217 ALTER TABLE KUTU.testtable ADD
218 height REAL,
219 weight REAL;
220 ALTER TABLE KUTU.testtable ALTER COLUMN height REAL NOT NULL;
221 ALTER TABLE KUTU.testtable ALTER COLUMN weight REAL NOT NULL;
224 --------------------------------------------------------------------------------
227 echo "<h1>Test XML Schema</h1>";
228 $ff = file('xmlschema.xml');
229 echo "<pre>";
230 foreach($ff as $xml) echo htmlspecialchars($xml);
231 echo "</pre>";
232 include_once('test-xmlschema.php');