source: companies/celepar/phpgwapi/inc/adodb/tests/test-datadict.php @ 763

Revision 763, 7.4 KB checked in by niltonneto, 15 years ago (diff)

Importação inicial do Expresso da Celepar

Line 
1<?php
2/*
3
4  V4.81 3 May 2006  (c) 2000-2007 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('sapdb','sybase','mysql','access','oci8po','postgres','odbc_mssql','odbc','db2','firebird','informix') 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' => 'ENGINE=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' INDEX idx_name,
51LASTNAME      VARCHAR(28) DEFAULT 'Chen' key INDEX idx_name,
52averylonglongfieldname X(1024) DEFAULT 'test',
53price         N(7.2)  DEFAULT '0.00',
54MYDATE        D      DEFDATE INDEX idx_date,
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','price,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 == 'mysqlt') {
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                if (@$db->Connect('localhost', "tester", "test", "test"));
89                $dict->SetSchema('');
90                $sqla2 = $dict->ChangeTableSQL('adoxyz',$flds);
91                if ($sqla2) printsqla($dbType,$sqla2);
92        }
93       
94        if ($dbType == 'odbc_mssql') {
95                $dsn = $dsn = "PROVIDER=MSDASQL;Driver={SQL Server};Server=localhost;Database=northwind;";
96                if (@$db->Connect($dsn, "sa", "natsoft", "test"));
97                $dict->SetSchema('');
98                $sqla2 = $dict->ChangeTableSQL('adoxyz',$flds);
99                if ($sqla2) printsqla($dbType,$sqla2);
100        }
101       
102       
103       
104        adodb_pr($dict->databaseType);
105        printsqla($dbType, $dict->DropColumnSQL('table',array('my col','`col2_with_Quotes`','A_col3','col3(10)')));
106        printsqla($dbType, $dict->ChangeTableSQL('adoxyz','LASTNAME varchar(32)'));
107       
108}
109
110function printsqla($dbType,$sqla)
111{
112        print "<pre>";
113        //print_r($dict->MetaTables());
114        foreach($sqla as $s) {
115                $s = htmlspecialchars($s);
116                print "$s;\n";
117                if ($dbType == 'oci8') print "/\n";
118        }
119        print "</pre><hr />";
120}
121
122/***
123
124Generated SQL:
125
126mysql
127
128CREATE DATABASE KUTU;
129DROP TABLE KUTU.testtable;
130CREATE TABLE KUTU.testtable (
131id               INTEGER NOT NULL AUTO_INCREMENT,
132firstname        VARCHAR(30) DEFAULT 'Joan',
133lastname         VARCHAR(28) NOT NULL DEFAULT 'Chen',
134averylonglongfieldname LONGTEXT NOT NULL,
135price            NUMERIC(7,2) NOT NULL DEFAULT 0.00,
136MYDATE           DATE DEFAULT CURDATE(),
137                 PRIMARY KEY (id, lastname)
138)TYPE=ISAM;
139CREATE FULLTEXT INDEX idx ON KUTU.testtable (firstname,lastname);
140CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
141ALTER TABLE KUTU.testtable  ADD height           DOUBLE;
142ALTER TABLE KUTU.testtable  ADD weight           DOUBLE;
143ALTER TABLE KUTU.testtable  MODIFY COLUMN height           DOUBLE NOT NULL;
144ALTER TABLE KUTU.testtable  MODIFY COLUMN weight           DOUBLE NOT NULL;
145
146
147--------------------------------------------------------------------------------
148
149oci8
150
151CREATE USER KUTU IDENTIFIED BY tiger;
152/
153GRANT CREATE SESSION, CREATE TABLE,UNLIMITED TABLESPACE,CREATE SEQUENCE TO KUTU;
154/
155DROP TABLE KUTU.testtable CASCADE CONSTRAINTS;
156/
157CREATE TABLE KUTU.testtable (
158id               NUMBER(16) NOT NULL,
159firstname        VARCHAR(30) DEFAULT 'Joan',
160lastname         VARCHAR(28) DEFAULT 'Chen' NOT NULL,
161averylonglongfieldname CLOB NOT NULL,
162price            NUMBER(7,2) DEFAULT 0.00 NOT NULL,
163MYDATE           DATE DEFAULT TRUNC(SYSDATE),
164                 PRIMARY KEY (id, lastname)
165)TABLESPACE USERS;
166/
167DROP SEQUENCE KUTU.SEQ_testtable;
168/
169CREATE SEQUENCE KUTU.SEQ_testtable;
170/
171CREATE OR REPLACE TRIGGER KUTU.TRIG_SEQ_testtable BEFORE insert ON KUTU.testtable
172                FOR EACH ROW
173                BEGIN
174                  select KUTU.SEQ_testtable.nextval into :new.id from dual;
175                END;
176/
177CREATE BITMAP INDEX idx ON KUTU.testtable (firstname,lastname);
178/
179CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
180/
181ALTER TABLE testtable ADD (
182 height           NUMBER,
183 weight           NUMBER);
184/
185ALTER TABLE testtable MODIFY(
186 height           NUMBER NOT NULL,
187 weight           NUMBER NOT NULL);
188/
189
190
191--------------------------------------------------------------------------------
192
193postgres
194AlterColumnSQL not supported for PostgreSQL
195
196
197CREATE DATABASE KUTU LOCATION='/u01/postdata';
198DROP TABLE KUTU.testtable;
199CREATE TABLE KUTU.testtable (
200id               SERIAL,
201firstname        VARCHAR(30) DEFAULT 'Joan',
202lastname         VARCHAR(28) DEFAULT 'Chen' NOT NULL,
203averylonglongfieldname TEXT NOT NULL,
204price            NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
205MYDATE           DATE DEFAULT CURRENT_DATE,
206                 PRIMARY KEY (id, lastname)
207);
208CREATE INDEX idx ON KUTU.testtable USING HASH (firstname,lastname);
209CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
210ALTER TABLE KUTU.testtable  ADD height           FLOAT8;
211ALTER TABLE KUTU.testtable  ADD weight           FLOAT8;
212
213
214--------------------------------------------------------------------------------
215
216odbc_mssql
217
218CREATE DATABASE KUTU;
219DROP TABLE KUTU.testtable;
220CREATE TABLE KUTU.testtable (
221id               INT IDENTITY(1,1) NOT NULL,
222firstname        VARCHAR(30) DEFAULT 'Joan',
223lastname         VARCHAR(28) DEFAULT 'Chen' NOT NULL,
224averylonglongfieldname TEXT NOT NULL,
225price            NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
226MYDATE           DATETIME DEFAULT GetDate(),
227                 PRIMARY KEY (id, lastname)
228);
229CREATE CLUSTERED INDEX idx ON KUTU.testtable (firstname,lastname);
230CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
231ALTER TABLE KUTU.testtable  ADD
232 height           REAL,
233 weight           REAL;
234ALTER TABLE KUTU.testtable  ALTER COLUMN height           REAL NOT NULL;
235ALTER TABLE KUTU.testtable  ALTER COLUMN weight           REAL NOT NULL;
236
237
238--------------------------------------------------------------------------------
239*/
240
241
242echo "<h1>Test XML Schema</h1>";
243$ff = file('xmlschema.xml');
244echo "<pre>";
245foreach($ff as $xml) echo htmlspecialchars($xml);
246echo "</pre>";
247include_once('test-xmlschema.php');
248?>
Note: See TracBrowser for help on using the repository browser.