]> git.mxchange.org Git - friendica.git/commitdiff
[Database version 1402] Rework parsed_url table
authorHypolite Petovan <hypolite@mrpetovan.com>
Tue, 16 Feb 2021 15:10:53 +0000 (10:10 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Thu, 18 Feb 2021 13:49:33 +0000 (08:49 -0500)
- Allow arbitrary-sized URL
- Use URL hash for primary key instead of truncated URL, requires table truncation pre update
- Add expires field

database.sql
static/dbstructure.config.php
update.php

index 8e0c51157834cb54d9b892ec37b2317f8c220527..da32e1be6fa55c9093c6f00e22b4634040ba115e 100644 (file)
@@ -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
 --
index 5f05711c55b07010b893d483eb6c1c75156e7997..65959771df38afcbfe5725920cafa31adba4268a 100644 (file)
@@ -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" => [
index 6f796cd0fa692af7da80a0a8f36ac06068221fb3..68e4fb4d3d687bdab9b1435701934c646eecbb5a 100644 (file)
@@ -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;
+}