diff --git a/build/build.xml b/build/build.xml index ed9643c12f..42642dcefa 100644 --- a/build/build.xml +++ b/build/build.xml @@ -2,9 +2,9 @@ - - - + + + diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index c0803f0f5c..213354fcb9 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -1225,7 +1225,6 @@ function get_schema_struct() $schema_data['phpbb_login_attempts'] = array( 'COLUMNS' => array( - 'attempt_id' => array('UINT', NULL, 'auto_increment'), 'attempt_ip' => array('VCHAR:40', ''), 'attempt_browser' => array('VCHAR:150', ''), 'attempt_forwarded_for' => array('VCHAR:255', ''), @@ -1234,7 +1233,6 @@ function get_schema_struct() 'username' => array('VCHAR_UNI:255', 0), 'username_clean' => array('VCHAR_CI', 0), ), - 'PRIMARY_KEY' => 'attempt_id', 'KEYS' => array( 'att_ip' => array('INDEX', array('attempt_ip', 'attempt_time')), 'att_for' => array('INDEX', array('attempt_forwarded_for', 'attempt_time')), diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 6b12cb81bf..c0ec93cafb 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -333,6 +333,8 @@
  • [PHPBB3-10234] - msg_handler() reports E_WARNING as "PHP Notice: "
  • +
  • [PHPBB3-10247] - mediumint(8) too small for phpbb_login_attempts.attempt_id +
  • Improvement diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 21defd0a80..f0fd640ebd 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -1013,7 +1013,12 @@ function database_update_info() 'add_tables' => array( LOGIN_ATTEMPT_TABLE => array( 'COLUMNS' => array( - 'attempt_id' => array('UINT', NULL, 'auto_increment'), + // this column was removed from the database updater + // after 3.0.9-RC3 was released. It might still exist + // in 3.0.9-RCX installations and has to be dropped in + // 3.0.10 after the db_tools class is capable of properly + // removing a primary key. + // 'attempt_id' => array('UINT', NULL, 'auto_increment'), 'attempt_ip' => array('VCHAR:40', ''), 'attempt_browser' => array('VCHAR:150', ''), 'attempt_forwarded_for' => array('VCHAR:255', ''), @@ -1037,6 +1042,14 @@ function database_update_info() ), ), ), + // No changes from 3.0.9-RC1 to 3.0.9-RC2 + '3.0.9-RC1' => array(), + // No changes from 3.0.9-RC2 to 3.0.9-RC3 + '3.0.9-RC2' => array(), + // No changes from 3.0.9-RC3 to 3.0.9 + '3.0.9-RC3' => array(), + + /** @todo DROP LOGIN_ATTEMPT_TABLE.attempt_id in 3.0.10-RC1 */ // Changes from 3.1.0-dev to 3.1.0-A1 '3.1.0-dev' => array( @@ -2046,6 +2059,18 @@ function change_database_data(&$no_updates, $version) $no_updates = false; break; + // No changes from 3.0.9-RC1 to 3.0.9-RC2 + case '3.0.9-RC1': + break; + + // No changes from 3.0.9-RC2 to 3.0.9-RC3 + case '3.0.9-RC2': + break; + + // No changes from 3.0.9-RC3 to 3.0.9 + case '3.0.9-RC3': + break; + // Changes from 3.1.0-dev to 3.1.0-A1 case '3.1.0-dev': set_config('use_system_cron', 0); diff --git a/phpBB/install/schemas/firebird_schema.sql b/phpBB/install/schemas/firebird_schema.sql index 9e18ed3dc3..b19ece2b7c 100644 --- a/phpBB/install/schemas/firebird_schema.sql +++ b/phpBB/install/schemas/firebird_schema.sql @@ -549,7 +549,6 @@ END;; # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id INTEGER NOT NULL, attempt_ip VARCHAR(40) CHARACTER SET NONE DEFAULT '' NOT NULL, attempt_browser VARCHAR(150) CHARACTER SET NONE DEFAULT '' NOT NULL, attempt_forwarded_for VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, @@ -559,24 +558,11 @@ CREATE TABLE phpbb_login_attempts ( username_clean VARCHAR(255) CHARACTER SET UTF8 DEFAULT 0 NOT NULL COLLATE UNICODE );; -ALTER TABLE phpbb_login_attempts ADD PRIMARY KEY (attempt_id);; - CREATE INDEX phpbb_login_attempts_att_ip ON phpbb_login_attempts(attempt_ip, attempt_time);; CREATE INDEX phpbb_login_attempts_att_for ON phpbb_login_attempts(attempt_forwarded_for, attempt_time);; CREATE INDEX phpbb_login_attempts_att_time ON phpbb_login_attempts(attempt_time);; CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts(user_id);; -CREATE GENERATOR phpbb_login_attempts_gen;; -SET GENERATOR phpbb_login_attempts_gen TO 0;; - -CREATE TRIGGER t_phpbb_login_attempts FOR phpbb_login_attempts -BEFORE INSERT -AS -BEGIN - NEW.attempt_id = GEN_ID(phpbb_login_attempts_gen, 1); -END;; - - # Table: 'phpbb_moderator_cache' CREATE TABLE phpbb_moderator_cache ( forum_id INTEGER DEFAULT 0 NOT NULL, diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 76ce740507..f823667252 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -657,7 +657,6 @@ GO Table: 'phpbb_login_attempts' */ CREATE TABLE [phpbb_login_attempts] ( - [attempt_id] [int] IDENTITY (1, 1) NOT NULL , [attempt_ip] [varchar] (40) DEFAULT ('') NOT NULL , [attempt_browser] [varchar] (150) DEFAULT ('') NOT NULL , [attempt_forwarded_for] [varchar] (255) DEFAULT ('') NOT NULL , @@ -668,13 +667,6 @@ CREATE TABLE [phpbb_login_attempts] ( ) ON [PRIMARY] GO -ALTER TABLE [phpbb_login_attempts] WITH NOCHECK ADD - CONSTRAINT [PK_phpbb_login_attempts] PRIMARY KEY CLUSTERED - ( - [attempt_id] - ) ON [PRIMARY] -GO - CREATE INDEX [att_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) ON [PRIMARY] GO diff --git a/phpBB/install/schemas/mysql_40_schema.sql b/phpBB/install/schemas/mysql_40_schema.sql index 24fa69ac73..8b603f9572 100644 --- a/phpBB/install/schemas/mysql_40_schema.sql +++ b/phpBB/install/schemas/mysql_40_schema.sql @@ -373,7 +373,6 @@ CREATE TABLE phpbb_log ( # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id mediumint(8) UNSIGNED NOT NULL auto_increment, attempt_ip varbinary(40) DEFAULT '' NOT NULL, attempt_browser varbinary(150) DEFAULT '' NOT NULL, attempt_forwarded_for varbinary(255) DEFAULT '' NOT NULL, @@ -381,7 +380,6 @@ CREATE TABLE phpbb_login_attempts ( user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, username blob NOT NULL, username_clean blob NOT NULL, - PRIMARY KEY (attempt_id), KEY att_ip (attempt_ip, attempt_time), KEY att_for (attempt_forwarded_for, attempt_time), KEY att_time (attempt_time), diff --git a/phpBB/install/schemas/mysql_41_schema.sql b/phpBB/install/schemas/mysql_41_schema.sql index cf08bb61c6..f418e1d2a5 100644 --- a/phpBB/install/schemas/mysql_41_schema.sql +++ b/phpBB/install/schemas/mysql_41_schema.sql @@ -373,7 +373,6 @@ CREATE TABLE phpbb_log ( # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id mediumint(8) UNSIGNED NOT NULL auto_increment, attempt_ip varchar(40) DEFAULT '' NOT NULL, attempt_browser varchar(150) DEFAULT '' NOT NULL, attempt_forwarded_for varchar(255) DEFAULT '' NOT NULL, @@ -381,7 +380,6 @@ CREATE TABLE phpbb_login_attempts ( user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, username varchar(255) DEFAULT '0' NOT NULL, username_clean varchar(255) DEFAULT '0' NOT NULL, - PRIMARY KEY (attempt_id), KEY att_ip (attempt_ip, attempt_time), KEY att_for (attempt_forwarded_for, attempt_time), KEY att_time (attempt_time), diff --git a/phpBB/install/schemas/oracle_schema.sql b/phpBB/install/schemas/oracle_schema.sql index 84d59a956d..fcd7f9e5d0 100644 --- a/phpBB/install/schemas/oracle_schema.sql +++ b/phpBB/install/schemas/oracle_schema.sql @@ -747,15 +747,13 @@ END; Table: 'phpbb_login_attempts' */ CREATE TABLE phpbb_login_attempts ( - attempt_id number(8) NOT NULL, attempt_ip varchar2(40) DEFAULT '' , attempt_browser varchar2(150) DEFAULT '' , attempt_forwarded_for varchar2(255) DEFAULT '' , attempt_time number(11) DEFAULT '0' NOT NULL, user_id number(8) DEFAULT '0' NOT NULL, username varchar2(765) DEFAULT '0' NOT NULL, - username_clean varchar2(255) DEFAULT '0' NOT NULL, - CONSTRAINT pk_phpbb_login_attempts PRIMARY KEY (attempt_id) + username_clean varchar2(255) DEFAULT '0' NOT NULL ) / @@ -768,22 +766,6 @@ CREATE INDEX phpbb_login_attempts_att_time ON phpbb_login_attempts (attempt_time CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts (user_id) / -CREATE SEQUENCE phpbb_login_attempts_seq -/ - -CREATE OR REPLACE TRIGGER t_phpbb_login_attempts -BEFORE INSERT ON phpbb_login_attempts -FOR EACH ROW WHEN ( - new.attempt_id IS NULL OR new.attempt_id = 0 -) -BEGIN - SELECT phpbb_login_attempts_seq.nextval - INTO :new.attempt_id - FROM dual; -END; -/ - - /* Table: 'phpbb_moderator_cache' */ diff --git a/phpBB/install/schemas/postgres_schema.sql b/phpBB/install/schemas/postgres_schema.sql index 6fff09a5a2..1aa47b4d61 100644 --- a/phpBB/install/schemas/postgres_schema.sql +++ b/phpBB/install/schemas/postgres_schema.sql @@ -529,18 +529,14 @@ CREATE INDEX phpbb_log_user_id ON phpbb_log (user_id); /* Table: 'phpbb_login_attempts' */ -CREATE SEQUENCE phpbb_login_attempts_seq; - CREATE TABLE phpbb_login_attempts ( - attempt_id INT4 DEFAULT nextval('phpbb_login_attempts_seq'), attempt_ip varchar(40) DEFAULT '' NOT NULL, attempt_browser varchar(150) DEFAULT '' NOT NULL, attempt_forwarded_for varchar(255) DEFAULT '' NOT NULL, attempt_time INT4 DEFAULT '0' NOT NULL CHECK (attempt_time >= 0), user_id INT4 DEFAULT '0' NOT NULL CHECK (user_id >= 0), username varchar(255) DEFAULT '0' NOT NULL, - username_clean varchar_ci DEFAULT '0' NOT NULL, - PRIMARY KEY (attempt_id) + username_clean varchar_ci DEFAULT '0' NOT NULL ); CREATE INDEX phpbb_login_attempts_att_ip ON phpbb_login_attempts (attempt_ip, attempt_time); diff --git a/phpBB/install/schemas/sqlite_schema.sql b/phpBB/install/schemas/sqlite_schema.sql index 38333503e1..382e835767 100644 --- a/phpBB/install/schemas/sqlite_schema.sql +++ b/phpBB/install/schemas/sqlite_schema.sql @@ -361,7 +361,6 @@ CREATE INDEX phpbb_log_user_id ON phpbb_log (user_id); # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id INTEGER PRIMARY KEY NOT NULL , attempt_ip varchar(40) NOT NULL DEFAULT '', attempt_browser varchar(150) NOT NULL DEFAULT '', attempt_forwarded_for varchar(255) NOT NULL DEFAULT '', diff --git a/tests/dbal/db_tools_test.php b/tests/dbal/db_tools_test.php index eb2af4c4cc..ddea500f83 100644 --- a/tests/dbal/db_tools_test.php +++ b/tests/dbal/db_tools_test.php @@ -241,6 +241,15 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case } public function test_column_remove() + { + $this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_int_size')); + + $this->assertTrue($this->tools->sql_column_remove('prefix_table_name', 'c_int_size')); + + $this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_int_size')); + } + + public function test_column_remove_primary() { $this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_id')); @@ -264,5 +273,4 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case $this->tools->sql_table_drop('prefix_test_table'); } - }