diff options
Diffstat (limited to 'phpBB/develop/create_schema_files.php')
-rw-r--r-- | phpBB/develop/create_schema_files.php | 74 |
1 files changed, 71 insertions, 3 deletions
diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index 8d6ed4e51f..f364030231 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -12,7 +12,7 @@ * If you overwrite the original schema files please make sure you save the file with UNIX linefeeds. */ -die("Please read the first lines of this script for instructions on how to enable it"); +//die("Please read the first lines of this script for instructions on how to enable it"); @set_time_limit(0); @@ -115,6 +115,33 @@ $dbms_type_map = array( 'VARBINARY' => '[varchar] (255)', ), + 'db2' => array( + 'INT:' => 'integer', + 'BINT' => 'float', + 'UINT' => 'integer', + 'UINT:' => 'integer', + 'TINT:' => 'smallint', + 'USINT' => 'smallint', + 'BOOL' => 'smallint', + 'VCHAR' => 'varchar(255)', + 'VCHAR:' => 'varchar(%d)', + 'CHAR:' => 'char(%d)', + 'XSTEXT' => 'clob(65K)', + 'STEXT' => 'varchar(3000)', + 'TEXT' => 'clob(65K)', + 'MTEXT' => 'clob(16M)', + 'XSTEXT_UNI'=> 'varchar(100)', + 'STEXT_UNI' => 'varchar(255)', + 'TEXT_UNI' => 'clob(65K)', + 'MTEXT_UNI' => 'clob(16M)', + 'TIMESTAMP' => 'integer', + 'DECIMAL' => 'float', + 'VCHAR_UNI' => 'varchar(255)', + 'VCHAR_UNI:'=> 'varchar(%d)', + 'VCHAR_CI' => 'varchar(255)', + 'VARBINARY' => 'varchar(255)', + ), + 'oracle' => array( 'INT:' => 'number(%d)', 'BINT' => 'number(20)', @@ -208,11 +235,11 @@ $dbms_type_map = array( // A list of types being unsigned for better reference in some db's $unsigned_types = array('UINT', 'UINT:', 'USINT', 'BOOL', 'TIMESTAMP'); -$supported_dbms = array('firebird', 'mssql', 'mysql', 'oracle', 'postgres', 'sqlite'); +$supported_dbms = array('firebird', 'mssql', 'mysql', 'db2', 'oracle', 'postgres', 'sqlite'); foreach ($supported_dbms as $dbms) { - $fp = fopen($schema_path . '_' . $dbms . '_schema.sql', 'wt'); + $fp = fopen($schema_path . '' . $dbms . '_schema.sql', 'wt'); $line = ''; @@ -238,6 +265,10 @@ foreach ($supported_dbms as $dbms) $line .= "BEGIN TRANSACTION\nGO\n\n"; break; + case 'db2': + $line = "/*\n\n \$I" . "d: $\n\n*/\n\n"; + break; + case 'oracle': $line = "/*\n\n \$I" . "d: $\n\n*/\n\n"; $line .= custom_data('oracle') . "\n"; @@ -266,6 +297,7 @@ foreach ($supported_dbms as $dbms) case 'mssql': case 'oracle': case 'postgres': + case 'db2': fwrite($fp, "/*\n\tTable: '{$table_name}'\n*/\n"); break; } @@ -281,6 +313,7 @@ foreach ($supported_dbms as $dbms) case 'oracle': case 'sqlite': case 'postgres': + case 'db2': $line = "CREATE TABLE {$table_name} (\n"; break; @@ -489,6 +522,27 @@ foreach ($supported_dbms as $dbms) $line .= ",\n"; } break; + + case 'db2': + $line .= "\t{$column_name} {$column_type} NOT NULL"; + + if (isset($column_data[2]) && $column_data[2] == 'auto_increment') + { + $line .= ' GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1)'; + } + else + { + if (preg_match('/^(integer|smallint|float)$/', $column_type)) + { + $line .= " DEFAULT {$column_data[1]}"; + } + else + { + $line .= " DEFAULT '{$column_data[1]}'"; + } + } + $line .= ",\n"; + break; } } @@ -519,6 +573,7 @@ foreach ($supported_dbms as $dbms) { case 'mysql': case 'postgres': + case 'db2': $line .= "\tPRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . "),\n"; break; @@ -579,6 +634,12 @@ foreach ($supported_dbms as $dbms) $line .= "\n);\n\n"; break; + case 'db2': + // Remove last line delimiter... + $line = substr($line, 0, -2); + $line .= "\n);\n\n"; + break; + case 'sqlite': // Remove last line delimiter... $line = substr($line, 0, -2); @@ -656,6 +717,13 @@ foreach ($supported_dbms as $dbms) $line .= " {$table_name}_{$key_name} ON {$table_name} (" . implode(', ', $key_data[1]) . ");\n"; break; + + case 'db2': + $line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : ''; + $line .= ($key_data[0] == 'UNIQUE') ? 'CREATE UNIQUE INDEX' : ''; + + $line .= " {$table_name}_{$key_name} ON {$table_name} (" . implode(', ', $key_data[1]) . ") PCTFREE 10 MINPCTUSED 10 ALLOW REVERSE SCANS PAGE SPLIT SYMMETRIC COLLECT SAMPLED DETAILED STATISTICS;\n"; + break; } } } |