From: <var...@us...> - 2021-07-29 16:44:31
|
Revision: 10395 http://sourceforge.net/p/phpwiki/code/10395 Author: vargenau Date: 2021-07-29 16:44:29 +0000 (Thu, 29 Jul 2021) Log Message: ----------- lib/upgrade.php: remove code using mysql_list_fields, mysql_num_fields, mysql_field_name, mysql_field_flags, mysql_free_result Modified Paths: -------------- trunk/lib/upgrade.php Modified: trunk/lib/upgrade.php =================================================================== --- trunk/lib/upgrade.php 2021-07-29 15:46:37 UTC (rev 10394) +++ trunk/lib/upgrade.php 2021-07-29 16:44:29 UTC (rev 10395) @@ -515,103 +515,6 @@ } } - /* TODO: - ALTER TABLE link ADD relation INT DEFAULT 0; - CREATE INDEX linkrelation ON link (relation); - */ - - // 1.3.10 mysql requires page.id auto_increment - // mysql, mysqli or mysqlt - if ($this->phpwiki_version >= 1030.099 and substr($backend_type, 0, 5) == 'mysql' - and DATABASE_TYPE != 'PDO' - ) { - echo _("Check for mysql page.id auto_increment flag"), " ... "; - assert(!empty($page_tbl)); - $database = $this->dbi->_backend->database(); - // mysql_list_fields and mysql_num_fields removed in PHP 7 - $fields = mysql_list_fields($database, $page_tbl, $this->dbi->_backend->connection()); - $columns = mysql_num_fields($fields); - for ($i = 0; $i < $columns; $i++) { - if (mysql_field_name($fields, $i) == 'id') { - $flags = mysql_field_flags($fields, $i); - //DONE: something was wrong with ADODB here. - if (!strstr(strtolower($flags), "auto_increment")) { - echo "<b>", _("ADDING"), "</b>", " ... "; - // MODIFY col_def valid since mysql 3.22.16, - // older mysql's need CHANGE old_col col_def - $this->dbi->genericSqlQuery("ALTER TABLE $page_tbl CHANGE id" - . " id INT NOT NULL AUTO_INCREMENT"); - $fields = mysql_list_fields($database, $page_tbl); - if (!strstr(strtolower(mysql_field_flags($fields, $i)), "auto_increment")) - echo ' <span style="color: red; font-weight: bold;">' . _("FAILED") . "</span><br />\n"; - else - echo _("OK"), "<br />\n"; - } else { - echo _("OK"), "<br />\n"; - } - break; - } - } - mysql_free_result($fields); - } - - // Check for mysql 4.1.x/5.0.0a binary search problem. - // http://bugs.mysql.com/bug.php?id=4398 - // "select * from page where LOWER(pagename) like '%search%'" does not apply LOWER! - // Confirmed for 4.1.0alpha,4.1.3-beta,5.0.0a; not yet tested for 4.1.2alpha, - // On windows only, though utf8 would be useful elsewhere also. - // Illegal mix of collations (latin1_bin,IMPLICIT) and - // (utf8_general_ci, COERCIBLE) for operation '=']) - if (isWindows() and substr($backend_type, 0, 5) == 'mysql') { - echo _("Check for mysql 4.1.x/5.0.0 binary search on Windows problem"), " ... "; - $mysql_version = $this->dbi->_backend->_serverinfo['version']; - if ($mysql_version < 401.0) { - echo sprintf(_("version <em>%s</em>"), $mysql_version), " ", - _("not affected"), "<br />\n"; - } elseif ($mysql_version >= 401.6) { // FIXME: since which version? - $row = $this->dbi->_backend->getRow("SHOW CREATE TABLE $page_tbl"); - $result = join(" ", $row); - if (strstr(strtolower($result), "character set") - and strstr(strtolower($result), "collate") - ) { - echo _("OK"), "<br />\n"; - } else { - $charset = 'UTF-8'; - $this->dbi->genericSqlQuery("ALTER TABLE $page_tbl CHANGE pagename " - . "pagename VARCHAR(100) " - . "CHARACTER SET '$charset' COLLATE '$charset" . "_bin' NOT NULL"); - echo sprintf(_("version <em>%s</em>"), $mysql_version), - " <b>", _("FIXED"), "</b>", - "<br />\n"; - } - } elseif (DATABASE_TYPE != 'PDO') { - // check if already fixed - extract($this->dbi->_backend->_table_names); - assert(!empty($page_tbl)); - $database = $this->dbi->_backend->database(); - // mysql_list_fields and mysql_num_fields removed in PHP 7 - $fields = mysql_list_fields($database, $page_tbl, $this->dbi->_backend->connection()); - $columns = mysql_num_fields($fields); - for ($i = 0; $i < $columns; $i++) { - if (mysql_field_name($fields, $i) == 'pagename') { - $flags = mysql_field_flags($fields, $i); - // I think it was fixed with 4.1.6, but I tested it only with 4.1.8 - if ($mysql_version > 401.0 and $mysql_version < 401.6) { - // remove the binary flag - if (strstr(strtolower($flags), "binary")) { - // FIXME: on duplicate pagenames this will fail! - $this->dbi->genericSqlQuery("ALTER TABLE $page_tbl CHANGE pagename" - . " pagename VARCHAR(100) NOT NULL"); - echo sprintf(_("version <em>%s</em>"), $mysql_version), - "<b>", _("FIXED"), "</b>" - , "<br />\n"; - } - } - break; - } - } - } - } if ($this->isSQL and ACCESS_LOG_SQL & 2) { echo _("Check for ACCESS_LOG_SQL passwords in POST requests"), " ... "; // Don't display passwords in POST requests (up to 2005-02-04 12:03:20) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |