diff --git a/database.sql b/database.sql index 8e0c511578..da32e1be6f 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.03-dev (Red Hot Poker) --- DB_UPDATE_VERSION 1402 +-- DB_UPDATE_VERSION 1403 -- ------------------------------------------ @@ -959,15 +959,17 @@ CREATE TABLE IF NOT EXISTS `openwebauth-token` ( -- TABLE parsed_url -- CREATE TABLE IF NOT EXISTS `parsed_url` ( - `url` varbinary(255) NOT NULL COMMENT 'page url', + `url_hash` binary(64) NOT NULL COMMENT 'page url hash', `guessing` boolean NOT NULL DEFAULT '0' COMMENT 'is the \'guessing\' mode active?', `oembed` boolean NOT NULL DEFAULT '0' COMMENT 'is the data the result of oembed?', + `url` text NOT NULL COMMENT 'page url', `content` mediumtext COMMENT 'page data', `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of creation', - PRIMARY KEY(`url`,`guessing`,`oembed`), - INDEX `created` (`created`) + `expires` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'datetime of expiration', + PRIMARY KEY(`url_hash`,`guessing`,`oembed`), + INDEX `created` (`created`), + INDEX `expires` (`expires`) ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='cache for \'parse_url\' queries'; - -- -- TABLE pconfig -- diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 5f05711c55..65959771df 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1402); + define('DB_UPDATE_VERSION', 1403); } return [ @@ -1019,15 +1019,18 @@ return [ "parsed_url" => [ "comment" => "cache for 'parse_url' queries", "fields" => [ - "url" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "page url"], + "url_hash" => ["type" => "binary(64)", "not null" => "1", "primary" => "1", "comment" => "page url hash"], "guessing" => ["type" => "boolean", "not null" => "1", "default" => "0", "primary" => "1", "comment" => "is the 'guessing' mode active?"], "oembed" => ["type" => "boolean", "not null" => "1", "default" => "0", "primary" => "1", "comment" => "is the data the result of oembed?"], + "url" => ["type" => "text", "not null" => "1", "comment" => "page url"], "content" => ["type" => "mediumtext", "comment" => "page data"], "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of creation"], + "expires" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of expiration"], ], "indexes" => [ - "PRIMARY" => ["url", "guessing", "oembed"], + "PRIMARY" => ["url_hash", "guessing", "oembed"], "created" => ["created"], + "expires" => ["expires"], ] ], "pconfig" => [ diff --git a/update.php b/update.php index 6f796cd0fa..68e4fb4d3d 100644 --- a/update.php +++ b/update.php @@ -817,3 +817,13 @@ function update_1400() return Update::SUCCESS; } + +function pre_update_1403() +{ + // Necessary before a primary key change + if (!DBA::e("DROP TABLE `parsed_url`")) { + return Update::FAILED; + } + + return Update::SUCCESS; +}