[Database version 1402] Rework parsed_url table
- Allow arbitrary-sized URL - Use URL hash for primary key instead of truncated URL, requires table truncation pre update - Add expires field
This commit is contained in:
parent
1b90686fcd
commit
7de03eb13f
3 changed files with 23 additions and 8 deletions
12
database.sql
12
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
|
||||
--
|
||||
|
|
|
@ -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" => [
|
||||
|
|
10
update.php
10
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue