Skip to content
Snippets Groups Projects
Commit ba781964 authored by Jared Hancock's avatar Jared Hancock
Browse files

Rewrite %file table structure

Add `attrs` field for backend state information (multi-part migration,
multi-part upload, etc). Change `size` to be an integer rather than text
field. (Storage space will be about the same, but int makes more sense).
Size the `key` and `signature` for ~512 bits. The base64 encoding allows
6-bits per char. At 86 chars, we have 516 bits maximum space.
parent 8259ea0f
Branches
Tags
No related merge requests found
756b22698b4f69d1aa3b51e5cbd917da f1ccd3bb620e314b0ae1dbd0a1a99177
/** /**
* @version v1.8.1 * @version v1.8.1
* @signature ee1f4b2752ee7b4be24a4d9dfe96185a * @signature f1ccd3bb620e314b0ae1dbd0a1a99177
* @title Pluggable Storage * @title Pluggable Storage Backends
* *
* This patch will allow attachments to be stored outside the database (like * This patch will allow attachments to be stored outside the database (like
* on the filesystem) * on the filesystem)
...@@ -9,11 +9,15 @@ ...@@ -9,11 +9,15 @@
ALTER TABLE `%TABLE_PREFIX%file` ALTER TABLE `%TABLE_PREFIX%file`
ADD `bk` CHAR(1) NOT NULL DEFAULT 'D' AFTER `ft`, ADD `bk` CHAR(1) NOT NULL DEFAULT 'D' AFTER `ft`,
CHANGE `hash` `key` VARCHAR(125) COLLATE ascii_general_ci, -- RFC 4288, Section 4.2 declares max MIMEType at 255 ascii chars
ADD `signature` VARCHAR(125) COLLATE ascii_bin AFTER `key`, CHANGE `type` `type` varchar(255) collate ascii_general_ci NOT NULL default '',
CHANGE `size` `size` BIGINT(20) NOT NULL DEFAULT 0,
CHANGE `hash` `key` VARCHAR(86) COLLATE ascii_general_ci,
ADD `signature` VARCHAR(86) COLLATE ascii_bin AFTER `key`,
ADD `attrs` VARCHAR(255) AFTER `name`,
ADD INDEX (`signature`); ADD INDEX (`signature`);
-- Finished with patch -- Finished with patch
UPDATE `%TABLE_PREFIX%config` UPDATE `%TABLE_PREFIX%config`
SET `value` = 'ee1f4b2752ee7b4be24a4d9dfe96185a' SET `value` = 'f1ccd3bb620e314b0ae1dbd0a1a99177'
WHERE `key` = 'schema_signature' AND `namespace` = 'core'; WHERE `key` = 'schema_signature' AND `namespace` = 'core';
...@@ -318,11 +318,13 @@ CREATE TABLE `%TABLE_PREFIX%file` ( ...@@ -318,11 +318,13 @@ CREATE TABLE `%TABLE_PREFIX%file` (
`id` int(11) NOT NULL auto_increment, `id` int(11) NOT NULL auto_increment,
`ft` CHAR( 1 ) NOT NULL DEFAULT 'T', `ft` CHAR( 1 ) NOT NULL DEFAULT 'T',
`bk` CHAR( 1 ) NOT NULL DEFAULT 'D', `bk` CHAR( 1 ) NOT NULL DEFAULT 'D',
`type` varchar(255) NOT NULL default '', -- RFC 4288, Section 4.2 declares max MIMEType at 255 ascii chars
`size` varchar(25) NOT NULL default '', `type` varchar(255) collate ascii_general_ci NOT NULL default '',
`key` varchar(125) collate ascii_general_ci NOT NULL, `size` bigint(20) unsigned NOT NULL default 0,
`signature` varchar(125) collate ascii_bin NOT NULL, `key` varchar(86) collate ascii_general_ci NOT NULL,
`signature` varchar(86) collate ascii_bin NOT NULL,
`name` varchar(255) NOT NULL default '', `name` varchar(255) NOT NULL default '',
`attrs` varchar(255),
`created` datetime NOT NULL, `created` datetime NOT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `ft` (`ft`), KEY `ft` (`ft`),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment