source: branches/comu-ver2/data/module/adodb/tests/test-datadict.php @ 18701

Revision 18701, 7.4 KB checked in by nanasess, 14 years ago (diff)

Copyright の更新(#601)

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id Revision Date
  • Property svn:mime-type set to text/x-httpd-php
Line 
1<?php
2/*
3
4  V4.81 3 May 2006  (c) 2000-2010 John Lim (jlim#natsoft.com). 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.