[903] | 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 |
|
---|
| 13 | error_reporting(E_ALL);
|
---|
| 14 | include_once('../adodb.inc.php');
|
---|
| 15 |
|
---|
| 16 | foreach(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 = "
|
---|
| 49 | ID I AUTO KEY,
|
---|
| 50 | FIRSTNAME VARCHAR(30) DEFAULT 'Joan' INDEX idx_name,
|
---|
| 51 | LASTNAME VARCHAR(28) DEFAULT 'Chen' key INDEX idx_name,
|
---|
| 52 | averylonglongfieldname X(1024) DEFAULT 'test',
|
---|
| 53 | price N(7.2) DEFAULT '0.00',
|
---|
| 54 | MYDATE D DEFDATE INDEX idx_date,
|
---|
| 55 | BIGFELLOW X NOTNULL,
|
---|
| 56 | TS 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 |
|
---|
| 110 | function 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 |
|
---|
| 124 | Generated SQL:
|
---|
| 125 |
|
---|
| 126 | mysql
|
---|
| 127 |
|
---|
| 128 | CREATE DATABASE KUTU;
|
---|
| 129 | DROP TABLE KUTU.testtable;
|
---|
| 130 | CREATE TABLE KUTU.testtable (
|
---|
| 131 | id INTEGER NOT NULL AUTO_INCREMENT,
|
---|
| 132 | firstname VARCHAR(30) DEFAULT 'Joan',
|
---|
| 133 | lastname VARCHAR(28) NOT NULL DEFAULT 'Chen',
|
---|
| 134 | averylonglongfieldname LONGTEXT NOT NULL,
|
---|
| 135 | price NUMERIC(7,2) NOT NULL DEFAULT 0.00,
|
---|
| 136 | MYDATE DATE DEFAULT CURDATE(),
|
---|
| 137 | PRIMARY KEY (id, lastname)
|
---|
| 138 | )TYPE=ISAM;
|
---|
| 139 | CREATE FULLTEXT INDEX idx ON KUTU.testtable (firstname,lastname);
|
---|
| 140 | CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
|
---|
| 141 | ALTER TABLE KUTU.testtable ADD height DOUBLE;
|
---|
| 142 | ALTER TABLE KUTU.testtable ADD weight DOUBLE;
|
---|
| 143 | ALTER TABLE KUTU.testtable MODIFY COLUMN height DOUBLE NOT NULL;
|
---|
| 144 | ALTER TABLE KUTU.testtable MODIFY COLUMN weight DOUBLE NOT NULL;
|
---|
| 145 |
|
---|
| 146 |
|
---|
| 147 | --------------------------------------------------------------------------------
|
---|
| 148 |
|
---|
| 149 | oci8
|
---|
| 150 |
|
---|
| 151 | CREATE USER KUTU IDENTIFIED BY tiger;
|
---|
| 152 | /
|
---|
| 153 | GRANT CREATE SESSION, CREATE TABLE,UNLIMITED TABLESPACE,CREATE SEQUENCE TO KUTU;
|
---|
| 154 | /
|
---|
| 155 | DROP TABLE KUTU.testtable CASCADE CONSTRAINTS;
|
---|
| 156 | /
|
---|
| 157 | CREATE TABLE KUTU.testtable (
|
---|
| 158 | id NUMBER(16) NOT NULL,
|
---|
| 159 | firstname VARCHAR(30) DEFAULT 'Joan',
|
---|
| 160 | lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
|
---|
| 161 | averylonglongfieldname CLOB NOT NULL,
|
---|
| 162 | price NUMBER(7,2) DEFAULT 0.00 NOT NULL,
|
---|
| 163 | MYDATE DATE DEFAULT TRUNC(SYSDATE),
|
---|
| 164 | PRIMARY KEY (id, lastname)
|
---|
| 165 | )TABLESPACE USERS;
|
---|
| 166 | /
|
---|
| 167 | DROP SEQUENCE KUTU.SEQ_testtable;
|
---|
| 168 | /
|
---|
| 169 | CREATE SEQUENCE KUTU.SEQ_testtable;
|
---|
| 170 | /
|
---|
| 171 | CREATE 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 | /
|
---|
| 177 | CREATE BITMAP INDEX idx ON KUTU.testtable (firstname,lastname);
|
---|
| 178 | /
|
---|
| 179 | CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
|
---|
| 180 | /
|
---|
| 181 | ALTER TABLE testtable ADD (
|
---|
| 182 | height NUMBER,
|
---|
| 183 | weight NUMBER);
|
---|
| 184 | /
|
---|
| 185 | ALTER TABLE testtable MODIFY(
|
---|
| 186 | height NUMBER NOT NULL,
|
---|
| 187 | weight NUMBER NOT NULL);
|
---|
| 188 | /
|
---|
| 189 |
|
---|
| 190 |
|
---|
| 191 | --------------------------------------------------------------------------------
|
---|
| 192 |
|
---|
| 193 | postgres
|
---|
| 194 | AlterColumnSQL not supported for PostgreSQL
|
---|
| 195 |
|
---|
| 196 |
|
---|
| 197 | CREATE DATABASE KUTU LOCATION='/u01/postdata';
|
---|
| 198 | DROP TABLE KUTU.testtable;
|
---|
| 199 | CREATE TABLE KUTU.testtable (
|
---|
| 200 | id SERIAL,
|
---|
| 201 | firstname VARCHAR(30) DEFAULT 'Joan',
|
---|
| 202 | lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
|
---|
| 203 | averylonglongfieldname TEXT NOT NULL,
|
---|
| 204 | price NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
|
---|
| 205 | MYDATE DATE DEFAULT CURRENT_DATE,
|
---|
| 206 | PRIMARY KEY (id, lastname)
|
---|
| 207 | );
|
---|
| 208 | CREATE INDEX idx ON KUTU.testtable USING HASH (firstname,lastname);
|
---|
| 209 | CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
|
---|
| 210 | ALTER TABLE KUTU.testtable ADD height FLOAT8;
|
---|
| 211 | ALTER TABLE KUTU.testtable ADD weight FLOAT8;
|
---|
| 212 |
|
---|
| 213 |
|
---|
| 214 | --------------------------------------------------------------------------------
|
---|
| 215 |
|
---|
| 216 | odbc_mssql
|
---|
| 217 |
|
---|
| 218 | CREATE DATABASE KUTU;
|
---|
| 219 | DROP TABLE KUTU.testtable;
|
---|
| 220 | CREATE TABLE KUTU.testtable (
|
---|
| 221 | id INT IDENTITY(1,1) NOT NULL,
|
---|
| 222 | firstname VARCHAR(30) DEFAULT 'Joan',
|
---|
| 223 | lastname VARCHAR(28) DEFAULT 'Chen' NOT NULL,
|
---|
| 224 | averylonglongfieldname TEXT NOT NULL,
|
---|
| 225 | price NUMERIC(7,2) DEFAULT 0.00 NOT NULL,
|
---|
| 226 | MYDATE DATETIME DEFAULT GetDate(),
|
---|
| 227 | PRIMARY KEY (id, lastname)
|
---|
| 228 | );
|
---|
| 229 | CREATE CLUSTERED INDEX idx ON KUTU.testtable (firstname,lastname);
|
---|
| 230 | CREATE INDEX idx2 ON KUTU.testtable (price,lastname);
|
---|
| 231 | ALTER TABLE KUTU.testtable ADD
|
---|
| 232 | height REAL,
|
---|
| 233 | weight REAL;
|
---|
| 234 | ALTER TABLE KUTU.testtable ALTER COLUMN height REAL NOT NULL;
|
---|
| 235 | ALTER TABLE KUTU.testtable ALTER COLUMN weight REAL NOT NULL;
|
---|
| 236 |
|
---|
| 237 |
|
---|
| 238 | --------------------------------------------------------------------------------
|
---|
| 239 | */
|
---|
| 240 |
|
---|
| 241 |
|
---|
| 242 | echo "<h1>Test XML Schema</h1>";
|
---|
| 243 | $ff = file('xmlschema.xml');
|
---|
| 244 | echo "<pre>";
|
---|
| 245 | foreach($ff as $xml) echo htmlspecialchars($xml);
|
---|
| 246 | echo "</pre>";
|
---|
| 247 | include_once('test-xmlschema.php');
|
---|
| 248 | ?> |
---|