diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2013-03-03 20:06:52 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2013-03-03 20:06:52 +0100 |
commit | 42c062cedf0b451141e321dd4e7cac84905bcac6 (patch) | |
tree | 7c6fa2647ebbd56e909356de4a27551dff0be626 /phpBB/includes/db/db_tools.php | |
parent | 3cee183dd4882fdd00deb911bab69287d7754135 (diff) | |
parent | bee4f8d8185d4ff5278be758db4ea4a814f09b4f (diff) | |
download | forums-42c062cedf0b451141e321dd4e7cac84905bcac6.tar forums-42c062cedf0b451141e321dd4e7cac84905bcac6.tar.gz forums-42c062cedf0b451141e321dd4e7cac84905bcac6.tar.bz2 forums-42c062cedf0b451141e321dd4e7cac84905bcac6.tar.xz forums-42c062cedf0b451141e321dd4e7cac84905bcac6.zip |
Merge branch 'develop' of https://github.com/phpbb/phpbb3 into feature/softdelete-1-permission
* 'develop' of https://github.com/phpbb/phpbb3: (480 commits)
[ticket/6723] Show info that message has been deleted before delivery
[ticket/11385] Fix issue with migration module tool not getting extension module info
[ticket/11386] Fix failing tests from constructor changes
[ticket/11386] Fix circular reference error & serialize error
[ticket/11386] Remove tests that check if finder cache is working
[ticket/11386] Forgot to get the migration classes
[ticket/11386] Update tests with new constructors for ext.manager/migrator
[ticket/11386] Use finder to find migration files
[ticket/11363] Fix to make get_module_infos get from all extensions
[ticket/11381] Make finder able to search in all available extensions
[ticket/11103] Revert whitespace changes
[ticket/11103] Few more minor language things
[ticket/11103] Don't call generate_board_url many times
[ticket/11103] Case time in queries as an int
[ticket/11103] Fix effectively installed check
[ticket/11103] Remove padding from notifications for now.
[ticket/11363] Fix a couple bugs and throw errors if the file not found
[ticket/11372] Migrator should only check if effectively installed if not
[ticket/11363] Load module info files for extensions too
[ticket/11103] Notifications Migration file
...
Conflicts:
phpBB/includes/functions_posting.php
phpBB/includes/mcp/mcp_queue.php
phpBB/includes/search/fulltext_mysql.php
phpBB/includes/search/fulltext_native.php
phpBB/includes/search/fulltext_postgres.php
phpBB/includes/search/fulltext_sphinx.php
phpBB/install/database_update.php
phpBB/styles/prosilver/template/ajax.js
Diffstat (limited to 'phpBB/includes/db/db_tools.php')
-rw-r--r-- | phpBB/includes/db/db_tools.php | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php index 2bb016cebd..983cdc18ea 100644 --- a/phpBB/includes/db/db_tools.php +++ b/phpBB/includes/db/db_tools.php @@ -303,7 +303,7 @@ class phpbb_db_tools * @param phpbb_db_driver $db Database connection * @param bool $return_statements True if only statements should be returned and no SQL being executed */ - function phpbb_db_tools(&$db, $return_statements = false) + function phpbb_db_tools(phpbb_db_driver $db, $return_statements = false) { $this->db = $db; $this->return_statements = $return_statements; @@ -346,6 +346,17 @@ class phpbb_db_tools } /** + * Setter for {@link $return_statements return_statements}. + * + * @param bool $return_statements True if SQL should not be executed but returned as strings + * @return null + */ + public function set_return_statements($return_statements) + { + $this->return_statements = $return_statements; + } + + /** * Gets a list of tables in the database. * * @return array Array of table names (all lower case) @@ -674,6 +685,8 @@ class phpbb_db_tools * Handle passed database update array. * Expected structure... * Key being one of the following + * drop_tables: Drop tables + * add_tables: Add tables * change_columns: Column changes (only type, not name) * add_columns: Add columns to a table * drop_keys: Dropping keys @@ -1817,6 +1830,22 @@ class phpbb_db_tools case 'mssql': case 'mssqlnative': + // remove default cosntraints first + // http://msdn.microsoft.com/en-us/library/aa175912%28v=sql.80%29.aspx + $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) + SET @drop_default_name = + (SELECT so.name FROM sysobjects so + JOIN sysconstraints sc ON so.id = sc.constid + WHERE object_name(so.parent_obj) = '{$table_name}' + AND so.xtype = 'D' + AND sc.colid = (SELECT colid FROM syscolumns + WHERE id = object_id('{$table_name}') + AND name = '{$column_name}')) + IF @drop_default_name <> '' + BEGIN + SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' + EXEC(@cmd) + END"; $statements[] = 'ALTER TABLE [' . $table_name . '] DROP COLUMN [' . $column_name . ']'; break; |