source: trunk/phpgwapi/inc/adodb/tests/test-datadict.php @ 2

Revision 2, 6.9 KB checked in by niltonneto, 17 years ago (diff)

Removida todas as tags usadas pelo CVS ($Id, $Source).
Primeira versão no CVS externo.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2/*
3
4  V4.51 29 July 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.
8       
9  Set tabs to 4 for best viewing.
10
11*/
12
13error_reporting(E_ALL);
14include_once('../adodb.inc.php');
15
16foreach(array('sybase','mysqlt','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);
20
21        if (!$dict) continue;
22        $dict->debug = 1;
23       
24        $opts = array('REPLACE','mysql' => 'TYPE=INNODB', 'oci8' => 'TABLESPACE USERS');
25       
26/*      $flds = array(
27                array('id',     'I',                                                           
28                                                        'AUTO','KEY'),
29                                                       
30                array('name' => 'firstname', 'type' => 'varchar','size' => 30,
31                                                        'DEFAULT'=>'Joan'),
32                                                       
33                array('lastname','varchar',28,
34                                                        'DEFAULT'=>'Chen','key'),
35                                                       
36                array('averylonglongfieldname','X',1024,
37                                                        'NOTNULL','default' => 'test'),
38                                                       
39                array('price','N','7.2',
40                                                        'NOTNULL','default' => '0.00'),
41                                                       
42                array('MYDATE', 'D',
43                                                        'DEFDATE'),
44                array('TS','T',
45                                                        'DEFTIMESTAMP')
46        );*/
47       
48        $flds = "
49ID            I           AUTO KEY,
50FIRSTNAME     VARCHAR(30) DEFAULT 'Joan',
51LASTNAME      VARCHAR(28) DEFAULT 'Chen' key,
52averylonglongfieldname X(1024) DEFAULT 'test',
53price         N(7.2)  DEFAULT '0.00',
54MYDATE        D      DEFDATE,
55BIGFELLOW     X      NOTNULL,
56TS            T      DEFTIMESTAMP";
57
58
59        $sqla = $dict->CreateDatabase('KUTU',array('postgres'=>"LOCATION='/u01/postdata'"));
60        $dict->SetSchema('KUTU');
61       
62        $sqli = ($dict->CreateTableSQL('testtable',$flds, $opts));
63        $sqla =& array_merge($sqla,$sqli);
64       
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);
69       
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);
76       
77       
78        printsqla($dbType,$sqla);
79       
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);
86        }
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);
92        }
93       
94}
95
96function printsqla($dbType,$sqla)
97{
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";
104        }
105        print "</pre><hr>";
106}
107
108/***
109
110Generated SQL:
111
112mysql
113
114CREATE DATABASE KUTU;
115DROP TABLE KUTU.testtable;
116CREATE TABLE KUTU.testtable (
117id               INTEGER NOT NULL AUTO_INCREMENT,
118firstname        VARCHAR(30) DEFAULT 'Joan',
119lastname         VARCHAR(28) NOT NULL DEFAULT 'Chen',
120averylonglongfieldname LONGTEXT NOT NULL,
121price            NUMERIC(7,2) NOT NULL DEFAULT 0.00,
122MYDATE           DATE DEFAULT CURDATE(),
123                 PRIMARY KEY (id, lastname)
124)TYPE=ISAM;
125CREATE FULLTEXT INDEX idx ON KUTU.testtable (firstname,lastname);
126CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
127ALTER TABLE KUTU.testtable  ADD height           DOUBLE;
128ALTER TABLE KUTU.testtable  ADD weight           DOUBLE;
129ALTER TABLE KUTU.testtable  MODIFY COLUMN height           DOUBLE NOT NULL;
130ALTER TABLE KUTU.testtable  MODIFY COLUMN weight           DOUBLE NOT NULL;
131
132
133--------------------------------------------------------------------------------
134
135oci8
136
137CREATE USER KUTU IDENTIFIED BY tiger;
138/
139GRANT CREATE SESSION, CREATE TABLE,UNLIMITED TABLESPACE,CREATE SEQUENCE TO KUTU;
140/
141DROP TABLE KUTU.testtable CASCADE CONSTRAINTS;
142/
143CREATE TABLE KUTU.testtable (
144id               NUMBER(16) NOT NULL,
145firstname        VARCHAR(30) DEFAULT 'Joan',
146lastname         VARCHAR(28) DEFAULT 'Chen' NOT NULL,
147averylonglongfieldname CLOB NOT NULL,
148price            NUMBER(7,2) DEFAULT 0.00 NOT NULL,
149MYDATE           DATE DEFAULT TRUNC(SYSDATE),
150                 PRIMARY KEY (id, lastname)
151)TABLESPACE USERS;
152/
153DROP SEQUENCE KUTU.SEQ_testtable;
154/
155CREATE SEQUENCE KUTU.SEQ_testtable;
156/
157CREATE 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;
162/
163CREATE BITMAP INDEX idx ON KUTU.testtable (firstname,lastname);
164/
165CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
166/
167ALTER TABLE testtable ADD (
168 height           NUMBER,
169 weight           NUMBER);
170/
171ALTER TABLE testtable MODIFY(
172 height           NUMBER NOT NULL,
173 weight           NUMBER NOT NULL);
174/
175
176
177--------------------------------------------------------------------------------
178
179postgres
180AlterColumnSQL not supported for PostgreSQL
181
182
183CREATE DATABASE KUTU LOCATION='/u01/postdata';
184DROP TABLE KUTU.testtable;
185CREATE TABLE KUTU.testtable (
186id               SERIAL,
187firstname        VARCHAR(30) DEFAULT 'Joan',
188lastname         VARCHAR(28) DEFAULT 'Chen' NOT NULL,
189averylonglongfieldname TEXT NOT NULL,
190price            NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
191MYDATE           DATE DEFAULT CURRENT_DATE,
192                 PRIMARY KEY (id, lastname)
193);
194CREATE INDEX idx ON KUTU.testtable USING HASH (firstname,lastname);
195CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
196ALTER TABLE KUTU.testtable  ADD height           FLOAT8;
197ALTER TABLE KUTU.testtable  ADD weight           FLOAT8;
198
199
200--------------------------------------------------------------------------------
201
202odbc_mssql
203
204CREATE DATABASE KUTU;
205DROP TABLE KUTU.testtable;
206CREATE TABLE KUTU.testtable (
207id               INT IDENTITY(1,1) NOT NULL,
208firstname        VARCHAR(30) DEFAULT 'Joan',
209lastname         VARCHAR(28) DEFAULT 'Chen' NOT NULL,
210averylonglongfieldname TEXT NOT NULL,
211price            NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
212MYDATE           DATETIME DEFAULT GetDate(),
213                 PRIMARY KEY (id, lastname)
214);
215CREATE CLUSTERED INDEX idx ON KUTU.testtable (firstname,lastname);
216CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
217ALTER TABLE KUTU.testtable  ADD
218 height           REAL,
219 weight           REAL;
220ALTER TABLE KUTU.testtable  ALTER COLUMN height           REAL NOT NULL;
221ALTER TABLE KUTU.testtable  ALTER COLUMN weight           REAL NOT NULL;
222
223
224--------------------------------------------------------------------------------
225*/
226
227echo "<h1>Test XML Schema</h1>";
228$ff = file('xmlschema.xml');
229echo "<pre>";
230foreach($ff as $xml) echo htmlspecialchars($xml);
231echo "</pre>";
232include_once('test-xmlschema.php');
233?>
Note: See TracBrowser for help on using the repository browser.