aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/develop/create_schema_files.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/develop/create_schema_files.php')
-rw-r--r--phpBB/develop/create_schema_files.php74
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;
}
}
}