diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2014-04-13 16:43:57 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2014-04-17 11:29:44 +0200 |
commit | 190b4282df5c5c81123b1ed371eeada385831e99 (patch) | |
tree | 7d6c7f04e3c355f7b03b82d82de430d3d6744343 /phpBB/phpbb | |
parent | e2784d01cee227a56f2ad7bcaee4b796dbf6dde6 (diff) | |
download | forums-190b4282df5c5c81123b1ed371eeada385831e99.tar forums-190b4282df5c5c81123b1ed371eeada385831e99.tar.gz forums-190b4282df5c5c81123b1ed371eeada385831e99.tar.bz2 forums-190b4282df5c5c81123b1ed371eeada385831e99.tar.xz forums-190b4282df5c5c81123b1ed371eeada385831e99.zip |
[ticket/12012] Return SQL statements for index drop/create
Otherwise we recreate the index before changing the column
PHPBB3-12012
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r-- | phpBB/phpbb/db/tools.php | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/phpBB/phpbb/db/tools.php b/phpBB/phpbb/db/tools.php index c2285bcf80..113059900a 100644 --- a/phpBB/phpbb/db/tools.php +++ b/phpBB/phpbb/db/tools.php @@ -2336,21 +2336,32 @@ class tools case 'mssql': case 'mssqlnative': + // We need the data here + $old_return_statements = $this->return_statements; + $this->return_statements = true; + $indexes = $this->mssql_get_existing_indexes($table_name, $column_name); + // Drop any indexes if (!empty($indexes)) { foreach ($indexes as $index_name => $index_data) { - $this->sql_index_drop($table_name, $index_name); + $result = $this->sql_index_drop($table_name, $index_name); + $statements = array_merge($statements, $result); } } - $statements = $this->mssql_drop_default_constraints($table_name, $column_name); + // Drop default value constraint + $result = $this->mssql_drop_default_constraints($table_name, $column_name); + $statements = array_merge($statements, $result); + + // Change the column $statements[] = 'ALTER TABLE [' . $table_name . '] ALTER COLUMN [' . $column_name . '] ' . $column_data['column_type_sql']; if (!empty($column_data['default'])) { + // Add new default value constraint $statements[] = 'ALTER TABLE [' . $table_name . '] ADD CONSTRAINT [DF_' . $table_name . '_' . $column_name . '_1] ' . $this->db->sql_escape($column_data['default']) . ' FOR [' . $column_name . ']'; } @@ -2359,9 +2370,12 @@ class tools // Recreate indexes after we changed the column foreach ($indexes as $index_name => $index_data) { - $this->sql_create_index($table_name, $index_name, $index_data); + $result = $this->sql_create_index($table_name, $index_name, $index_data); + $statements = array_merge($statements, $result); } } + + $this->return_statements = $old_return_statements; break; case 'mysql_40': |